Lines Matching full:pc

4 #include <../src/ksp/pc/impls/factor/ilu/ilu.h> /*I "petscpc.h"  I*/
6 static PetscErrorCode PCFactorReorderForNonzeroDiagonal_ILU(PC pc, PetscReal z) in PCFactorReorderForNonzeroDiagonal_ILU() argument
8 PC_ILU *ilu = (PC_ILU *)pc->data; in PCFactorReorderForNonzeroDiagonal_ILU()
17 static PetscErrorCode PCReset_ILU(PC pc) in PCReset_ILU() argument
19 PC_ILU *ilu = (PC_ILU *)pc->data; in PCReset_ILU()
28 static PetscErrorCode PCFactorSetDropTolerance_ILU(PC pc, PetscReal dt, PetscReal dtcol, PetscInt d… in PCFactorSetDropTolerance_ILU() argument
30 PC_ILU *ilu = (PC_ILU *)pc->data; in PCFactorSetDropTolerance_ILU()
33pc->setupcalled || !(((PC_Factor *)ilu)->info.dt != dt || ((PC_Factor *)ilu)->info.dtcol != dtcol … in PCFactorSetDropTolerance_ILU()
41 static PetscErrorCode PCSetFromOptions_ILU(PC pc, PetscOptionItems PetscOptionsObject) in PCSetFromOptions_ILU() argument
45 PC_ILU *ilu = (PC_ILU *)pc->data; in PCSetFromOptions_ILU()
50 PetscCall(PCSetFromOptions_Factor(pc, PetscOptionsObject)); in PCSetFromOptions_ILU()
61 PetscCall(PCFactorReorderForNonzeroDiagonal(pc, tol)); in PCSetFromOptions_ILU()
68 static PetscErrorCode PCSetUp_ILU(PC pc) in PCSetUp_ILU() argument
70 PC_ILU *ilu = (PC_ILU *)pc->data; in PCSetUp_ILU()
78 pc->failedreason = PC_NOERROR; in PCSetUp_ILU()
81 PetscCall(PetscObjectTypeCompare((PetscObject)pc->pmat, MATSEQAIJ, &flg)); in PCSetUp_ILU()
83 PetscCall(PetscObjectTypeCompare((PetscObject)pc->pmat, MATMPIAIJ, &flg)); in PCSetUp_ILU()
86 …PetscCall(PetscInfo(pc, "Changing shift type from NONZERO to INBLOCKS because block matrices do no… in PCSetUp_ILU()
91 PetscCall(PCGetOptionsPrefix(pc, &prefix)); in PCSetUp_ILU()
92 PetscCall(MatSetOptionsPrefixFactor(pc->pmat, prefix)); in PCSetUp_ILU()
94 PetscCall(MatSetErrorIfFailure(pc->pmat, pc->erroriffailure)); in PCSetUp_ILU()
96 if (!pc->setupcalled) { in PCSetUp_ILU()
100 PetscCall(PCFactorSetDefaultOrdering_Factor(pc)); in PCSetUp_ILU()
102 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)ilu)->ordering, &ilu->row, &ilu->col)); in PCSetUp_ILU()
110 PetscCall(MatILUFactor(pc->pmat, ilu->row, ilu->col, &((PC_Factor *)ilu)->info)); in PCSetUp_ILU()
111 PetscCall(MatFactorGetError(pc->pmat, &err)); in PCSetUp_ILU()
113 pc->failedreason = (PCFailedReason)err; in PCSetUp_ILU()
117 ((PC_Factor *)ilu)->fact = pc->pmat; in PCSetUp_ILU()
118 …/* must update the pc record of the matrix state or the PC will attempt to run PCSetUp() yet again… in PCSetUp_ILU()
119 PetscCall(PetscObjectStateGet((PetscObject)pc->pmat, &pc->matstate)); in PCSetUp_ILU()
121 if (!pc->setupcalled) { in PCSetUp_ILU()
125 PetscCall(PCFactorSetUpMatSolverType(pc)); in PCSetUp_ILU()
128 PetscCall(PCFactorSetDefaultOrdering_Factor(pc)); in PCSetUp_ILU()
129 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)ilu)->ordering, &ilu->row, &ilu->col)); in PCSetUp_ILU()
131 …if (ilu->nonzerosalongdiagonal) PetscCall(MatReorderForNonzeroDiagonal(pc->pmat, ilu->nonzerosalon… in PCSetUp_ILU()
133 …PetscCall(MatILUFactorSymbolic(((PC_Factor *)ilu)->fact, pc->pmat, ilu->row, ilu->col, &((PC_Facto… in PCSetUp_ILU()
136 } else if (pc->flag != SAME_NONZERO_PATTERN) { in PCSetUp_ILU()
138 PetscCall(PCFactorSetUpMatSolverType(pc)); in PCSetUp_ILU()
147 PetscCall(PCFactorSetDefaultOrdering_Factor(pc)); in PCSetUp_ILU()
148 PetscCall(MatGetOrdering(pc->pmat, ((PC_Factor *)ilu)->ordering, &ilu->row, &ilu->col)); in PCSetUp_ILU()
150 …if (ilu->nonzerosalongdiagonal) PetscCall(MatReorderForNonzeroDiagonal(pc->pmat, ilu->nonzerosalon… in PCSetUp_ILU()
153 …PetscCall(MatILUFactorSymbolic(((PC_Factor *)ilu)->fact, pc->pmat, ilu->row, ilu->col, &((PC_Facto… in PCSetUp_ILU()
159 pc->failedreason = (PCFailedReason)err; in PCSetUp_ILU()
163 PetscCall(MatLUFactorNumeric(((PC_Factor *)ilu)->fact, pc->pmat, &((PC_Factor *)ilu)->info)); in PCSetUp_ILU()
166 pc->failedreason = (PCFailedReason)err; in PCSetUp_ILU()
170 PetscCall(PCFactorGetMatSolverType(pc, &stype)); in PCSetUp_ILU()
174 PetscCall(PCFactorSetMatSolverType(pc, solverpackage)); in PCSetUp_ILU()
179 static PetscErrorCode PCDestroy_ILU(PC pc) in PCDestroy_ILU() argument
181 PC_ILU *ilu = (PC_ILU *)pc->data; in PCDestroy_ILU()
184 PetscCall(PCReset_ILU(pc)); in PCDestroy_ILU()
187 PetscCall(PetscFree(pc->data)); in PCDestroy_ILU()
188 PetscCall(PCFactorClearComposedFunctions(pc)); in PCDestroy_ILU()
192 static PetscErrorCode PCApply_ILU(PC pc, Vec x, Vec y) in PCApply_ILU() argument
194 PC_ILU *ilu = (PC_ILU *)pc->data; in PCApply_ILU()
201 static PetscErrorCode PCMatApply_ILU(PC pc, Mat X, Mat Y) in PCMatApply_ILU() argument
203 PC_ILU *ilu = (PC_ILU *)pc->data; in PCMatApply_ILU()
210 static PetscErrorCode PCApplyTranspose_ILU(PC pc, Vec x, Vec y) in PCApplyTranspose_ILU() argument
212 PC_ILU *ilu = (PC_ILU *)pc->data; in PCApplyTranspose_ILU()
219 static PetscErrorCode PCMatApplyTranspose_ILU(PC pc, Mat X, Mat Y) in PCMatApplyTranspose_ILU() argument
221 PC_ILU *ilu = (PC_ILU *)pc->data; in PCMatApplyTranspose_ILU()
228 static PetscErrorCode PCApplySymmetricLeft_ILU(PC pc, Vec x, Vec y) in PCApplySymmetricLeft_ILU() argument
230 PC_ILU *icc = (PC_ILU *)pc->data; in PCApplySymmetricLeft_ILU()
237 static PetscErrorCode PCApplySymmetricRight_ILU(PC pc, Vec x, Vec y) in PCApplySymmetricRight_ILU() argument
239 PC_ILU *icc = (PC_ILU *)pc->data; in PCApplySymmetricRight_ILU()
276 .seealso: [](ch_ksp), `PCCreate()`, `PCSetType()`, `PCType`, `PC`, `PCSOR`, `MatOrderingType`, `PCL…
283 PETSC_EXTERN PetscErrorCode PCCreate_ILU(PC pc) in PCCreate_ILU() argument
289 pc->data = (void *)ilu; in PCCreate_ILU()
290 PetscCall(PCFactorInitialize(pc, MAT_FACTOR_ILU)); in PCCreate_ILU()
300 pc->ops->reset = PCReset_ILU; in PCCreate_ILU()
301 pc->ops->destroy = PCDestroy_ILU; in PCCreate_ILU()
302 pc->ops->apply = PCApply_ILU; in PCCreate_ILU()
303 pc->ops->matapply = PCMatApply_ILU; in PCCreate_ILU()
304 pc->ops->applytranspose = PCApplyTranspose_ILU; in PCCreate_ILU()
305 pc->ops->matapplytranspose = PCMatApplyTranspose_ILU; in PCCreate_ILU()
306 pc->ops->setup = PCSetUp_ILU; in PCCreate_ILU()
307 pc->ops->setfromoptions = PCSetFromOptions_ILU; in PCCreate_ILU()
308 pc->ops->view = PCView_Factor; in PCCreate_ILU()
309 pc->ops->applysymmetricleft = PCApplySymmetricLeft_ILU; in PCCreate_ILU()
310 pc->ops->applysymmetricright = PCApplySymmetricRight_ILU; in PCCreate_ILU()
311 pc->ops->applyrichardson = NULL; in PCCreate_ILU()
312 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCFactorSetDropTolerance_C", PCFactorSetDro… in PCCreate_ILU()
313 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCFactorReorderForNonzeroDiagonal_C", PCFac… in PCCreate_ILU()