1 static char help[] = "Tests MatLoad() for dense matrix with uneven dimensions set in program\n\n"; 2 3 #include <petscmat.h> 4 5 int main(int argc,char **args) 6 { 7 Mat A; 8 PetscViewer fd; 9 PetscMPIInt rank; 10 PetscScalar *Av; 11 PetscInt i; 12 13 CHKERRQ(PetscInitialize(&argc,&args,(char*)0,help)); 14 CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); 15 16 CHKERRQ(MatCreateDense(PETSC_COMM_WORLD,6,6,12,12,NULL,&A)); 17 CHKERRQ(MatDenseGetArray(A,&Av)); 18 for (i=0; i<6*12; i++) Av[i] = (PetscScalar) i; 19 CHKERRQ(MatDenseRestoreArray(A,&Av)); 20 21 /* Load matrices */ 22 CHKERRQ(PetscViewerBinaryOpen(PETSC_COMM_WORLD,"ex191matrix",FILE_MODE_WRITE,&fd)); 23 CHKERRQ(PetscViewerPushFormat(fd,PETSC_VIEWER_NATIVE)); 24 CHKERRQ(MatView(A,fd)); 25 CHKERRQ(MatDestroy(&A)); 26 CHKERRQ(PetscViewerPopFormat(fd)); 27 CHKERRQ(PetscViewerDestroy(&fd)); 28 29 CHKERRQ(MatCreate(PETSC_COMM_WORLD,&A)); 30 CHKERRQ(MatSetType(A,MATDENSE)); 31 if (rank == 0) { 32 CHKERRQ(MatSetSizes(A, 4, PETSC_DETERMINE, PETSC_DETERMINE,PETSC_DETERMINE)); 33 } else { 34 CHKERRQ(MatSetSizes(A, 8, PETSC_DETERMINE, PETSC_DETERMINE,PETSC_DETERMINE)); 35 } 36 CHKERRQ(PetscViewerBinaryOpen(PETSC_COMM_WORLD,"ex191matrix",FILE_MODE_READ,&fd)); 37 CHKERRQ(MatLoad(A,fd)); 38 CHKERRQ(PetscViewerDestroy(&fd)); 39 CHKERRQ(MatView(A,PETSC_VIEWER_STDOUT_WORLD)); 40 CHKERRQ(PetscViewerPushFormat(PETSC_VIEWER_STDOUT_WORLD,PETSC_VIEWER_ASCII_INFO_DETAIL)); 41 CHKERRQ(MatView(A,PETSC_VIEWER_STDOUT_WORLD)); 42 CHKERRQ(PetscViewerPopFormat(PETSC_VIEWER_STDOUT_WORLD)); 43 CHKERRQ(MatDestroy(&A)); 44 CHKERRQ(PetscFinalize()); 45 return 0; 46 } 47 48 /*TEST 49 50 test: 51 nsize: 2 52 filter: grep -v alloced 53 54 TEST*/ 55