Lines Matching full:pc
6 #include <../src/ksp/pc/impls/factor/qr/qr.h> /*I "petscpc.h" I*/
8 static PetscErrorCode PCSetUp_QR(PC pc) in PCSetUp_QR() argument
10 PC_QR *dir = (PC_QR *)pc->data; in PCSetUp_QR()
16 PetscCall(PCGetOptionsPrefix(pc, &prefix)); in PCSetUp_QR()
17 PetscCall(MatSetOptionsPrefix(pc->pmat, prefix)); in PCSetUp_QR()
18 pc->failedreason = PC_NOERROR; in PCSetUp_QR()
19 if (dir->hdr.reusefill && pc->setupcalled) ((PC_Factor *)dir)->info.fill = dir->hdr.actualfill; in PCSetUp_QR()
21 PetscCall(MatSetErrorIfFailure(pc->pmat, pc->erroriffailure)); in PCSetUp_QR()
25 PetscCall(MatGetFactorType(pc->pmat, &ftype)); in PCSetUp_QR()
27 PetscCall(MatQRFactor(pc->pmat, dir->col, &((PC_Factor *)dir)->info)); in PCSetUp_QR()
28 PetscCall(MatFactorGetError(pc->pmat, &err)); in PCSetUp_QR()
30 pc->failedreason = (PCFailedReason)err; in PCSetUp_QR()
34 ((PC_Factor *)dir)->fact = pc->pmat; in PCSetUp_QR()
38 if (!pc->setupcalled) { in PCSetUp_QR()
39 …if (!((PC_Factor *)dir)->fact) PetscCall(MatGetFactor(pc->pmat, ((PC_Factor *)dir)->solvertype, MA… in PCSetUp_QR()
40 …PetscCall(MatQRFactorSymbolic(((PC_Factor *)dir)->fact, pc->pmat, dir->col, &((PC_Factor *)dir)->i… in PCSetUp_QR()
43 } else if (pc->flag != SAME_NONZERO_PATTERN) { in PCSetUp_QR()
44 …PetscCall(MatQRFactorSymbolic(((PC_Factor *)dir)->fact, pc->pmat, dir->col, &((PC_Factor *)dir)->i… in PCSetUp_QR()
52 pc->failedreason = (PCFailedReason)err; in PCSetUp_QR()
56 PetscCall(MatQRFactorNumeric(((PC_Factor *)dir)->fact, pc->pmat, &((PC_Factor *)dir)->info)); in PCSetUp_QR()
59 pc->failedreason = (PCFailedReason)err; in PCSetUp_QR()
63 PetscCall(PCFactorGetMatSolverType(pc, &stype)); in PCSetUp_QR()
67 PetscCall(PCFactorSetMatSolverType(pc, solverpackage)); in PCSetUp_QR()
72 static PetscErrorCode PCReset_QR(PC pc) in PCReset_QR() argument
74 PC_QR *dir = (PC_QR *)pc->data; in PCReset_QR()
82 static PetscErrorCode PCDestroy_QR(PC pc) in PCDestroy_QR() argument
84 PC_QR *dir = (PC_QR *)pc->data; in PCDestroy_QR()
87 PetscCall(PCReset_QR(pc)); in PCDestroy_QR()
90 PetscCall(PCFactorClearComposedFunctions(pc)); in PCDestroy_QR()
91 PetscCall(PetscFree(pc->data)); in PCDestroy_QR()
95 static PetscErrorCode PCApply_QR(PC pc, Vec x, Vec y) in PCApply_QR() argument
97 PC_QR *dir = (PC_QR *)pc->data; in PCApply_QR()
101 fact = dir->hdr.inplace ? pc->pmat : ((PC_Factor *)dir)->fact; in PCApply_QR()
106 static PetscErrorCode PCMatApply_QR(PC pc, Mat X, Mat Y) in PCMatApply_QR() argument
108 PC_QR *dir = (PC_QR *)pc->data; in PCMatApply_QR()
112 fact = dir->hdr.inplace ? pc->pmat : ((PC_Factor *)dir)->fact; in PCMatApply_QR()
117 static PetscErrorCode PCApplyTranspose_QR(PC pc, Vec x, Vec y) in PCApplyTranspose_QR() argument
119 PC_QR *dir = (PC_QR *)pc->data; in PCApplyTranspose_QR()
123 fact = dir->hdr.inplace ? pc->pmat : ((PC_Factor *)dir)->fact; in PCApplyTranspose_QR()
139 .seealso: [](ch_ksp), `PCCreate()`, `PCSetType()`, `PCType`, `PC`, `PCSVD`,
146 PETSC_EXTERN PetscErrorCode PCCreate_QR(PC pc) in PCCreate_QR() argument
152 pc->data = (void *)dir; in PCCreate_QR()
153 PetscCall(PCFactorInitialize(pc, MAT_FACTOR_QR)); in PCCreate_QR()
156 pc->ops->reset = PCReset_QR; in PCCreate_QR()
157 pc->ops->destroy = PCDestroy_QR; in PCCreate_QR()
158 pc->ops->apply = PCApply_QR; in PCCreate_QR()
159 pc->ops->matapply = PCMatApply_QR; in PCCreate_QR()
160 pc->ops->applytranspose = PCApplyTranspose_QR; in PCCreate_QR()
161 pc->ops->setup = PCSetUp_QR; in PCCreate_QR()
162 pc->ops->setfromoptions = PCSetFromOptions_Factor; in PCCreate_QR()
163 pc->ops->view = PCView_Factor; in PCCreate_QR()
164 pc->ops->applyrichardson = NULL; in PCCreate_QR()