#include static char help[] = ""; #undef __FUNCT__ #define __FUNCT__ "loadBinMatrix" void loadBinMatrix(char filein[], Mat *A, const MatType mattype){ PetscErrorCode ierr; PetscViewer view; // Open binary file. Note that we use FILE_MODE_READ to indicate reading from this file. PetscViewerBinaryOpen(PETSC_COMM_WORLD,filein,FILE_MODE_READ,&view); //Load the matrix; then destroy the viewer. MatCreate(PETSC_COMM_WORLD,A); ierr = MatSetType(*A, mattype);CHKERRQ(ierr); ierr = MatSetFromOptions(*A);CHKERRQ(ierr); //ierr = MatSetUp(*A);CHKERRQ(ierr); MatLoad(*A,view); PetscViewerDestroy(&view); } // prams: lin solver context, right hand side, column index of large matrix B (index of rhs vector) void solveLinSystem(KSP *ksp, Vec *rhs, PetscInt i, PetscInt rowsA, PetscInt colsA, Vec *diagonal){ PetscScalar val; PetscErrorCode ierr; PetscInt start,end; ierr = KSPSolve(*ksp,*rhs,*rhs);CHKERRQ(ierr); ierr = VecGetOwnershipRange(*rhs,&start,&end);CHKERRQ(ierr); if((i>=start) && (i