1d03aef70SBarry Smith /*
237f753daSBarry Smith Preconditioner module.
3d03aef70SBarry Smith */
4a4963045SJacob Faibussowitsch #pragma once
5ac09b921SBarry Smith
61e25c274SJed Brown #include <petscmat.h>
777a3c058SKarl Rupp #include <petscdmtypes.h>
8b0753f9dSMatthew G. Knepley #include <petscpctypes.h>
9d03aef70SBarry Smith
10ce78bad3SBarry Smith /* MANSEC = KSP */
11ac09b921SBarry Smith /* SUBMANSEC = PC */
12ac09b921SBarry Smith
13607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PCInitializePackage(void);
144bf303faSJacob Faibussowitsch PETSC_EXTERN PetscErrorCode PCFinalizePackage(void);
151dbb0a54SBarry Smith
16eec0b4cfSBarry Smith /*
17eec0b4cfSBarry Smith PCList contains the list of preconditioners currently registered
18bdf89e91SBarry Smith These are added with PCRegister()
19eec0b4cfSBarry Smith */
20140e18c1SBarry Smith PETSC_EXTERN PetscFunctionList PCList;
2182bf6240SBarry Smith
22123ea438SMatthew Knepley /* Logging support */
23014dd563SJed Brown PETSC_EXTERN PetscClassId PC_CLASSID;
24123ea438SMatthew Knepley
259d8081ecSMatthew G. Knepley /* Arrays of names for options in implementation PCs */
269d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const *const PCSides;
279d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCJacobiTypes[];
289d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCASMTypes[];
299d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCGASMTypes[];
309d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCCompositeTypes[];
319d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCFieldSplitSchurPreTypes[];
329d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCFieldSplitSchurFactTypes[];
339d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCPARMSGlobalTypes[];
349d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCPARMSLocalTypes[];
359d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCMGTypes[];
369d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCMGCycleTypes[];
379d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCMGGalerkinTypes[];
38557cf195SMatthew G. Knepley PETSC_EXTERN const char *const PCMGCoarseSpaceTypes[];
399d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCExoticTypes[];
409d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCPatchConstructTypes[];
4137eeb815SJakub Kruzik PETSC_EXTERN const char *const PCDeflationTypes[];
421b2b9847SBarry Smith PETSC_EXTERN const char *const *const PCFailedReasons;
439d8081ecSMatthew G. Knepley
44014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCreate(MPI_Comm, PC *);
4519fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode PCSetType(PC, PCType);
46c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGetType(PC, PCType *);
47014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetUp(PC);
481b2b9847SBarry Smith
493821be0aSBarry Smith PETSC_EXTERN PetscErrorCode PCSetKSPNestLevel(PC, PetscInt);
503821be0aSBarry Smith PETSC_EXTERN PetscErrorCode PCGetKSPNestLevel(PC, PetscInt *);
513821be0aSBarry Smith
521b2b9847SBarry Smith PETSC_EXTERN PetscErrorCode PCSetFailedReason(PC, PCFailedReason);
53c0decd05SBarry Smith PETSC_EXTERN PetscErrorCode PCGetFailedReason(PC, PCFailedReason *);
PCGetSetUpFailedReason(PC pc,PCFailedReason * reason)54edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 11, 0, "PCGetFailedReason()", ) static inline PetscErrorCode PCGetSetUpFailedReason(PC pc, PCFailedReason *reason)
55d71ae5a4SJacob Faibussowitsch {
569371c9d4SSatish Balay return PCGetFailedReason(pc, reason);
579371c9d4SSatish Balay }
586479e835SStefano Zampini PETSC_EXTERN PetscErrorCode PCReduceFailedReason(PC);
591b2b9847SBarry Smith
60014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetUpOnBlocks(PC);
61014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApply(PC, Vec, Vec);
62c677e75fSPierre Jolivet PETSC_EXTERN PetscErrorCode PCMatApply(PC, Mat, Mat);
63014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplySymmetricLeft(PC, Vec, Vec);
64014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplySymmetricRight(PC, Vec, Vec);
65014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyBAorAB(PC, PCSide, Vec, Vec, Vec);
66014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyTranspose(PC, Vec, Vec);
674dbf25a8SPierre Jolivet PETSC_EXTERN PetscErrorCode PCMatApplyTranspose(PC, Mat, Mat);
68014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyTransposeExists(PC, PetscBool *);
69014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyBAorABTranspose(PC, PCSide, Vec, Vec, Vec);
7023ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCSetReusePreconditioner(PC, PetscBool);
71c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGetReusePreconditioner(PC, PetscBool *);
72422a814eSBarry Smith PETSC_EXTERN PetscErrorCode PCSetErrorIfFailure(PC, PetscBool);
734d0a8057SBarry Smith
7455849f57SBarry Smith #define PC_FILE_CLASSID 1211222
7555849f57SBarry Smith
76014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyRichardson(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *);
77014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyRichardsonExists(PC, PetscBool *);
7849517cdeSBarry Smith PETSC_EXTERN PetscErrorCode PCSetUseAmat(PC, PetscBool);
7949517cdeSBarry Smith PETSC_EXTERN PetscErrorCode PCGetUseAmat(PC, PetscBool *);
8084cb2905SBarry Smith
81bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode PCRegister(const char[], PetscErrorCode (*)(PC));
8230de9b25SBarry Smith
83014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCReset(PC);
84014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDestroy(PC *);
85014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetFromOptions(PC);
8614c91fddSBarry Smith
87014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorGetMatrix(PC, Mat *);
884d4d2bdcSBarry Smith
894d4d2bdcSBarry Smith /*S
904d4d2bdcSBarry Smith PCModifySubMatricesFn - A prototype of a function used to modify submatrices generated with `PCASM`, `PCBJACOBI`, etc.
914d4d2bdcSBarry Smith
924d4d2bdcSBarry Smith Calling Sequence:
934d4d2bdcSBarry Smith + pc - the `PC` preconditioner context
944d4d2bdcSBarry Smith . nsub - number of index sets
954d4d2bdcSBarry Smith . row - an array of index sets that contain the global row numbers
964d4d2bdcSBarry Smith that comprise each local submatrix
974d4d2bdcSBarry Smith . col - an array of index sets that contain the global column numbers
984d4d2bdcSBarry Smith that comprise each local submatrix
994d4d2bdcSBarry Smith . submat - array of local submatrices
1004d4d2bdcSBarry Smith - ctx - optional user-defined context for private data for the user-defined func routine (may be `NULL`), provided with `PCSetModifySubMatrices()`
1014d4d2bdcSBarry Smith
1024d4d2bdcSBarry Smith Level: beginner
1034d4d2bdcSBarry Smith
1044d4d2bdcSBarry Smith .seealso: [](ch_ksp), `PC`, `PCSetModifySubMatrices()`, `PCModifySubMatrices()`, `PCASM`, `PCBJACOBI`
1054d4d2bdcSBarry Smith S*/
106*2a8381b2SBarry Smith PETSC_EXTERN_TYPEDEF typedef PetscErrorCode PCModifySubMatricesFn(PC pc, PetscInt nsub, const IS row[], const IS col[], Mat submat[], PetscCtx ctx);
1074d4d2bdcSBarry Smith
1084d4d2bdcSBarry Smith PETSC_EXTERN PetscErrorCode PCSetModifySubMatrices(PC, PCModifySubMatricesFn *, void *);
1094d4d2bdcSBarry Smith PETSC_EXTERN PCModifySubMatricesFn PCModifySubMatrices;
1105b116368SBarry Smith
11123ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCSetOperators(PC, Mat, Mat);
11223ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCGetOperators(PC, Mat *, Mat *);
113014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetOperatorsSet(PC, PetscBool *, PetscBool *);
1144b0e389bSBarry Smith
115014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCView(PC, PetscViewer);
11655849f57SBarry Smith PETSC_EXTERN PetscErrorCode PCLoad(PC, PetscViewer);
117fe2efc57SMark PETSC_EXTERN PetscErrorCode PCViewFromOptions(PC, PetscObject, const char[]);
1187bc3d0afSSatish Balay
119014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetOptionsPrefix(PC, const char[]);
120014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCAppendOptionsPrefix(PC, const char[]);
121014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetOptionsPrefix(PC, const char *[]);
1228ed539a5SBarry Smith
1230bacdadaSStefano Zampini PETSC_EXTERN PetscErrorCode PCComputeOperator(PC, MatType, Mat *);
PCComputeExplicitOperator(PC A,Mat * B)124edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 12, 0, "PCComputeOperator()", ) static inline PetscErrorCode PCComputeExplicitOperator(PC A, Mat *B)
125d71ae5a4SJacob Faibussowitsch {
126f22e26b7SPierre Jolivet return PCComputeOperator(A, PETSC_NULLPTR, B);
1279371c9d4SSatish Balay }
12871601f6fSBarry Smith
129ab76df0cSBarry Smith PETSC_EXTERN PetscErrorCode PCSetPostSetUp(PC, PetscErrorCode (*)(PC));
130ab76df0cSBarry Smith
131d6913704SBarry Smith /*
132d6913704SBarry Smith These are used to provide extra scaling of preconditioned
1330f3b3ca1SHong Zhang operator for time-stepping schemes like in SUNDIALS
134d6913704SBarry Smith */
135014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetDiagonalScale(PC, PetscBool *);
136014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDiagonalScaleLeft(PC, Vec, Vec);
137014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDiagonalScaleRight(PC, Vec, Vec);
138014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetDiagonalScale(PC, Vec);
139d6913704SBarry Smith
140f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCSetDM(PC, DM);
141f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCGetDM(PC, DM *);
142f02e8f50SMatthew G. Knepley
143fd2dd295SFande Kong PETSC_EXTERN PetscErrorCode PCGetInterpolations(PC, PetscInt *, Mat *[]);
144ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCGetCoarseOperators(PC, PetscInt *, Mat *[]);
145fd2dd295SFande Kong
14622794d57SStefano Zampini PETSC_EXTERN PetscErrorCode PCSetCoordinates(PC, PetscInt, PetscInt, PetscReal[]);
147f02e8f50SMatthew G. Knepley
148*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode PCSetApplicationContext(PC, PetscCtx);
149*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode PCGetApplicationContext(PC, PetscCtxRt);
150f02e8f50SMatthew G. Knepley
15184cb2905SBarry Smith /* ------------- options specific to particular preconditioners --------- */
152329f5518SBarry Smith
153baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiSetType(PC, PCJacobiType);
154baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetType(PC, PCJacobiType *);
155baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiSetUseAbs(PC, PetscBool);
156baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetUseAbs(PC, PetscBool *);
15767ed0f3bSStefano Zampini PETSC_EXTERN PetscErrorCode PCJacobiSetFixDiagonal(PC, PetscBool);
15867ed0f3bSStefano Zampini PETSC_EXTERN PetscErrorCode PCJacobiGetFixDiagonal(PC, PetscBool *);
159ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetDiagonal(PC, Vec, Vec);
160eede4a3fSMark Adams PETSC_EXTERN PetscErrorCode PCJacobiSetRowl1Scale(PC, PetscReal);
161eede4a3fSMark Adams PETSC_EXTERN PetscErrorCode PCJacobiGetRowl1Scale(PC, PetscReal *);
162014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetSymmetric(PC, MatSORType);
163c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetSymmetric(PC, MatSORType *);
164014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetOmega(PC, PetscReal);
165c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetOmega(PC, PetscReal *);
166014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetIterations(PC, PetscInt, PetscInt);
167c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetIterations(PC, PetscInt *, PetscInt *);
168d03aef70SBarry Smith
169014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCEisenstatSetOmega(PC, PetscReal);
170c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatGetOmega(PC, PetscReal *);
171c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatSetNoDiagonalScaling(PC, PetscBool);
172c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatGetNoDiagonalScaling(PC, PetscBool *);
173421c37bdSBarry Smith
174014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBJacobiSetTotalBlocks(PC, PetscInt, const PetscInt[]);
175c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCBJacobiGetTotalBlocks(PC, PetscInt *, const PetscInt *[]);
176014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBJacobiSetLocalBlocks(PC, PetscInt, const PetscInt[]);
177c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCBJacobiGetLocalBlocks(PC, PetscInt *, const PetscInt *[]);
1781eb62cbbSBarry Smith
179014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApply(PC, PetscErrorCode (*)(PC, Vec, Vec));
1807b6e2003SPierre Jolivet PETSC_EXTERN PetscErrorCode PCShellSetMatApply(PC, PetscErrorCode (*)(PC, Mat, Mat));
1811b581b66SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricLeft(PC, PetscErrorCode (*)(PC, Vec, Vec));
1821b581b66SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricRight(PC, PetscErrorCode (*)(PC, Vec, Vec));
183014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyBA(PC, PetscErrorCode (*)(PC, PCSide, Vec, Vec, Vec));
184014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyTranspose(PC, PetscErrorCode (*)(PC, Vec, Vec));
1859fa64a6bSPierre Jolivet PETSC_EXTERN PetscErrorCode PCShellSetMatApplyTranspose(PC, PetscErrorCode (*)(PC, Mat, Mat));
186014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetSetUp(PC, PetscErrorCode (*)(PC));
187014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyRichardson(PC, PetscErrorCode (*)(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *));
188014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetView(PC, PetscErrorCode (*)(PC, PetscViewer));
189014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetDestroy(PC, PetscErrorCode (*)(PC));
190*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetContext(PC, PetscCtx);
191*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode PCShellGetContext(PC, PetscCtxRt);
192014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetName(PC, const char[]);
193014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellGetName(PC, const char *[]);
194aabeff55SBarry Smith
195014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetZeroPivot(PC, PetscReal);
196d90ac83dSHong Zhang
197014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetShiftType(PC, MatFactorShiftType);
198014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetShiftAmount(PC, PetscReal);
199d90ac83dSHong Zhang
200ea799195SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetMatSolverType(PC, MatSolverType);
201ea799195SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetMatSolverType(PC, MatSolverType *);
2023ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetUpMatSolverType(PC);
PCFactorSetMatSolverPackage(PC pc,MatSolverType stype)203edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorSetMatSolverType()", ) static inline PetscErrorCode PCFactorSetMatSolverPackage(PC pc, MatSolverType stype)
204d71ae5a4SJacob Faibussowitsch {
2059371c9d4SSatish Balay return PCFactorSetMatSolverType(pc, stype);
2069371c9d4SSatish Balay }
PCFactorGetMatSolverPackage(PC pc,MatSolverType * stype)207edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorGetMatSolverType()", ) static inline PetscErrorCode PCFactorGetMatSolverPackage(PC pc, MatSolverType *stype)
208d71ae5a4SJacob Faibussowitsch {
2099371c9d4SSatish Balay return PCFactorGetMatSolverType(pc, stype);
2109371c9d4SSatish Balay }
PCFactorSetUpMatSolverPackage(PC pc)211edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorSetUpMatSolverType()", ) static inline PetscErrorCode PCFactorSetUpMatSolverPackage(PC pc)
212d71ae5a4SJacob Faibussowitsch {
2139371c9d4SSatish Balay return PCFactorSetUpMatSolverType(pc);
2149371c9d4SSatish Balay }
2152401956bSBarry Smith
216014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetFill(PC, PetscReal);
217014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetColumnPivot(PC, PetscReal);
218014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorReorderForNonzeroDiagonal(PC, PetscReal);
219421c37bdSBarry Smith
22019fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetMatOrderingType(PC, MatOrderingType);
221014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetReuseOrdering(PC, PetscBool);
222014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetReuseFill(PC, PetscBool);
2238e37d05fSBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetUseInPlace(PC, PetscBool);
2248e37d05fSBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetUseInPlace(PC, PetscBool *);
22592e9c092SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetAllowDiagonalFill(PC, PetscBool);
22692e9c092SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetAllowDiagonalFill(PC, PetscBool *);
227014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetPivotInBlocks(PC, PetscBool);
228f5a88c2aSLois Curfman McInnes
229014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetLevels(PC, PetscInt);
230c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetLevels(PC, PetscInt *);
231014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetDropTolerance(PC, PetscReal, PetscReal, PetscInt);
232c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetZeroPivot(PC, PetscReal *);
233c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetShiftAmount(PC, PetscReal *);
234c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetShiftType(PC, MatFactorShiftType *);
235b35a507dSBarry Smith
236014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetLocalSubdomains(PC, PetscInt, IS[], IS[]);
237014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetTotalSubdomains(PC, PetscInt, IS[], IS[]);
238014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetOverlap(PC, PetscInt);
239d709ea83SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCASMSetDMSubdomains(PC, PetscBool);
240d709ea83SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCASMGetDMSubdomains(PC, PetscBool *);
241014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetSortIndices(PC, PetscBool);
242f746d493SDmitry Karpeev
243014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetType(PC, PCASMType);
244c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCASMGetType(PC, PCASMType *);
24512cd4985SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCASMSetLocalType(PC, PCCompositeType);
24612cd4985SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCASMGetLocalType(PC, PCCompositeType *);
247014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains(Mat, PetscInt, IS *[]);
248ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCASMDestroySubdomains(PetscInt, IS *[], IS *[]);
249ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains2D(PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS *[], IS *[]);
250014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMGetLocalSubdomains(PC, PetscInt *, IS *[], IS *[]);
251014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMGetLocalSubmatrices(PC, PetscInt *, Mat *[]);
25280ec0b7dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCASMGetSubMatType(PC, MatType *);
25380ec0b7dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCASMSetSubMatType(PC, MatType);
254981c4779SBarry Smith
2558f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMSetTotalSubdomains(PC, PetscInt);
256014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetSubdomains(PC, PetscInt, IS[], IS[]);
257014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetOverlap(PC, PetscInt);
2588f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMSetUseDMSubdomains(PC, PetscBool);
2598f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMGetUseDMSubdomains(PC, PetscBool *);
260014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetSortIndices(PC, PetscBool);
261f746d493SDmitry Karpeev
262014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetType(PC, PCGASMType);
2638f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains(Mat, PetscInt, PetscInt *, IS *[]);
2642c112581SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMDestroySubdomains(PetscInt, IS *[], IS *[]);
265ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains2D(PC, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS *[], IS *[]);
266014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMGetSubdomains(PC, PetscInt *, IS *[], IS *[]);
267014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMGetSubmatrices(PC, PetscInt *, Mat *[]);
268f746d493SDmitry Karpeev
269014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeSetType(PC, PCCompositeType);
270c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCCompositeGetType(PC, PCCompositeType *);
2718aa07aa6SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCCompositeAddPCType(PC, PCType);
2728aa07aa6SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCCompositeAddPC(PC, PC);
2738e6eba06SBarry Smith PETSC_EXTERN PetscErrorCode PCCompositeGetNumberPC(PC, PetscInt *);
274014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeGetPC(PC, PetscInt, PC *);
275014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeSpecialSetAlpha(PC, PetscScalar);
27678a3110eSAlexander PETSC_EXTERN PetscErrorCode PCCompositeSpecialSetAlphaMat(PC, Mat);
277981c4779SBarry Smith
278014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantSetNumber(PC, PetscInt);
279014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantSetScatter(PC, VecScatter, VecScatter);
280014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantGetOperators(PC, Mat *, Mat *);
281da3a660dSBarry Smith
282b03515a0SUmberto Zerbinati PETSC_EXTERN PetscErrorCode PCSPAISetEpsilon(PC, PetscReal);
283014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetNBSteps(PC, PetscInt);
284014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetMax(PC, PetscInt);
285014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetMaxNew(PC, PetscInt);
286014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetBlockSize(PC, PetscInt);
287014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetCacheSize(PC, PetscInt);
288014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetVerbose(PC, PetscInt);
289014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetSp(PC, PetscInt);
2903304466cSBarry Smith
291014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCHYPRESetType(PC, const char[]);
292014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCHYPREGetType(PC, const char *[]);
2934cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteGradient(PC, Mat);
294863406b8SStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteCurl(PC, Mat);
2956bf688a0SCe Qin PETSC_EXTERN PetscErrorCode PCHYPRESetInterpolations(PC, PetscInt, Mat, Mat[], Mat, Mat[]);
2964cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetEdgeConstantVectors(PC, Vec, Vec, Vec);
297be14dc20SKerry Key PETSC_EXTERN PetscErrorCode PCHYPREAMSSetInteriorNodes(PC, Vec);
2984cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetAlphaPoissonMatrix(PC, Mat);
2994cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetBetaPoissonMatrix(PC, Mat);
30042e5ec60SJeff-Hadley PETSC_EXTERN PetscErrorCode PCHYPREGetCFMarkers(PC pc, PetscInt *[], PetscBT *[]);
3013304466cSBarry Smith
302014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetFields(PC, const char[], PetscInt, const PetscInt *, const PetscInt *);
303014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetType(PC, PCCompositeType);
304c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCFieldSplitGetType(PC, PCCompositeType *);
305014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetBlockSize(PC, PetscInt);
306014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetIS(PC, const char[], IS);
307014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetIS(PC, const char[], IS *);
308998f007dSPierre Jolivet PETSC_EXTERN PetscErrorCode PCFieldSplitGetISByIndex(PC, PetscInt, IS *);
3096dbb499eSCian Wilson PETSC_EXTERN PetscErrorCode PCFieldSplitRestrictIS(PC, IS);
3104ab8060aSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetDMSplits(PC, PetscBool);
3114ab8060aSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetDMSplits(PC, PetscBool *);
312c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetDiagUseAmat(PC, PetscBool);
313c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetDiagUseAmat(PC, PetscBool *);
314c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetOffDiagUseAmat(PC, PetscBool);
315c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetOffDiagUseAmat(PC, PetscBool *);
316c84da90fSDmitry Karpeev
317edd03b47SJacob Faibussowitsch PETSC_EXTERN PETSC_DEPRECATED_FUNCTION(3, 5, 0, "PCFieldSplitSetSchurPre()", ) PetscErrorCode PCFieldSplitSchurPrecondition(PC, PCFieldSplitSchurPreType, Mat);
31829f8a81cSJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurPre(PC, PCFieldSplitSchurPreType, Mat);
31937a82bf0SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurPre(PC, PCFieldSplitSchurPreType *, Mat *);
320014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurFactType(PC, PCFieldSplitSchurFactType);
321c096484dSStefano Zampini PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurScale(PC, PetscScalar);
322014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurBlocks(PC, Mat *, Mat *, Mat *, Mat *);
323ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCFieldSplitSchurGetS(PC, Mat *);
324ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCFieldSplitSchurRestoreS(PC, Mat *);
3257b752e3dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCFieldSplitGetDetectSaddlePoint(PC, PetscBool *);
3267b752e3dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCFieldSplitSetDetectSaddlePoint(PC, PetscBool);
327b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBTol(PC, PetscReal);
328b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBNu(PC, PetscReal);
329b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBMaxit(PC, PetscInt);
330b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBDelay(PC, PetscInt);
3313d30b1ffSBarry Smith
332014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGalerkinSetRestriction(PC, Mat);
333014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGalerkinSetInterpolation(PC, Mat);
334b3402f20SBarry Smith PETSC_EXTERN PetscErrorCode PCGalerkinSetComputeSubmatrix(PC, PetscErrorCode (*)(PC, Mat, Mat, Mat *, void *), void *);
3352a6744ebSBarry Smith
336014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCPythonSetType(PC, const char[]);
337ebead697SStefano Zampini PETSC_EXTERN PetscErrorCode PCPythonGetType(PC, const char *[]);
33867fac13cSBarry Smith
339baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetGlobal(PC, PCPARMSGlobalType);
340baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetLocal(PC, PCPARMSLocalType);
341baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetSolveTolerances(PC, PetscReal, PetscInt);
342baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetSolveRestart(PC, PetscInt);
343baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetNonsymPerm(PC, PetscBool);
344baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetFill(PC, PetscInt, PetscInt, PetscInt);
34537f80224SJose E. Roman
346c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetType(PC, PCGAMGType);
347c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGGetType(PC, PCGAMGType *);
348014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetProcEqLim(PC, PetscInt);
34918c3aa7eSMark
350cab9ed1eSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetRepartition(PC, PetscBool);
35118c3aa7eSMark PETSC_EXTERN PetscErrorCode PCGAMGSetUseSAEstEig(PC, PetscBool);
352e1cf1444SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetRecomputeEstEig(PC, PetscBool);
35318c3aa7eSMark PETSC_EXTERN PetscErrorCode PCGAMGSetEigenvalues(PC, PetscReal, PetscReal);
354cab9ed1eSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGASMSetUseAggs(PC, PetscBool);
355d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetParallelCoarseGridSolve(PC, PetscBool);
356ce7c7f2fSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetCpuPinCoarseGrids(PC, PetscBool);
357ce7c7f2fSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseGridLayoutType(PC, PCGAMGLayoutType);
358c1eae691SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetThreshold(PC, PetscReal[], PetscInt);
359c9567895SMark PETSC_EXTERN PetscErrorCode PCGAMGSetRankReductionFactors(PC, PetscInt[], PetscInt);
360c1eae691SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetThresholdScale(PC, PetscReal);
361014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseEqLim(PC, PetscInt);
362014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetNlevels(PC, PetscInt);
363baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetNSmooths(PC, PetscInt);
364bae903cbSmarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveLevels(PC, PetscInt);
3651cc46a46SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetReuseInterpolation(PC, PetscBool);
3663e3471ccSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGFinalizePackage(void);
3673e3471ccSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGInitializePackage(void);
368a36cf38bSToby Isaac PETSC_EXTERN PetscErrorCode PCGAMGRegister(PCGAMGType, PetscErrorCode (*)(PC));
3692d776b49SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGCreateGraph(PC, Mat, Mat *);
370d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveSquareGraph(PC, PetscBool);
371d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGMISkSetMinDegreeOrdering(PC, PetscBool);
372d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGMISkSetAggressive(PC, PetscInt);
3738926f930SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGASMSetHEM(PC, PetscInt);
374a9ccf005SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetLowMemoryFilter(PC, PetscBool);
3756c34c54dSStefano Zampini PETSC_EXTERN PetscErrorCode PCGAMGSetGraphSymmetrize(PC, PetscBool);
376b65aec2dSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetInjectionIndex(PC, PetscInt, PetscInt[]);
37756de70efSSatish Balay
3788eab0cc1SPeter Brune PETSC_EXTERN PetscErrorCode PCGAMGClassicalSetType(PC, PCGAMGClassicalType);
379c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGClassicalGetType(PC, PCGAMGClassicalType *);
3808eab0cc1SPeter Brune
3811e0482f5SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDiscreteGradient(PC, Mat, PetscInt, PetscInt, PetscBool, PetscBool);
3828ae0ca82SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDivergenceMat(PC, Mat, PetscBool, IS);
3831dd7afcfSStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetChangeOfBasisMat(PC, Mat, PetscBool);
38430368db7SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesIS(PC, IS);
385674ae819SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesLocalIS(PC, IS);
3863100ebe3SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesIS(PC, IS *);
3873100ebe3SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesLocalIS(PC, IS *);
3884fad6a16SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetCoarseningRatio(PC, PetscInt);
3892b510759SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetLevels(PC, PetscInt);
390014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundaries(PC, IS);
39182ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundariesLocal(PC, IS);
392014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundaries(PC, IS *);
39382ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundariesLocal(PC, IS *);
394bc960bbfSJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetInterfaceExtType(PC, PCBDDCInterfaceExtType);
395014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundaries(PC, IS);
39682ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundariesLocal(PC, IS);
397014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundaries(PC, IS *);
39882ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundariesLocal(PC, IS *);
399014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplitting(PC, PetscInt, IS[]);
40063602bcaSStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplittingLocal(PC, PetscInt, IS[]);
4011a83f524SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetLocalAdjacencyGraph(PC, PetscInt, const PetscInt[], const PetscInt[], PetscCopyMode);
402547c9a8eSstefano_zampini PETSC_EXTERN PetscErrorCode PCBDDCCreateFETIDPOperators(PC, PetscBool, const char *, Mat *, PC *);
4033425bc38SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetRHS(Mat, Vec, Vec);
4043425bc38SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetSolution(Mat, Vec, Vec);
40543371fb9SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCFinalizePackage(void);
40643371fb9SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCInitializePackage(void);
4070c7d97c5SJed Brown
40804c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISInitialize(PC);
40904c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISSetUp(PC, PetscBool, PetscBool);
410b965d45eSStefano Zampini PETSC_EXTERN PetscErrorCode PCISSetUseStiffnessScaling(PC, PetscBool);
411014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCISSetSubdomainScalingFactor(PC, PetscScalar);
41246caae47SJed Brown PETSC_EXTERN PetscErrorCode PCISSetSubdomainDiagonalScaling(PC, Vec);
41304c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISScatterArrayNToVecB(PC, PetscScalar *, Vec, InsertMode, ScatterMode);
41404c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISApplySchur(PC, Vec, Vec, Vec, Vec, Vec);
41504c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISApplyInvSchur(PC, Vec, Vec, Vec, Vec);
41604c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISReset(PC);
417d3b1e0e7SMatthew Knepley
418ab83eea4SMatthew G. Knepley PETSC_EXTERN PetscInt PetscMGLevelId;
419b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetType(PC, PCMGType);
420c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetType(PC, PCMGType *);
421b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetLevels(PC, PetscInt, MPI_Comm *);
422b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetLevels(PC, PetscInt *);
423b4876bcbSBarry Smith
424f442ab6aSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetDistinctSmoothUp(PC);
42506792cafSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetNumberSmooth(PC, PetscInt);
426b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetCycleType(PC, PCMGCycleType);
427b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetCycleTypeOnLevel(PC, PetscInt, PCMGCycleType);
PCMGSetCyclesOnLevel(PC pc,PetscInt l,PetscInt t)428edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 5, 0, "PCMGSetCycleTypeOnLevel()", ) static inline PetscErrorCode PCMGSetCyclesOnLevel(PC pc, PetscInt l, PetscInt t)
429d71ae5a4SJacob Faibussowitsch {
4309371c9d4SSatish Balay return PCMGSetCycleTypeOnLevel(pc, l, (PCMGCycleType)t);
4319371c9d4SSatish Balay }
432b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGMultiplicativeSetCycles(PC, PetscInt);
4332134b1e4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetGalerkin(PC, PCMGGalerkinType);
4342134b1e4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetGalerkin(PC, PCMGGalerkinType *);
4352b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGSetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType);
4362b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGGetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType *);
43741b6fd38SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCMGSetAdaptCR(PC, PetscBool);
43841b6fd38SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCMGGetAdaptCR(PC, PetscBool *);
4392b3cbbdaSStefano Zampini /* MATT: Remove? */
4402b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGSetAdaptInterpolation(PC, PetscBool);
4412b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGGetAdaptInterpolation(PC, PetscBool *);
442b4876bcbSBarry Smith
443b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRhs(PC, PetscInt, Vec);
444b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetX(PC, PetscInt, Vec);
445b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetR(PC, PetscInt, Vec);
446b4876bcbSBarry Smith
447b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRestriction(PC, PetscInt, Mat);
448b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetRestriction(PC, PetscInt, Mat *);
449eab52d2bSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCMGSetInjection(PC, PetscInt, Mat);
450eab52d2bSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCMGGetInjection(PC, PetscInt, Mat *);
451b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetInterpolation(PC, PetscInt, Mat);
4528a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCMGSetOperators(PC, PetscInt, Mat, Mat);
453b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetInterpolation(PC, PetscInt, Mat *);
454b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRScale(PC, PetscInt, Vec);
455b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetRScale(PC, PetscInt, Vec *);
456b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetResidual(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat);
457fcb023d4SJed Brown PETSC_EXTERN PetscErrorCode PCMGSetResidualTranspose(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat);
45854b2cd4bSJed Brown PETSC_EXTERN PetscErrorCode PCMGResidualDefault(Mat, Vec, Vec, Vec);
459fcb023d4SJed Brown PETSC_EXTERN PetscErrorCode PCMGResidualTransposeDefault(Mat, Vec, Vec, Vec);
46030b0564aSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGMatResidualDefault(Mat, Mat, Mat, Mat);
46130b0564aSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGMatResidualTransposeDefault(Mat, Mat, Mat, Mat);
462db6f9c32SMark Adams PETSC_EXTERN PetscErrorCode PCMGGalerkinSetMatProductAlgorithm(PC, const char[]);
463db6f9c32SMark Adams PETSC_EXTERN PetscErrorCode PCMGGalerkinGetMatProductAlgorithm(PC, const char *[]);
464e7d4b4cbSMark Adams PETSC_EXTERN PetscErrorCode PCMGGetGridComplexity(PC, PetscReal *, PetscReal *);
465e75ffff3SFande Kong
4668a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetReuseInterpolation(PC, PetscBool);
4678a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetUseSubspaceCoarsening(PC, PetscBool);
4688a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetInnerPCType(PC, PCType);
4694fea3358SFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetCoarseningComponent(PC, PetscInt);
4704fea3358SFande Kong PETSC_EXTERN PetscErrorCode PCHMGUseMatMAIJ(PC, PetscBool);
4718a2c336bSFande Kong
47248a10b22SPatrick Sanan PETSC_EXTERN PetscErrorCode PCTelescopeGetSubcommType(PC, PetscSubcommType *);
47348a10b22SPatrick Sanan PETSC_EXTERN PetscErrorCode PCTelescopeSetSubcommType(PC, PetscSubcommType);
47468ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetReductionFactor(PC, PetscInt *);
47568ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeSetReductionFactor(PC, PetscInt);
47668ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreDM(PC, PetscBool *);
477bfd6bcc6SSatish Balay PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreDM(PC, PetscBool);
47834fb549aSDave May PETSC_EXTERN PetscErrorCode PCTelescopeGetUseCoarseDM(PC, PetscBool *);
47934fb549aSDave May PETSC_EXTERN PetscErrorCode PCTelescopeSetUseCoarseDM(PC, PetscBool);
4800ae7c45bSDave May PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreKSPComputeOperators(PC, PetscBool *);
4810ae7c45bSDave May PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreKSPComputeOperators(PC, PetscBool);
48268ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetDM(PC, DM *);
4836ab51f8fSDave May
4844bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetSaveOperators(PC, PetscBool);
4854bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetSaveOperators(PC, PetscBool *);
486fa84ea4cSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetPrecomputeElementTensors(PC, PetscBool);
487fa84ea4cSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchGetPrecomputeElementTensors(PC, PetscBool *);
4884bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetPartitionOfUnity(PC, PetscBool);
4894bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetPartitionOfUnity(PC, PetscBool *);
4904bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetSubMatType(PC, MatType);
4914bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetSubMatType(PC, MatType *);
4924bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetCellNumbering(PC, PetscSection);
4934bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetCellNumbering(PC, PetscSection *);
4944bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetConstructType(PC, PCPatchConstructType, PetscErrorCode (*)(PC, PetscInt *, IS **, IS *, void *), void *);
4954bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetConstructType(PC, PCPatchConstructType *, PetscErrorCode (**)(PC, PetscInt *, IS **, IS *, void *), void **);
4964bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetDiscretisationInfo(PC, PetscInt, DM *, PetscInt *, PetscInt *, const PetscInt **, const PetscInt *, PetscInt, const PetscInt *, PetscInt, const PetscInt *);
4974d04e9f1SPatrick Farrell PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperator(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *);
498*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunction(PC pc, PetscErrorCode (*)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), PetscCtx ctx);
49959109abcSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperatorInteriorFacets(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *);
500*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunctionInteriorFacets(PC pc, PetscErrorCode (*)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), PetscCtx ctx);
5014bbf5ea8SMatthew G. Knepley
502b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMSetMatLMVM(PC, Mat);
503b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMGetMatLMVM(PC, Mat *);
504b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMSetIS(PC, IS);
505b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMClearIS(PC);
506970ba202SStefano Zampini PETSC_EXTERN PetscErrorCode PCLMVMSetUpdateVec(PC, Vec);
507b9ac7092SAlp Dener
5087ede41a2SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCExoticSetType(PC, PCExoticType);
5097ede41a2SMatthew G. Knepley
510a122ebaeSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetInitOnly(PC, PetscBool);
51193b79a5aSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetLevels(PC, PetscInt);
512859a873cSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetReductionFactor(PC, PetscInt);
5138a71cb68SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetCorrectionFactor(PC, PetscScalar);
51439417d7eSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetSpaceToCompute(PC, PCDeflationSpaceType, PetscInt);
515e662bc50SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetSpace(PC, Mat, PetscBool);
51698d6e3deSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetProjectionNullSpaceMat(PC, Mat);
51798d6e3deSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetCoarseMat(PC, Mat);
518268c6673SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationGetPC(PC, PC *);
51998d6e3deSJakub Kruzik
52038cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetAuxiliaryMat(PC, IS, Mat, PetscErrorCode (*)(Mat, PetscReal, Vec, Vec, PetscReal, IS, void *), void *);
521244dff2eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetRHSMat(PC, Mat);
522c5910190SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMHasNeumannMat(PC, PetscBool);
52338cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType);
52438cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMGetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType *);
525e31fc274SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetSTShareSubKSP(PC, PetscBool);
526dfad241bSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMGetSTShareSubKSP(PC, PetscBool *);
5272e65eb73SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetDeflationMat(PC, IS, Mat);
52805b34211SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMFinalizePackage(void);
52905b34211SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMInitializePackage(void);
530cc4c1da9SBarry Smith PETSC_EXTERN PetscErrorCode PCHPDDMGetComplexities(PC, PetscReal *, PetscReal *);
53138cfc46eSPierre Jolivet
532e6f8f311SMark Adams PETSC_EXTERN PetscErrorCode PCAmgXGetResources(PC, void *);
533e6f8f311SMark Adams
534345a4b08SToby Isaac PETSC_EXTERN PetscErrorCode PCMatSetApplyOperation(PC, MatOperation);
535345a4b08SToby Isaac PETSC_EXTERN PetscErrorCode PCMatGetApplyOperation(PC, MatOperation *);
536