Actual source code: ex87.c

  2: static char help[] = "Tests MatGetSubMatrices() for SBAIJ matrices\n\n";

 4:  #include petscmat.h

  8: int main(int argc,char **args)
  9: {
 10:   Mat            BAIJ,SBAIJ,*subBAIJ,*subSBAIJ;
 11:   PetscViewer    viewer;
 12:   char           file[PETSC_MAX_PATH_LEN];
 13:   PetscTruth     flg;
 15:   PetscInt       n = 2,issize;
 16:   PetscMPIInt    rank;
 17:   IS             is,iss[2];

 19:   PetscInitialize(&argc,&args,(char *)0,help);
 20:   PetscOptionsGetString(PETSC_NULL,"-f",file,PETSC_MAX_PATH_LEN-1,&flg);
 21:   PetscViewerBinaryOpen(PETSC_COMM_WORLD,file,FILE_MODE_READ,&viewer);
 22:   MatLoad(viewer,MATMPIBAIJ,&BAIJ);
 23:   PetscViewerDestroy(viewer);
 24:   PetscViewerBinaryOpen(PETSC_COMM_WORLD,file,FILE_MODE_READ,&viewer);
 25:   MatLoad(viewer,MATMPISBAIJ,&SBAIJ);
 26:   PetscViewerDestroy(viewer);

 28:   MatGetSize(BAIJ,&issize,0);
 29:   issize = 9;
 30:   ISCreateStride(PETSC_COMM_SELF,issize,0,1,&is);
 31:   iss[0] = is;iss[1] = is;
 32:   MatGetSubMatrices(BAIJ,n,iss,iss,MAT_INITIAL_MATRIX,&subBAIJ);
 33:   MatGetSubMatrices(SBAIJ,n,iss,iss,MAT_INITIAL_MATRIX,&subSBAIJ);

 35:   MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
 36: #if defined(PETSC_USE_SOCKET_VIEWER)
 37:   if (!rank) {
 38:     MatView(subBAIJ[0],PETSC_VIEWER_SOCKET_SELF);
 39:     MatView(subSBAIJ[0],PETSC_VIEWER_SOCKET_SELF);
 40:   }
 41: #endif

 43:   /* Free data structures */
 44:   ISDestroy(is);
 45:   MatDestroyMatrices(n,&subBAIJ);
 46:   MatDestroyMatrices(n,&subSBAIJ);
 47:   MatDestroy(BAIJ);
 48:   MatDestroy(SBAIJ);

 50:   PetscFinalize();
 51:   return 0;
 52: }