Lines Matching refs:dir

25   PC_Cholesky   *dir = (PC_Cholesky *)pc->data;
32 if (dir->hdr.reusefill && pc->setupcalled) ((PC_Factor *)dir)->info.fill = dir->hdr.actualfill;
38 if (dir->hdr.inplace) {
43 if (dir->row && dir->col && (dir->row != dir->col)) PetscCall(ISDestroy(&dir->row));
44 PetscCall(ISDestroy(&dir->col));
47 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)dir)->ordering, &dir->row, &dir->col));
48 if (dir->col && (dir->row != dir->col)) { /* only use row ordering for SBAIJ */
49 PetscCall(ISDestroy(&dir->col));
51 PetscCall(MatCholeskyFactor(pc->pmat, dir->row, &((PC_Factor *)dir)->info));
58 ((PC_Factor *)dir)->fact = pc->pmat;
66 PetscCall(MatFactorGetCanUseOrdering(((PC_Factor *)dir)->fact, &canuseordering));
71 PetscCall(PetscStrcmp(((PC_Factor *)dir)->ordering, MATORDERINGEXTERNAL, &external));
73 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)dir)->ordering, &dir->row, &dir->col));
74 /* check if dir->row == dir->col */
75 if (dir->row) {
76 PetscCall(ISEqual(dir->row, dir->col, &flg));
79 PetscCall(ISDestroy(&dir->col)); /* only pass one ordering into CholeskyFactor */
86 PetscCall(MatReorderForNonzeroDiagonal(pc->pmat, tol, dir->row, dir->row));
90 PetscCall(MatCholeskyFactorSymbolic(((PC_Factor *)dir)->fact, pc->pmat, dir->row, &((PC_Factor *)dir)->info));
91 PetscCall(MatGetInfo(((PC_Factor *)dir)->fact, MAT_LOCAL, &info));
92 dir->hdr.actualfill = info.fill_ratio_needed;
94 PetscCall(MatDestroy(&((PC_Factor *)dir)->fact));
96 if (!dir->hdr.reuseordering) {
99 PetscCall(MatFactorGetCanUseOrdering(((PC_Factor *)dir)->fact, &canuseordering));
103 PetscCall(ISDestroy(&dir->row));
105 PetscCall(PetscStrcmp(((PC_Factor *)dir)->ordering, MATORDERINGEXTERNAL, &external));
107 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)dir)->ordering, &dir->row, &dir->col));
108 PetscCall(ISDestroy(&dir->col)); /* only use dir->row ordering in CholeskyFactor */
115 PetscCall(MatReorderForNonzeroDiagonal(pc->pmat, tol, dir->row, dir->row));
120 PetscCall(MatCholeskyFactorSymbolic(((PC_Factor *)dir)->fact, pc->pmat, dir->row, &((PC_Factor *)dir)->info));
121 PetscCall(MatGetInfo(((PC_Factor *)dir)->fact, MAT_LOCAL, &info));
122 dir->hdr.actualfill = info.fill_ratio_needed;
124 PetscCall(MatFactorGetError(((PC_Factor *)dir)->fact, &err));
126 PetscCall(MatFactorClearError(((PC_Factor *)dir)->fact));
130 PetscCall(MatFactorGetError(((PC_Factor *)dir)->fact, &err));
136 PetscCall(MatCholeskyFactorNumeric(((PC_Factor *)dir)->fact, pc->pmat, &((PC_Factor *)dir)->info));
137 PetscCall(MatFactorGetError(((PC_Factor *)dir)->fact, &err));
146 PetscCall(MatFactorGetSolverType(((PC_Factor *)dir)->fact, &solverpackage));
154 PC_Cholesky *dir = (PC_Cholesky *)pc->data;
157 if (!dir->hdr.inplace && ((PC_Factor *)dir)->fact) PetscCall(MatDestroy(&((PC_Factor *)dir)->fact));
158 PetscCall(ISDestroy(&dir->row));
159 PetscCall(ISDestroy(&dir->col));
165 PC_Cholesky *dir = (PC_Cholesky *)pc->data;
169 PetscCall(PetscFree(((PC_Factor *)dir)->ordering));
170 PetscCall(PetscFree(((PC_Factor *)dir)->solvertype));
178 PC_Cholesky *dir = (PC_Cholesky *)pc->data;
181 if (dir->hdr.inplace) {
184 PetscCall(MatSolve(((PC_Factor *)dir)->fact, x, y));
191 PC_Cholesky *dir = (PC_Cholesky *)pc->data;
194 if (dir->hdr.inplace) {
197 PetscCall(MatMatSolve(((PC_Factor *)dir)->fact, X, Y));
204 PC_Cholesky *dir = (PC_Cholesky *)pc->data;
207 if (dir->hdr.inplace) {
210 PetscCall(MatForwardSolve(((PC_Factor *)dir)->fact, x, y));
217 PC_Cholesky *dir = (PC_Cholesky *)pc->data;
220 if (dir->hdr.inplace) {
223 PetscCall(MatBackwardSolve(((PC_Factor *)dir)->fact, x, y));
230 PC_Cholesky *dir = (PC_Cholesky *)pc->data;
233 if (dir->hdr.inplace) {
236 PetscCall(MatSolveTranspose(((PC_Factor *)dir)->fact, x, y));
243 PC_Cholesky *dir = (PC_Cholesky *)pc->data;
246 if (dir->hdr.inplace) {
249 PetscCall(MatMatSolveTranspose(((PC_Factor *)dir)->fact, X, Y));
313 PC_Cholesky *dir;
316 PetscCall(PetscNew(&dir));
317 pc->data = (void *)dir;
320 ((PC_Factor *)dir)->info.fill = 5.0;