1: ! 2: ! Include file for Fortran use of the PC (preconditioner) package in PETSc 3: ! 4: #if !defined (PETSCPCDEF_H) 5: #define PETSCPCDEF_H 7: #include "petsc/finclude/petscmat.h" 8: #include "petsc/finclude/petscdm.h" 10: #define PC type(tPC) 12: #define PCType character*(80) 13: #define PCSide PetscEnum 14: #define PCJacobiType PetscEnum 15: #define PCASMType PetscEnum 16: #define PCGASMType PetscEnum 17: #define PCMGType PetscEnum 18: #define PCMGCycleType PetscEnum 19: #define PCMGGalerkinType PetscEnum 20: #define PCMGCoarseSpaceType PetscEnum 21: #define PCCompositeType PetscEnum 22: #define PCRichardsonConvergedReason PetscEnum 23: #define PCFieldSplitSchurPreType PetscEnum 24: #define PCPARMSGlobalType PetscEnum 25: #define PCPARMSLocalType PetscEnum 26: #define PCFieldSplitSchurFactType PetscEnum 27: #define CoarseProblemType PetscEnum 28: #define PCGAMGType character*(80) 29: #define PCGAMGClassicalType character*(80) 30: #define PCGAMGLayoutType PetscEnum 31: #define PCHPDDMCoarseCorrectionType PetscEnum 32: #define PCExoticType PetscEnum 33: #define PCDeflationSpaceType PetscEnum 34: #define PCBDDCInterfaceExtType PetscEnum 35: #define PCFailedReason PetscEnum 36: ! 37: ! GAMG types 38: ! 39: #define PCGAMGAGG 'agg' 40: #define PCGAMGGEO 'geo' 41: #define PCGAMGCLASSICAL 'classical' 42: ! 43: ! GAMG classical types 44: ! 45: #define PCGAMGCLASSICALDIRECT 'direct' 46: #define PCGAMGCLASSICALSTANDARD 'standard' 47: ! 48: ! Various preconditioners 49: ! 50: #define PCNONE 'none' 51: #define PCJACOBI 'jacobi' 52: #define PCSOR 'sor' 53: #define PCLU 'lu' 54: #define PCQR 'qr' 55: #define PCSHELL 'shell' 56: #define PCAMGX 'amgx' 57: #define PCBJACOBI 'bjacobi' 58: #define PCMG 'mg' 59: #define PCEISENSTAT 'eisenstat' 60: #define PCILU 'ilu' 61: #define PCICC 'icc' 62: #define PCASM 'asm' 63: #define PCGASM 'gasm' 64: #define PCKSP 'ksp' 65: #define PCCOMPOSITE 'composite' 66: #define PCREDUNDANT 'redundant' 67: #define PCSPAI 'spai' 68: #define PCNN 'nn' 69: #define PCCHOLESKY 'cholesky' 70: #define PCPBJACOBI 'pbjacobi' 71: #define PCVPBJACOBI 'vpbjacobi' 72: #define PCMAT 'mat' 73: #define PCHYPRE 'hypre' 74: #define PCPARMS 'parms' 75: #define PCFIELDSPLIT 'fieldsplit' 76: #define PCTFS 'tfs' 77: #define PCML 'ml' 78: #define PCGALERKIN 'galerkin' 79: #define PCEXOTIC 'exotic' 80: #define PCCP 'cp' 81: #define PCBFBT 'bfbt' 82: #define PCLSC 'lsc' 83: #define PCPYTHON 'python' 84: #define PCPFMG 'pfmg' 85: #define PCSYSPFMG 'syspfmg' 86: #define PCREDISTRIBUTE 'redistribute' 87: #define PCSVD 'svd' 88: #define PCGAMG 'gamg' 89: #define PCCHOWILUVIENNACL 'chowiluviennacl' 90: #define PCROWSCALINGVIENNACL 'rowscalingviennacl' 91: #define PCSAVIENNACL 'saviennacl' 92: #define PCBDDC 'bddc' 93: #define PCKACZMARZ 'kaczmarz' 94: #define PCTELESCOPE 'telescope' 95: #define PCPATCH 'patch' 96: #define PCLMVM 'lmvm' 97: #define PCHMG 'hmg' 98: #define PCDEFLATION 'deflation' 99: #define PCHPDDM 'hpddm' 100: #define PCH2OPUS 'h2opus' 101: #define PCMPI 'mpi' 103: #endif