Actual source code: ex248.c
2: static char help[] = "Tests MatSeqAIJKron.\n\n";
4: #include <petscmat.h>
6: int main(int argc,char **argv)
7: {
8: Mat A,B,C,K,Ad,Bd;
9: const PetscScalar *Bv;
10: PetscInt n = 10, m = 20, p = 7, q = 17;
11: PetscBool flg;
13: PetscInitialize(&argc,&argv,(char*)0,help);
14: MatCreateDense(PETSC_COMM_SELF,m,n,m,n,NULL,&Ad);
15: MatCreateDense(PETSC_COMM_SELF,p,q,p,q,NULL,&Bd);
16: MatSetRandom(Ad,NULL);
17: MatSetRandom(Bd,NULL);
18: MatChop(Ad,0.2);
19: MatChop(Bd,0.2);
20: MatConvert(Ad,MATAIJ,MAT_INITIAL_MATRIX,&A);
21: MatConvert(Bd,MATAIJ,MAT_INITIAL_MATRIX,&B);
22: MatSeqAIJKron(A,B,MAT_INITIAL_MATRIX,&C);
23: MatViewFromOptions(A,NULL,"-A_view");
24: MatViewFromOptions(B,NULL,"-B_view");
25: MatViewFromOptions(C,NULL,"-C_view");
26: MatDenseGetArrayRead(Bd,&Bv);
27: MatCreateKAIJ(A,p,q,NULL,Bv,&K);
28: MatDenseRestoreArrayRead(Bd,&Bv);
29: MatMultEqual(C,K,10,&flg);
31: MatScale(A,1.3);
32: MatScale(B,0.3);
33: MatScale(Bd,0.3);
34: MatSeqAIJKron(A,B,MAT_REUSE_MATRIX,&C);
35: MatDenseGetArrayRead(Bd,&Bv);
36: MatKAIJSetT(K,p,q,Bv);
37: MatDenseRestoreArrayRead(Bd,&Bv);
38: MatMultEqual(C,K,10,&flg);
40: MatDestroy(&K);
41: MatDestroy(&C);
42: MatDestroy(&B);
43: MatDestroy(&A);
44: MatDestroy(&Bd);
45: MatDestroy(&Ad);
46: PetscFinalize();
47: return 0;
48: }
50: /*TEST
52: test:
53: suffix: 1
54: nsize: 1
55: output_file: output/ex101.out
57: TEST*/