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