static char help[] = "Tests various routines in MatMPIBAIJ format.\n"; #include int main(int argc,char **args) { Mat A; PetscInt m=2,bs=1,M,row,col,start,end,i,j,k; PetscMPIInt rank,size; PetscScalar data=100; PetscBool flg; PetscCall(PetscInitialize(&argc,&args,(char*)0,help)); PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); /* Test MatSetValues() and MatGetValues() */ PetscCall(PetscOptionsGetInt(NULL,NULL,"-mat_block_size",&bs,NULL)); PetscCall(PetscOptionsGetInt(NULL,NULL,"-mat_size",&m,NULL)); M = m*bs*size; PetscCall(MatCreateBAIJ(PETSC_COMM_WORLD,bs,PETSC_DECIDE,PETSC_DECIDE,M,M,PETSC_DECIDE,NULL,PETSC_DECIDE,NULL,&A)); PetscCall(MatGetOwnershipRange(A,&start,&end)); PetscCall(PetscOptionsHasName(NULL,NULL,"-column_oriented",&flg)); if (flg) { PetscCall(MatSetOption(A,MAT_ROW_ORIENTED,PETSC_FALSE)); } /* inproc assembly */ for (row=start; row