Lines Matching refs:pc

34 PetscErrorCode PCLMVMSetUpdateVec(PC pc, Vec X)  in PCLMVMSetUpdateVec()  argument
40 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCLMVMSetUpdateVec()
42 PetscCall(PetscObjectTypeCompare((PetscObject)pc, PCLMVM, &same)); in PCLMVMSetUpdateVec()
44 ctx = (PC_LMVM *)pc->data; in PCLMVMSetUpdateVec()
63 PetscErrorCode PCLMVMSetMatLMVM(PC pc, Mat B) in PCLMVMSetMatLMVM() argument
69 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCLMVMSetMatLMVM()
71 PetscCall(PetscObjectTypeCompare((PetscObject)pc, PCLMVM, &same)); in PCLMVMSetMatLMVM()
74 …PetscCheck(same, PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_WRONG, "Matrix must be an MATLMVM… in PCLMVMSetMatLMVM()
75 ctx = (PC_LMVM *)pc->data; in PCLMVMSetMatLMVM()
95 PetscErrorCode PCLMVMGetMatLMVM(PC pc, Mat *B) in PCLMVMGetMatLMVM() argument
101 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCLMVMGetMatLMVM()
102 PetscCall(PetscObjectTypeCompare((PetscObject)pc, PCLMVM, &same)); in PCLMVMGetMatLMVM()
103 …PetscCheck(same, PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_WRONG, "PC must be a PCLMVM type.… in PCLMVMGetMatLMVM()
104 ctx = (PC_LMVM *)pc->data; in PCLMVMGetMatLMVM()
108 if (pc->useAmat) J = pc->mat; in PCLMVMGetMatLMVM()
109 else J = pc->pmat; in PCLMVMGetMatLMVM()
115 PetscCall(PCGetOptionsPrefix(pc, &prefix)); in PCLMVMGetMatLMVM()
116 PetscCall(MatCreate(PetscObjectComm((PetscObject)pc), &ctx->B)); in PCLMVMGetMatLMVM()
120 PetscCall(PetscObjectIncrementTabLevel((PetscObject)ctx->B, (PetscObject)pc, 1)); in PCLMVMGetMatLMVM()
141 PetscErrorCode PCLMVMSetIS(PC pc, IS inactive) in PCLMVMSetIS() argument
147 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCLMVMSetIS()
149 PetscCall(PetscObjectTypeCompare((PetscObject)pc, PCLMVM, &same)); in PCLMVMSetIS()
151 ctx = (PC_LMVM *)pc->data; in PCLMVMSetIS()
152 PetscCall(PCLMVMClearIS(pc)); in PCLMVMSetIS()
168 PetscErrorCode PCLMVMClearIS(PC pc) in PCLMVMClearIS() argument
174 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCLMVMClearIS()
175 PetscCall(PetscObjectTypeCompare((PetscObject)pc, PCLMVM, &same)); in PCLMVMClearIS()
177 ctx = (PC_LMVM *)pc->data; in PCLMVMClearIS()
182 static PetscErrorCode PCApply_LMVM(PC pc, Vec x, Vec y) in PCApply_LMVM() argument
184 PC_LMVM *ctx = (PC_LMVM *)pc->data; in PCApply_LMVM()
186 Mat B = ctx->B ? ctx->B : (pc->useAmat ? pc->mat : pc->pmat); in PCApply_LMVM()
207 static PetscErrorCode PCReset_LMVM(PC pc) in PCReset_LMVM() argument
209 PC_LMVM *ctx = (PC_LMVM *)pc->data; in PCReset_LMVM()
217 static PetscErrorCode PCSetUp_LMVM(PC pc) in PCSetUp_LMVM() argument
222 PC_LMVM *ctx = (PC_LMVM *)pc->data; in PCSetUp_LMVM()
225 PetscCall(PCLMVMGetMatLMVM(pc, &B)); in PCSetUp_LMVM()
230 PetscCall(MatCreateVecs(pc->mat, &t1, &t2)); in PCSetUp_LMVM()
244 static PetscErrorCode PCView_LMVM(PC pc, PetscViewer viewer) in PCView_LMVM() argument
246 PC_LMVM *ctx = (PC_LMVM *)pc->data; in PCView_LMVM()
259 static PetscErrorCode PCSetFromOptions_LMVM(PC pc, PetscOptionItems PetscOptionsObject) in PCSetFromOptions_LMVM() argument
261 PC_LMVM *ctx = (PC_LMVM *)pc->data; in PCSetFromOptions_LMVM()
269 static PetscErrorCode PCPreSolve_LMVM(PC pc, KSP ksp, Vec F, Vec X) in PCPreSolve_LMVM() argument
271 PC_LMVM *ctx = (PC_LMVM *)pc->data; in PCPreSolve_LMVM()
284 static PetscErrorCode PCDestroy_LMVM(PC pc) in PCDestroy_LMVM() argument
286 PC_LMVM *ctx = (PC_LMVM *)pc->data; in PCDestroy_LMVM()
294 PetscCall(PetscFree(pc->data)); in PCDestroy_LMVM()
308 PETSC_EXTERN PetscErrorCode PCCreate_LMVM(PC pc) in PCCreate_LMVM() argument
314 pc->data = (void *)ctx; in PCCreate_LMVM()
316 pc->ops->reset = PCReset_LMVM; in PCCreate_LMVM()
317 pc->ops->setup = PCSetUp_LMVM; in PCCreate_LMVM()
318 pc->ops->destroy = PCDestroy_LMVM; in PCCreate_LMVM()
319 pc->ops->view = PCView_LMVM; in PCCreate_LMVM()
320 pc->ops->apply = PCApply_LMVM; in PCCreate_LMVM()
321 pc->ops->setfromoptions = PCSetFromOptions_LMVM; in PCCreate_LMVM()
322 pc->ops->applysymmetricleft = NULL; in PCCreate_LMVM()
323 pc->ops->applysymmetricright = NULL; in PCCreate_LMVM()
324 pc->ops->applytranspose = NULL; in PCCreate_LMVM()
325 pc->ops->applyrichardson = NULL; in PCCreate_LMVM()
326 pc->ops->presolve = PCPreSolve_LMVM; in PCCreate_LMVM()
327 pc->ops->postsolve = NULL; in PCCreate_LMVM()