static char help[] = "Tests converting a SBAIJ matrix to BAIJ format with MatConvert. Modified from ex55.c\n\n"; #include /* Usage: ./ex141 -mat_view */ int main(int argc,char **args) { Mat C,B; PetscErrorCode ierr; PetscInt i,bs=2,mbs,m,block,d_nz=6,col[3]; PetscMPIInt size; char file[PETSC_MAX_PATH_LEN]; PetscViewer fd; PetscBool equal,loadmat; PetscScalar value[4]; PetscInt ridx[2],cidx[2]; ierr = PetscInitialize(&argc,&args,(char*)0,help);if (ierr) return ierr; CHKERRQ(PetscOptionsGetString(NULL,NULL,"-f",file,sizeof(file),&loadmat)); CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); PetscCheckFalse(size != 1,PETSC_COMM_WORLD,PETSC_ERR_SUP,"This is a uniprocessor example only!"); /* input matrix C */ if (loadmat) { /* Open binary file. Load a sbaij matrix, then destroy the viewer. */ CHKERRQ(PetscViewerBinaryOpen(PETSC_COMM_WORLD,file,FILE_MODE_READ,&fd)); CHKERRQ(MatCreate(PETSC_COMM_WORLD,&C)); CHKERRQ(MatSetType(C,MATSEQSBAIJ)); CHKERRQ(MatLoad(C,fd)); CHKERRQ(PetscViewerDestroy(&fd)); } else { /* Create a sbaij mat with bs>1 */ mbs =8; CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-mbs",&mbs,NULL)); m = mbs*bs; CHKERRQ(MatCreate(PETSC_COMM_WORLD,&C)); CHKERRQ(MatSetSizes(C,PETSC_DECIDE,PETSC_DECIDE,m,m)); CHKERRQ(MatSetType(C,MATSBAIJ)); CHKERRQ(MatSetFromOptions(C)); CHKERRQ(MatSeqSBAIJSetPreallocation(C,bs,d_nz,NULL)); CHKERRQ(MatSetUp(C)); CHKERRQ(MatSetOption(C,MAT_IGNORE_LOWER_TRIANGULAR,PETSC_TRUE)); for (block=0; block