1 static char help[]= "Test MatSetRandom on MATMPIAIJ matrices\n\n"; 2 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; 12 13 CHKERRQ(PetscInitialize(&argc,&args,(char*)0,help)); 14 CHKERRQ(PetscRandomCreate(PETSC_COMM_WORLD,&rctx)); 15 16 /* Call MatSetRandom on unassembled matrices */ 17 CHKERRQ(MatCreateAIJ(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,20,20,3,NULL,3,NULL,&A[0])); 18 CHKERRQ(MatCreateAIJ(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,20,20,3,NULL,3,NULL,&A[1])); 19 CHKERRQ(MatSetRandom(A[0],rctx)); 20 CHKERRQ(MatSetRandom(A[1],rctx)); 21 22 CHKERRQ(MatAXPY(A[0],1.0,A[1],DIFFERENT_NONZERO_PATTERN)); 23 CHKERRQ(MatAXPY(A[0],-1.0,A[0],SAME_NONZERO_PATTERN)); 24 CHKERRQ(MatNorm(A[0],NORM_1,&nrm)); 25 if (nrm > tol) CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"Error: MatNorm(), norm1=: %g\n",(double)nrm)); 26 27 /* Call MatSetRandom on assembled matrices */ 28 CHKERRQ(MatSetRandom(A[0],rctx)); 29 CHKERRQ(MatSetRandom(A[1],rctx)); 30 31 CHKERRQ(MatAXPY(A[0],1.0,A[1],DIFFERENT_NONZERO_PATTERN)); 32 CHKERRQ(MatAXPY(A[0],-1.0,A[0],SAME_NONZERO_PATTERN)); 33 CHKERRQ(MatNorm(A[0],NORM_1,&nrm)); 34 if (nrm > tol) CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"Error: MatNorm(), norm1=: %g\n",(double)nrm)); 35 36 CHKERRQ(MatDestroy(&A[0])); 37 CHKERRQ(MatDestroy(&A[1])); 38 CHKERRQ(PetscRandomDestroy(&rctx)); 39 CHKERRQ(PetscFinalize()); 40 return 0; 41 } 42 43 /*TEST 44 test: 45 nsize: 3 46 TEST*/ 47