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