Actual source code: petscpc.h

  1: !
  2: !
  3: !  Include file for Fortran use of the PC (preconditioner) package in PETSc
  4: !
  5: #if !defined (PETSCPCDEF_H)
  6: #define PETSCPCDEF_H

  8: #include "petsc/finclude/petscmat.h"
  9: #include "petsc/finclude/petscdm.h"

 11: #define PC type(tPC)

 13: #define PCSide PetscEnum
 14: #define PCJacobiType PetscEnum
 15: #define PCASMType PetscEnum
 16: #define PCGASMType PetscEnum
 17: #define PCCompositeType PetscEnum
 18: #define PCRichardsonConvergedReason PetscEnum
 19: #define PCType character*(80)
 20: #define PCFieldSplitSchurPreType PetscEnum
 21: #define PCPARMSGlobalType PetscEnum
 22: #define PCPARMSLocalType PetscEnum
 23: #define PCFieldSplitSchurFactType PetscEnum
 24: #define CoarseProblemType PetscEnum
 25: #define PCGAMGType character*(80)
 26: #define PCGAMGClassicalType character*(80)
 27: #define PCGAMGLayoutType PetscEnum
 28: #define PCHPDDMCoarseCorrectionType PetscEnum
 29: !
 30: ! GAMG types
 31: !
 32: #define PCGAMGAGG 'agg'
 33: #define PCGAMGGEO 'geo'
 34: #define PCGAMGCLASSICAL 'classical'
 35: !
 36: ! GAMG classical types
 37: !
 38: #define PCGAMGCLASSICALDIRECT   'direct'
 39: #define PCGAMGCLASSICALSTANDARD 'standard'

 41: !
 42: ! Various preconditioners
 43: !
 44: #define PCNONE 'none'
 45: #define PCJACOBI 'jacobi'
 46: #define PCSOR 'sor'
 47: #define PCLU 'lu'
 48: #define PCQR 'qr'
 49: #define PCSHELL 'shell'
 50: #define PCAMGX 'amgx'
 51: #define PCBJACOBI 'bjacobi'
 52: #define PCMG 'mg'
 53: #define PCEISENSTAT 'eisenstat'
 54: #define PCILU 'ilu'
 55: #define PCICC 'icc'
 56: #define PCASM 'asm'
 57: #define PCGASM 'gasm'
 58: #define PCKSP 'ksp'
 59: #define PCCOMPOSITE 'composite'
 60: #define PCREDUNDANT 'redundant'
 61: #define PCSPAI 'spai'
 62: #define PCNN 'nn'
 63: #define PCCHOLESKY 'cholesky'
 64: #define PCPBJACOBI 'pbjacobi'
 65: #define PCVPBJACOBI 'vpbjacobi'
 66: #define PCMAT 'mat'
 67: #define PCHYPRE 'hypre'
 68: #define PCPARMS 'parms'
 69: #define PCFIELDSPLIT 'fieldsplit'
 70: #define PCTFS 'tfs'
 71: #define PCML 'ml'
 72: #define PCGALERKIN 'galerkin'
 73: #define PCEXOTIC 'exotic'
 74: #define PCCP 'cp'
 75: #define PCBFBT 'bfbt'
 76: #define PCLSC 'lsc'
 77: #define PCPYTHON 'python'
 78: #define PCPFMG 'pfmg'
 79: #define PCSYSPFMG 'syspfmg'
 80: #define PCREDISTRIBUTE 'redistribute'
 81: #define PCSVD 'svd'
 82: #define PCGAMG 'gamg'
 83: #define PCCHOWILUVIENNACL 'chowiluviennacl'
 84: #define PCROWSCALINGVIENNACL 'rowscalingviennacl'
 85: #define PCSAVIENNACL 'saviennacl'
 86: #define PCBDDC 'bddc'
 87: #define PCKACZMARZ 'kaczmarz'
 88: #define PCTELESCOPE 'telescope'
 89: #define PCPATCH 'patch'
 90: #define PCLMVM 'lmvm'
 91: #define PCHMG 'hmg'
 92: #define PCDEFLATION 'deflation'
 93: #define PCHPDDM 'hpddm'
 94: #define PCH2OPUS 'h2opus'
 95: #define PCMPI 'mpi'

 97: #define PCMGType PetscEnum
 98: #define PCMGCycleType PetscEnum
 99: #define PCMGGalerkinType PetscEnum
100: #define PCExoticType PetscEnum
101: #define PCDeflationSpaceType PetscEnum
102: #define PCBDDCInterfaceExtType PetscEnum
103: #define PCHPDDMCoarseCorrectionType PetscEnum
104: #define PCFailedReason PetscEnum
105: #endif