1d03aef70SBarry Smith /* 237f753daSBarry Smith Preconditioner module. 3d03aef70SBarry Smith */ 426bd1501SBarry Smith #if !defined(PETSCPC_H) 526bd1501SBarry Smith #define PETSCPC_H 6ac09b921SBarry Smith 71e25c274SJed Brown #include <petscmat.h> 877a3c058SKarl Rupp #include <petscdmtypes.h> 9b0753f9dSMatthew G. Knepley #include <petscpctypes.h> 10d03aef70SBarry Smith 11ac09b921SBarry Smith /* SUBMANSEC = PC */ 12ac09b921SBarry Smith 13607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PCInitializePackage(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 481b2b9847SBarry Smith PETSC_EXTERN PetscErrorCode PCSetFailedReason(PC, PCFailedReason); 49c0decd05SBarry Smith PETSC_EXTERN PetscErrorCode PCGetFailedReason(PC, PCFailedReason *); 50*9371c9d4SSatish Balay PETSC_DEPRECATED_FUNCTION("Use PCGetFailedReason() (since version 3.11)") static inline PetscErrorCode PCGetSetUpFailedReason(PC pc, PCFailedReason *reason) { 51*9371c9d4SSatish Balay return PCGetFailedReason(pc, reason); 52*9371c9d4SSatish Balay } 531b2b9847SBarry Smith PETSC_EXTERN PetscErrorCode PCGetFailedReasonRank(PC, PCFailedReason *); 541b2b9847SBarry Smith 55014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetUpOnBlocks(PC); 56014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApply(PC, Vec, Vec); 57c677e75fSPierre Jolivet PETSC_EXTERN PetscErrorCode PCMatApply(PC, Mat, Mat); 58014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplySymmetricLeft(PC, Vec, Vec); 59014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplySymmetricRight(PC, Vec, Vec); 60014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyBAorAB(PC, PCSide, Vec, Vec, Vec); 61014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyTranspose(PC, Vec, Vec); 62014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyTransposeExists(PC, PetscBool *); 63014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyBAorABTranspose(PC, PCSide, Vec, Vec, Vec); 6423ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCSetReusePreconditioner(PC, PetscBool); 65c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGetReusePreconditioner(PC, PetscBool *); 66422a814eSBarry Smith PETSC_EXTERN PetscErrorCode PCSetErrorIfFailure(PC, PetscBool); 674d0a8057SBarry Smith 6855849f57SBarry Smith #define PC_FILE_CLASSID 1211222 6955849f57SBarry Smith 70014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyRichardson(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *); 71014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyRichardsonExists(PC, PetscBool *); 7249517cdeSBarry Smith PETSC_EXTERN PetscErrorCode PCSetUseAmat(PC, PetscBool); 7349517cdeSBarry Smith PETSC_EXTERN PetscErrorCode PCGetUseAmat(PC, PetscBool *); 7484cb2905SBarry Smith 75bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode PCRegister(const char[], PetscErrorCode (*)(PC)); 7630de9b25SBarry Smith 77014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCReset(PC); 78014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDestroy(PC *); 79014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetFromOptions(PC); 8014c91fddSBarry Smith 81014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorGetMatrix(PC, Mat *); 82014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetModifySubMatrices(PC, PetscErrorCode (*)(PC, PetscInt, const IS[], const IS[], Mat[], void *), void *); 83014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCModifySubMatrices(PC, PetscInt, const IS[], const IS[], Mat[], void *); 845b116368SBarry Smith 8523ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCSetOperators(PC, Mat, Mat); 8623ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCGetOperators(PC, Mat *, Mat *); 87014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetOperatorsSet(PC, PetscBool *, PetscBool *); 884b0e389bSBarry Smith 89014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCView(PC, PetscViewer); 9055849f57SBarry Smith PETSC_EXTERN PetscErrorCode PCLoad(PC, PetscViewer); 91fe2efc57SMark PETSC_EXTERN PetscErrorCode PCViewFromOptions(PC, PetscObject, const char[]); 927bc3d0afSSatish Balay 93014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetOptionsPrefix(PC, const char[]); 94014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCAppendOptionsPrefix(PC, const char[]); 95014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetOptionsPrefix(PC, const char *[]); 968ed539a5SBarry Smith 970bacdadaSStefano Zampini PETSC_EXTERN PetscErrorCode PCComputeOperator(PC, MatType, Mat *); 98*9371c9d4SSatish Balay PETSC_DEPRECATED_FUNCTION("Use PCComputeOperator() (since version 3.12)") static inline PetscErrorCode PCComputeExplicitOperator(PC A, Mat *B) { 99*9371c9d4SSatish Balay return PCComputeOperator(A, NULL, B); 100*9371c9d4SSatish Balay } 10171601f6fSBarry Smith 102d6913704SBarry Smith /* 103d6913704SBarry Smith These are used to provide extra scaling of preconditioned 1040f3b3ca1SHong Zhang operator for time-stepping schemes like in SUNDIALS 105d6913704SBarry Smith */ 106014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetDiagonalScale(PC, PetscBool *); 107014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDiagonalScaleLeft(PC, Vec, Vec); 108014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDiagonalScaleRight(PC, Vec, Vec); 109014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetDiagonalScale(PC, Vec); 110d6913704SBarry Smith 111f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCSetDM(PC, DM); 112f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCGetDM(PC, DM *); 113f02e8f50SMatthew G. Knepley 114fd2dd295SFande Kong PETSC_EXTERN PetscErrorCode PCGetInterpolations(PC, PetscInt *, Mat *[]); 115fd2dd295SFande Kong PETSC_EXTERN PetscErrorCode PCGetCoarseOperators(PC pc, PetscInt *, Mat *[]); 116fd2dd295SFande Kong 117f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCSetCoordinates(PC, PetscInt, PetscInt, PetscReal *); 118f02e8f50SMatthew G. Knepley 119f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCSetApplicationContext(PC, void *); 120f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCGetApplicationContext(PC, void *); 121f02e8f50SMatthew G. Knepley 12284cb2905SBarry Smith /* ------------- options specific to particular preconditioners --------- */ 123329f5518SBarry Smith 124baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiSetType(PC, PCJacobiType); 125baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetType(PC, PCJacobiType *); 126baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiSetUseAbs(PC, PetscBool); 127baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetUseAbs(PC, PetscBool *); 12867ed0f3bSStefano Zampini PETSC_EXTERN PetscErrorCode PCJacobiSetFixDiagonal(PC, PetscBool); 12967ed0f3bSStefano Zampini PETSC_EXTERN PetscErrorCode PCJacobiGetFixDiagonal(PC, PetscBool *); 130014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetSymmetric(PC, MatSORType); 131c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetSymmetric(PC, MatSORType *); 132014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetOmega(PC, PetscReal); 133c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetOmega(PC, PetscReal *); 134014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetIterations(PC, PetscInt, PetscInt); 135c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetIterations(PC, PetscInt *, PetscInt *); 136d03aef70SBarry Smith 137014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCEisenstatSetOmega(PC, PetscReal); 138c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatGetOmega(PC, PetscReal *); 139c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatSetNoDiagonalScaling(PC, PetscBool); 140c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatGetNoDiagonalScaling(PC, PetscBool *); 141421c37bdSBarry Smith 142014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBJacobiSetTotalBlocks(PC, PetscInt, const PetscInt[]); 143c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCBJacobiGetTotalBlocks(PC, PetscInt *, const PetscInt *[]); 144014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBJacobiSetLocalBlocks(PC, PetscInt, const PetscInt[]); 145c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCBJacobiGetLocalBlocks(PC, PetscInt *, const PetscInt *[]); 1461eb62cbbSBarry Smith 147014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApply(PC, PetscErrorCode (*)(PC, Vec, Vec)); 1487b6e2003SPierre Jolivet PETSC_EXTERN PetscErrorCode PCShellSetMatApply(PC, PetscErrorCode (*)(PC, Mat, Mat)); 1491b581b66SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricLeft(PC, PetscErrorCode (*)(PC, Vec, Vec)); 1501b581b66SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricRight(PC, PetscErrorCode (*)(PC, Vec, Vec)); 151014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyBA(PC, PetscErrorCode (*)(PC, PCSide, Vec, Vec, Vec)); 152014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyTranspose(PC, PetscErrorCode (*)(PC, Vec, Vec)); 153014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetSetUp(PC, PetscErrorCode (*)(PC)); 154014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyRichardson(PC, PetscErrorCode (*)(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *)); 155014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetView(PC, PetscErrorCode (*)(PC, PetscViewer)); 156014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetDestroy(PC, PetscErrorCode (*)(PC)); 157014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetContext(PC, void *); 1583ec1f749SStefano Zampini PETSC_EXTERN PetscErrorCode PCShellGetContext(PC, void *); 159014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetName(PC, const char[]); 160014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellGetName(PC, const char *[]); 161aabeff55SBarry Smith 162014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetZeroPivot(PC, PetscReal); 163d90ac83dSHong Zhang 164014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetShiftType(PC, MatFactorShiftType); 165014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetShiftAmount(PC, PetscReal); 166d90ac83dSHong Zhang 167ea799195SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetMatSolverType(PC, MatSolverType); 168ea799195SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetMatSolverType(PC, MatSolverType *); 1693ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetUpMatSolverType(PC); 170*9371c9d4SSatish Balay PETSC_DEPRECATED_FUNCTION("Use PCFactorSetMatSolverType() (since version 3.9)") static inline PetscErrorCode PCFactorSetMatSolverPackage(PC pc, MatSolverType stype) { 171*9371c9d4SSatish Balay return PCFactorSetMatSolverType(pc, stype); 172*9371c9d4SSatish Balay } 173*9371c9d4SSatish Balay PETSC_DEPRECATED_FUNCTION("Use PCFactorGetMatSolverType() (since version 3.9)") static inline PetscErrorCode PCFactorGetMatSolverPackage(PC pc, MatSolverType *stype) { 174*9371c9d4SSatish Balay return PCFactorGetMatSolverType(pc, stype); 175*9371c9d4SSatish Balay } 176*9371c9d4SSatish Balay PETSC_DEPRECATED_FUNCTION("Use PCFactorSetUpMatSolverType() (since version 3.9)") static inline PetscErrorCode PCFactorSetUpMatSolverPackage(PC pc) { 177*9371c9d4SSatish Balay return PCFactorSetUpMatSolverType(pc); 178*9371c9d4SSatish Balay } 1792401956bSBarry Smith 180014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetFill(PC, PetscReal); 181014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetColumnPivot(PC, PetscReal); 182014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorReorderForNonzeroDiagonal(PC, PetscReal); 183421c37bdSBarry Smith 18419fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetMatOrderingType(PC, MatOrderingType); 185014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetReuseOrdering(PC, PetscBool); 186014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetReuseFill(PC, PetscBool); 1878e37d05fSBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetUseInPlace(PC, PetscBool); 1888e37d05fSBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetUseInPlace(PC, PetscBool *); 18992e9c092SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetAllowDiagonalFill(PC, PetscBool); 19092e9c092SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetAllowDiagonalFill(PC, PetscBool *); 191014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetPivotInBlocks(PC, PetscBool); 192f5a88c2aSLois Curfman McInnes 193014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetLevels(PC, PetscInt); 194c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetLevels(PC, PetscInt *); 195014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetDropTolerance(PC, PetscReal, PetscReal, PetscInt); 196c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetZeroPivot(PC, PetscReal *); 197c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetShiftAmount(PC, PetscReal *); 198c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetShiftType(PC, MatFactorShiftType *); 199b35a507dSBarry Smith 200014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetLocalSubdomains(PC, PetscInt, IS[], IS[]); 201014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetTotalSubdomains(PC, PetscInt, IS[], IS[]); 202014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetOverlap(PC, PetscInt); 203d709ea83SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCASMSetDMSubdomains(PC, PetscBool); 204d709ea83SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCASMGetDMSubdomains(PC, PetscBool *); 205014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetSortIndices(PC, PetscBool); 206f746d493SDmitry Karpeev 207014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetType(PC, PCASMType); 208c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCASMGetType(PC, PCASMType *); 20912cd4985SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCASMSetLocalType(PC, PCCompositeType); 21012cd4985SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCASMGetLocalType(PC, PCCompositeType *); 211014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains(Mat, PetscInt, IS *[]); 212014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMDestroySubdomains(PetscInt, IS[], IS[]); 213014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains2D(PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS **, IS **); 214014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMGetLocalSubdomains(PC, PetscInt *, IS *[], IS *[]); 215014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMGetLocalSubmatrices(PC, PetscInt *, Mat *[]); 21680ec0b7dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCASMGetSubMatType(PC, MatType *); 21780ec0b7dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCASMSetSubMatType(PC, MatType); 218981c4779SBarry Smith 2198f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMSetTotalSubdomains(PC, PetscInt); 220014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetSubdomains(PC, PetscInt, IS[], IS[]); 221014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetOverlap(PC, PetscInt); 2228f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMSetUseDMSubdomains(PC, PetscBool); 2238f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMGetUseDMSubdomains(PC, PetscBool *); 224014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetSortIndices(PC, PetscBool); 225f746d493SDmitry Karpeev 226014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetType(PC, PCGASMType); 2278f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains(Mat, PetscInt, PetscInt *, IS *[]); 2282c112581SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMDestroySubdomains(PetscInt, IS *[], IS *[]); 229014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains2D(PC, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS **, IS **); 230014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMGetSubdomains(PC, PetscInt *, IS *[], IS *[]); 231014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMGetSubmatrices(PC, PetscInt *, Mat *[]); 232f746d493SDmitry Karpeev 233014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeSetType(PC, PCCompositeType); 234c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCCompositeGetType(PC, PCCompositeType *); 2358aa07aa6SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCCompositeAddPCType(PC, PCType); 2368aa07aa6SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCCompositeAddPC(PC, PC); 2378e6eba06SBarry Smith PETSC_EXTERN PetscErrorCode PCCompositeGetNumberPC(PC, PetscInt *); 238014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeGetPC(PC, PetscInt, PC *); 239014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeSpecialSetAlpha(PC, PetscScalar); 240981c4779SBarry Smith 241014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantSetNumber(PC, PetscInt); 242014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantSetScatter(PC, VecScatter, VecScatter); 243014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantGetOperators(PC, Mat *, Mat *); 244da3a660dSBarry Smith 245b03515a0SUmberto Zerbinati PETSC_EXTERN PetscErrorCode PCSPAISetEpsilon(PC, PetscReal); 246014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetNBSteps(PC, PetscInt); 247014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetMax(PC, PetscInt); 248014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetMaxNew(PC, PetscInt); 249014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetBlockSize(PC, PetscInt); 250014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetCacheSize(PC, PetscInt); 251014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetVerbose(PC, PetscInt); 252014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetSp(PC, PetscInt); 2533304466cSBarry Smith 254014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCHYPRESetType(PC, const char[]); 255014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCHYPREGetType(PC, const char *[]); 2564cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteGradient(PC, Mat); 257863406b8SStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteCurl(PC, Mat); 2586bf688a0SCe Qin PETSC_EXTERN PetscErrorCode PCHYPRESetInterpolations(PC, PetscInt, Mat, Mat[], Mat, Mat[]); 2594cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetEdgeConstantVectors(PC, Vec, Vec, Vec); 260be14dc20SKerry Key PETSC_EXTERN PetscErrorCode PCHYPREAMSSetInteriorNodes(PC, Vec); 2614cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetAlphaPoissonMatrix(PC, Mat); 2624cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetBetaPoissonMatrix(PC, Mat); 2633304466cSBarry Smith 264014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetFields(PC, const char[], PetscInt, const PetscInt *, const PetscInt *); 265014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetType(PC, PCCompositeType); 266c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCFieldSplitGetType(PC, PCCompositeType *); 267014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetBlockSize(PC, PetscInt); 268014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetIS(PC, const char[], IS); 269014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetIS(PC, const char[], IS *); 270998f007dSPierre Jolivet PETSC_EXTERN PetscErrorCode PCFieldSplitGetISByIndex(PC, PetscInt, IS *); 2716dbb499eSCian Wilson PETSC_EXTERN PetscErrorCode PCFieldSplitRestrictIS(PC, IS); 2724ab8060aSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetDMSplits(PC, PetscBool); 2734ab8060aSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetDMSplits(PC, PetscBool *); 274c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetDiagUseAmat(PC, PetscBool); 275c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetDiagUseAmat(PC, PetscBool *); 276c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetOffDiagUseAmat(PC, PetscBool); 277c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetOffDiagUseAmat(PC, PetscBool *); 278c84da90fSDmitry Karpeev 27925ef9dfeSBarry Smith PETSC_EXTERN PETSC_DEPRECATED_FUNCTION("Use PCFieldSplitSetSchurPre() (since version 3.5)") PetscErrorCode PCFieldSplitSchurPrecondition(PC, PCFieldSplitSchurPreType, Mat); 28029f8a81cSJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurPre(PC, PCFieldSplitSchurPreType, Mat); 28137a82bf0SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurPre(PC, PCFieldSplitSchurPreType *, Mat *); 282014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurFactType(PC, PCFieldSplitSchurFactType); 283c096484dSStefano Zampini PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurScale(PC, PetscScalar); 284014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurBlocks(PC, Mat *, Mat *, Mat *, Mat *); 285470b340bSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSchurGetS(PC, Mat *S); 286470b340bSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSchurRestoreS(PC, Mat *S); 2877b752e3dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCFieldSplitGetDetectSaddlePoint(PC, PetscBool *); 2887b752e3dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCFieldSplitSetDetectSaddlePoint(PC, PetscBool); 289b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBTol(PC, PetscReal); 290b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBNu(PC, PetscReal); 291b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBMaxit(PC, PetscInt); 292b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBDelay(PC, PetscInt); 2933d30b1ffSBarry Smith 294014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGalerkinSetRestriction(PC, Mat); 295014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGalerkinSetInterpolation(PC, Mat); 296b3402f20SBarry Smith PETSC_EXTERN PetscErrorCode PCGalerkinSetComputeSubmatrix(PC, PetscErrorCode (*)(PC, Mat, Mat, Mat *, void *), void *); 2972a6744ebSBarry Smith 298014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCPythonSetType(PC, const char[]); 299ebead697SStefano Zampini PETSC_EXTERN PetscErrorCode PCPythonGetType(PC, const char *[]); 30067fac13cSBarry Smith 301baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetGlobal(PC, PCPARMSGlobalType); 302baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetLocal(PC, PCPARMSLocalType); 303baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetSolveTolerances(PC, PetscReal, PetscInt); 304baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetSolveRestart(PC, PetscInt); 305baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetNonsymPerm(PC, PetscBool); 306baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetFill(PC, PetscInt, PetscInt, PetscInt); 30737f80224SJose E. Roman 308c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetType(PC, PCGAMGType); 309c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGGetType(PC, PCGAMGType *); 310014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetProcEqLim(PC, PetscInt); 31118c3aa7eSMark 312cab9ed1eSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetRepartition(PC, PetscBool); 31318c3aa7eSMark PETSC_EXTERN PetscErrorCode PCGAMGSetUseSAEstEig(PC, PetscBool); 31418c3aa7eSMark PETSC_EXTERN PetscErrorCode PCGAMGSetEigenvalues(PC, PetscReal, PetscReal); 315cab9ed1eSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGASMSetUseAggs(PC, PetscBool); 316171cca9aSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetUseParallelCoarseGridSolve(PC, PetscBool); 317ce7c7f2fSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetCpuPinCoarseGrids(PC, PetscBool); 318ce7c7f2fSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseGridLayoutType(PC, PCGAMGLayoutType); 319c1eae691SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetThreshold(PC, PetscReal[], PetscInt); 320c9567895SMark PETSC_EXTERN PetscErrorCode PCGAMGSetRankReductionFactors(PC, PetscInt[], PetscInt); 321c1eae691SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetThresholdScale(PC, PetscReal); 322014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseEqLim(PC, PetscInt); 323014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetNlevels(PC, PetscInt); 324baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetNSmooths(PC, PetscInt); 325bae903cbSmarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetSymmetrizeGraph(PC, PetscBool); 3269ab59c8bSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetSquareGraph(PC, PetscInt); 327bae903cbSmarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveLevels(PC, PetscInt); 3281cc46a46SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetReuseInterpolation(PC, PetscBool); 3293e3471ccSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGFinalizePackage(void); 3303e3471ccSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGInitializePackage(void); 331a36cf38bSToby Isaac PETSC_EXTERN PetscErrorCode PCGAMGRegister(PCGAMGType, PetscErrorCode (*)(PC)); 33256de70efSSatish Balay 3338eab0cc1SPeter Brune PETSC_EXTERN PetscErrorCode PCGAMGClassicalSetType(PC, PCGAMGClassicalType); 334c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGClassicalGetType(PC, PCGAMGClassicalType *); 3358eab0cc1SPeter Brune 3361e0482f5SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDiscreteGradient(PC, Mat, PetscInt, PetscInt, PetscBool, PetscBool); 3378ae0ca82SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDivergenceMat(PC, Mat, PetscBool, IS); 3381dd7afcfSStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetChangeOfBasisMat(PC, Mat, PetscBool); 33930368db7SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesIS(PC, IS); 340674ae819SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesLocalIS(PC, IS); 3413100ebe3SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesIS(PC, IS *); 3423100ebe3SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesLocalIS(PC, IS *); 3434fad6a16SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetCoarseningRatio(PC, PetscInt); 3442b510759SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetLevels(PC, PetscInt); 345014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundaries(PC, IS); 34682ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundariesLocal(PC, IS); 347014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundaries(PC, IS *); 34882ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundariesLocal(PC, IS *); 349bc960bbfSJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetInterfaceExtType(PC, PCBDDCInterfaceExtType); 350014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundaries(PC, IS); 35182ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundariesLocal(PC, IS); 352014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundaries(PC, IS *); 35382ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundariesLocal(PC, IS *); 354014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplitting(PC, PetscInt, IS[]); 35563602bcaSStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplittingLocal(PC, PetscInt, IS[]); 3561a83f524SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetLocalAdjacencyGraph(PC, PetscInt, const PetscInt[], const PetscInt[], PetscCopyMode); 357547c9a8eSstefano_zampini PETSC_EXTERN PetscErrorCode PCBDDCCreateFETIDPOperators(PC, PetscBool, const char *, Mat *, PC *); 3583425bc38SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetRHS(Mat, Vec, Vec); 3593425bc38SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetSolution(Mat, Vec, Vec); 36043371fb9SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCFinalizePackage(void); 36143371fb9SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCInitializePackage(void); 3620c7d97c5SJed Brown 363b965d45eSStefano Zampini PETSC_EXTERN PetscErrorCode PCISSetUseStiffnessScaling(PC, PetscBool); 364014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCISSetSubdomainScalingFactor(PC, PetscScalar); 36546caae47SJed Brown PETSC_EXTERN PetscErrorCode PCISSetSubdomainDiagonalScaling(PC, Vec); 366d3b1e0e7SMatthew Knepley 367ab83eea4SMatthew G. Knepley PETSC_EXTERN PetscInt PetscMGLevelId; 368b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetType(PC, PCMGType); 369c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetType(PC, PCMGType *); 370b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetLevels(PC, PetscInt, MPI_Comm *); 371b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetLevels(PC, PetscInt *); 372b4876bcbSBarry Smith 373f442ab6aSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetDistinctSmoothUp(PC); 37406792cafSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetNumberSmooth(PC, PetscInt); 375b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetCycleType(PC, PCMGCycleType); 376b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetCycleTypeOnLevel(PC, PetscInt, PCMGCycleType); 377*9371c9d4SSatish Balay PETSC_DEPRECATED_FUNCTION("Use PCMGSetCycleTypeOnLevel() (since version 3.5)") static inline PetscErrorCode PCMGSetCyclesOnLevel(PC pc, PetscInt l, PetscInt t) { 378*9371c9d4SSatish Balay return PCMGSetCycleTypeOnLevel(pc, l, (PCMGCycleType)t); 379*9371c9d4SSatish Balay } 380b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGMultiplicativeSetCycles(PC, PetscInt); 3812134b1e4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetGalerkin(PC, PCMGGalerkinType); 3822134b1e4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetGalerkin(PC, PCMGGalerkinType *); 3832b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGSetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType); 3842b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGGetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType *); 38541b6fd38SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCMGSetAdaptCR(PC, PetscBool); 38641b6fd38SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCMGGetAdaptCR(PC, PetscBool *); 3872b3cbbdaSStefano Zampini /* MATT: Remove? */ 3882b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGSetAdaptInterpolation(PC, PetscBool); 3892b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGGetAdaptInterpolation(PC, PetscBool *); 390b4876bcbSBarry Smith 391b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRhs(PC, PetscInt, Vec); 392b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetX(PC, PetscInt, Vec); 393b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetR(PC, PetscInt, Vec); 394b4876bcbSBarry Smith 395b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRestriction(PC, PetscInt, Mat); 396b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetRestriction(PC, PetscInt, Mat *); 397eab52d2bSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCMGSetInjection(PC, PetscInt, Mat); 398eab52d2bSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCMGGetInjection(PC, PetscInt, Mat *); 399b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetInterpolation(PC, PetscInt, Mat); 4008a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCMGSetOperators(PC, PetscInt, Mat, Mat); 401b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetInterpolation(PC, PetscInt, Mat *); 402b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRScale(PC, PetscInt, Vec); 403b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetRScale(PC, PetscInt, Vec *); 404b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetResidual(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat); 405fcb023d4SJed Brown PETSC_EXTERN PetscErrorCode PCMGSetResidualTranspose(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat); 40654b2cd4bSJed Brown PETSC_EXTERN PetscErrorCode PCMGResidualDefault(Mat, Vec, Vec, Vec); 407fcb023d4SJed Brown PETSC_EXTERN PetscErrorCode PCMGResidualTransposeDefault(Mat, Vec, Vec, Vec); 40830b0564aSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGMatResidualDefault(Mat, Mat, Mat, Mat); 40930b0564aSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGMatResidualTransposeDefault(Mat, Mat, Mat, Mat); 410db6f9c32SMark Adams PETSC_EXTERN PetscErrorCode PCMGGalerkinSetMatProductAlgorithm(PC, const char[]); 411db6f9c32SMark Adams PETSC_EXTERN PetscErrorCode PCMGGalerkinGetMatProductAlgorithm(PC, const char *[]); 412e7d4b4cbSMark Adams PETSC_EXTERN PetscErrorCode PCMGGetGridComplexity(PC, PetscReal *, PetscReal *); 413e75ffff3SFande Kong 4148a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetReuseInterpolation(PC, PetscBool); 4158a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetUseSubspaceCoarsening(PC, PetscBool); 4168a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetInnerPCType(PC, PCType); 4174fea3358SFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetCoarseningComponent(PC, PetscInt); 4184fea3358SFande Kong PETSC_EXTERN PetscErrorCode PCHMGUseMatMAIJ(PC, PetscBool); 4198a2c336bSFande Kong 42048a10b22SPatrick Sanan PETSC_EXTERN PetscErrorCode PCTelescopeGetSubcommType(PC, PetscSubcommType *); 42148a10b22SPatrick Sanan PETSC_EXTERN PetscErrorCode PCTelescopeSetSubcommType(PC, PetscSubcommType); 42268ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetReductionFactor(PC, PetscInt *); 42368ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeSetReductionFactor(PC, PetscInt); 42468ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreDM(PC, PetscBool *); 425bfd6bcc6SSatish Balay PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreDM(PC, PetscBool); 42634fb549aSDave May PETSC_EXTERN PetscErrorCode PCTelescopeGetUseCoarseDM(PC, PetscBool *); 42734fb549aSDave May PETSC_EXTERN PetscErrorCode PCTelescopeSetUseCoarseDM(PC, PetscBool); 4280ae7c45bSDave May PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreKSPComputeOperators(PC, PetscBool *); 4290ae7c45bSDave May PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreKSPComputeOperators(PC, PetscBool); 43068ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetDM(PC, DM *); 4316ab51f8fSDave May 4324bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetSaveOperators(PC, PetscBool); 4334bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetSaveOperators(PC, PetscBool *); 434fa84ea4cSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetPrecomputeElementTensors(PC, PetscBool); 435fa84ea4cSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchGetPrecomputeElementTensors(PC, PetscBool *); 4364bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetPartitionOfUnity(PC, PetscBool); 4374bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetPartitionOfUnity(PC, PetscBool *); 4384bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetSubMatType(PC, MatType); 4394bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetSubMatType(PC, MatType *); 4404bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetCellNumbering(PC, PetscSection); 4414bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetCellNumbering(PC, PetscSection *); 4424bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetConstructType(PC, PCPatchConstructType, PetscErrorCode (*)(PC, PetscInt *, IS **, IS *, void *), void *); 4434bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetConstructType(PC, PCPatchConstructType *, PetscErrorCode (**)(PC, PetscInt *, IS **, IS *, void *), void **); 4444bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetDiscretisationInfo(PC, PetscInt, DM *, PetscInt *, PetscInt *, const PetscInt **, const PetscInt *, PetscInt, const PetscInt *, PetscInt, const PetscInt *); 4454d04e9f1SPatrick Farrell PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperator(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *); 44639fd2e8aSPatrick Farrell PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunction(PC pc, PetscErrorCode (*func)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *ctx); 44759109abcSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperatorInteriorFacets(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *); 44859109abcSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunctionInteriorFacets(PC pc, PetscErrorCode (*func)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *ctx); 4494bbf5ea8SMatthew G. Knepley 450b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMSetMatLMVM(PC, Mat); 451b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMGetMatLMVM(PC, Mat *); 452b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMSetIS(PC, IS); 453b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMClearIS(PC); 454b9ac7092SAlp Dener 4557ede41a2SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCExoticSetType(PC, PCExoticType); 4567ede41a2SMatthew G. Knepley 457a122ebaeSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetInitOnly(PC, PetscBool); 45893b79a5aSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetLevels(PC, PetscInt); 459859a873cSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetReductionFactor(PC, PetscInt); 4608a71cb68SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetCorrectionFactor(PC, PetscScalar); 46139417d7eSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetSpaceToCompute(PC, PCDeflationSpaceType, PetscInt); 462e662bc50SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetSpace(PC, Mat, PetscBool); 46398d6e3deSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetProjectionNullSpaceMat(PC, Mat); 46498d6e3deSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetCoarseMat(PC, Mat); 465268c6673SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationGetPC(PC, PC *); 46698d6e3deSJakub Kruzik 46738cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetAuxiliaryMat(PC, IS, Mat, PetscErrorCode (*)(Mat, PetscReal, Vec, Vec, PetscReal, IS, void *), void *); 468244dff2eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetRHSMat(PC, Mat); 469c5910190SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMHasNeumannMat(PC, PetscBool); 47038cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType); 47138cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMGetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType *); 472dfad241bSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMGetSTShareSubKSP(PC, PetscBool *); 4732e65eb73SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetDeflationMat(PC, IS, Mat); 47405b34211SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMFinalizePackage(void); 47505b34211SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMInitializePackage(void); 47638cfc46eSPierre Jolivet 477e6f8f311SMark Adams PETSC_EXTERN PetscErrorCode PCAmgXGetResources(PC, void *); 478e6f8f311SMark Adams 47926bd1501SBarry Smith #endif /* PETSCPC_H */ 480