Actual source code: ex182.c
petsc-3.13.6 2020-09-29
1: static char help[] = "Tests using MatShift() to create a constant diagonal matrix\n\n";
3: #include <petscmat.h>
5: int main(int argc,char **argv)
6: {
7: Mat A,F;
8: MatFactorInfo info;
10: PetscInt m = 10;
11: IS perm;
12: PetscMPIInt size;
13: PetscBool issbaij;
15: PetscInitialize(&argc,&argv,(char*) 0,help);if (ierr) return ierr;
16: MPI_Comm_size(PETSC_COMM_WORLD,&size);
18: MatCreate(PETSC_COMM_WORLD,&A);
19: MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,m,m);
20: MatSetFromOptions(A);
21: MatSetUp(A);
22: MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY);
23: MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY);
25: MatShift(A,1.0);
27: PetscObjectTypeCompare((PetscObject)A,MATSEQSBAIJ,&issbaij);
28: if (size == 1 && !issbaij) {
29: MatGetFactor(A,MATSOLVERPETSC,MAT_FACTOR_LU,&F);
30: MatFactorInfoInitialize(&info);
31: ISCreateStride(PETSC_COMM_SELF,m,0,1,&perm);
32: MatLUFactorSymbolic(F,A,perm,perm,&info);
33: MatLUFactorNumeric(F,A,&info);
34: MatDestroy(&F);
35: ISDestroy(&perm);
36: }
37: MatDestroy(&A);
38: PetscFinalize();
39: return ierr;
40: }
42: /*TEST
44: test:
45: requires: define(PETSC_USE_INFO)
46: args: -info
47: filter: grep malloc | sort -b
49: test:
50: suffix: 2
51: nsize: 2
52: requires: define(PETSC_USE_INFO)
53: args: -info ex182info
54: filter: grep -h malloc "ex182info.0" | sort -b
56: test:
57: suffix: 3
58: requires: define(PETSC_USE_INFO)
59: args: -info -mat_type baij
60: filter: grep malloc | sort -b
62: test:
63: suffix: 4
64: nsize: 2
65: requires: define(PETSC_USE_INFO)
66: args: -info ex182info -mat_type baij
67: filter: grep -h malloc "ex182info.1" | sort -b
69: test:
70: suffix: 5
71: requires: define(PETSC_USE_INFO)
72: args: -info -mat_type sbaij
73: filter: grep malloc | sort -b
75: test:
76: suffix: 6
77: nsize: 2
78: requires: define(PETSC_USE_INFO)
79: args: -info ex182info -mat_type sbaij
80: filter: grep -h malloc "ex182info.0" | sort -b
82: test:
83: suffix: 7
84: nsize: 1
85: requires: define(PETSC_USE_INFO)
86: args: -info ex182info
87: filter: grep -h malloc "ex182info.0" | grep -v Running | sort -b
89: test:
90: suffix: 8
91: nsize: 2
92: requires: define(PETSC_USE_INFO)
93: args: -info ex182info:mat
94: filter: grep -h malloc "ex182info.1" | sort -b
96: test:
97: suffix: 9
98: nsize: 1
99: requires: define(PETSC_USE_INFO)
100: args: -info ex182info:sys
101: filter: grep -h -ve Running -ve MPI_Comm -ve Initialize -ve communicator -ve HostName "ex182info.0" | sort -b
103: test:
104: suffix: 10
105: nsize: 1
106: requires: define(PETSC_USE_INFO)
107: args: -info :~sys
108: filter: grep -h malloc | sort -b
110: test:
111: suffix: 11
112: nsize: 2
113: requires: define(PETSC_USE_INFO)
114: args: -info :~sys,mat
115: filter: sort -b
117: test:
118: suffix: 12
119: nsize: 2
120: requires: define(PETSC_USE_INFO)
121: args: -info ex182info:sys,mat
122: filter: grep -h -ve Running -ve MPI_Comm -ve Initialize -ve communicator -ve HostName "ex182info.1" | sort -b
124: test:
125: suffix: 13
126: nsize: 2
127: requires: define(PETSC_USE_INFO)
128: args: -info ex182info:mat:~self
129: filter: grep -h "ex182info.1" | sort -b
131: test:
132: suffix: 14
133: nsize: 2
134: requires: define(PETSC_USE_INFO)
135: args: -info ex182info::~self
136: filter: grep -h -ve Running -ve MPI_Comm -ve Initialize -ve communicator -ve HostName "ex182info.1" | sort -b
138: test:
139: suffix: 15
140: nsize: 2
141: requires: define(PETSC_USE_INFO)
142: args: -info ex182info::self
143: filter: grep -h -ve Running -ve MPI_Comm -ve Initialize -ve communicator -ve HostName "ex182info.1" | sort -b
145: TEST*/