static void compute_permutation(const SparseMatrix& A, Permutation& permutation) {
     permutation.allocate(A.n()) ;
     bool RCMK = false ;
     if(RCMK) {
         SparseMatrixPatternCRS A_pattern ;
         ::OGF::convert_matrix(A, A_pattern) ;
         A_pattern.compute_RCMK_ordering(permutation) ;
         if(true) {
             std::cerr << "Bandwidth before permutation: " << A_pattern.bandwidth() << std::endl ;
             SparseMatrixCRS<double> A_crs ;
             ::OGF::convert_matrix(A, A_crs, true, permutation) ;            
             std::cerr << "Bandwidth after permutation: " << A_crs.bandwidth() << std::endl ;
         }
     } else {
         permutation.load_identity() ;
     }
 }