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