Actual source code: ex27.c
1: static char help[]= "Test MatSetRandom on MATMPIAIJ matrices\n\n";
3: /*
4: Adapted from an example Contributed-by: Jakub Kruzik <jakub.kruzik@vsb.cz>
5: */
6: #include <petscmat.h>
7: int main(int argc,char **args)
8: {
9: Mat A[2];
10: PetscReal nrm,tol=10*PETSC_SMALL;
11: PetscRandom rctx;
13: PetscInitialize(&argc,&args,(char*)0,help);
14: PetscRandomCreate(PETSC_COMM_WORLD,&rctx);
16: /* Call MatSetRandom on unassembled matrices */
17: MatCreateAIJ(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,20,20,3,NULL,3,NULL,&A[0]);
18: MatCreateAIJ(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,20,20,3,NULL,3,NULL,&A[1]);
19: MatSetRandom(A[0],rctx);
20: MatSetRandom(A[1],rctx);
22: MatAXPY(A[0],1.0,A[1],DIFFERENT_NONZERO_PATTERN);
23: MatAXPY(A[0],-1.0,A[0],SAME_NONZERO_PATTERN);
24: MatNorm(A[0],NORM_1,&nrm);
25: if (nrm > tol) PetscPrintf(PETSC_COMM_WORLD,"Error: MatNorm(), norm1=: %g\n",(double)nrm);
27: /* Call MatSetRandom on assembled matrices */
28: MatSetRandom(A[0],rctx);
29: MatSetRandom(A[1],rctx);
31: MatAXPY(A[0],1.0,A[1],DIFFERENT_NONZERO_PATTERN);
32: MatAXPY(A[0],-1.0,A[0],SAME_NONZERO_PATTERN);
33: MatNorm(A[0],NORM_1,&nrm);
34: if (nrm > tol) PetscPrintf(PETSC_COMM_WORLD,"Error: MatNorm(), norm1=: %g\n",(double)nrm);
36: MatDestroy(&A[0]);
37: MatDestroy(&A[1]);
38: PetscRandomDestroy(&rctx);
39: PetscFinalize();
40: return 0;
41: }
43: /*TEST
44: test:
45: nsize: 3
46: TEST*/