Lines Matching refs:pc
9 static PetscErrorCode PCFactorReorderForNonzeroDiagonal_LU(PC pc, PetscReal z) in PCFactorReorderForNonzeroDiagonal_LU() argument
11 PC_LU *lu = (PC_LU *)pc->data; in PCFactorReorderForNonzeroDiagonal_LU()
20 static PetscErrorCode PCSetFromOptions_LU(PC pc, PetscOptionItems PetscOptionsObject) in PCSetFromOptions_LU() argument
22 PC_LU *lu = (PC_LU *)pc->data; in PCSetFromOptions_LU()
28 PetscCall(PCSetFromOptions_Factor(pc, PetscOptionsObject)); in PCSetFromOptions_LU()
34 PetscCall(PCFactorReorderForNonzeroDiagonal(pc, tol)); in PCSetFromOptions_LU()
40 static PetscErrorCode PCSetUp_LU(PC pc) in PCSetUp_LU() argument
42 PC_LU *dir = (PC_LU *)pc->data; in PCSetUp_LU()
48 pc->failedreason = PC_NOERROR; in PCSetUp_LU()
49 if (dir->hdr.reusefill && pc->setupcalled) ((PC_Factor *)dir)->info.fill = dir->hdr.actualfill; in PCSetUp_LU()
51 PetscCall(PCGetOptionsPrefix(pc, &prefix)); in PCSetUp_LU()
52 PetscCall(MatSetOptionsPrefixFactor(pc->pmat, prefix)); in PCSetUp_LU()
54 PetscCall(MatSetErrorIfFailure(pc->pmat, pc->erroriffailure)); in PCSetUp_LU()
58 PetscCall(MatGetFactorType(pc->pmat, &ftype)); in PCSetUp_LU()
63 PetscCall(PCFactorSetDefaultOrdering_Factor(pc)); in PCSetUp_LU()
64 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)dir)->ordering, &dir->row, &dir->col)); in PCSetUp_LU()
65 PetscCall(MatLUFactor(pc->pmat, dir->row, dir->col, &((PC_Factor *)dir)->info)); in PCSetUp_LU()
66 PetscCall(MatFactorGetError(pc->pmat, &err)); in PCSetUp_LU()
68 pc->failedreason = (PCFailedReason)err; in PCSetUp_LU()
72 ((PC_Factor *)dir)->fact = pc->pmat; in PCSetUp_LU()
76 if (!pc->setupcalled) { in PCSetUp_LU()
79 PetscCall(PCFactorSetUpMatSolverType(pc)); in PCSetUp_LU()
84 PetscCall(PCFactorSetDefaultOrdering_Factor(pc)); in PCSetUp_LU()
87 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)dir)->ordering, &dir->row, &dir->col)); in PCSetUp_LU()
88 …if (dir->nonzerosalongdiagonal) PetscCall(MatReorderForNonzeroDiagonal(pc->pmat, dir->nonzerosalon… in PCSetUp_LU()
91 …PetscCall(MatLUFactorSymbolic(((PC_Factor *)dir)->fact, pc->pmat, dir->row, dir->col, &((PC_Factor… in PCSetUp_LU()
94 } else if (pc->flag != SAME_NONZERO_PATTERN) { in PCSetUp_LU()
98 PetscCall(PCFactorSetUpMatSolverType(pc)); in PCSetUp_LU()
106 PetscCall(PCFactorSetDefaultOrdering_Factor(pc)); in PCSetUp_LU()
109 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)dir)->ordering, &dir->row, &dir->col)); in PCSetUp_LU()
110 …if (dir->nonzerosalongdiagonal) PetscCall(MatReorderForNonzeroDiagonal(pc->pmat, dir->nonzerosalon… in PCSetUp_LU()
114 …PetscCall(MatLUFactorSymbolic(((PC_Factor *)dir)->fact, pc->pmat, dir->row, dir->col, &((PC_Factor… in PCSetUp_LU()
121 pc->failedreason = PC_NOERROR; in PCSetUp_LU()
126 pc->failedreason = (PCFailedReason)err; in PCSetUp_LU()
130 PetscCall(MatLUFactorNumeric(((PC_Factor *)dir)->fact, pc->pmat, &((PC_Factor *)dir)->info)); in PCSetUp_LU()
133 pc->failedreason = (PCFailedReason)err; in PCSetUp_LU()
137 PetscCall(PCFactorGetMatSolverType(pc, &stype)); in PCSetUp_LU()
141 PetscCall(PCFactorSetMatSolverType(pc, solverpackage)); in PCSetUp_LU()
146 static PetscErrorCode PCReset_LU(PC pc) in PCReset_LU() argument
148 PC_LU *dir = (PC_LU *)pc->data; in PCReset_LU()
157 static PetscErrorCode PCDestroy_LU(PC pc) in PCDestroy_LU() argument
159 PC_LU *dir = (PC_LU *)pc->data; in PCDestroy_LU()
162 PetscCall(PCReset_LU(pc)); in PCDestroy_LU()
165 PetscCall(PCFactorClearComposedFunctions(pc)); in PCDestroy_LU()
166 PetscCall(PetscFree(pc->data)); in PCDestroy_LU()
170 static PetscErrorCode PCApply_LU(PC pc, Vec x, Vec y) in PCApply_LU() argument
172 PC_LU *dir = (PC_LU *)pc->data; in PCApply_LU()
176 PetscCall(MatSolve(pc->pmat, x, y)); in PCApply_LU()
183 static PetscErrorCode PCMatApply_LU(PC pc, Mat X, Mat Y) in PCMatApply_LU() argument
185 PC_LU *dir = (PC_LU *)pc->data; in PCMatApply_LU()
189 PetscCall(MatMatSolve(pc->pmat, X, Y)); in PCMatApply_LU()
196 static PetscErrorCode PCApplyTranspose_LU(PC pc, Vec x, Vec y) in PCApplyTranspose_LU() argument
198 PC_LU *dir = (PC_LU *)pc->data; in PCApplyTranspose_LU()
202 PetscCall(MatSolveTranspose(pc->pmat, x, y)); in PCApplyTranspose_LU()
209 static PetscErrorCode PCMatApplyTranspose_LU(PC pc, Mat X, Mat Y) in PCMatApplyTranspose_LU() argument
211 PC_LU *dir = (PC_LU *)pc->data; in PCMatApplyTranspose_LU()
215 PetscCall(MatMatSolveTranspose(pc->pmat, X, Y)); in PCMatApplyTranspose_LU()
260 PETSC_EXTERN PetscErrorCode PCCreate_LU(PC pc) in PCCreate_LU() argument
266 pc->data = (void *)dir; in PCCreate_LU()
267 PetscCall(PCFactorInitialize(pc, MAT_FACTOR_LU)); in PCCreate_LU()
276 pc->ops->reset = PCReset_LU; in PCCreate_LU()
277 pc->ops->destroy = PCDestroy_LU; in PCCreate_LU()
278 pc->ops->apply = PCApply_LU; in PCCreate_LU()
279 pc->ops->matapply = PCMatApply_LU; in PCCreate_LU()
280 pc->ops->applytranspose = PCApplyTranspose_LU; in PCCreate_LU()
281 pc->ops->matapplytranspose = PCMatApplyTranspose_LU; in PCCreate_LU()
282 pc->ops->setup = PCSetUp_LU; in PCCreate_LU()
283 pc->ops->setfromoptions = PCSetFromOptions_LU; in PCCreate_LU()
284 pc->ops->view = PCView_Factor; in PCCreate_LU()
285 pc->ops->applyrichardson = NULL; in PCCreate_LU()
286 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCFactorReorderForNonzeroDiagonal_C", PCFac… in PCCreate_LU()