1d03aef70SBarry Smith /* 237f753daSBarry Smith Preconditioner module. 3d03aef70SBarry Smith */ 4a4963045SJacob Faibussowitsch #pragma once 5ac09b921SBarry Smith 61e25c274SJed Brown #include <petscmat.h> 777a3c058SKarl Rupp #include <petscdmtypes.h> 8b0753f9dSMatthew G. Knepley #include <petscpctypes.h> 9d03aef70SBarry Smith 10ce78bad3SBarry Smith /* MANSEC = KSP */ 11ac09b921SBarry Smith /* SUBMANSEC = PC */ 12ac09b921SBarry Smith 13607a6623SBarry Smith PETSC_EXTERN PetscErrorCode PCInitializePackage(void); 144bf303faSJacob Faibussowitsch PETSC_EXTERN PetscErrorCode PCFinalizePackage(void); 151dbb0a54SBarry Smith 16eec0b4cfSBarry Smith /* 17eec0b4cfSBarry Smith PCList contains the list of preconditioners currently registered 18bdf89e91SBarry Smith These are added with PCRegister() 19eec0b4cfSBarry Smith */ 20140e18c1SBarry Smith PETSC_EXTERN PetscFunctionList PCList; 2182bf6240SBarry Smith 22123ea438SMatthew Knepley /* Logging support */ 23014dd563SJed Brown PETSC_EXTERN PetscClassId PC_CLASSID; 24123ea438SMatthew Knepley 259d8081ecSMatthew G. Knepley /* Arrays of names for options in implementation PCs */ 269d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const *const PCSides; 279d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCJacobiTypes[]; 289d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCASMTypes[]; 299d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCGASMTypes[]; 309d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCCompositeTypes[]; 319d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCFieldSplitSchurPreTypes[]; 329d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCFieldSplitSchurFactTypes[]; 339d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCPARMSGlobalTypes[]; 349d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCPARMSLocalTypes[]; 359d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCMGTypes[]; 369d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCMGCycleTypes[]; 379d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCMGGalerkinTypes[]; 38557cf195SMatthew G. Knepley PETSC_EXTERN const char *const PCMGCoarseSpaceTypes[]; 399d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCExoticTypes[]; 409d8081ecSMatthew G. Knepley PETSC_EXTERN const char *const PCPatchConstructTypes[]; 4137eeb815SJakub Kruzik PETSC_EXTERN const char *const PCDeflationTypes[]; 421b2b9847SBarry Smith PETSC_EXTERN const char *const *const PCFailedReasons; 439d8081ecSMatthew G. Knepley 44014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCreate(MPI_Comm, PC *); 4519fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode PCSetType(PC, PCType); 46c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGetType(PC, PCType *); 47014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetUp(PC); 481b2b9847SBarry Smith 493821be0aSBarry Smith PETSC_EXTERN PetscErrorCode PCSetKSPNestLevel(PC, PetscInt); 503821be0aSBarry Smith PETSC_EXTERN PetscErrorCode PCGetKSPNestLevel(PC, PetscInt *); 513821be0aSBarry Smith 521b2b9847SBarry Smith PETSC_EXTERN PetscErrorCode PCSetFailedReason(PC, PCFailedReason); 53c0decd05SBarry Smith PETSC_EXTERN PetscErrorCode PCGetFailedReason(PC, PCFailedReason *); 54edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 11, 0, "PCGetFailedReason()", ) static inline PetscErrorCode PCGetSetUpFailedReason(PC pc, PCFailedReason *reason) 55d71ae5a4SJacob Faibussowitsch { 569371c9d4SSatish Balay return PCGetFailedReason(pc, reason); 579371c9d4SSatish Balay } 586479e835SStefano Zampini PETSC_EXTERN PetscErrorCode PCReduceFailedReason(PC); 591b2b9847SBarry Smith 60014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetUpOnBlocks(PC); 61014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApply(PC, Vec, Vec); 62c677e75fSPierre Jolivet PETSC_EXTERN PetscErrorCode PCMatApply(PC, Mat, Mat); 63014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplySymmetricLeft(PC, Vec, Vec); 64014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplySymmetricRight(PC, Vec, Vec); 65014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyBAorAB(PC, PCSide, Vec, Vec, Vec); 66014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyTranspose(PC, Vec, Vec); 674dbf25a8SPierre Jolivet PETSC_EXTERN PetscErrorCode PCMatApplyTranspose(PC, Mat, Mat); 68014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyTransposeExists(PC, PetscBool *); 69014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyBAorABTranspose(PC, PCSide, Vec, Vec, Vec); 7023ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCSetReusePreconditioner(PC, PetscBool); 71c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGetReusePreconditioner(PC, PetscBool *); 72422a814eSBarry Smith PETSC_EXTERN PetscErrorCode PCSetErrorIfFailure(PC, PetscBool); 734d0a8057SBarry Smith 7455849f57SBarry Smith #define PC_FILE_CLASSID 1211222 7555849f57SBarry Smith 76014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyRichardson(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *); 77014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCApplyRichardsonExists(PC, PetscBool *); 7849517cdeSBarry Smith PETSC_EXTERN PetscErrorCode PCSetUseAmat(PC, PetscBool); 7949517cdeSBarry Smith PETSC_EXTERN PetscErrorCode PCGetUseAmat(PC, PetscBool *); 8084cb2905SBarry Smith 81bdf89e91SBarry Smith PETSC_EXTERN PetscErrorCode PCRegister(const char[], PetscErrorCode (*)(PC)); 8230de9b25SBarry Smith 83014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCReset(PC); 84014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDestroy(PC *); 85014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetFromOptions(PC); 8614c91fddSBarry Smith 87014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorGetMatrix(PC, Mat *); 88*4d4d2bdcSBarry Smith 89*4d4d2bdcSBarry Smith /*S 90*4d4d2bdcSBarry Smith PCModifySubMatricesFn - A prototype of a function used to modify submatrices generated with `PCASM`, `PCBJACOBI`, etc. 91*4d4d2bdcSBarry Smith 92*4d4d2bdcSBarry Smith Calling Sequence: 93*4d4d2bdcSBarry Smith + pc - the `PC` preconditioner context 94*4d4d2bdcSBarry Smith . nsub - number of index sets 95*4d4d2bdcSBarry Smith . row - an array of index sets that contain the global row numbers 96*4d4d2bdcSBarry Smith that comprise each local submatrix 97*4d4d2bdcSBarry Smith . col - an array of index sets that contain the global column numbers 98*4d4d2bdcSBarry Smith that comprise each local submatrix 99*4d4d2bdcSBarry Smith . submat - array of local submatrices 100*4d4d2bdcSBarry Smith - ctx - optional user-defined context for private data for the user-defined func routine (may be `NULL`), provided with `PCSetModifySubMatrices()` 101*4d4d2bdcSBarry Smith 102*4d4d2bdcSBarry Smith Level: beginner 103*4d4d2bdcSBarry Smith 104*4d4d2bdcSBarry Smith .seealso: [](ch_ksp), `PC`, `PCSetModifySubMatrices()`, `PCModifySubMatrices()`, `PCASM`, `PCBJACOBI` 105*4d4d2bdcSBarry Smith S*/ 106*4d4d2bdcSBarry Smith PETSC_EXTERN_TYPEDEF typedef PetscErrorCode PCModifySubMatricesFn(PC pc, PetscInt nsub, const IS row[], const IS col[], Mat submat[], void *ctx); 107*4d4d2bdcSBarry Smith 108*4d4d2bdcSBarry Smith PETSC_EXTERN PetscErrorCode PCSetModifySubMatrices(PC, PCModifySubMatricesFn *, void *); 109*4d4d2bdcSBarry Smith PETSC_EXTERN PCModifySubMatricesFn PCModifySubMatrices; 1105b116368SBarry Smith 11123ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCSetOperators(PC, Mat, Mat); 11223ee1639SBarry Smith PETSC_EXTERN PetscErrorCode PCGetOperators(PC, Mat *, Mat *); 113014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetOperatorsSet(PC, PetscBool *, PetscBool *); 1144b0e389bSBarry Smith 115014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCView(PC, PetscViewer); 11655849f57SBarry Smith PETSC_EXTERN PetscErrorCode PCLoad(PC, PetscViewer); 117fe2efc57SMark PETSC_EXTERN PetscErrorCode PCViewFromOptions(PC, PetscObject, const char[]); 1187bc3d0afSSatish Balay 119014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetOptionsPrefix(PC, const char[]); 120014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCAppendOptionsPrefix(PC, const char[]); 121014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetOptionsPrefix(PC, const char *[]); 1228ed539a5SBarry Smith 1230bacdadaSStefano Zampini PETSC_EXTERN PetscErrorCode PCComputeOperator(PC, MatType, Mat *); 124edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 12, 0, "PCComputeOperator()", ) static inline PetscErrorCode PCComputeExplicitOperator(PC A, Mat *B) 125d71ae5a4SJacob Faibussowitsch { 126f22e26b7SPierre Jolivet return PCComputeOperator(A, PETSC_NULLPTR, B); 1279371c9d4SSatish Balay } 12871601f6fSBarry Smith 129d6913704SBarry Smith /* 130d6913704SBarry Smith These are used to provide extra scaling of preconditioned 1310f3b3ca1SHong Zhang operator for time-stepping schemes like in SUNDIALS 132d6913704SBarry Smith */ 133014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGetDiagonalScale(PC, PetscBool *); 134014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDiagonalScaleLeft(PC, Vec, Vec); 135014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCDiagonalScaleRight(PC, Vec, Vec); 136014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSetDiagonalScale(PC, Vec); 137d6913704SBarry Smith 138f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCSetDM(PC, DM); 139f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCGetDM(PC, DM *); 140f02e8f50SMatthew G. Knepley 141fd2dd295SFande Kong PETSC_EXTERN PetscErrorCode PCGetInterpolations(PC, PetscInt *, Mat *[]); 142ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCGetCoarseOperators(PC, PetscInt *, Mat *[]); 143fd2dd295SFande Kong 14422794d57SStefano Zampini PETSC_EXTERN PetscErrorCode PCSetCoordinates(PC, PetscInt, PetscInt, PetscReal[]); 145f02e8f50SMatthew G. Knepley 146f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCSetApplicationContext(PC, void *); 147f02e8f50SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCGetApplicationContext(PC, void *); 148f02e8f50SMatthew G. Knepley 14984cb2905SBarry Smith /* ------------- options specific to particular preconditioners --------- */ 150329f5518SBarry Smith 151baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiSetType(PC, PCJacobiType); 152baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetType(PC, PCJacobiType *); 153baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiSetUseAbs(PC, PetscBool); 154baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetUseAbs(PC, PetscBool *); 15567ed0f3bSStefano Zampini PETSC_EXTERN PetscErrorCode PCJacobiSetFixDiagonal(PC, PetscBool); 15667ed0f3bSStefano Zampini PETSC_EXTERN PetscErrorCode PCJacobiGetFixDiagonal(PC, PetscBool *); 157ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCJacobiGetDiagonal(PC, Vec, Vec); 158eede4a3fSMark Adams PETSC_EXTERN PetscErrorCode PCJacobiSetRowl1Scale(PC, PetscReal); 159eede4a3fSMark Adams PETSC_EXTERN PetscErrorCode PCJacobiGetRowl1Scale(PC, PetscReal *); 160014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetSymmetric(PC, MatSORType); 161c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetSymmetric(PC, MatSORType *); 162014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetOmega(PC, PetscReal); 163c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetOmega(PC, PetscReal *); 164014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSORSetIterations(PC, PetscInt, PetscInt); 165c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCSORGetIterations(PC, PetscInt *, PetscInt *); 166d03aef70SBarry Smith 167014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCEisenstatSetOmega(PC, PetscReal); 168c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatGetOmega(PC, PetscReal *); 169c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatSetNoDiagonalScaling(PC, PetscBool); 170c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCEisenstatGetNoDiagonalScaling(PC, PetscBool *); 171421c37bdSBarry Smith 172014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBJacobiSetTotalBlocks(PC, PetscInt, const PetscInt[]); 173c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCBJacobiGetTotalBlocks(PC, PetscInt *, const PetscInt *[]); 174014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBJacobiSetLocalBlocks(PC, PetscInt, const PetscInt[]); 175c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCBJacobiGetLocalBlocks(PC, PetscInt *, const PetscInt *[]); 1761eb62cbbSBarry Smith 177014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApply(PC, PetscErrorCode (*)(PC, Vec, Vec)); 1787b6e2003SPierre Jolivet PETSC_EXTERN PetscErrorCode PCShellSetMatApply(PC, PetscErrorCode (*)(PC, Mat, Mat)); 1791b581b66SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricLeft(PC, PetscErrorCode (*)(PC, Vec, Vec)); 1801b581b66SBarry Smith PETSC_EXTERN PetscErrorCode PCShellSetApplySymmetricRight(PC, PetscErrorCode (*)(PC, Vec, Vec)); 181014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyBA(PC, PetscErrorCode (*)(PC, PCSide, Vec, Vec, Vec)); 182014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyTranspose(PC, PetscErrorCode (*)(PC, Vec, Vec)); 183014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetSetUp(PC, PetscErrorCode (*)(PC)); 184014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetApplyRichardson(PC, PetscErrorCode (*)(PC, Vec, Vec, Vec, PetscReal, PetscReal, PetscReal, PetscInt, PetscBool, PetscInt *, PCRichardsonConvergedReason *)); 185014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetView(PC, PetscErrorCode (*)(PC, PetscViewer)); 186014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetDestroy(PC, PetscErrorCode (*)(PC)); 187014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetContext(PC, void *); 1883ec1f749SStefano Zampini PETSC_EXTERN PetscErrorCode PCShellGetContext(PC, void *); 189014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellSetName(PC, const char[]); 190014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCShellGetName(PC, const char *[]); 191aabeff55SBarry Smith 192014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetZeroPivot(PC, PetscReal); 193d90ac83dSHong Zhang 194014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetShiftType(PC, MatFactorShiftType); 195014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetShiftAmount(PC, PetscReal); 196d90ac83dSHong Zhang 197ea799195SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetMatSolverType(PC, MatSolverType); 198ea799195SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetMatSolverType(PC, MatSolverType *); 1993ca39a21SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetUpMatSolverType(PC); 200edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorSetMatSolverType()", ) static inline PetscErrorCode PCFactorSetMatSolverPackage(PC pc, MatSolverType stype) 201d71ae5a4SJacob Faibussowitsch { 2029371c9d4SSatish Balay return PCFactorSetMatSolverType(pc, stype); 2039371c9d4SSatish Balay } 204edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorGetMatSolverType()", ) static inline PetscErrorCode PCFactorGetMatSolverPackage(PC pc, MatSolverType *stype) 205d71ae5a4SJacob Faibussowitsch { 2069371c9d4SSatish Balay return PCFactorGetMatSolverType(pc, stype); 2079371c9d4SSatish Balay } 208edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 9, 0, "PCFactorSetUpMatSolverType()", ) static inline PetscErrorCode PCFactorSetUpMatSolverPackage(PC pc) 209d71ae5a4SJacob Faibussowitsch { 2109371c9d4SSatish Balay return PCFactorSetUpMatSolverType(pc); 2119371c9d4SSatish Balay } 2122401956bSBarry Smith 213014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetFill(PC, PetscReal); 214014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetColumnPivot(PC, PetscReal); 215014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorReorderForNonzeroDiagonal(PC, PetscReal); 216421c37bdSBarry Smith 21719fd82e9SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetMatOrderingType(PC, MatOrderingType); 218014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetReuseOrdering(PC, PetscBool); 219014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetReuseFill(PC, PetscBool); 2208e37d05fSBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetUseInPlace(PC, PetscBool); 2218e37d05fSBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetUseInPlace(PC, PetscBool *); 22292e9c092SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorSetAllowDiagonalFill(PC, PetscBool); 22392e9c092SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetAllowDiagonalFill(PC, PetscBool *); 224014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetPivotInBlocks(PC, PetscBool); 225f5a88c2aSLois Curfman McInnes 226014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetLevels(PC, PetscInt); 227c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetLevels(PC, PetscInt *); 228014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFactorSetDropTolerance(PC, PetscReal, PetscReal, PetscInt); 229c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetZeroPivot(PC, PetscReal *); 230c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetShiftAmount(PC, PetscReal *); 231c7f610a1SBarry Smith PETSC_EXTERN PetscErrorCode PCFactorGetShiftType(PC, MatFactorShiftType *); 232b35a507dSBarry Smith 233014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetLocalSubdomains(PC, PetscInt, IS[], IS[]); 234014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetTotalSubdomains(PC, PetscInt, IS[], IS[]); 235014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetOverlap(PC, PetscInt); 236d709ea83SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCASMSetDMSubdomains(PC, PetscBool); 237d709ea83SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCASMGetDMSubdomains(PC, PetscBool *); 238014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetSortIndices(PC, PetscBool); 239f746d493SDmitry Karpeev 240014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMSetType(PC, PCASMType); 241c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCASMGetType(PC, PCASMType *); 24212cd4985SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCASMSetLocalType(PC, PCCompositeType); 24312cd4985SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCASMGetLocalType(PC, PCCompositeType *); 244014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains(Mat, PetscInt, IS *[]); 245ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCASMDestroySubdomains(PetscInt, IS *[], IS *[]); 246ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCASMCreateSubdomains2D(PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS *[], IS *[]); 247014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMGetLocalSubdomains(PC, PetscInt *, IS *[], IS *[]); 248014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCASMGetLocalSubmatrices(PC, PetscInt *, Mat *[]); 24980ec0b7dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCASMGetSubMatType(PC, MatType *); 25080ec0b7dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCASMSetSubMatType(PC, MatType); 251981c4779SBarry Smith 2528f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMSetTotalSubdomains(PC, PetscInt); 253014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetSubdomains(PC, PetscInt, IS[], IS[]); 254014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetOverlap(PC, PetscInt); 2558f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMSetUseDMSubdomains(PC, PetscBool); 2568f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMGetUseDMSubdomains(PC, PetscBool *); 257014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetSortIndices(PC, PetscBool); 258f746d493SDmitry Karpeev 259014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMSetType(PC, PCGASMType); 2608f3b4b4dSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains(Mat, PetscInt, PetscInt *, IS *[]); 2612c112581SDmitry Karpeev PETSC_EXTERN PetscErrorCode PCGASMDestroySubdomains(PetscInt, IS *[], IS *[]); 262ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCGASMCreateSubdomains2D(PC, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt, PetscInt *, IS *[], IS *[]); 263014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMGetSubdomains(PC, PetscInt *, IS *[], IS *[]); 264014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGASMGetSubmatrices(PC, PetscInt *, Mat *[]); 265f746d493SDmitry Karpeev 266014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeSetType(PC, PCCompositeType); 267c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCCompositeGetType(PC, PCCompositeType *); 2688aa07aa6SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCCompositeAddPCType(PC, PCType); 2698aa07aa6SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCCompositeAddPC(PC, PC); 2708e6eba06SBarry Smith PETSC_EXTERN PetscErrorCode PCCompositeGetNumberPC(PC, PetscInt *); 271014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeGetPC(PC, PetscInt, PC *); 272014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCCompositeSpecialSetAlpha(PC, PetscScalar); 27378a3110eSAlexander PETSC_EXTERN PetscErrorCode PCCompositeSpecialSetAlphaMat(PC, Mat); 274981c4779SBarry Smith 275014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantSetNumber(PC, PetscInt); 276014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantSetScatter(PC, VecScatter, VecScatter); 277014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCRedundantGetOperators(PC, Mat *, Mat *); 278da3a660dSBarry Smith 279b03515a0SUmberto Zerbinati PETSC_EXTERN PetscErrorCode PCSPAISetEpsilon(PC, PetscReal); 280014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetNBSteps(PC, PetscInt); 281014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetMax(PC, PetscInt); 282014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetMaxNew(PC, PetscInt); 283014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetBlockSize(PC, PetscInt); 284014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetCacheSize(PC, PetscInt); 285014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetVerbose(PC, PetscInt); 286014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCSPAISetSp(PC, PetscInt); 2873304466cSBarry Smith 288014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCHYPRESetType(PC, const char[]); 289014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCHYPREGetType(PC, const char *[]); 2904cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteGradient(PC, Mat); 291863406b8SStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetDiscreteCurl(PC, Mat); 2926bf688a0SCe Qin PETSC_EXTERN PetscErrorCode PCHYPRESetInterpolations(PC, PetscInt, Mat, Mat[], Mat, Mat[]); 2934cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetEdgeConstantVectors(PC, Vec, Vec, Vec); 294be14dc20SKerry Key PETSC_EXTERN PetscErrorCode PCHYPREAMSSetInteriorNodes(PC, Vec); 2954cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetAlphaPoissonMatrix(PC, Mat); 2964cb006feSStefano Zampini PETSC_EXTERN PetscErrorCode PCHYPRESetBetaPoissonMatrix(PC, Mat); 29742e5ec60SJeff-Hadley PETSC_EXTERN PetscErrorCode PCHYPREGetCFMarkers(PC pc, PetscInt *[], PetscBT *[]); 2983304466cSBarry Smith 299014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetFields(PC, const char[], PetscInt, const PetscInt *, const PetscInt *); 300014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetType(PC, PCCompositeType); 301c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCFieldSplitGetType(PC, PCCompositeType *); 302014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetBlockSize(PC, PetscInt); 303014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetIS(PC, const char[], IS); 304014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetIS(PC, const char[], IS *); 305998f007dSPierre Jolivet PETSC_EXTERN PetscErrorCode PCFieldSplitGetISByIndex(PC, PetscInt, IS *); 3066dbb499eSCian Wilson PETSC_EXTERN PetscErrorCode PCFieldSplitRestrictIS(PC, IS); 3074ab8060aSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetDMSplits(PC, PetscBool); 3084ab8060aSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetDMSplits(PC, PetscBool *); 309c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetDiagUseAmat(PC, PetscBool); 310c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetDiagUseAmat(PC, PetscBool *); 311c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitSetOffDiagUseAmat(PC, PetscBool); 312c84da90fSDmitry Karpeev PETSC_EXTERN PetscErrorCode PCFieldSplitGetOffDiagUseAmat(PC, PetscBool *); 313c84da90fSDmitry Karpeev 314edd03b47SJacob Faibussowitsch PETSC_EXTERN PETSC_DEPRECATED_FUNCTION(3, 5, 0, "PCFieldSplitSetSchurPre()", ) PetscErrorCode PCFieldSplitSchurPrecondition(PC, PCFieldSplitSchurPreType, Mat); 31529f8a81cSJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurPre(PC, PCFieldSplitSchurPreType, Mat); 31637a82bf0SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurPre(PC, PCFieldSplitSchurPreType *, Mat *); 317014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurFactType(PC, PCFieldSplitSchurFactType); 318c096484dSStefano Zampini PETSC_EXTERN PetscErrorCode PCFieldSplitSetSchurScale(PC, PetscScalar); 319014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCFieldSplitGetSchurBlocks(PC, Mat *, Mat *, Mat *, Mat *); 320ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCFieldSplitSchurGetS(PC, Mat *); 321ce78bad3SBarry Smith PETSC_EXTERN PetscErrorCode PCFieldSplitSchurRestoreS(PC, Mat *); 3227b752e3dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCFieldSplitGetDetectSaddlePoint(PC, PetscBool *); 3237b752e3dSPatrick Sanan PETSC_EXTERN PetscErrorCode PCFieldSplitSetDetectSaddlePoint(PC, PetscBool); 324b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBTol(PC, PetscReal); 325b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBNu(PC, PetscReal); 326b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBMaxit(PC, PetscInt); 327b09e027eSCarola Kruse PETSC_EXTERN PetscErrorCode PCFieldSplitSetGKBDelay(PC, PetscInt); 3283d30b1ffSBarry Smith 329014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGalerkinSetRestriction(PC, Mat); 330014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGalerkinSetInterpolation(PC, Mat); 331b3402f20SBarry Smith PETSC_EXTERN PetscErrorCode PCGalerkinSetComputeSubmatrix(PC, PetscErrorCode (*)(PC, Mat, Mat, Mat *, void *), void *); 3322a6744ebSBarry Smith 333014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCPythonSetType(PC, const char[]); 334ebead697SStefano Zampini PETSC_EXTERN PetscErrorCode PCPythonGetType(PC, const char *[]); 33567fac13cSBarry Smith 336baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetGlobal(PC, PCPARMSGlobalType); 337baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetLocal(PC, PCPARMSLocalType); 338baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetSolveTolerances(PC, PetscReal, PetscInt); 339baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetSolveRestart(PC, PetscInt); 340baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetNonsymPerm(PC, PetscBool); 341baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCPARMSSetFill(PC, PetscInt, PetscInt, PetscInt); 34237f80224SJose E. Roman 343c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetType(PC, PCGAMGType); 344c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGGetType(PC, PCGAMGType *); 345014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetProcEqLim(PC, PetscInt); 34618c3aa7eSMark 347cab9ed1eSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetRepartition(PC, PetscBool); 34818c3aa7eSMark PETSC_EXTERN PetscErrorCode PCGAMGSetUseSAEstEig(PC, PetscBool); 349e1cf1444SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetRecomputeEstEig(PC, PetscBool); 35018c3aa7eSMark PETSC_EXTERN PetscErrorCode PCGAMGSetEigenvalues(PC, PetscReal, PetscReal); 351cab9ed1eSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGASMSetUseAggs(PC, PetscBool); 352d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetParallelCoarseGridSolve(PC, PetscBool); 353ce7c7f2fSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetCpuPinCoarseGrids(PC, PetscBool); 354ce7c7f2fSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseGridLayoutType(PC, PCGAMGLayoutType); 355c1eae691SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetThreshold(PC, PetscReal[], PetscInt); 356c9567895SMark PETSC_EXTERN PetscErrorCode PCGAMGSetRankReductionFactors(PC, PetscInt[], PetscInt); 357c1eae691SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetThresholdScale(PC, PetscReal); 358014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetCoarseEqLim(PC, PetscInt); 359014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCGAMGSetNlevels(PC, PetscInt); 360baa89ecbSBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetNSmooths(PC, PetscInt); 361bae903cbSmarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveLevels(PC, PetscInt); 3621cc46a46SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGSetReuseInterpolation(PC, PetscBool); 3633e3471ccSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGFinalizePackage(void); 3643e3471ccSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGInitializePackage(void); 365a36cf38bSToby Isaac PETSC_EXTERN PetscErrorCode PCGAMGRegister(PCGAMGType, PetscErrorCode (*)(PC)); 3662d776b49SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGCreateGraph(PC, Mat, Mat *); 367d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGSetAggressiveSquareGraph(PC, PetscBool); 368d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGMISkSetMinDegreeOrdering(PC, PetscBool); 369d529f056Smarkadams4 PETSC_EXTERN PetscErrorCode PCGAMGMISkSetAggressive(PC, PetscInt); 3708926f930SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGASMSetHEM(PC, PetscInt); 371a9ccf005SMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetLowMemoryFilter(PC, PetscBool); 3726c34c54dSStefano Zampini PETSC_EXTERN PetscErrorCode PCGAMGSetGraphSymmetrize(PC, PetscBool); 373b65aec2dSMark Adams PETSC_EXTERN PetscErrorCode PCGAMGSetInjectionIndex(PC, PetscInt, PetscInt[]); 37456de70efSSatish Balay 3758eab0cc1SPeter Brune PETSC_EXTERN PetscErrorCode PCGAMGClassicalSetType(PC, PCGAMGClassicalType); 376c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCGAMGClassicalGetType(PC, PCGAMGClassicalType *); 3778eab0cc1SPeter Brune 3781e0482f5SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDiscreteGradient(PC, Mat, PetscInt, PetscInt, PetscBool, PetscBool); 3798ae0ca82SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDivergenceMat(PC, Mat, PetscBool, IS); 3801dd7afcfSStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetChangeOfBasisMat(PC, Mat, PetscBool); 38130368db7SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesIS(PC, IS); 382674ae819SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetPrimalVerticesLocalIS(PC, IS); 3833100ebe3SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesIS(PC, IS *); 3843100ebe3SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetPrimalVerticesLocalIS(PC, IS *); 3854fad6a16SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetCoarseningRatio(PC, PetscInt); 3862b510759SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetLevels(PC, PetscInt); 387014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundaries(PC, IS); 38882ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDirichletBoundariesLocal(PC, IS); 389014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundaries(PC, IS *); 39082ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetDirichletBoundariesLocal(PC, IS *); 391bc960bbfSJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetInterfaceExtType(PC, PCBDDCInterfaceExtType); 392014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundaries(PC, IS); 39382ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetNeumannBoundariesLocal(PC, IS); 394014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundaries(PC, IS *); 39582ba6b80SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCGetNeumannBoundariesLocal(PC, IS *); 396014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplitting(PC, PetscInt, IS[]); 39763602bcaSStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCSetDofsSplittingLocal(PC, PetscInt, IS[]); 3981a83f524SJed Brown PETSC_EXTERN PetscErrorCode PCBDDCSetLocalAdjacencyGraph(PC, PetscInt, const PetscInt[], const PetscInt[], PetscCopyMode); 399547c9a8eSstefano_zampini PETSC_EXTERN PetscErrorCode PCBDDCCreateFETIDPOperators(PC, PetscBool, const char *, Mat *, PC *); 4003425bc38SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetRHS(Mat, Vec, Vec); 4013425bc38SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCMatFETIDPGetSolution(Mat, Vec, Vec); 40243371fb9SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCFinalizePackage(void); 40343371fb9SStefano Zampini PETSC_EXTERN PetscErrorCode PCBDDCInitializePackage(void); 4040c7d97c5SJed Brown 40504c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISInitialize(PC); 40604c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISSetUp(PC, PetscBool, PetscBool); 407b965d45eSStefano Zampini PETSC_EXTERN PetscErrorCode PCISSetUseStiffnessScaling(PC, PetscBool); 408014dd563SJed Brown PETSC_EXTERN PetscErrorCode PCISSetSubdomainScalingFactor(PC, PetscScalar); 40946caae47SJed Brown PETSC_EXTERN PetscErrorCode PCISSetSubdomainDiagonalScaling(PC, Vec); 41004c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISScatterArrayNToVecB(PC, PetscScalar *, Vec, InsertMode, ScatterMode); 41104c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISApplySchur(PC, Vec, Vec, Vec, Vec, Vec); 41204c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISApplyInvSchur(PC, Vec, Vec, Vec, Vec); 41304c3f3b8SBarry Smith PETSC_EXTERN PetscErrorCode PCISReset(PC); 414d3b1e0e7SMatthew Knepley 415ab83eea4SMatthew G. Knepley PETSC_EXTERN PetscInt PetscMGLevelId; 416b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetType(PC, PCMGType); 417c60c7ad4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetType(PC, PCMGType *); 418b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetLevels(PC, PetscInt, MPI_Comm *); 419b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetLevels(PC, PetscInt *); 420b4876bcbSBarry Smith 421f442ab6aSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetDistinctSmoothUp(PC); 42206792cafSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetNumberSmooth(PC, PetscInt); 423b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetCycleType(PC, PCMGCycleType); 424b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetCycleTypeOnLevel(PC, PetscInt, PCMGCycleType); 425edd03b47SJacob Faibussowitsch PETSC_DEPRECATED_FUNCTION(3, 5, 0, "PCMGSetCycleTypeOnLevel()", ) static inline PetscErrorCode PCMGSetCyclesOnLevel(PC pc, PetscInt l, PetscInt t) 426d71ae5a4SJacob Faibussowitsch { 4279371c9d4SSatish Balay return PCMGSetCycleTypeOnLevel(pc, l, (PCMGCycleType)t); 4289371c9d4SSatish Balay } 429b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGMultiplicativeSetCycles(PC, PetscInt); 4302134b1e4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetGalerkin(PC, PCMGGalerkinType); 4312134b1e4SBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetGalerkin(PC, PCMGGalerkinType *); 4322b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGSetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType); 4332b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGGetAdaptCoarseSpaceType(PC, PCMGCoarseSpaceType *); 43441b6fd38SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCMGSetAdaptCR(PC, PetscBool); 43541b6fd38SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCMGGetAdaptCR(PC, PetscBool *); 4362b3cbbdaSStefano Zampini /* MATT: Remove? */ 4372b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGSetAdaptInterpolation(PC, PetscBool); 4382b3cbbdaSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGGetAdaptInterpolation(PC, PetscBool *); 439b4876bcbSBarry Smith 440b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRhs(PC, PetscInt, Vec); 441b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetX(PC, PetscInt, Vec); 442b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetR(PC, PetscInt, Vec); 443b4876bcbSBarry Smith 444b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRestriction(PC, PetscInt, Mat); 445b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetRestriction(PC, PetscInt, Mat *); 446eab52d2bSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCMGSetInjection(PC, PetscInt, Mat); 447eab52d2bSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCMGGetInjection(PC, PetscInt, Mat *); 448b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetInterpolation(PC, PetscInt, Mat); 4498a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCMGSetOperators(PC, PetscInt, Mat, Mat); 450b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetInterpolation(PC, PetscInt, Mat *); 451b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetRScale(PC, PetscInt, Vec); 452b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGGetRScale(PC, PetscInt, Vec *); 453b4876bcbSBarry Smith PETSC_EXTERN PetscErrorCode PCMGSetResidual(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat); 454fcb023d4SJed Brown PETSC_EXTERN PetscErrorCode PCMGSetResidualTranspose(PC, PetscInt, PetscErrorCode (*)(Mat, Vec, Vec, Vec), Mat); 45554b2cd4bSJed Brown PETSC_EXTERN PetscErrorCode PCMGResidualDefault(Mat, Vec, Vec, Vec); 456fcb023d4SJed Brown PETSC_EXTERN PetscErrorCode PCMGResidualTransposeDefault(Mat, Vec, Vec, Vec); 45730b0564aSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGMatResidualDefault(Mat, Mat, Mat, Mat); 45830b0564aSStefano Zampini PETSC_EXTERN PetscErrorCode PCMGMatResidualTransposeDefault(Mat, Mat, Mat, Mat); 459db6f9c32SMark Adams PETSC_EXTERN PetscErrorCode PCMGGalerkinSetMatProductAlgorithm(PC, const char[]); 460db6f9c32SMark Adams PETSC_EXTERN PetscErrorCode PCMGGalerkinGetMatProductAlgorithm(PC, const char *[]); 461e7d4b4cbSMark Adams PETSC_EXTERN PetscErrorCode PCMGGetGridComplexity(PC, PetscReal *, PetscReal *); 462e75ffff3SFande Kong 4638a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetReuseInterpolation(PC, PetscBool); 4648a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetUseSubspaceCoarsening(PC, PetscBool); 4658a2c336bSFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetInnerPCType(PC, PCType); 4664fea3358SFande Kong PETSC_EXTERN PetscErrorCode PCHMGSetCoarseningComponent(PC, PetscInt); 4674fea3358SFande Kong PETSC_EXTERN PetscErrorCode PCHMGUseMatMAIJ(PC, PetscBool); 4688a2c336bSFande Kong 46948a10b22SPatrick Sanan PETSC_EXTERN PetscErrorCode PCTelescopeGetSubcommType(PC, PetscSubcommType *); 47048a10b22SPatrick Sanan PETSC_EXTERN PetscErrorCode PCTelescopeSetSubcommType(PC, PetscSubcommType); 47168ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetReductionFactor(PC, PetscInt *); 47268ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeSetReductionFactor(PC, PetscInt); 47368ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreDM(PC, PetscBool *); 474bfd6bcc6SSatish Balay PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreDM(PC, PetscBool); 47534fb549aSDave May PETSC_EXTERN PetscErrorCode PCTelescopeGetUseCoarseDM(PC, PetscBool *); 47634fb549aSDave May PETSC_EXTERN PetscErrorCode PCTelescopeSetUseCoarseDM(PC, PetscBool); 4770ae7c45bSDave May PETSC_EXTERN PetscErrorCode PCTelescopeGetIgnoreKSPComputeOperators(PC, PetscBool *); 4780ae7c45bSDave May PETSC_EXTERN PetscErrorCode PCTelescopeSetIgnoreKSPComputeOperators(PC, PetscBool); 47968ddcbeaSBarry Smith PETSC_EXTERN PetscErrorCode PCTelescopeGetDM(PC, DM *); 4806ab51f8fSDave May 4814bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetSaveOperators(PC, PetscBool); 4824bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetSaveOperators(PC, PetscBool *); 483fa84ea4cSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetPrecomputeElementTensors(PC, PetscBool); 484fa84ea4cSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchGetPrecomputeElementTensors(PC, PetscBool *); 4854bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetPartitionOfUnity(PC, PetscBool); 4864bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetPartitionOfUnity(PC, PetscBool *); 4874bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetSubMatType(PC, MatType); 4884bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetSubMatType(PC, MatType *); 4894bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetCellNumbering(PC, PetscSection); 4904bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetCellNumbering(PC, PetscSection *); 4914bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetConstructType(PC, PCPatchConstructType, PetscErrorCode (*)(PC, PetscInt *, IS **, IS *, void *), void *); 4924bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchGetConstructType(PC, PCPatchConstructType *, PetscErrorCode (**)(PC, PetscInt *, IS **, IS *, void *), void **); 4934bbf5ea8SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCPatchSetDiscretisationInfo(PC, PetscInt, DM *, PetscInt *, PetscInt *, const PetscInt **, const PetscInt *, PetscInt, const PetscInt *, PetscInt, const PetscInt *); 4944d04e9f1SPatrick Farrell PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperator(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *); 495*4d4d2bdcSBarry Smith PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunction(PC pc, PetscErrorCode (*)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *ctx); 49659109abcSLawrence Mitchell PETSC_EXTERN PetscErrorCode PCPatchSetComputeOperatorInteriorFacets(PC, PetscErrorCode (*)(PC, PetscInt, Vec, Mat, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *); 497*4d4d2bdcSBarry Smith PETSC_EXTERN PetscErrorCode PCPatchSetComputeFunctionInteriorFacets(PC pc, PetscErrorCode (*)(PC, PetscInt, Vec, Vec, IS, PetscInt, const PetscInt *, const PetscInt *, void *), void *ctx); 4984bbf5ea8SMatthew G. Knepley 499b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMSetMatLMVM(PC, Mat); 500b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMGetMatLMVM(PC, Mat *); 501b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMSetIS(PC, IS); 502b9ac7092SAlp Dener PETSC_EXTERN PetscErrorCode PCLMVMClearIS(PC); 503970ba202SStefano Zampini PETSC_EXTERN PetscErrorCode PCLMVMSetUpdateVec(PC, Vec); 504b9ac7092SAlp Dener 5057ede41a2SMatthew G. Knepley PETSC_EXTERN PetscErrorCode PCExoticSetType(PC, PCExoticType); 5067ede41a2SMatthew G. Knepley 507a122ebaeSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetInitOnly(PC, PetscBool); 50893b79a5aSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetLevels(PC, PetscInt); 509859a873cSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetReductionFactor(PC, PetscInt); 5108a71cb68SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetCorrectionFactor(PC, PetscScalar); 51139417d7eSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetSpaceToCompute(PC, PCDeflationSpaceType, PetscInt); 512e662bc50SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetSpace(PC, Mat, PetscBool); 51398d6e3deSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetProjectionNullSpaceMat(PC, Mat); 51498d6e3deSJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationSetCoarseMat(PC, Mat); 515268c6673SJakub Kruzik PETSC_EXTERN PetscErrorCode PCDeflationGetPC(PC, PC *); 51698d6e3deSJakub Kruzik 51738cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetAuxiliaryMat(PC, IS, Mat, PetscErrorCode (*)(Mat, PetscReal, Vec, Vec, PetscReal, IS, void *), void *); 518244dff2eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetRHSMat(PC, Mat); 519c5910190SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMHasNeumannMat(PC, PetscBool); 52038cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType); 52138cfc46eSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMGetCoarseCorrectionType(PC, PCHPDDMCoarseCorrectionType *); 522e31fc274SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetSTShareSubKSP(PC, PetscBool); 523dfad241bSPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMGetSTShareSubKSP(PC, PetscBool *); 5242e65eb73SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMSetDeflationMat(PC, IS, Mat); 52505b34211SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMFinalizePackage(void); 52605b34211SPierre Jolivet PETSC_EXTERN PetscErrorCode PCHPDDMInitializePackage(void); 527cc4c1da9SBarry Smith PETSC_EXTERN PetscErrorCode PCHPDDMGetComplexities(PC, PetscReal *, PetscReal *); 52838cfc46eSPierre Jolivet 529e6f8f311SMark Adams PETSC_EXTERN PetscErrorCode PCAmgXGetResources(PC, void *); 530e6f8f311SMark Adams 531345a4b08SToby Isaac PETSC_EXTERN PetscErrorCode PCMatSetApplyOperation(PC, MatOperation); 532345a4b08SToby Isaac PETSC_EXTERN PetscErrorCode PCMatGetApplyOperation(PC, MatOperation *); 533