Actual source code: ex7.c
2: static char help[] = "Tests MatILUFactorSymbolic() on matrix with missing diagonal.\n\n";
4: #include <petscmat.h>
5: #include <petscpc.h>
7: int main(int argc, char **args)
8: {
9: Mat C, A;
10: PetscInt i, j;
11: PetscScalar v;
12: PC pc;
13: Vec xtmp;
16: PetscInitialize(&argc, &args, (char *)0, help);
17: MatCreate(PETSC_COMM_WORLD, &C);
18: MatSetSizes(C, PETSC_DECIDE, PETSC_DECIDE, 3, 3);
19: MatSetFromOptions(C);
20: MatSetUp(C);
21: VecCreateSeq(PETSC_COMM_WORLD, 3, &xtmp);
22: i = 0;
23: j = 0;
24: v = 4;
25: MatSetValues(C, 1, &i, 1, &j, &v, INSERT_VALUES);
26: i = 0;
27: j = 2;
28: v = 1;
29: MatSetValues(C, 1, &i, 1, &j, &v, INSERT_VALUES);
30: i = 1;
31: j = 0;
32: v = 1;
33: MatSetValues(C, 1, &i, 1, &j, &v, INSERT_VALUES);
34: i = 1;
35: j = 1;
36: v = 4;
37: MatSetValues(C, 1, &i, 1, &j, &v, INSERT_VALUES);
38: i = 2;
39: j = 1;
40: v = 1;
41: MatSetValues(C, 1, &i, 1, &j, &v, INSERT_VALUES);
43: MatAssemblyBegin(C, MAT_FINAL_ASSEMBLY);
44: MatAssemblyEnd(C, MAT_FINAL_ASSEMBLY);
46: MatView(C, PETSC_VIEWER_STDOUT_WORLD);
47: PCCreate(PETSC_COMM_WORLD, &pc);
48: PCSetFromOptions(pc);
49: PCSetOperators(pc, C, C);
50: PCSetUp(pc);
51: PCFactorGetMatrix(pc, &A);
52: MatView(A, PETSC_VIEWER_STDOUT_WORLD);
54: PCDestroy(&pc);
55: VecDestroy(&xtmp);
56: MatDestroy(&C);
58: PetscFinalize();
59: return 0;
60: }