Lines Matching full:pc
11 PetscErrorCode (*destroy)(PC);
12 PetscErrorCode (*setup)(PC);
13 PetscErrorCode (*apply)(PC, Vec, Vec);
14 PetscErrorCode (*matapply)(PC, Mat, Mat);
15 PetscErrorCode (*applysymmetricleft)(PC, Vec, Vec);
16 PetscErrorCode (*applysymmetricright)(PC, Vec, Vec);
17 PetscErrorCode (*applyBA)(PC, PCSide, Vec, Vec, Vec);
18 PetscErrorCode (*presolve)(PC, KSP, Vec, Vec);
19 PetscErrorCode (*postsolve)(PC, KSP, Vec, Vec);
20 PetscErrorCode (*view)(PC, PetscViewer);
21 PetscErrorCode (*applytranspose)(PC, Vec, Vec);
22 PetscErrorCode (*matapplytranspose)(PC, Mat, Mat);
23 …PetscErrorCode (*applyrich)(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBoo…
29 …PCShellGetContext - Returns the user-provided context associated with a shell `PC` that was provid…
34 . pc - of type `PCSHELL`
50 .seealso: [](ch_ksp), `PC`, `PCSHELL`, `PCShellSetContext()`, `PCShellSetApply()`, `PCShellSetDestr…
52 PetscErrorCode PCShellGetContext(PC pc, PetscCtxRt ctx) in PCShellGetContext() argument
57 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellGetContext()
59 PetscCall(PetscObjectTypeCompare((PetscObject)pc, PCSHELL, &flg)); in PCShellGetContext()
61 else *(void **)ctx = ((PC_Shell *)pc->data)->ctx; in PCShellGetContext()
66 …PCShellSetContext - sets the context for a shell `PC` that can be accessed with `PCShellGetContext…
71 + pc - the `PC` of type `PCSHELL`
79 …One should also provide a routine to destroy the context when `pc` is destroyed with `PCShellSetDe…
85 .seealso: [](ch_ksp), `PC`, `PCShellGetContext()`, `PCSHELL`, `PCShellSetApply()`, `PCShellSetDestr…
87 PetscErrorCode PCShellSetContext(PC pc, PetscCtx ctx) in PCShellSetContext() argument
89 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetContext()
93 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetContext()
94 PetscCall(PetscObjectTypeCompare((PetscObject)pc, PCSHELL, &flg)); in PCShellSetContext()
99 static PetscErrorCode PCSetUp_Shell(PC pc) in PCSetUp_Shell() argument
101 PC_Shell *shell = (PC_Shell *)pc->data; in PCSetUp_Shell()
104 …ck(shell->setup, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No setup() routine provided to… in PCSetUp_Shell()
105 PetscCallBack("PCSHELL callback setup", (*shell->setup)(pc)); in PCSetUp_Shell()
109 static PetscErrorCode PCApply_Shell(PC pc, Vec x, Vec y) in PCApply_Shell() argument
111 PC_Shell *shell = (PC_Shell *)pc->data; in PCApply_Shell()
115 …ck(shell->apply, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No apply() routine provided to… in PCApply_Shell()
117 PetscCallBack("PCSHELL callback apply", (*shell->apply)(pc, x, y)); in PCApply_Shell()
124 static PetscErrorCode PCMatApply_Shell(PC pc, Mat X, Mat Y) in PCMatApply_Shell() argument
126 PC_Shell *shell = (PC_Shell *)pc->data; in PCMatApply_Shell()
130 …shell->matapply, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No apply() routine provided to… in PCMatApply_Shell()
132 PetscCallBack("PCSHELL callback apply", (*shell->matapply)(pc, X, Y)); in PCMatApply_Shell()
139 static PetscErrorCode PCApplySymmetricLeft_Shell(PC pc, Vec x, Vec y) in PCApplySymmetricLeft_Shell() argument
141 PC_Shell *shell = (PC_Shell *)pc->data; in PCApplySymmetricLeft_Shell()
144 …lysymmetricleft, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No apply() routine provided to… in PCApplySymmetricLeft_Shell()
145 PetscCallBack("PCSHELL callback apply symmetric left", (*shell->applysymmetricleft)(pc, x, y)); in PCApplySymmetricLeft_Shell()
149 static PetscErrorCode PCApplySymmetricRight_Shell(PC pc, Vec x, Vec y) in PCApplySymmetricRight_Shell() argument
151 PC_Shell *shell = (PC_Shell *)pc->data; in PCApplySymmetricRight_Shell()
154 …ysymmetricright, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No apply() routine provided to… in PCApplySymmetricRight_Shell()
155 PetscCallBack("PCSHELL callback apply symmetric right", (*shell->applysymmetricright)(pc, x, y)); in PCApplySymmetricRight_Shell()
159 static PetscErrorCode PCApplyBA_Shell(PC pc, PCSide side, Vec x, Vec y, Vec w) in PCApplyBA_Shell() argument
161 PC_Shell *shell = (PC_Shell *)pc->data; in PCApplyBA_Shell()
165 …shell->applyBA, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No applyBA() routine provided t… in PCApplyBA_Shell()
167 PetscCallBack("PCSHELL callback applyBA", (*shell->applyBA)(pc, side, x, y, w)); in PCApplyBA_Shell()
174 static PetscErrorCode PCPreSolveChangeRHS_Shell(PC pc, PetscBool *change) in PCPreSolveChangeRHS_Shell() argument
181 static PetscErrorCode PCPreSolve_Shell(PC pc, KSP ksp, Vec b, Vec x) in PCPreSolve_Shell() argument
183 PC_Shell *shell = (PC_Shell *)pc->data; in PCPreSolve_Shell()
186 …ell->presolve, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No presolve() routine provided t… in PCPreSolve_Shell()
187 PetscCallBack("PCSHELL callback presolve", (*shell->presolve)(pc, ksp, b, x)); in PCPreSolve_Shell()
191 static PetscErrorCode PCPostSolve_Shell(PC pc, KSP ksp, Vec b, Vec x) in PCPostSolve_Shell() argument
193 PC_Shell *shell = (PC_Shell *)pc->data; in PCPostSolve_Shell()
196 …ll->postsolve, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No postsolve() routine provided … in PCPostSolve_Shell()
197 PetscCallBack("PCSHELL callback postsolve()", (*shell->postsolve)(pc, ksp, b, x)); in PCPostSolve_Shell()
201 static PetscErrorCode PCApplyTranspose_Shell(PC pc, Vec x, Vec y) in PCApplyTranspose_Shell() argument
203 PC_Shell *shell = (PC_Shell *)pc->data; in PCApplyTranspose_Shell()
207 …ytranspose, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No applytranspose() routine provide… in PCApplyTranspose_Shell()
209 PetscCallBack("PCSHELL callback applytranspose", (*shell->applytranspose)(pc, x, y)); in PCApplyTranspose_Shell()
216 static PetscErrorCode PCMatApplyTranspose_Shell(PC pc, Mat x, Mat y) in PCMatApplyTranspose_Shell() argument
218 PC_Shell *shell = (PC_Shell *)pc->data; in PCMatApplyTranspose_Shell()
222 …transpose, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No matapplytranspose() routine provi… in PCMatApplyTranspose_Shell()
224 PetscCallBack("PCSHELL callback matapplytranspose", (*shell->matapplytranspose)(pc, x, y)); in PCMatApplyTranspose_Shell()
231 static PetscErrorCode PCApplyRichardson_Shell(PC pc, Vec x, Vec y, Vec w, PetscReal rtol, PetscReal… in PCApplyRichardson_Shell() argument
233 PC_Shell *shell = (PC_Shell *)pc->data; in PCApplyRichardson_Shell()
237 …>applyrich, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "No applyrichardson() routine provid… in PCApplyRichardson_Shell()
239 …PetscCallBack("PCSHELL callback applyrichardson", (*shell->applyrich)(pc, x, y, w, rtol, abstol, d… in PCApplyRichardson_Shell()
246 static PetscErrorCode PCDestroy_Shell(PC pc) in PCDestroy_Shell() argument
248 PC_Shell *shell = (PC_Shell *)pc->data; in PCDestroy_Shell()
252 if (shell->destroy) PetscCallBack("PCSHELL callback destroy", (*shell->destroy)(pc)); in PCDestroy_Shell()
253 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetDestroy_C", NULL)); in PCDestroy_Shell()
254 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetSetUp_C", NULL)); in PCDestroy_Shell()
255 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApply_C", NULL)); in PCDestroy_Shell()
256 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetMatApply_C", NULL)); in PCDestroy_Shell()
257 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplySymmetricLeft_C", NULL)); in PCDestroy_Shell()
258 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplySymmetricRight_C", NULL)); in PCDestroy_Shell()
259 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplyBA_C", NULL)); in PCDestroy_Shell()
260 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetPreSolve_C", NULL)); in PCDestroy_Shell()
261 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetPostSolve_C", NULL)); in PCDestroy_Shell()
262 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetView_C", NULL)); in PCDestroy_Shell()
263 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplyTranspose_C", NULL)); in PCDestroy_Shell()
264 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetMatApplyTranspose_C", NULL)); in PCDestroy_Shell()
265 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetName_C", NULL)); in PCDestroy_Shell()
266 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellGetName_C", NULL)); in PCDestroy_Shell()
267 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplyRichardson_C", NULL)); in PCDestroy_Shell()
268 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCPreSolveChangeRHS_C", NULL)); in PCDestroy_Shell()
269 PetscCall(PetscFree(pc->data)); in PCDestroy_Shell()
273 static PetscErrorCode PCView_Shell(PC pc, PetscViewer viewer) in PCView_Shell() argument
275 PC_Shell *shell = (PC_Shell *)pc->data; in PCView_Shell()
286 PetscCall((*shell->view)(pc, viewer)); in PCView_Shell()
292 static PetscErrorCode PCShellSetDestroy_Shell(PC pc, PetscErrorCode (*destroy)(PC)) in PCShellSetDestroy_Shell() argument
294 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetDestroy_Shell()
301 static PetscErrorCode PCShellSetSetUp_Shell(PC pc, PetscErrorCode (*setup)(PC)) in PCShellSetSetUp_Shell() argument
303 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetSetUp_Shell()
307 if (setup) pc->ops->setup = PCSetUp_Shell; in PCShellSetSetUp_Shell()
308 else pc->ops->setup = NULL; in PCShellSetSetUp_Shell()
312 static PetscErrorCode PCShellSetApply_Shell(PC pc, PetscErrorCode (*apply)(PC, Vec, Vec)) in PCShellSetApply_Shell() argument
314 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetApply_Shell()
321 static PetscErrorCode PCShellSetMatApply_Shell(PC pc, PetscErrorCode (*matapply)(PC, Mat, Mat)) in PCShellSetMatApply_Shell() argument
323 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetMatApply_Shell()
327 if (matapply) pc->ops->matapply = PCMatApply_Shell; in PCShellSetMatApply_Shell()
328 else pc->ops->matapply = NULL; in PCShellSetMatApply_Shell()
332 static PetscErrorCode PCShellSetApplySymmetricLeft_Shell(PC pc, PetscErrorCode (*apply)(PC, Vec, Ve… in PCShellSetApplySymmetricLeft_Shell() argument
334 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetApplySymmetricLeft_Shell()
341 static PetscErrorCode PCShellSetApplySymmetricRight_Shell(PC pc, PetscErrorCode (*apply)(PC, Vec, V… in PCShellSetApplySymmetricRight_Shell() argument
343 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetApplySymmetricRight_Shell()
350 static PetscErrorCode PCShellSetApplyBA_Shell(PC pc, PetscErrorCode (*applyBA)(PC, PCSide, Vec, Vec… in PCShellSetApplyBA_Shell() argument
352 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetApplyBA_Shell()
356 if (applyBA) pc->ops->applyBA = PCApplyBA_Shell; in PCShellSetApplyBA_Shell()
357 else pc->ops->applyBA = NULL; in PCShellSetApplyBA_Shell()
361 static PetscErrorCode PCShellSetPreSolve_Shell(PC pc, PCShellPSolveFn *presolve) in PCShellSetPreSolve_Shell() argument
363 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetPreSolve_Shell()
368 pc->ops->presolve = PCPreSolve_Shell; in PCShellSetPreSolve_Shell()
369 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCPreSolveChangeRHS_C", PCPreSolveChangeRHS… in PCShellSetPreSolve_Shell()
371 pc->ops->presolve = NULL; in PCShellSetPreSolve_Shell()
372 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCPreSolveChangeRHS_C", NULL)); in PCShellSetPreSolve_Shell()
377 static PetscErrorCode PCShellSetPostSolve_Shell(PC pc, PCShellPSolveFn *postsolve) in PCShellSetPostSolve_Shell() argument
379 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetPostSolve_Shell()
383 if (postsolve) pc->ops->postsolve = PCPostSolve_Shell; in PCShellSetPostSolve_Shell()
384 else pc->ops->postsolve = NULL; in PCShellSetPostSolve_Shell()
388 static PetscErrorCode PCShellSetView_Shell(PC pc, PetscErrorCode (*view)(PC, PetscViewer)) in PCShellSetView_Shell() argument
390 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetView_Shell()
397 static PetscErrorCode PCShellSetApplyTranspose_Shell(PC pc, PetscErrorCode (*applytranspose)(PC, Ve… in PCShellSetApplyTranspose_Shell() argument
399 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetApplyTranspose_Shell()
403 if (applytranspose) pc->ops->applytranspose = PCApplyTranspose_Shell; in PCShellSetApplyTranspose_Shell()
404 else pc->ops->applytranspose = NULL; in PCShellSetApplyTranspose_Shell()
408 …atic PetscErrorCode PCShellSetMatApplyTranspose_Shell(PC pc, PetscErrorCode (*matapplytranspose)(P… in PCShellSetMatApplyTranspose_Shell() argument
410 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetMatApplyTranspose_Shell()
414 if (matapplytranspose) pc->ops->matapplytranspose = PCMatApplyTranspose_Shell; in PCShellSetMatApplyTranspose_Shell()
415 else pc->ops->matapplytranspose = NULL; in PCShellSetMatApplyTranspose_Shell()
419 static PetscErrorCode PCShellSetApplyRichardson_Shell(PC pc, PetscErrorCode (*applyrich)(PC, Vec, V… in PCShellSetApplyRichardson_Shell() argument
421 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetApplyRichardson_Shell()
425 if (applyrich) pc->ops->applyrichardson = PCApplyRichardson_Shell; in PCShellSetApplyRichardson_Shell()
426 else pc->ops->applyrichardson = NULL; in PCShellSetApplyRichardson_Shell()
430 static PetscErrorCode PCShellSetName_Shell(PC pc, const char name[]) in PCShellSetName_Shell() argument
432 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellSetName_Shell()
440 static PetscErrorCode PCShellGetName_Shell(PC pc, const char *name[]) in PCShellGetName_Shell() argument
442 PC_Shell *shell = (PC_Shell *)pc->data; in PCShellGetName_Shell()
455 + pc - the preconditioner context
459 . pc - the preconditioner
465 PetscErrorCode PCShellSetDestroy(PC pc, PetscErrorCode (*destroy)(PC pc)) in PCShellSetDestroy() argument
468 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetDestroy()
469 PetscTryMethod(pc, "PCShellSetDestroy_C", (PC, PetscErrorCode (*)(PC)), (pc, destroy)); in PCShellSetDestroy()
480 + pc - the preconditioner context
484 . pc - the preconditioner
493 PetscErrorCode PCShellSetSetUp(PC pc, PetscErrorCode (*setup)(PC pc)) in PCShellSetSetUp() argument
496 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetSetUp()
497 PetscTryMethod(pc, "PCShellSetSetUp_C", (PC, PetscErrorCode (*)(PC)), (pc, setup)); in PCShellSetSetUp()
507 + pc - the preconditioner context
511 + pc - the preconditioner
519 .seealso: [](ch_ksp), `PC`, `PCSHELL`, `PCShellSetApplyRichardson()`, `PCShellSetSetUp()`, `PCShell…
521 PetscErrorCode PCShellSetView(PC pc, PetscErrorCode (*view)(PC pc, PetscViewer v)) in PCShellSetView() argument
524 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetView()
525 PetscTryMethod(pc, "PCShellSetView_C", (PC, PetscErrorCode (*)(PC, PetscViewer)), (pc, view)); in PCShellSetView()
535 + pc - the preconditioner context
539 + pc - the preconditioner, get the application context with `PCShellGetContext()`
550 PetscErrorCode PCShellSetApply(PC pc, PetscErrorCode (*apply)(PC pc, Vec xin, Vec xout)) in PCShellSetApply() argument
553 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetApply()
554 PetscTryMethod(pc, "PCShellSetApply_C", (PC, PetscErrorCode (*)(PC, Vec, Vec)), (pc, apply)); in PCShellSetApply()
564 + pc - the preconditioner context
568 + pc - the preconditioner
579 PetscErrorCode PCShellSetMatApply(PC pc, PetscErrorCode (*matapply)(PC pc, Mat Xin, Mat Xout)) in PCShellSetMatApply() argument
582 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetMatApply()
583 …PetscTryMethod(pc, "PCShellSetMatApply_C", (PC, PetscErrorCode (*)(PC, Mat, Mat)), (pc, matapply)); in PCShellSetMatApply()
593 + pc - the preconditioner context
597 + pc - the preconditioner
608 PetscErrorCode PCShellSetApplySymmetricLeft(PC pc, PetscErrorCode (*apply)(PC pc, Vec xin, Vec xout… in PCShellSetApplySymmetricLeft() argument
611 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetApplySymmetricLeft()
612 …PetscTryMethod(pc, "PCShellSetApplySymmetricLeft_C", (PC, PetscErrorCode (*)(PC, Vec, Vec)), (pc, … in PCShellSetApplySymmetricLeft()
622 + pc - the preconditioner context
626 + pc - the preconditioner
637 PetscErrorCode PCShellSetApplySymmetricRight(PC pc, PetscErrorCode (*apply)(PC pc, Vec xin, Vec xou… in PCShellSetApplySymmetricRight() argument
640 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetApplySymmetricRight()
641 …PetscTryMethod(pc, "PCShellSetApplySymmetricRight_C", (PC, PetscErrorCode (*)(PC, Vec, Vec)), (pc,… in PCShellSetApplySymmetricRight()
651 + pc - the preconditioner context
655 + pc - the preconditioner
668 PetscErrorCode PCShellSetApplyBA(PC pc, PetscErrorCode (*applyBA)(PC pc, PCSide side, Vec xin, Vec … in PCShellSetApplyBA() argument
671 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetApplyBA()
672 …PetscTryMethod(pc, "PCShellSetApplyBA_C", (PC, PetscErrorCode (*)(PC, PCSide, Vec, Vec, Vec)), (pc… in PCShellSetApplyBA()
682 + pc - the preconditioner context
686 + pc - the preconditioner
697 PetscErrorCode PCShellSetApplyTranspose(PC pc, PetscErrorCode (*applytranspose)(PC pc, Vec xin, Vec… in PCShellSetApplyTranspose() argument
700 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetApplyTranspose()
701 …PetscTryMethod(pc, "PCShellSetApplyTranspose_C", (PC, PetscErrorCode (*)(PC, Vec, Vec)), (pc, appl… in PCShellSetApplyTranspose()
711 + pc - the preconditioner context
715 + pc - the preconditioner
726 PetscErrorCode PCShellSetMatApplyTranspose(PC pc, PetscErrorCode (*matapplytranspose)(PC pc, Mat xi… in PCShellSetMatApplyTranspose() argument
729 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetMatApplyTranspose()
730 …PetscTryMethod(pc, "PCShellSetMatApplyTranspose_C", (PC, PetscErrorCode (*)(PC, Mat, Mat)), (pc, m… in PCShellSetMatApplyTranspose()
742 + pc - the preconditioner context
752 PetscErrorCode PCShellSetPreSolve(PC pc, PCShellPSolveFn *presolve) in PCShellSetPreSolve() argument
755 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetPreSolve()
756 PetscTryMethod(pc, "PCShellSetPreSolve_C", (PC, PCShellPSolveFn *), (pc, presolve)); in PCShellSetPreSolve()
768 + pc - the preconditioner context
778 PetscErrorCode PCShellSetPostSolve(PC pc, PCShellPSolveFn *postsolve) in PCShellSetPostSolve() argument
781 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetPostSolve()
782 PetscTryMethod(pc, "PCShellSetPostSolve_C", (PC, PCShellPSolveFn *), (pc, postsolve)); in PCShellSetPostSolve()
793 + pc - the preconditioner context
803 PetscErrorCode PCShellSetName(PC pc, const char name[]) in PCShellSetName() argument
806 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetName()
807 PetscTryMethod(pc, "PCShellSetName_C", (PC, const char[]), (pc, name)); in PCShellSetName()
818 . pc - the preconditioner context
827 PetscErrorCode PCShellGetName(PC pc, const char *name[]) in PCShellGetName() argument
830 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellGetName()
832 PetscUseMethod(pc, "PCShellGetName_C", (PC, const char *[]), (pc, name)); in PCShellGetName()
843 + pc - the preconditioner context
847 + pc - the preconditioner
869 PetscErrorCode PCShellSetApplyRichardson(PC pc, PetscErrorCode (*apply)(PC pc, Vec b, Vec x, Vec r,… in PCShellSetApplyRichardson() argument
872 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCShellSetApplyRichardson()
873 …pc, "PCShellSetApplyRichardson_C", (PC, PetscErrorCode (*)(PC, Vec, Vec, Vec, PetscReal, PetscReal… in PCShellSetApplyRichardson()
885 extern PetscErrorCode apply(PC,Vec,Vec);
886 extern PetscErrorCode applyba(PC,PCSide,Vec,Vec,Vec);
887 extern PetscErrorCode applytranspose(PC,Vec,Vec);
888 extern PetscErrorCode setup(PC);
889 extern PetscErrorCode destroy(PC);
891 PCCreate(comm,&pc);
892 PCSetType(pc,PCSHELL);
893 PCShellSetContext(pc,ctx)
894 PCShellSetApply(pc,apply);
895 PCShellSetApplyBA(pc,applyba); (optional)
896 PCShellSetApplyTranspose(pc,applytranspose); (optional)
897 PCShellSetSetUp(pc,setup); (optional)
898 PCShellSetDestroy(pc,destroy); (optional)
909 .seealso: [](ch_ksp), `PCCreate()`, `PCSetType()`, `PCType`, `PC`,
915 PETSC_EXTERN PetscErrorCode PCCreate_Shell(PC pc) in PCCreate_Shell() argument
921 pc->data = (void *)shell; in PCCreate_Shell()
923 pc->ops->destroy = PCDestroy_Shell; in PCCreate_Shell()
924 pc->ops->view = PCView_Shell; in PCCreate_Shell()
925 pc->ops->apply = PCApply_Shell; in PCCreate_Shell()
926 pc->ops->applysymmetricleft = PCApplySymmetricLeft_Shell; in PCCreate_Shell()
927 pc->ops->applysymmetricright = PCApplySymmetricRight_Shell; in PCCreate_Shell()
928 pc->ops->matapply = NULL; in PCCreate_Shell()
929 pc->ops->applytranspose = NULL; in PCCreate_Shell()
930 pc->ops->applyrichardson = NULL; in PCCreate_Shell()
931 pc->ops->setup = NULL; in PCCreate_Shell()
932 pc->ops->presolve = NULL; in PCCreate_Shell()
933 pc->ops->postsolve = NULL; in PCCreate_Shell()
948 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetDestroy_C", PCShellSetDestroy_She… in PCCreate_Shell()
949 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetSetUp_C", PCShellSetSetUp_Shell)); in PCCreate_Shell()
950 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApply_C", PCShellSetApply_Shell)); in PCCreate_Shell()
951 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetMatApply_C", PCShellSetMatApply_S… in PCCreate_Shell()
952 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplySymmetricLeft_C", PCShellSet… in PCCreate_Shell()
953 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplySymmetricRight_C", PCShellSe… in PCCreate_Shell()
954 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplyBA_C", PCShellSetApplyBA_She… in PCCreate_Shell()
955 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetPreSolve_C", PCShellSetPreSolve_S… in PCCreate_Shell()
956 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetPostSolve_C", PCShellSetPostSolve… in PCCreate_Shell()
957 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetView_C", PCShellSetView_Shell)); in PCCreate_Shell()
958 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplyTranspose_C", PCShellSetAppl… in PCCreate_Shell()
959 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetMatApplyTranspose_C", PCShellSetM… in PCCreate_Shell()
960 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetName_C", PCShellSetName_Shell)); in PCCreate_Shell()
961 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellGetName_C", PCShellGetName_Shell)); in PCCreate_Shell()
962 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCShellSetApplyRichardson_C", PCShellSetApp… in PCCreate_Shell()