1 2 static char help[] = "Tests MatMPIBAIJ format in sequential run \n"; 3 4 #include <petscmat.h> 5 int main(int argc,char **args) 6 { 7 Mat A,B; 8 PetscInt i,rstart,rend; 9 PetscMPIInt rank,size; 10 PetscErrorCode ierr; 11 PetscScalar v; 12 13 ierr = PetscInitialize(&argc,&args,(char*)0,help);if (ierr) return ierr; 14 ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRQ(ierr); 15 ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRQ(ierr); 16 17 /* Create a MPIBAIJ matrix */ 18 ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr); 19 ierr = MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,32,32);CHKERRQ(ierr); 20 ierr = MatSetType(A,MATMPIBAIJ);CHKERRQ(ierr); 21 ierr = MatSeqBAIJSetPreallocation(A,2,2,NULL);CHKERRQ(ierr); 22 ierr = MatMPIBAIJSetPreallocation(A,2,2,NULL,2,NULL);CHKERRQ(ierr); 23 24 v = 1.0; 25 ierr = MatGetOwnershipRange(A,&rstart,&rend);CHKERRQ(ierr); 26 for (i=rstart; i<rend; i++) { 27 ierr = MatSetValues(A,1,&i,1,&i,&v,INSERT_VALUES);CHKERRQ(ierr); 28 } 29 ierr = MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); 30 ierr = MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); 31 32 /* Convert A to AIJ format */ 33 ierr = MatConvert(A,MATAIJ,MAT_INITIAL_MATRIX,&B);CHKERRQ(ierr); 34 35 ierr = MatDestroy(&A);CHKERRQ(ierr); 36 ierr = MatDestroy(&B);CHKERRQ(ierr); 37 ierr = PetscFinalize(); 38 return ierr; 39 } 40 41 42 /*TEST 43 44 test: 45 output_file: output/ex160.out 46 47 TEST*/ 48