xref: /petsc/include/petscpc.h (revision e03abaae1483a7e3e7e50e2630c11f44acd68e80)
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 
10ac09b921SBarry Smith /* SUBMANSEC = PC */
11ac09b921SBarry Smith 
12607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PCInitializePackage(void);
134bf303faSJacob Faibussowitsch PETSC_EXTERN PetscErrorCode PCFinalizePackage(void);
141dbb0a54SBarry Smith 
15eec0b4cfSBarry Smith /*
16eec0b4cfSBarry Smith     PCList contains the list of preconditioners currently registered
17bdf89e91SBarry Smith    These are added with PCRegister()
18eec0b4cfSBarry Smith */
19140e18c1SBarry Smith PETSC_EXTERN PetscFunctionList PCList;
2082bf6240SBarry Smith 
21123ea438SMatthew Knepley /* Logging support */
22014dd563SJed Brown PETSC_EXTERN PetscClassId PC_CLASSID;
23123ea438SMatthew Knepley 
249d8081ecSMatthew G. Knepley /* Arrays of names for options in implementation PCs */
259d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const *const PCSides;
269d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCJacobiTypes[];
279d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCASMTypes[];
289d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCGASMTypes[];
299d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCCompositeTypes[];
309d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCFieldSplitSchurPreTypes[];
319d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCFieldSplitSchurFactTypes[];
329d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCPARMSGlobalTypes[];
339d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCPARMSLocalTypes[];
349d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCMGTypes[];
359d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCMGCycleTypes[];
369d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCMGGalerkinTypes[];
37557cf195SMatthew G. Knepley PETSC_EXTERN const char *const        PCMGCoarseSpaceTypes[];
389d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCExoticTypes[];
399d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const        PCPatchConstructTypes[];
4037eeb815SJakub Kruzik PETSC_EXTERN const char *const        PCDeflationTypes[];
411b2b9847SBarry Smith PETSC_EXTERN const char *const *const PCFailedReasons;
429d8081ecSMatthew G. Knepley 
43014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCreate(MPI_Comm, PC *);
4419fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode PCSetType(PC, PCType);
45c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGetType(PC, PCType *);
46014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetUp(PC);
471b2b9847SBarry Smith 
483821be0aSBarry Smith PETSC_EXTERN PetscErrorCode PCSetKSPNestLevel(PC, PetscInt);
493821be0aSBarry Smith PETSC_EXTERN PetscErrorCode PCGetKSPNestLevel(PC, PetscInt *);
503821be0aSBarry Smith 
511b2b9847SBarry Smith PETSC_EXTERN PetscErrorCode PCSetFailedReason(PC, PCFailedReason);
52c0decd05SBarry Smith PETSC_EXTERN PetscErrorCode PCGetFailedReason(PC, PCFailedReason *);
53edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 11, 0, "PCGetFailedReason()", ) static inline PetscErrorCode PCGetSetUpFailedReason(PC pc, PCFailedReason *reason)
54d71ae5a4SJacob Faibussowitsch {
559371c9d4SSatish Balay   return PCGetFailedReason(pc, reason);
569371c9d4SSatish Balay }
571b2b9847SBarry Smith PETSC_EXTERN PetscErrorCode PCGetFailedReasonRank(PC, PCFailedReason *);
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);
67014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyTransposeExists(PC, PetscBool *);
68014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyBAorABTranspose(PC, PCSide, Vec, Vec, Vec);
6923ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCSetReusePreconditioner(PC, PetscBool);
70c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGetReusePreconditioner(PC, PetscBool *);
71422a814eSBarry Smith PETSC_EXTERN PetscErrorCode PCSetErrorIfFailure(PC, PetscBool);
724d0a8057SBarry Smith 
7355849f57SBarry Smith #define PC_FILE_CLASSID 1211222
7455849f57SBarry Smith 
75014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyRichardson(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *);
76014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyRichardsonExists(PC, PetscBool *);
7749517cdeSBarry Smith PETSC_EXTERN PetscErrorCode PCSetUseAmat(PC, PetscBool);
7849517cdeSBarry Smith PETSC_EXTERN PetscErrorCode PCGetUseAmat(PC, PetscBool *);
7984cb2905SBarry Smith 
80bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode PCRegister(const char[], PetscErrorCode (*)(PC));
8130de9b25SBarry Smith 
82014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCReset(PC);
83014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDestroy(PC *);
84014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetFromOptions(PC);
8514c91fddSBarry Smith 
86014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorGetMatrix(PC, Mat *);
87014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetModifySubMatrices(PC, PetscErrorCode (*)(PC, PetscInt, const IS[], const IS[], Mat[], void *), void *);
88014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCModifySubMatrices(PC, PetscInt, const IS[], const IS[], Mat[], void *);
895b116368SBarry Smith 
9023ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCSetOperators(PC, Mat, Mat);
9123ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCGetOperators(PC, Mat *, Mat *);
92014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetOperatorsSet(PC, PetscBool *, PetscBool *);
934b0e389bSBarry Smith 
94014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCView(PC, PetscViewer);
9555849f57SBarry Smith PETSC_EXTERN PetscErrorCode PCLoad(PC, PetscViewer);
96fe2efc57SMark PETSC_EXTERN PetscErrorCode PCViewFromOptions(PC, PetscObject, const char[]);
977bc3d0afSSatish Balay 
98014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetOptionsPrefix(PC, const char[]);
99014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCAppendOptionsPrefix(PC, const char[]);
100014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetOptionsPrefix(PC, const char *[]);
1018ed539a5SBarry Smith 
1020bacdadaSStefano Zampini PETSC_EXTERN PetscErrorCode PCComputeOperator(PC, MatType, Mat *);
103edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 12, 0, "PCComputeOperator()", ) static inline PetscErrorCode PCComputeExplicitOperator(PC A, Mat *B)
104d71ae5a4SJacob Faibussowitsch {
105f22e26b7SPierre Jolivet   return PCComputeOperator(A, PETSC_NULLPTR, B);
1069371c9d4SSatish Balay }
10771601f6fSBarry Smith 
108d6913704SBarry Smith /*
109d6913704SBarry Smith       These are used to provide extra scaling of preconditioned
1100f3b3ca1SHong Zhang    operator for time-stepping schemes like in SUNDIALS
111d6913704SBarry Smith */
112014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetDiagonalScale(PC, PetscBool *);
113014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDiagonalScaleLeft(PC, Vec, Vec);
114014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDiagonalScaleRight(PC, Vec, Vec);
115014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetDiagonalScale(PC, Vec);
116d6913704SBarry Smith 
117f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCSetDM(PC, DM);
118f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCGetDM(PC, DM *);
119f02e8f50SMatthew G. Knepley 
120fd2dd295SFande Kong PETSC_EXTERN PetscErrorCode PCGetInterpolations(PC, PetscInt *, Mat *[]);
121fd2dd295SFande Kong PETSC_EXTERN PetscErrorCode PCGetCoarseOperators(PC pc, PetscInt *, Mat *[]);
122fd2dd295SFande Kong 
12322794d57SStefano Zampini PETSC_EXTERN PetscErrorCode PCSetCoordinates(PC, PetscInt, PetscInt, PetscReal[]);
124f02e8f50SMatthew G. Knepley 
125f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCSetApplicationContext(PC, void *);
126f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCGetApplicationContext(PC, void *);
127f02e8f50SMatthew G. Knepley 
12884cb2905SBarry Smith /* ------------- options specific to particular preconditioners --------- */
129329f5518SBarry Smith 
130baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiSetType(PC, PCJacobiType);
131baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetType(PC, PCJacobiType *);
132baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiSetUseAbs(PC, PetscBool);
133baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetUseAbs(PC, PetscBool *);
13467ed0f3bSStefano Zampini PETSC_EXTERN PetscErrorCode PCJacobiSetFixDiagonal(PC, PetscBool);
13567ed0f3bSStefano Zampini PETSC_EXTERN PetscErrorCode PCJacobiGetFixDiagonal(PC, PetscBool *);
136*e03abaaeSJames Wright PETSC_EXTERN PetscErrorCode PCJacobiGetDiagonal(PC pc, Vec, Vec);
137eede4a3fSMark Adams PETSC_EXTERN PetscErrorCode PCJacobiSetRowl1Scale(PC, PetscReal);
138eede4a3fSMark Adams PETSC_EXTERN PetscErrorCode PCJacobiGetRowl1Scale(PC, PetscReal *);
139014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetSymmetric(PC, MatSORType);
140c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetSymmetric(PC, MatSORType *);
141014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetOmega(PC, PetscReal);
142c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetOmega(PC, PetscReal *);
143014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetIterations(PC, PetscInt, PetscInt);
144c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetIterations(PC, PetscInt *, PetscInt *);
145d03aef70SBarry Smith 
146014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCEisenstatSetOmega(PC, PetscReal);
147c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatGetOmega(PC, PetscReal *);
148c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatSetNoDiagonalScaling(PC, PetscBool);
149c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatGetNoDiagonalScaling(PC, PetscBool *);
150421c37bdSBarry Smith 
151014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBJacobiSetTotalBlocks(PC, PetscInt, const PetscInt[]);
152c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCBJacobiGetTotalBlocks(PC, PetscInt *, const PetscInt *[]);
153014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBJacobiSetLocalBlocks(PC, PetscInt, const PetscInt[]);
154c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCBJacobiGetLocalBlocks(PC, PetscInt *, const PetscInt *[]);
1551eb62cbbSBarry Smith 
156014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApply(PC, PetscErrorCode (*)(PC, Vec, Vec));
1577b6e2003SPierre Jolivet PETSC_EXTERN PetscErrorCode PCShellSetMatApply(PC, PetscErrorCode (*)(PC, Mat, Mat));
1581b581b66SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricLeft(PC, PetscErrorCode (*)(PC, Vec, Vec));
1591b581b66SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricRight(PC, PetscErrorCode (*)(PC, Vec, Vec));
160014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyBA(PC, PetscErrorCode (*)(PC, PCSide, Vec, Vec, Vec));
161014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyTranspose(PC, PetscErrorCode (*)(PC, Vec, Vec));
162014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetSetUp(PC, PetscErrorCode (*)(PC));
163014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyRichardson(PC, PetscErrorCode (*)(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *));
164014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetView(PC, PetscErrorCode (*)(PC, PetscViewer));
165014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetDestroy(PC, PetscErrorCode (*)(PC));
166014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetContext(PC, void *);
1673ec1f749SStefano Zampini PETSC_EXTERN PetscErrorCode PCShellGetContext(PC, void *);
168014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetName(PC, const char[]);
169014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellGetName(PC, const char *[]);
170aabeff55SBarry Smith 
171014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetZeroPivot(PC, PetscReal);
172d90ac83dSHong Zhang 
173014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetShiftType(PC, MatFactorShiftType);
174014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetShiftAmount(PC, PetscReal);
175d90ac83dSHong Zhang 
176ea799195SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetMatSolverType(PC, MatSolverType);
177ea799195SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetMatSolverType(PC, MatSolverType *);
1783ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetUpMatSolverType(PC);
179edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorSetMatSolverType()", ) static inline PetscErrorCode PCFactorSetMatSolverPackage(PC pc, MatSolverType stype)
180d71ae5a4SJacob Faibussowitsch {
1819371c9d4SSatish Balay   return PCFactorSetMatSolverType(pc, stype);
1829371c9d4SSatish Balay }
183edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorGetMatSolverType()", ) static inline PetscErrorCode PCFactorGetMatSolverPackage(PC pc, MatSolverType *stype)
184d71ae5a4SJacob Faibussowitsch {
1859371c9d4SSatish Balay   return PCFactorGetMatSolverType(pc, stype);
1869371c9d4SSatish Balay }
187edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorSetUpMatSolverType()", ) static inline PetscErrorCode PCFactorSetUpMatSolverPackage(PC pc)
188d71ae5a4SJacob Faibussowitsch {
1899371c9d4SSatish Balay   return PCFactorSetUpMatSolverType(pc);
1909371c9d4SSatish Balay }
1912401956bSBarry Smith 
192014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetFill(PC, PetscReal);
193014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetColumnPivot(PC, PetscReal);
194014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorReorderForNonzeroDiagonal(PC, PetscReal);
195421c37bdSBarry Smith 
19619fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetMatOrderingType(PC, MatOrderingType);
197014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetReuseOrdering(PC, PetscBool);
198014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetReuseFill(PC, PetscBool);
1998e37d05fSBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetUseInPlace(PC, PetscBool);
2008e37d05fSBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetUseInPlace(PC, PetscBool *);
20192e9c092SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetAllowDiagonalFill(PC, PetscBool);
20292e9c092SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetAllowDiagonalFill(PC, PetscBool *);
203014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetPivotInBlocks(PC, PetscBool);
204f5a88c2aSLois Curfman McInnes 
205014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetLevels(PC, PetscInt);
206c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetLevels(PC, PetscInt *);
207014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetDropTolerance(PC, PetscReal, PetscReal, PetscInt);
208c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetZeroPivot(PC, PetscReal *);
209c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetShiftAmount(PC, PetscReal *);
210c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetShiftType(PC, MatFactorShiftType *);
211b35a507dSBarry Smith 
212014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetLocalSubdomains(PC, PetscInt, IS[], IS[]);
213014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetTotalSubdomains(PC, PetscInt, IS[], IS[]);
214014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetOverlap(PC, PetscInt);
215d709ea83SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCASMSetDMSubdomains(PC, PetscBool);
216d709ea83SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCASMGetDMSubdomains(PC, PetscBool *);
217014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetSortIndices(PC, PetscBool);
218f746d493SDmitry Karpeev 
219014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetType(PC, PCASMType);
220c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCASMGetType(PC, PCASMType *);
22112cd4985SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCASMSetLocalType(PC, PCCompositeType);
22212cd4985SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCASMGetLocalType(PC, PCCompositeType *);
223014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains(Mat, PetscInt, IS *[]);
224014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMDestroySubdomains(PetscInt, IS[], IS[]);
225014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains2D(PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS **, IS **);
226014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMGetLocalSubdomains(PC, PetscInt *, IS *[], IS *[]);
227014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMGetLocalSubmatrices(PC, PetscInt *, Mat *[]);
22880ec0b7dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCASMGetSubMatType(PC, MatType *);
22980ec0b7dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCASMSetSubMatType(PC, MatType);
230981c4779SBarry Smith 
2318f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMSetTotalSubdomains(PC, PetscInt);
232014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetSubdomains(PC, PetscInt, IS[], IS[]);
233014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetOverlap(PC, PetscInt);
2348f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMSetUseDMSubdomains(PC, PetscBool);
2358f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMGetUseDMSubdomains(PC, PetscBool *);
236014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetSortIndices(PC, PetscBool);
237f746d493SDmitry Karpeev 
238014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetType(PC, PCGASMType);
2398f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains(Mat, PetscInt, PetscInt *, IS *[]);
2402c112581SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMDestroySubdomains(PetscInt, IS *[], IS *[]);
241014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains2D(PC, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS **, IS **);
242014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMGetSubdomains(PC, PetscInt *, IS *[], IS *[]);
243014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMGetSubmatrices(PC, PetscInt *, Mat *[]);
244f746d493SDmitry Karpeev 
245014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeSetType(PC, PCCompositeType);
246c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCCompositeGetType(PC, PCCompositeType *);
2478aa07aa6SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCCompositeAddPCType(PC, PCType);
2488aa07aa6SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCCompositeAddPC(PC, PC);
2498e6eba06SBarry Smith PETSC_EXTERN PetscErrorCode PCCompositeGetNumberPC(PC, PetscInt *);
250014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeGetPC(PC, PetscInt, PC *);
251014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeSpecialSetAlpha(PC, PetscScalar);
252981c4779SBarry Smith 
253014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantSetNumber(PC, PetscInt);
254014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantSetScatter(PC, VecScatter, VecScatter);
255014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantGetOperators(PC, Mat *, Mat *);
256da3a660dSBarry Smith 
257b03515a0SUmberto Zerbinati PETSC_EXTERN PetscErrorCode PCSPAISetEpsilon(PC, PetscReal);
258014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetNBSteps(PC, PetscInt);
259014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetMax(PC, PetscInt);
260014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetMaxNew(PC, PetscInt);
261014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetBlockSize(PC, PetscInt);
262014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetCacheSize(PC, PetscInt);
263014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetVerbose(PC, PetscInt);
264014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetSp(PC, PetscInt);
2653304466cSBarry Smith 
266014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCHYPRESetType(PC, const char[]);
267014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCHYPREGetType(PC, const char *[]);
2684cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteGradient(PC, Mat);
269863406b8SStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteCurl(PC, Mat);
2706bf688a0SCe Qin PETSC_EXTERN PetscErrorCode PCHYPRESetInterpolations(PC, PetscInt, Mat, Mat[], Mat, Mat[]);
2714cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetEdgeConstantVectors(PC, Vec, Vec, Vec);
272be14dc20SKerry Key PETSC_EXTERN PetscErrorCode PCHYPREAMSSetInteriorNodes(PC, Vec);
2734cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetAlphaPoissonMatrix(PC, Mat);
2744cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetBetaPoissonMatrix(PC, Mat);
2753304466cSBarry Smith 
276014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetFields(PC, const char[], PetscInt, const PetscInt *, const PetscInt *);
277014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetType(PC, PCCompositeType);
278c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCFieldSplitGetType(PC, PCCompositeType *);
279014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetBlockSize(PC, PetscInt);
280014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetIS(PC, const char[], IS);
281014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetIS(PC, const char[], IS *);
282998f007dSPierre Jolivet PETSC_EXTERN PetscErrorCode PCFieldSplitGetISByIndex(PC, PetscInt, IS *);
2836dbb499eSCian Wilson PETSC_EXTERN PetscErrorCode PCFieldSplitRestrictIS(PC, IS);
2844ab8060aSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetDMSplits(PC, PetscBool);
2854ab8060aSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetDMSplits(PC, PetscBool *);
286c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetDiagUseAmat(PC, PetscBool);
287c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetDiagUseAmat(PC, PetscBool *);
288c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetOffDiagUseAmat(PC, PetscBool);
289c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetOffDiagUseAmat(PC, PetscBool *);
290c84da90fSDmitry Karpeev 
291edd03b47SJacob Faibussowitsch PETSC_EXTERN PETSC_DEPRECATED_FUNCTION(3, 5, 0, "PCFieldSplitSetSchurPre()", ) PetscErrorCode PCFieldSplitSchurPrecondition(PC, PCFieldSplitSchurPreType, Mat);
29229f8a81cSJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurPre(PC, PCFieldSplitSchurPreType, Mat);
29337a82bf0SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurPre(PC, PCFieldSplitSchurPreType *, Mat *);
294014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurFactType(PC, PCFieldSplitSchurFactType);
295c096484dSStefano Zampini PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurScale(PC, PetscScalar);
296014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurBlocks(PC, Mat *, Mat *, Mat *, Mat *);
297470b340bSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSchurGetS(PC, Mat *S);
298470b340bSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSchurRestoreS(PC, Mat *S);
2997b752e3dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCFieldSplitGetDetectSaddlePoint(PC, PetscBool *);
3007b752e3dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCFieldSplitSetDetectSaddlePoint(PC, PetscBool);
301b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBTol(PC, PetscReal);
302b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBNu(PC, PetscReal);
303b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBMaxit(PC, PetscInt);
304b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBDelay(PC, PetscInt);
3053d30b1ffSBarry Smith 
306014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGalerkinSetRestriction(PC, Mat);
307014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGalerkinSetInterpolation(PC, Mat);
308b3402f20SBarry Smith PETSC_EXTERN PetscErrorCode PCGalerkinSetComputeSubmatrix(PC, PetscErrorCode (*)(PC, Mat, Mat, Mat *, void *), void *);
3092a6744ebSBarry Smith 
310014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCPythonSetType(PC, const char[]);
311ebead697SStefano Zampini PETSC_EXTERN PetscErrorCode PCPythonGetType(PC, const char *[]);
31267fac13cSBarry Smith 
313baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetGlobal(PC, PCPARMSGlobalType);
314baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetLocal(PC, PCPARMSLocalType);
315baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetSolveTolerances(PC, PetscReal, PetscInt);
316baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetSolveRestart(PC, PetscInt);
317baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetNonsymPerm(PC, PetscBool);
318baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetFill(PC, PetscInt, PetscInt, PetscInt);
31937f80224SJose E. Roman 
320c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetType(PC, PCGAMGType);
321c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGGetType(PC, PCGAMGType *);
322014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetProcEqLim(PC, PetscInt);
32318c3aa7eSMark 
324cab9ed1eSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetRepartition(PC, PetscBool);
32518c3aa7eSMark PETSC_EXTERN PetscErrorCode PCGAMGSetUseSAEstEig(PC, PetscBool);
326e1cf1444SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetRecomputeEstEig(PC, PetscBool);
32718c3aa7eSMark PETSC_EXTERN PetscErrorCode PCGAMGSetEigenvalues(PC, PetscReal, PetscReal);
328cab9ed1eSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGASMSetUseAggs(PC, PetscBool);
329d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetParallelCoarseGridSolve(PC, PetscBool);
330ce7c7f2fSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetCpuPinCoarseGrids(PC, PetscBool);
331ce7c7f2fSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseGridLayoutType(PC, PCGAMGLayoutType);
332c1eae691SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetThreshold(PC, PetscReal[], PetscInt);
333c9567895SMark PETSC_EXTERN PetscErrorCode PCGAMGSetRankReductionFactors(PC, PetscInt[], PetscInt);
334c1eae691SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetThresholdScale(PC, PetscReal);
335014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseEqLim(PC, PetscInt);
336014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetNlevels(PC, PetscInt);
337baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetNSmooths(PC, PetscInt);
338bae903cbSmarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveLevels(PC, PetscInt);
3391cc46a46SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetReuseInterpolation(PC, PetscBool);
3403e3471ccSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGFinalizePackage(void);
3413e3471ccSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGInitializePackage(void);
342a36cf38bSToby Isaac PETSC_EXTERN PetscErrorCode PCGAMGRegister(PCGAMGType, PetscErrorCode (*)(PC));
3432d776b49SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGCreateGraph(PC, Mat, Mat *);
344d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveSquareGraph(PC, PetscBool);
345d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGMISkSetMinDegreeOrdering(PC, PetscBool);
346d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGMISkSetAggressive(PC, PetscInt);
3478926f930SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGASMSetHEM(PC, PetscInt);
348a9ccf005SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetLowMemoryFilter(PC, PetscBool);
349b65aec2dSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetInjectionIndex(PC, PetscInt, PetscInt[]);
35056de70efSSatish Balay 
3518eab0cc1SPeter Brune PETSC_EXTERN PetscErrorCode PCGAMGClassicalSetType(PC, PCGAMGClassicalType);
352c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGClassicalGetType(PC, PCGAMGClassicalType *);
3538eab0cc1SPeter Brune 
3541e0482f5SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDiscreteGradient(PC, Mat, PetscInt, PetscInt, PetscBool, PetscBool);
3558ae0ca82SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDivergenceMat(PC, Mat, PetscBool, IS);
3561dd7afcfSStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetChangeOfBasisMat(PC, Mat, PetscBool);
35730368db7SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesIS(PC, IS);
358674ae819SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesLocalIS(PC, IS);
3593100ebe3SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesIS(PC, IS *);
3603100ebe3SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesLocalIS(PC, IS *);
3614fad6a16SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetCoarseningRatio(PC, PetscInt);
3622b510759SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetLevels(PC, PetscInt);
363014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundaries(PC, IS);
36482ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundariesLocal(PC, IS);
365014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundaries(PC, IS *);
36682ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundariesLocal(PC, IS *);
367bc960bbfSJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetInterfaceExtType(PC, PCBDDCInterfaceExtType);
368014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundaries(PC, IS);
36982ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundariesLocal(PC, IS);
370014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundaries(PC, IS *);
37182ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundariesLocal(PC, IS *);
372014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplitting(PC, PetscInt, IS[]);
37363602bcaSStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplittingLocal(PC, PetscInt, IS[]);
3741a83f524SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetLocalAdjacencyGraph(PC, PetscInt, const PetscInt[], const PetscInt[], PetscCopyMode);
375547c9a8eSstefano_zampini PETSC_EXTERN PetscErrorCode PCBDDCCreateFETIDPOperators(PC, PetscBool, const char *, Mat *, PC *);
3763425bc38SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetRHS(Mat, Vec, Vec);
3773425bc38SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetSolution(Mat, Vec, Vec);
37843371fb9SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCFinalizePackage(void);
37943371fb9SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCInitializePackage(void);
3800c7d97c5SJed Brown 
38104c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISInitialize(PC);
38204c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISSetUp(PC, PetscBool, PetscBool);
383b965d45eSStefano Zampini PETSC_EXTERN PetscErrorCode PCISSetUseStiffnessScaling(PC, PetscBool);
384014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCISSetSubdomainScalingFactor(PC, PetscScalar);
38546caae47SJed Brown PETSC_EXTERN PetscErrorCode PCISSetSubdomainDiagonalScaling(PC, Vec);
38604c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISScatterArrayNToVecB(PC, PetscScalar *, Vec, InsertMode, ScatterMode);
38704c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISApplySchur(PC, Vec, Vec, Vec, Vec, Vec);
38804c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISApplyInvSchur(PC, Vec, Vec, Vec, Vec);
38904c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISReset(PC);
390d3b1e0e7SMatthew Knepley 
391ab83eea4SMatthew G. Knepley PETSC_EXTERN PetscInt       PetscMGLevelId;
392b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetType(PC, PCMGType);
393c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetType(PC, PCMGType *);
394b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetLevels(PC, PetscInt, MPI_Comm *);
395b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetLevels(PC, PetscInt *);
396b4876bcbSBarry Smith 
397f442ab6aSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetDistinctSmoothUp(PC);
39806792cafSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetNumberSmooth(PC, PetscInt);
399b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetCycleType(PC, PCMGCycleType);
400b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetCycleTypeOnLevel(PC, PetscInt, PCMGCycleType);
401edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 5, 0, "PCMGSetCycleTypeOnLevel()", ) static inline PetscErrorCode PCMGSetCyclesOnLevel(PC pc, PetscInt l, PetscInt t)
402d71ae5a4SJacob Faibussowitsch {
4039371c9d4SSatish Balay   return PCMGSetCycleTypeOnLevel(pc, l, (PCMGCycleType)t);
4049371c9d4SSatish Balay }
405b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGMultiplicativeSetCycles(PC, PetscInt);
4062134b1e4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetGalerkin(PC, PCMGGalerkinType);
4072134b1e4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetGalerkin(PC, PCMGGalerkinType *);
4082b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGSetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType);
4092b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGGetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType *);
41041b6fd38SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCMGSetAdaptCR(PC, PetscBool);
41141b6fd38SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCMGGetAdaptCR(PC, PetscBool *);
4122b3cbbdaSStefano Zampini /* MATT: Remove? */
4132b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGSetAdaptInterpolation(PC, PetscBool);
4142b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGGetAdaptInterpolation(PC, PetscBool *);
415b4876bcbSBarry Smith 
416b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRhs(PC, PetscInt, Vec);
417b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetX(PC, PetscInt, Vec);
418b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetR(PC, PetscInt, Vec);
419b4876bcbSBarry Smith 
420b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRestriction(PC, PetscInt, Mat);
421b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetRestriction(PC, PetscInt, Mat *);
422eab52d2bSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCMGSetInjection(PC, PetscInt, Mat);
423eab52d2bSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCMGGetInjection(PC, PetscInt, Mat *);
424b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetInterpolation(PC, PetscInt, Mat);
4258a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCMGSetOperators(PC, PetscInt, Mat, Mat);
426b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetInterpolation(PC, PetscInt, Mat *);
427b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRScale(PC, PetscInt, Vec);
428b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetRScale(PC, PetscInt, Vec *);
429b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetResidual(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat);
430fcb023d4SJed Brown PETSC_EXTERN PetscErrorCode PCMGSetResidualTranspose(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat);
43154b2cd4bSJed Brown PETSC_EXTERN PetscErrorCode PCMGResidualDefault(Mat, Vec, Vec, Vec);
432fcb023d4SJed Brown PETSC_EXTERN PetscErrorCode PCMGResidualTransposeDefault(Mat, Vec, Vec, Vec);
43330b0564aSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGMatResidualDefault(Mat, Mat, Mat, Mat);
43430b0564aSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGMatResidualTransposeDefault(Mat, Mat, Mat, Mat);
435db6f9c32SMark Adams PETSC_EXTERN PetscErrorCode PCMGGalerkinSetMatProductAlgorithm(PC, const char[]);
436db6f9c32SMark Adams PETSC_EXTERN PetscErrorCode PCMGGalerkinGetMatProductAlgorithm(PC, const char *[]);
437e7d4b4cbSMark Adams PETSC_EXTERN PetscErrorCode PCMGGetGridComplexity(PC, PetscReal *, PetscReal *);
438e75ffff3SFande Kong 
4398a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetReuseInterpolation(PC, PetscBool);
4408a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetUseSubspaceCoarsening(PC, PetscBool);
4418a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetInnerPCType(PC, PCType);
4424fea3358SFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetCoarseningComponent(PC, PetscInt);
4434fea3358SFande Kong PETSC_EXTERN PetscErrorCode PCHMGUseMatMAIJ(PC, PetscBool);
4448a2c336bSFande Kong 
44548a10b22SPatrick Sanan PETSC_EXTERN PetscErrorCode PCTelescopeGetSubcommType(PC, PetscSubcommType *);
44648a10b22SPatrick Sanan PETSC_EXTERN PetscErrorCode PCTelescopeSetSubcommType(PC, PetscSubcommType);
44768ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetReductionFactor(PC, PetscInt *);
44868ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeSetReductionFactor(PC, PetscInt);
44968ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreDM(PC, PetscBool *);
450bfd6bcc6SSatish Balay PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreDM(PC, PetscBool);
45134fb549aSDave May PETSC_EXTERN PetscErrorCode PCTelescopeGetUseCoarseDM(PC, PetscBool *);
45234fb549aSDave May PETSC_EXTERN PetscErrorCode PCTelescopeSetUseCoarseDM(PC, PetscBool);
4530ae7c45bSDave May PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreKSPComputeOperators(PC, PetscBool *);
4540ae7c45bSDave May PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreKSPComputeOperators(PC, PetscBool);
45568ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetDM(PC, DM *);
4566ab51f8fSDave May 
4574bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetSaveOperators(PC, PetscBool);
4584bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetSaveOperators(PC, PetscBool *);
459fa84ea4cSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetPrecomputeElementTensors(PC, PetscBool);
460fa84ea4cSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchGetPrecomputeElementTensors(PC, PetscBool *);
4614bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetPartitionOfUnity(PC, PetscBool);
4624bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetPartitionOfUnity(PC, PetscBool *);
4634bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetSubMatType(PC, MatType);
4644bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetSubMatType(PC, MatType *);
4654bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetCellNumbering(PC, PetscSection);
4664bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetCellNumbering(PC, PetscSection *);
4674bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetConstructType(PC, PCPatchConstructType, PetscErrorCode (*)(PC, PetscInt *, IS **, IS *, void *), void *);
4684bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetConstructType(PC, PCPatchConstructType *, PetscErrorCode (**)(PC, PetscInt *, IS **, IS *, void *), void **);
4694bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetDiscretisationInfo(PC, PetscInt, DM *, PetscInt *, PetscInt *, const PetscInt **, const PetscInt *, PetscInt, const PetscInt *, PetscInt, const PetscInt *);
4704d04e9f1SPatrick Farrell PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperator(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *);
47139fd2e8aSPatrick Farrell PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunction(PC pc, PetscErrorCode (*func)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *ctx);
47259109abcSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperatorInteriorFacets(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *);
47359109abcSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunctionInteriorFacets(PC pc, PetscErrorCode (*func)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *ctx);
4744bbf5ea8SMatthew G. Knepley 
475b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMSetMatLMVM(PC, Mat);
476b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMGetMatLMVM(PC, Mat *);
477b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMSetIS(PC, IS);
478b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMClearIS(PC);
479970ba202SStefano Zampini PETSC_EXTERN PetscErrorCode PCLMVMSetUpdateVec(PC, Vec);
480b9ac7092SAlp Dener 
4817ede41a2SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCExoticSetType(PC, PCExoticType);
4827ede41a2SMatthew G. Knepley 
483a122ebaeSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetInitOnly(PC, PetscBool);
48493b79a5aSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetLevels(PC, PetscInt);
485859a873cSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetReductionFactor(PC, PetscInt);
4868a71cb68SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetCorrectionFactor(PC, PetscScalar);
48739417d7eSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetSpaceToCompute(PC, PCDeflationSpaceType, PetscInt);
488e662bc50SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetSpace(PC, Mat, PetscBool);
48998d6e3deSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetProjectionNullSpaceMat(PC, Mat);
49098d6e3deSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetCoarseMat(PC, Mat);
491268c6673SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationGetPC(PC, PC *);
49298d6e3deSJakub Kruzik 
49338cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetAuxiliaryMat(PC, IS, Mat, PetscErrorCode (*)(Mat, PetscReal, Vec, Vec, PetscReal, IS, void *), void *);
494244dff2eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetRHSMat(PC, Mat);
495c5910190SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMHasNeumannMat(PC, PetscBool);
49638cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType);
49738cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMGetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType *);
498e31fc274SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetSTShareSubKSP(PC, PetscBool);
499dfad241bSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMGetSTShareSubKSP(PC, PetscBool *);
5002e65eb73SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetDeflationMat(PC, IS, Mat);
50105b34211SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMFinalizePackage(void);
50205b34211SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMInitializePackage(void);
50338cfc46eSPierre Jolivet 
504e6f8f311SMark Adams PETSC_EXTERN PetscErrorCode PCAmgXGetResources(PC, void *);
505e6f8f311SMark Adams 
506345a4b08SToby Isaac PETSC_EXTERN PetscErrorCode PCMatSetApplyOperation(PC, MatOperation);
507345a4b08SToby Isaac PETSC_EXTERN PetscErrorCode PCMatGetApplyOperation(PC, MatOperation *);
508