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*/