Actual source code: petscpc.h

  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