Actual source code: petscpc.h
1: /*
2: Preconditioner module.
3: */
4: #pragma once
6: #include <petscmat.h>
7: #include <petscdmtypes.h>
8: #include <petscpctypes.h>
10: /* MANSEC = KSP */
11: /* SUBMANSEC = PC */
13: PETSC_EXTERN PetscErrorCode PCInitializePackage(void);
14: PETSC_EXTERN PetscErrorCode PCFinalizePackage(void);
16: /*
17: PCList contains the list of preconditioners currently registered
18: These are added with PCRegister()
19: */
20: PETSC_EXTERN PetscFunctionList PCList;
22: /* Logging support */
23: PETSC_EXTERN PetscClassId PC_CLASSID;
25: /* Arrays of names for options in implementation PCs */
26: PETSC_EXTERN const char *const *const PCSides;
27: PETSC_EXTERN const char *const PCJacobiTypes[];
28: PETSC_EXTERN const char *const PCASMTypes[];
29: PETSC_EXTERN const char *const PCGASMTypes[];
30: PETSC_EXTERN const char *const PCCompositeTypes[];
31: PETSC_EXTERN const char *const PCFieldSplitSchurPreTypes[];
32: PETSC_EXTERN const char *const PCFieldSplitSchurFactTypes[];
33: PETSC_EXTERN const char *const PCPARMSGlobalTypes[];
34: PETSC_EXTERN const char *const PCPARMSLocalTypes[];
35: PETSC_EXTERN const char *const PCMGTypes[];
36: PETSC_EXTERN const char *const PCMGCycleTypes[];
37: PETSC_EXTERN const char *const PCMGGalerkinTypes[];
38: PETSC_EXTERN const char *const PCMGCoarseSpaceTypes[];
39: PETSC_EXTERN const char *const PCExoticTypes[];
40: PETSC_EXTERN const char *const PCPatchConstructTypes[];
41: PETSC_EXTERN const char *const PCHPDDMCoarseCorrectionTypes[];
42: PETSC_EXTERN const char *const PCHPDDMSchurPreTypes[];
43: PETSC_EXTERN const char *const *const PCFailedReasons;
45: PETSC_EXTERN PetscErrorCode PCCreate(MPI_Comm, PC *);
46: PETSC_EXTERN PetscErrorCode PCSetType(PC, PCType);
47: PETSC_EXTERN PetscErrorCode PCGetType(PC, PCType *);
48: PETSC_EXTERN PetscErrorCode PCSetUp(PC);
49: PETSC_EXTERN PetscErrorCode PCParametersInitialize(PC);
51: PETSC_EXTERN PetscErrorCode PCSetKSPNestLevel(PC, PetscInt);
52: PETSC_EXTERN PetscErrorCode PCGetKSPNestLevel(PC, PetscInt *);
54: PETSC_EXTERN PetscErrorCode PCSetFailedReason(PC, PCFailedReason);
55: PETSC_EXTERN PetscErrorCode PCGetFailedReason(PC, PCFailedReason *);
56: PETSC_DEPRECATED_FUNCTION(3, 11, 0, "PCGetFailedReason()", ) static inline PetscErrorCode PCGetSetUpFailedReason(PC pc, PCFailedReason *reason)
57: {
58: return PCGetFailedReason(pc, reason);
59: }
60: PETSC_EXTERN PetscErrorCode PCReduceFailedReason(PC);
62: PETSC_EXTERN PetscErrorCode PCSetUpOnBlocks(PC);
63: PETSC_EXTERN PetscErrorCode PCApply(PC, Vec, Vec);
64: PETSC_EXTERN PetscErrorCode PCMatApply(PC, Mat, Mat);
65: PETSC_EXTERN PetscErrorCode PCApplySymmetricLeft(PC, Vec, Vec);
66: PETSC_EXTERN PetscErrorCode PCApplySymmetricRight(PC, Vec, Vec);
67: PETSC_EXTERN PetscErrorCode PCApplyBAorAB(PC, PCSide, Vec, Vec, Vec);
68: PETSC_EXTERN PetscErrorCode PCApplyTranspose(PC, Vec, Vec);
69: PETSC_EXTERN PetscErrorCode PCMatApplyTranspose(PC, Mat, Mat);
70: PETSC_EXTERN PetscErrorCode PCApplyTransposeExists(PC, PetscBool *);
71: PETSC_EXTERN PetscErrorCode PCApplyBAorABTranspose(PC, PCSide, Vec, Vec, Vec);
72: PETSC_EXTERN PetscErrorCode PCSetReusePreconditioner(PC, PetscBool);
73: PETSC_EXTERN PetscErrorCode PCGetReusePreconditioner(PC, PetscBool *);
74: PETSC_EXTERN PetscErrorCode PCSetErrorIfFailure(PC, PetscBool);
76: #define PC_FILE_CLASSID 1211222
78: PETSC_EXTERN PetscErrorCode PCApplyRichardson(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *);
79: PETSC_EXTERN PetscErrorCode PCApplyRichardsonExists(PC, PetscBool *);
80: PETSC_EXTERN PetscErrorCode PCMatApplyRichardson(PC, Mat, Mat, Mat, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *);
81: PETSC_EXTERN PetscErrorCode PCMatApplyRichardsonExists(PC, PetscBool *);
82: PETSC_EXTERN PetscErrorCode PCSetUseAmat(PC, PetscBool);
83: PETSC_EXTERN PetscErrorCode PCGetUseAmat(PC, PetscBool *);
85: PETSC_EXTERN PetscErrorCode PCRegister(const char[], PetscErrorCode (*)(PC));
87: PETSC_EXTERN PetscErrorCode PCReset(PC);
88: PETSC_EXTERN PetscErrorCode PCDestroy(PC *);
89: PETSC_EXTERN PetscErrorCode PCSetFromOptions(PC);
91: PETSC_EXTERN PetscErrorCode PCFactorGetMatrix(PC, Mat *);
93: /*S
94: PCModifySubMatricesFn - A prototype of a function used to modify submatrices generated with `PCASM`, `PCBJACOBI`, etc.
96: Calling Sequence:
97: + pc - the `PC` preconditioner context
98: . nsub - number of index sets
99: . row - an array of index sets that contain the global row numbers
100: that comprise each local submatrix
101: . col - an array of index sets that contain the global column numbers
102: that comprise each local submatrix
103: . submat - array of local submatrices
104: - ctx - optional user-defined context for private data for the user-defined func routine (may be `NULL`), provided with `PCSetModifySubMatrices()`
106: Level: beginner
108: .seealso: [](ch_ksp), `PC`, `PCSetModifySubMatrices()`, `PCModifySubMatrices()`, `PCASM`, `PCBJACOBI`
109: S*/
110: PETSC_EXTERN_TYPEDEF typedef PetscErrorCode PCModifySubMatricesFn(PC pc, PetscInt nsub, const IS row[], const IS col[], Mat submat[], PetscCtx ctx);
112: PETSC_EXTERN PetscErrorCode PCSetModifySubMatrices(PC, PCModifySubMatricesFn *, void *);
113: PETSC_EXTERN PCModifySubMatricesFn PCModifySubMatrices;
115: PETSC_EXTERN PetscErrorCode PCSetOperators(PC, Mat, Mat);
116: PETSC_EXTERN PetscErrorCode PCGetOperators(PC, Mat *, Mat *);
117: PETSC_EXTERN PetscErrorCode PCGetOperatorsSet(PC, PetscBool *, PetscBool *);
119: PETSC_EXTERN PetscErrorCode PCView(PC, PetscViewer);
120: PETSC_EXTERN PetscErrorCode PCLoad(PC, PetscViewer);
121: PETSC_EXTERN PetscErrorCode PCViewFromOptions(PC, PetscObject, const char[]);
123: PETSC_EXTERN PetscErrorCode PCSetOptionsPrefix(PC, const char[]);
124: PETSC_EXTERN PetscErrorCode PCAppendOptionsPrefix(PC, const char[]);
125: PETSC_EXTERN PetscErrorCode PCGetOptionsPrefix(PC, const char *[]);
127: PETSC_EXTERN PetscErrorCode PCComputeOperator(PC, MatType, Mat *);
128: PETSC_DEPRECATED_FUNCTION(3, 12, 0, "PCComputeOperator()", ) static inline PetscErrorCode PCComputeExplicitOperator(PC A, Mat *B)
129: {
130: return PCComputeOperator(A, PETSC_NULLPTR, B);
131: }
133: PETSC_EXTERN PetscErrorCode PCSetPostSetUp(PC, PetscErrorCode (*)(PC));
135: PETSC_EXTERN PetscErrorCode PCSetDM(PC, DM);
136: PETSC_EXTERN PetscErrorCode PCGetDM(PC, DM *);
138: PETSC_EXTERN PetscErrorCode PCGetInterpolations(PC, PetscInt *, Mat *[]);
139: PETSC_EXTERN PetscErrorCode PCGetCoarseOperators(PC, PetscInt *, Mat *[]);
141: PETSC_EXTERN PetscErrorCode PCSetCoordinates(PC, PetscInt, PetscInt, PetscReal[]);
143: PETSC_EXTERN PetscErrorCode PCSetApplicationContext(PC, PetscCtx);
144: PETSC_EXTERN PetscErrorCode PCGetApplicationContext(PC, PetscCtxRt);
146: /* ------------- options specific to particular preconditioners --------- */
148: PETSC_EXTERN PetscErrorCode PCJacobiSetType(PC, PCJacobiType);
149: PETSC_EXTERN PetscErrorCode PCJacobiGetType(PC, PCJacobiType *);
150: PETSC_EXTERN PetscErrorCode PCJacobiSetUseAbs(PC, PetscBool);
151: PETSC_EXTERN PetscErrorCode PCJacobiGetUseAbs(PC, PetscBool *);
152: PETSC_EXTERN PetscErrorCode PCJacobiSetFixDiagonal(PC, PetscBool);
153: PETSC_EXTERN PetscErrorCode PCJacobiGetFixDiagonal(PC, PetscBool *);
154: PETSC_EXTERN PetscErrorCode PCJacobiGetDiagonal(PC, Vec, Vec);
155: PETSC_EXTERN PetscErrorCode PCJacobiSetRowl1Scale(PC, PetscReal);
156: PETSC_EXTERN PetscErrorCode PCJacobiGetRowl1Scale(PC, PetscReal *);
157: PETSC_EXTERN PetscErrorCode PCSORSetSymmetric(PC, MatSORType);
158: PETSC_EXTERN PetscErrorCode PCSORGetSymmetric(PC, MatSORType *);
159: PETSC_EXTERN PetscErrorCode PCSORSetOmega(PC, PetscReal);
160: PETSC_EXTERN PetscErrorCode PCSORGetOmega(PC, PetscReal *);
161: PETSC_EXTERN PetscErrorCode PCSORSetIterations(PC, PetscInt, PetscInt);
162: PETSC_EXTERN PetscErrorCode PCSORGetIterations(PC, PetscInt *, PetscInt *);
164: PETSC_EXTERN PetscErrorCode PCEisenstatSetOmega(PC, PetscReal);
165: PETSC_EXTERN PetscErrorCode PCEisenstatGetOmega(PC, PetscReal *);
166: PETSC_EXTERN PetscErrorCode PCEisenstatSetNoDiagonalScaling(PC, PetscBool);
167: PETSC_EXTERN PetscErrorCode PCEisenstatGetNoDiagonalScaling(PC, PetscBool *);
169: PETSC_EXTERN PetscErrorCode PCBJacobiSetTotalBlocks(PC, PetscInt, const PetscInt[]);
170: PETSC_EXTERN PetscErrorCode PCBJacobiGetTotalBlocks(PC, PetscInt *, const PetscInt *[]);
171: PETSC_EXTERN PetscErrorCode PCBJacobiSetLocalBlocks(PC, PetscInt, const PetscInt[]);
172: PETSC_EXTERN PetscErrorCode PCBJacobiGetLocalBlocks(PC, PetscInt *, const PetscInt *[]);
174: PETSC_EXTERN PetscErrorCode PCShellSetApply(PC, PetscErrorCode (*)(PC, Vec, Vec));
175: PETSC_EXTERN PetscErrorCode PCShellSetMatApply(PC, PetscErrorCode (*)(PC, Mat, Mat));
176: PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricLeft(PC, PetscErrorCode (*)(PC, Vec, Vec));
177: PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricRight(PC, PetscErrorCode (*)(PC, Vec, Vec));
178: PETSC_EXTERN PetscErrorCode PCShellSetApplyBA(PC, PetscErrorCode (*)(PC, PCSide, Vec, Vec, Vec));
179: PETSC_EXTERN PetscErrorCode PCShellSetApplyTranspose(PC, PetscErrorCode (*)(PC, Vec, Vec));
180: PETSC_EXTERN PetscErrorCode PCShellSetMatApplyTranspose(PC, PetscErrorCode (*)(PC, Mat, Mat));
181: PETSC_EXTERN PetscErrorCode PCShellSetSetUp(PC, PetscErrorCode (*)(PC));
182: PETSC_EXTERN PetscErrorCode PCShellSetApplyRichardson(PC, PetscErrorCode (*)(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *));
183: PETSC_EXTERN PetscErrorCode PCShellSetMatApplyRichardson(PC, PetscErrorCode (*)(PC, Mat, Mat, Mat, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *));
184: PETSC_EXTERN PetscErrorCode PCShellSetView(PC, PetscErrorCode (*)(PC, PetscViewer));
185: PETSC_EXTERN PetscErrorCode PCShellSetDestroy(PC, PetscErrorCode (*)(PC));
186: PETSC_EXTERN PetscErrorCode PCShellSetContext(PC, PetscCtx);
187: PETSC_EXTERN PetscErrorCode PCShellGetContext(PC, PetscCtxRt);
188: PETSC_EXTERN PetscErrorCode PCShellSetName(PC, const char[]);
189: PETSC_EXTERN PetscErrorCode PCShellGetName(PC, const char *[]);
191: PETSC_EXTERN PetscErrorCode PCFactorSetZeroPivot(PC, PetscReal);
193: PETSC_EXTERN PetscErrorCode PCFactorSetShiftType(PC, MatFactorShiftType);
194: PETSC_EXTERN PetscErrorCode PCFactorSetShiftAmount(PC, PetscReal);
196: PETSC_EXTERN PetscErrorCode PCFactorSetMatSolverType(PC, MatSolverType);
197: PETSC_EXTERN PetscErrorCode PCFactorGetMatSolverType(PC, MatSolverType *);
198: PETSC_EXTERN PetscErrorCode PCFactorSetUpMatSolverType(PC);
199: PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorSetMatSolverType()", ) static inline PetscErrorCode PCFactorSetMatSolverPackage(PC pc, MatSolverType stype)
200: {
201: return PCFactorSetMatSolverType(pc, stype);
202: }
203: PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorGetMatSolverType()", ) static inline PetscErrorCode PCFactorGetMatSolverPackage(PC pc, MatSolverType *stype)
204: {
205: return PCFactorGetMatSolverType(pc, stype);
206: }
207: PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorSetUpMatSolverType()", ) static inline PetscErrorCode PCFactorSetUpMatSolverPackage(PC pc)
208: {
209: return PCFactorSetUpMatSolverType(pc);
210: }
212: PETSC_EXTERN PetscErrorCode PCFactorSetFill(PC, PetscReal);
213: PETSC_EXTERN PetscErrorCode PCFactorSetColumnPivot(PC, PetscReal);
214: PETSC_EXTERN PetscErrorCode PCFactorReorderForNonzeroDiagonal(PC, PetscReal);
216: PETSC_EXTERN PetscErrorCode PCFactorSetMatOrderingType(PC, MatOrderingType);
217: PETSC_EXTERN PetscErrorCode PCFactorSetReuseOrdering(PC, PetscBool);
218: PETSC_EXTERN PetscErrorCode PCFactorSetReuseFill(PC, PetscBool);
219: PETSC_EXTERN PetscErrorCode PCFactorSetUseInPlace(PC, PetscBool);
220: PETSC_EXTERN PetscErrorCode PCFactorGetUseInPlace(PC, PetscBool *);
221: PETSC_EXTERN PetscErrorCode PCFactorSetAllowDiagonalFill(PC, PetscBool);
222: PETSC_EXTERN PetscErrorCode PCFactorGetAllowDiagonalFill(PC, PetscBool *);
223: PETSC_EXTERN PetscErrorCode PCFactorSetPivotInBlocks(PC, PetscBool);
225: PETSC_EXTERN PetscErrorCode PCFactorSetLevels(PC, PetscInt);
226: PETSC_EXTERN PetscErrorCode PCFactorGetLevels(PC, PetscInt *);
227: PETSC_EXTERN PetscErrorCode PCFactorSetDropTolerance(PC, PetscReal, PetscReal, PetscInt);
228: PETSC_EXTERN PetscErrorCode PCFactorGetZeroPivot(PC, PetscReal *);
229: PETSC_EXTERN PetscErrorCode PCFactorGetShiftAmount(PC, PetscReal *);
230: PETSC_EXTERN PetscErrorCode PCFactorGetShiftType(PC, MatFactorShiftType *);
232: PETSC_EXTERN PetscErrorCode PCASMSetLocalSubdomains(PC, PetscInt, IS[], IS[]);
233: PETSC_EXTERN PetscErrorCode PCASMSetTotalSubdomains(PC, PetscInt, IS[], IS[]);
234: PETSC_EXTERN PetscErrorCode PCASMSetOverlap(PC, PetscInt);
235: PETSC_EXTERN PetscErrorCode PCASMSetDMSubdomains(PC, PetscBool);
236: PETSC_EXTERN PetscErrorCode PCASMGetDMSubdomains(PC, PetscBool *);
237: PETSC_EXTERN PetscErrorCode PCASMSetSortIndices(PC, PetscBool);
239: PETSC_EXTERN PetscErrorCode PCASMSetType(PC, PCASMType);
240: PETSC_EXTERN PetscErrorCode PCASMGetType(PC, PCASMType *);
241: /*S
242: PCASMWeightedComputeScalingFn - Computes the weights for one overlapping ASM subdomain.
244: Calling Sequence:
245: + pc - the `PCASM` preconditioner of `PCASMType` `PC_ASM_WEIGHTED`
246: . local - zero-based local subdomain number
247: . scaling - vector to fill, in the ordering returned by `PCASMGetLocalSubdomains()`
248: - ctx - context supplied to `PCASMWeightedSetComputeScaling()`
250: Level: intermediate
252: Note:
253: Fill every entry of `scaling` without destroying it. The number of local subdomains may differ
254: between processes, so the callback must not perform collective operations on the communicator of `pc`.
256: .seealso: [](ch_ksp), `PCASM`, `PCASMWeightedSetComputeScaling()`, `PCASMWeightedSetScaling()`
257: S*/
258: PETSC_EXTERN_TYPEDEF typedef PetscErrorCode PCASMWeightedComputeScalingFn(PC pc, PetscInt local, Vec scaling, PetscCtx ctx);
260: PETSC_EXTERN PetscErrorCode PCASMWeightedSetComputeScaling(PC, PCASMWeightedComputeScalingFn *, PetscCtx);
261: PETSC_EXTERN PetscErrorCode PCASMWeightedSetScaling(PC, PetscInt, Vec[]);
262: PETSC_EXTERN PetscErrorCode PCASMWeightedGetScaling(PC, PetscInt *, Vec *[]);
263: PETSC_EXTERN PetscErrorCode PCASMSetLocalType(PC, PCCompositeType);
264: PETSC_EXTERN PetscErrorCode PCASMGetLocalType(PC, PCCompositeType *);
265: PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains(Mat, PetscInt, IS *[]);
266: PETSC_EXTERN PetscErrorCode PCASMDestroySubdomains(PetscInt, IS *[], IS *[]);
267: PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains2D(PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS *[], IS *[]);
268: PETSC_EXTERN PetscErrorCode PCASMGetLocalSubdomains(PC, PetscInt *, IS *[], IS *[]);
269: PETSC_EXTERN PetscErrorCode PCASMGetLocalSubmatrices(PC, PetscInt *, Mat *[]);
270: PETSC_EXTERN PetscErrorCode PCASMGetSubMatType(PC, MatType *);
271: PETSC_EXTERN PetscErrorCode PCASMSetSubMatType(PC, MatType);
273: PETSC_EXTERN PetscErrorCode PCGASMSetTotalSubdomains(PC, PetscInt);
274: PETSC_EXTERN PetscErrorCode PCGASMSetSubdomains(PC, PetscInt, IS[], IS[]);
275: PETSC_EXTERN PetscErrorCode PCGASMSetOverlap(PC, PetscInt);
276: PETSC_EXTERN PetscErrorCode PCGASMSetUseDMSubdomains(PC, PetscBool);
277: PETSC_EXTERN PetscErrorCode PCGASMGetUseDMSubdomains(PC, PetscBool *);
278: PETSC_EXTERN PetscErrorCode PCGASMSetSortIndices(PC, PetscBool);
280: PETSC_EXTERN PetscErrorCode PCGASMSetType(PC, PCGASMType);
281: PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains(Mat, PetscInt, PetscInt *, IS *[]);
282: PETSC_EXTERN PetscErrorCode PCGASMDestroySubdomains(PetscInt, IS *[], IS *[]);
283: PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains2D(PC, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS *[], IS *[]);
284: PETSC_EXTERN PetscErrorCode PCGASMGetSubdomains(PC, PetscInt *, IS *[], IS *[]);
285: PETSC_EXTERN PetscErrorCode PCGASMGetSubmatrices(PC, PetscInt *, Mat *[]);
287: PETSC_EXTERN PetscErrorCode PCCompositeSetType(PC, PCCompositeType);
288: PETSC_EXTERN PetscErrorCode PCCompositeGetType(PC, PCCompositeType *);
289: PETSC_EXTERN PetscErrorCode PCCompositeAddPCType(PC, PCType);
290: PETSC_EXTERN PetscErrorCode PCCompositeAddPC(PC, PC);
291: PETSC_EXTERN PetscErrorCode PCCompositeGetNumberPC(PC, PetscInt *);
292: PETSC_EXTERN PetscErrorCode PCCompositeGetPC(PC, PetscInt, PC *);
293: PETSC_EXTERN PetscErrorCode PCCompositeSpecialSetAlpha(PC, PetscScalar);
294: PETSC_EXTERN PetscErrorCode PCCompositeSpecialSetAlphaMat(PC, Mat);
296: PETSC_EXTERN PetscErrorCode PCRedundantSetNumber(PC, PetscInt);
297: PETSC_EXTERN PetscErrorCode PCRedundantSetScatter(PC, VecScatter, VecScatter);
298: PETSC_EXTERN PetscErrorCode PCRedundantGetOperators(PC, Mat *, Mat *);
300: PETSC_EXTERN PetscErrorCode PCSPAISetEpsilon(PC, PetscReal);
301: PETSC_EXTERN PetscErrorCode PCSPAISetNBSteps(PC, PetscInt);
302: PETSC_EXTERN PetscErrorCode PCSPAISetMax(PC, PetscInt);
303: PETSC_EXTERN PetscErrorCode PCSPAISetMaxNew(PC, PetscInt);
304: PETSC_EXTERN PetscErrorCode PCSPAISetBlockSize(PC, PetscInt);
305: PETSC_EXTERN PetscErrorCode PCSPAISetCacheSize(PC, PetscInt);
306: PETSC_EXTERN PetscErrorCode PCSPAISetVerbose(PC, PetscInt);
307: PETSC_EXTERN PetscErrorCode PCSPAISetSp(PC, PetscInt);
309: PETSC_EXTERN PetscErrorCode PCHYPRESetType(PC, const char[]);
310: PETSC_EXTERN PetscErrorCode PCHYPREGetType(PC, const char *[]);
311: PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteGradient(PC, Mat);
312: PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteCurl(PC, Mat);
313: PETSC_EXTERN PetscErrorCode PCHYPRESetInterpolations(PC, PetscInt, Mat, Mat[], Mat, Mat[]);
314: PETSC_EXTERN PetscErrorCode PCHYPRESetEdgeConstantVectors(PC, Vec, Vec, Vec);
315: PETSC_EXTERN PetscErrorCode PCHYPREAMSSetInteriorNodes(PC, Vec);
316: PETSC_EXTERN PetscErrorCode PCHYPRESetAlphaPoissonMatrix(PC, Mat);
317: PETSC_EXTERN PetscErrorCode PCHYPRESetBetaPoissonMatrix(PC, Mat);
318: PETSC_EXTERN PetscErrorCode PCHYPREGetCFMarkers(PC pc, PetscInt *[], PetscBT *[]);
320: PETSC_EXTERN PetscErrorCode PCFieldSplitSetFields(PC, const char[], PetscInt, const PetscInt *, const PetscInt *);
321: PETSC_EXTERN PetscErrorCode PCFieldSplitSetType(PC, PCCompositeType);
322: PETSC_EXTERN PetscErrorCode PCFieldSplitGetType(PC, PCCompositeType *);
323: PETSC_EXTERN PetscErrorCode PCFieldSplitSetBlockSize(PC, PetscInt);
324: PETSC_EXTERN PetscErrorCode PCFieldSplitSetIS(PC, const char[], IS);
325: PETSC_EXTERN PetscErrorCode PCFieldSplitGetIS(PC, const char[], IS *);
326: PETSC_EXTERN PetscErrorCode PCFieldSplitGetISByIndex(PC, PetscInt, IS *);
327: PETSC_EXTERN PetscErrorCode PCFieldSplitRestrictIS(PC, IS);
328: PETSC_EXTERN PetscErrorCode PCFieldSplitSetDMSplits(PC, PetscBool);
329: PETSC_EXTERN PetscErrorCode PCFieldSplitGetDMSplits(PC, PetscBool *);
330: PETSC_EXTERN PetscErrorCode PCFieldSplitSetDiagUseAmat(PC, PetscBool);
331: PETSC_EXTERN PetscErrorCode PCFieldSplitGetDiagUseAmat(PC, PetscBool *);
332: PETSC_EXTERN PetscErrorCode PCFieldSplitSetOffDiagUseAmat(PC, PetscBool);
333: PETSC_EXTERN PetscErrorCode PCFieldSplitGetOffDiagUseAmat(PC, PetscBool *);
335: PETSC_EXTERN PETSC_DEPRECATED_FUNCTION(3, 5, 0, "PCFieldSplitSetSchurPre()", ) PetscErrorCode PCFieldSplitSchurPrecondition(PC, PCFieldSplitSchurPreType, Mat);
336: PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurPre(PC, PCFieldSplitSchurPreType, Mat);
337: PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurPre(PC, PCFieldSplitSchurPreType *, Mat *);
338: PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurFactType(PC, PCFieldSplitSchurFactType);
339: PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurScale(PC, PetscScalar);
340: PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurBlocks(PC, Mat *, Mat *, Mat *, Mat *);
341: PETSC_EXTERN PetscErrorCode PCFieldSplitSchurGetS(PC, Mat *);
342: PETSC_EXTERN PetscErrorCode PCFieldSplitSchurRestoreS(PC, Mat *);
343: PETSC_EXTERN PetscErrorCode PCFieldSplitGetDetectSaddlePoint(PC, PetscBool *);
344: PETSC_EXTERN PetscErrorCode PCFieldSplitSetDetectSaddlePoint(PC, PetscBool);
345: PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBTol(PC, PetscReal);
346: PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBNu(PC, PetscReal);
347: PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBMaxit(PC, PetscInt);
348: PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBDelay(PC, PetscInt);
350: PETSC_EXTERN PetscErrorCode PCGalerkinSetRestriction(PC, Mat);
351: PETSC_EXTERN PetscErrorCode PCGalerkinSetInterpolation(PC, Mat);
352: PETSC_EXTERN PetscErrorCode PCGalerkinSetComputeSubmatrix(PC, PetscErrorCode (*)(PC, Mat, Mat, Mat *, void *), void *);
354: PETSC_EXTERN PetscErrorCode PCPythonSetType(PC, const char[]);
355: PETSC_EXTERN PetscErrorCode PCPythonGetType(PC, const char *[]);
357: PETSC_EXTERN PetscErrorCode PCPARMSSetGlobal(PC, PCPARMSGlobalType);
358: PETSC_EXTERN PetscErrorCode PCPARMSSetLocal(PC, PCPARMSLocalType);
359: PETSC_EXTERN PetscErrorCode PCPARMSSetSolveTolerances(PC, PetscReal, PetscInt);
360: PETSC_EXTERN PetscErrorCode PCPARMSSetSolveRestart(PC, PetscInt);
361: PETSC_EXTERN PetscErrorCode PCPARMSSetNonsymPerm(PC, PetscBool);
362: PETSC_EXTERN PetscErrorCode PCPARMSSetFill(PC, PetscInt, PetscInt, PetscInt);
364: PETSC_EXTERN PetscErrorCode PCGAMGSetType(PC, PCGAMGType);
365: PETSC_EXTERN PetscErrorCode PCGAMGGetType(PC, PCGAMGType *);
366: PETSC_EXTERN PetscErrorCode PCGAMGSetProcEqLim(PC, PetscInt);
368: PETSC_EXTERN PetscErrorCode PCGAMGSetRepartition(PC, PetscBool);
369: PETSC_EXTERN PetscErrorCode PCGAMGSetUseSAEstEig(PC, PetscBool);
370: PETSC_EXTERN PetscErrorCode PCGAMGSetRecomputeEstEig(PC, PetscBool);
371: PETSC_EXTERN PetscErrorCode PCGAMGSetEigenvalues(PC, PetscReal, PetscReal);
372: PETSC_EXTERN PetscErrorCode PCGAMGASMSetUseAggs(PC, PetscBool);
373: PETSC_EXTERN PetscErrorCode PCGAMGSetParallelCoarseGridSolve(PC, PetscBool);
374: PETSC_EXTERN PetscErrorCode PCGAMGSetCpuPinCoarseGrids(PC, PetscBool);
375: PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseGridLayoutType(PC, PCGAMGLayoutType);
376: PETSC_EXTERN PetscErrorCode PCGAMGSetThreshold(PC, PetscReal[], PetscInt);
377: PETSC_EXTERN PetscErrorCode PCGAMGSetRankReductionFactors(PC, PetscInt[], PetscInt);
378: PETSC_EXTERN PetscErrorCode PCGAMGSetThresholdScale(PC, PetscReal);
379: PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseEqLim(PC, PetscInt);
380: PETSC_EXTERN PetscErrorCode PCGAMGSetNlevels(PC, PetscInt);
381: PETSC_EXTERN PetscErrorCode PCGAMGSetNSmooths(PC, PetscInt);
382: PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveLevels(PC, PetscInt);
383: PETSC_EXTERN PetscErrorCode PCGAMGSetReuseInterpolation(PC, PetscBool);
384: PETSC_EXTERN PetscErrorCode PCGAMGFinalizePackage(void);
385: PETSC_EXTERN PetscErrorCode PCGAMGInitializePackage(void);
386: PETSC_EXTERN PetscErrorCode PCGAMGRegister(PCGAMGType, PetscErrorCode (*)(PC));
387: PETSC_EXTERN PetscErrorCode PCGAMGCreateGraph(PC, Mat, Mat *);
388: PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveSquareGraph(PC, PetscBool);
389: PETSC_EXTERN PetscErrorCode PCGAMGMISkSetMinDegreeOrdering(PC, PetscBool);
390: PETSC_EXTERN PetscErrorCode PCGAMGMISkSetAggressive(PC, PetscInt);
391: PETSC_EXTERN PetscErrorCode PCGAMGASMSetHEM(PC, PetscInt);
392: PETSC_EXTERN PetscErrorCode PCGAMGSetLowMemoryFilter(PC, PetscBool);
393: PETSC_EXTERN PetscErrorCode PCGAMGSetGraphSymmetrize(PC, PetscBool);
394: PETSC_EXTERN PetscErrorCode PCGAMGSetProlongatorFilter(PC, PetscReal);
395: PETSC_EXTERN PetscErrorCode PCGAMGGetProlongatorFilter(PC, PetscReal *);
396: PETSC_EXTERN PetscErrorCode PCGAMGSetProlongatorFilterScale(PC, PetscReal);
397: PETSC_EXTERN PetscErrorCode PCGAMGGetProlongatorFilterScale(PC, PetscReal *);
398: PETSC_EXTERN PetscErrorCode PCGAMGSetInjectionIndex(PC, PetscInt, PetscInt[]);
400: PETSC_EXTERN PetscErrorCode PCGAMGClassicalSetType(PC, PCGAMGClassicalType);
401: PETSC_EXTERN PetscErrorCode PCGAMGClassicalGetType(PC, PCGAMGClassicalType *);
403: PETSC_EXTERN PetscErrorCode PCBDDCSetDiscreteGradient(PC, Mat, PetscInt, PetscInt, PetscBool, PetscBool);
404: PETSC_EXTERN PetscErrorCode PCBDDCSetDivergenceMat(PC, Mat, PetscBool, IS);
405: PETSC_EXTERN PetscErrorCode PCBDDCSetChangeOfBasisMat(PC, Mat, PetscBool);
406: PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesIS(PC, IS);
407: PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesLocalIS(PC, IS);
408: PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesIS(PC, IS *);
409: PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesLocalIS(PC, IS *);
410: PETSC_EXTERN PetscErrorCode PCBDDCSetCoarseningRatio(PC, PetscInt);
411: PETSC_EXTERN PetscErrorCode PCBDDCSetLevels(PC, PetscInt);
412: PETSC_EXTERN PetscErrorCode PCBDDCLoadCustomization(PC, const char[], PetscInt);
413: PETSC_EXTERN PetscErrorCode PCBDDCSaveCustomization(PC, const char[], PetscInt);
414: PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundaries(PC, IS);
415: PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundariesLocal(PC, IS);
416: PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundaries(PC, IS *);
417: PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundariesLocal(PC, IS *);
418: PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundaries(PC, IS);
419: PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundariesLocal(PC, IS);
420: PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundaries(PC, IS *);
421: PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundariesLocal(PC, IS *);
422: PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplitting(PC, PetscInt, IS[]);
423: PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplittingLocal(PC, PetscInt, IS[]);
424: PETSC_EXTERN PetscErrorCode PCBDDCSetLocalAdjacencyGraph(PC, PetscInt, const PetscInt[], const PetscInt[], PetscCopyMode);
425: PETSC_EXTERN PetscErrorCode PCBDDCCreateFETIDPOperators(PC, PetscBool, const char *, Mat *, PC *);
426: PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetRHS(Mat, Vec, Vec);
427: PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetSolution(Mat, Vec, Vec);
428: PETSC_EXTERN PetscErrorCode PCBDDCFinalizePackage(void);
429: PETSC_EXTERN PetscErrorCode PCBDDCInitializePackage(void);
431: PETSC_EXTERN PetscErrorCode PCISInitialize(PC);
432: PETSC_EXTERN PetscErrorCode PCISSetUp(PC, PetscBool, PetscBool);
433: PETSC_EXTERN PetscErrorCode PCISSetUseStiffnessScaling(PC, PetscBool);
434: PETSC_EXTERN PetscErrorCode PCISSetSubdomainScalingFactor(PC, PetscScalar);
435: PETSC_EXTERN PetscErrorCode PCISSetSubdomainDiagonalScaling(PC, Vec);
436: PETSC_EXTERN PetscErrorCode PCISScatterArrayNToVecB(PC, PetscScalar *, Vec, InsertMode, ScatterMode);
437: PETSC_EXTERN PetscErrorCode PCISApplySchur(PC, Vec, Vec, Vec, Vec, Vec);
438: PETSC_EXTERN PetscErrorCode PCISApplyInvSchur(PC, Vec, Vec, Vec, Vec);
439: PETSC_EXTERN PetscErrorCode PCISReset(PC);
441: PETSC_EXTERN PetscInt PetscMGLevelId;
442: PETSC_EXTERN PetscErrorCode PCMGSetType(PC, PCMGType);
443: PETSC_EXTERN PetscErrorCode PCMGGetType(PC, PCMGType *);
444: PETSC_EXTERN PetscErrorCode PCMGSetLevels(PC, PetscInt, MPI_Comm *);
445: PETSC_EXTERN PetscErrorCode PCMGGetLevels(PC, PetscInt *);
447: PETSC_EXTERN PetscErrorCode PCMGSetDistinctSmoothUp(PC);
448: PETSC_EXTERN PetscErrorCode PCMGSetNumberSmooth(PC, PetscInt);
449: PETSC_EXTERN PetscErrorCode PCMGSetCycleType(PC, PCMGCycleType);
450: PETSC_EXTERN PetscErrorCode PCMGSetCycleTypeOnLevel(PC, PetscInt, PCMGCycleType);
451: PETSC_DEPRECATED_FUNCTION(3, 5, 0, "PCMGSetCycleTypeOnLevel()", ) static inline PetscErrorCode PCMGSetCyclesOnLevel(PC pc, PetscInt l, PetscInt t)
452: {
453: return PCMGSetCycleTypeOnLevel(pc, l, (PCMGCycleType)t);
454: }
455: PETSC_EXTERN PetscErrorCode PCMGMultiplicativeSetCycles(PC, PetscInt);
456: PETSC_EXTERN PetscErrorCode PCMGSetGalerkin(PC, PCMGGalerkinType);
457: PETSC_EXTERN PetscErrorCode PCMGGetGalerkin(PC, PCMGGalerkinType *);
458: PETSC_EXTERN PetscErrorCode PCMGSetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType);
459: PETSC_EXTERN PetscErrorCode PCMGGetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType *);
460: PETSC_EXTERN PetscErrorCode PCMGSetAdaptCR(PC, PetscBool);
461: PETSC_EXTERN PetscErrorCode PCMGGetAdaptCR(PC, PetscBool *);
462: /* MATT: Remove? */
463: PETSC_EXTERN PetscErrorCode PCMGSetAdaptInterpolation(PC, PetscBool);
464: PETSC_EXTERN PetscErrorCode PCMGGetAdaptInterpolation(PC, PetscBool *);
466: PETSC_EXTERN PetscErrorCode PCMGSetRhs(PC, PetscInt, Vec);
467: PETSC_EXTERN PetscErrorCode PCMGSetX(PC, PetscInt, Vec);
468: PETSC_EXTERN PetscErrorCode PCMGSetR(PC, PetscInt, Vec);
470: PETSC_EXTERN PetscErrorCode PCMGSetRestriction(PC, PetscInt, Mat);
471: PETSC_EXTERN PetscErrorCode PCMGGetRestriction(PC, PetscInt, Mat *);
472: PETSC_EXTERN PetscErrorCode PCMGSetInjection(PC, PetscInt, Mat);
473: PETSC_EXTERN PetscErrorCode PCMGGetInjection(PC, PetscInt, Mat *);
474: PETSC_EXTERN PetscErrorCode PCMGSetInterpolation(PC, PetscInt, Mat);
475: PETSC_EXTERN PetscErrorCode PCMGSetOperators(PC, PetscInt, Mat, Mat);
476: PETSC_EXTERN PetscErrorCode PCMGGetInterpolation(PC, PetscInt, Mat *);
477: PETSC_EXTERN PetscErrorCode PCMGSetRScale(PC, PetscInt, Vec);
478: PETSC_EXTERN PetscErrorCode PCMGGetRScale(PC, PetscInt, Vec *);
479: PETSC_EXTERN PetscErrorCode PCMGSetResidual(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat);
480: PETSC_EXTERN PetscErrorCode PCMGSetResidualTranspose(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat);
481: PETSC_EXTERN PetscErrorCode PCMGResidualDefault(Mat, Vec, Vec, Vec);
482: PETSC_EXTERN PetscErrorCode PCMGResidualTransposeDefault(Mat, Vec, Vec, Vec);
483: PETSC_EXTERN PetscErrorCode PCMGMatResidualDefault(Mat, Mat, Mat, Mat);
484: PETSC_EXTERN PetscErrorCode PCMGMatResidualTransposeDefault(Mat, Mat, Mat, Mat);
485: PETSC_EXTERN PetscErrorCode PCMGGalerkinSetMatProductAlgorithm(PC, const char[]);
486: PETSC_EXTERN PetscErrorCode PCMGGalerkinGetMatProductAlgorithm(PC, const char *[]);
487: PETSC_EXTERN PetscErrorCode PCMGGetGridComplexity(PC, PetscReal *, PetscReal *);
489: PETSC_EXTERN PetscErrorCode PCHMGSetReuseInterpolation(PC, PetscBool);
490: PETSC_EXTERN PetscErrorCode PCHMGSetUseSubspaceCoarsening(PC, PetscBool);
491: PETSC_EXTERN PetscErrorCode PCHMGSetInnerPCType(PC, PCType);
492: PETSC_EXTERN PetscErrorCode PCHMGSetCoarseningComponent(PC, PetscInt);
493: PETSC_EXTERN PetscErrorCode PCHMGUseMatMAIJ(PC, PetscBool);
495: PETSC_EXTERN PetscErrorCode PCTelescopeGetSubcommType(PC, PetscSubcommType *);
496: PETSC_EXTERN PetscErrorCode PCTelescopeSetSubcommType(PC, PetscSubcommType);
497: PETSC_EXTERN PetscErrorCode PCTelescopeGetReductionFactor(PC, PetscInt *);
498: PETSC_EXTERN PetscErrorCode PCTelescopeSetReductionFactor(PC, PetscInt);
499: PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreDM(PC, PetscBool *);
500: PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreDM(PC, PetscBool);
501: PETSC_EXTERN PetscErrorCode PCTelescopeGetUseCoarseDM(PC, PetscBool *);
502: PETSC_EXTERN PetscErrorCode PCTelescopeSetUseCoarseDM(PC, PetscBool);
503: PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreKSPComputeOperators(PC, PetscBool *);
504: PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreKSPComputeOperators(PC, PetscBool);
505: PETSC_EXTERN PetscErrorCode PCTelescopeGetDM(PC, DM *);
507: PETSC_EXTERN PetscErrorCode PCPatchSetSaveOperators(PC, PetscBool);
508: PETSC_EXTERN PetscErrorCode PCPatchGetSaveOperators(PC, PetscBool *);
509: PETSC_EXTERN PetscErrorCode PCPatchSetPrecomputeElementTensors(PC, PetscBool);
510: PETSC_EXTERN PetscErrorCode PCPatchGetPrecomputeElementTensors(PC, PetscBool *);
511: PETSC_EXTERN PetscErrorCode PCPatchSetPartitionOfUnity(PC, PetscBool);
512: PETSC_EXTERN PetscErrorCode PCPatchGetPartitionOfUnity(PC, PetscBool *);
513: PETSC_EXTERN PetscErrorCode PCPatchSetSubMatType(PC, MatType);
514: PETSC_EXTERN PetscErrorCode PCPatchGetSubMatType(PC, MatType *);
515: PETSC_EXTERN PetscErrorCode PCPatchSetCellNumbering(PC, PetscSection);
516: PETSC_EXTERN PetscErrorCode PCPatchGetCellNumbering(PC, PetscSection *);
517: PETSC_EXTERN PetscErrorCode PCPatchSetConstructType(PC, PCPatchConstructType, PetscErrorCode (*)(PC, PetscInt *, IS *[], IS *, PetscCtx), PetscCtx);
518: PETSC_EXTERN PetscErrorCode PCPatchGetConstructType(PC, PCPatchConstructType *, PetscErrorCode (**)(PC, PetscInt *, IS *[], IS *, PetscCtx), PetscCtxRt);
519: PETSC_EXTERN PetscErrorCode PCPatchSetDiscretisationInfo(PC, PetscInt, DM[], PetscInt[], PetscInt[], const PetscInt **, const PetscInt[], PetscInt, const PetscInt[], PetscInt, const PetscInt[]);
520: PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperator(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *);
521: PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunction(PC pc, PetscErrorCode (*)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), PetscCtx ctx);
522: PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperatorInteriorFacets(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *);
523: PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunctionInteriorFacets(PC pc, PetscErrorCode (*)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), PetscCtx ctx);
524: PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperatorExteriorFacets(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *);
525: PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunctionExteriorFacets(PC pc, PetscErrorCode (*)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), PetscCtx ctx);
527: PETSC_EXTERN PetscErrorCode PCLMVMSetMatLMVM(PC, Mat);
528: PETSC_EXTERN PetscErrorCode PCLMVMGetMatLMVM(PC, Mat *);
529: PETSC_EXTERN PetscErrorCode PCLMVMSetIS(PC, IS);
530: PETSC_EXTERN PetscErrorCode PCLMVMClearIS(PC);
531: PETSC_EXTERN PetscErrorCode PCLMVMSetUpdateVec(PC, Vec);
533: PETSC_EXTERN PetscErrorCode PCExoticSetType(PC, PCExoticType);
535: PETSC_EXTERN PetscErrorCode PCDeflationSetInitOnly(PC, PetscBool);
536: PETSC_EXTERN PetscErrorCode PCDeflationSetLevels(PC, PetscInt);
537: PETSC_EXTERN PetscErrorCode PCDeflationSetReductionFactor(PC, PetscInt);
538: PETSC_EXTERN PetscErrorCode PCDeflationSetCorrectionFactor(PC, PetscScalar);
539: PETSC_EXTERN PetscErrorCode PCDeflationSetSpaceToCompute(PC, PCDeflationSpaceType, PetscInt);
540: PETSC_EXTERN PetscErrorCode PCDeflationSetSpace(PC, Mat, PetscBool);
541: PETSC_EXTERN PetscErrorCode PCDeflationSetProjectionNullSpaceMat(PC, Mat);
542: PETSC_EXTERN PetscErrorCode PCDeflationSetCoarseMat(PC, Mat);
543: PETSC_EXTERN PetscErrorCode PCDeflationGetPC(PC, PC *);
545: PETSC_EXTERN PetscErrorCode PCHPDDMSetAuxiliaryMat(PC, IS, Mat, PetscErrorCode (*)(Mat, PetscReal, Vec, Vec, PetscReal, IS, void *), void *);
546: PETSC_EXTERN PetscErrorCode PCHPDDMSetRHSMat(PC, Mat);
547: PETSC_EXTERN PetscErrorCode PCHPDDMHasNeumannMat(PC, PetscBool);
548: PETSC_EXTERN PetscErrorCode PCHPDDMSetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType);
549: PETSC_EXTERN PetscErrorCode PCHPDDMGetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType *);
550: PETSC_EXTERN PetscErrorCode PCHPDDMSetSTShareSubKSP(PC, PetscBool);
551: PETSC_EXTERN PetscErrorCode PCHPDDMGetSTShareSubKSP(PC, PetscBool *);
552: PETSC_EXTERN PetscErrorCode PCHPDDMSetDeflationMat(PC, IS, Mat);
553: PETSC_EXTERN PetscErrorCode PCHPDDMSetScaling(PC, IS, Vec);
554: PETSC_EXTERN PetscErrorCode PCHPDDMFinalizePackage(void);
555: PETSC_EXTERN PetscErrorCode PCHPDDMInitializePackage(void);
556: PETSC_EXTERN PetscErrorCode PCHPDDMGetComplexities(PC, PetscReal *, PetscReal *);
558: PETSC_EXTERN PetscErrorCode PCAmgXGetResources(PC, void *);
560: PETSC_EXTERN PetscErrorCode PCMatSetApplyOperation(PC, MatOperation);
561: PETSC_EXTERN PetscErrorCode PCMatGetApplyOperation(PC, MatOperation *);