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;
14: PetscInitialize(&argc, &argv, (char *)0, help);
15: MatCreateDense(PETSC_COMM_SELF, m, n, m, n, NULL, &Ad);
16: MatCreateDense(PETSC_COMM_SELF, p, q, p, q, NULL, &Bd);
17: MatSetRandom(Ad, NULL);
18: MatSetRandom(Bd, NULL);
19: MatChop(Ad, 0.2);
20: MatChop(Bd, 0.2);
21: MatConvert(Ad, MATAIJ, MAT_INITIAL_MATRIX, &A);
22: MatConvert(Bd, MATAIJ, MAT_INITIAL_MATRIX, &B);
23: MatSeqAIJKron(A, B, MAT_INITIAL_MATRIX, &C);
24: MatViewFromOptions(A, NULL, "-A_view");
25: MatViewFromOptions(B, NULL, "-B_view");
26: MatViewFromOptions(C, NULL, "-C_view");
27: MatDenseGetArrayRead(Bd, &Bv);
28: MatCreateKAIJ(A, p, q, NULL, Bv, &K);
29: MatDenseRestoreArrayRead(Bd, &Bv);
30: MatMultEqual(C, K, 10, &flg);
32: MatScale(A, 1.3);
33: MatScale(B, 0.3);
34: MatScale(Bd, 0.3);
35: MatSeqAIJKron(A, B, MAT_REUSE_MATRIX, &C);
36: MatDenseGetArrayRead(Bd, &Bv);
37: MatKAIJSetT(K, p, q, Bv);
38: MatDenseRestoreArrayRead(Bd, &Bv);
39: MatMultEqual(C, K, 10, &flg);
41: MatDestroy(&K);
42: MatDestroy(&C);
43: MatDestroy(&B);
44: MatDestroy(&A);
45: MatDestroy(&Bd);
46: MatDestroy(&Ad);
47: PetscFinalize();
48: return 0;
49: }
51: /*TEST
53: test:
54: suffix: 1
55: nsize: 1
56: output_file: output/ex101.out
58: TEST*/