Actual source code: petscmat.h

petsc-3.11.2 2019-05-18
Report Typos and Errors
  1: !
  2: !
  3: !  Include file for Fortran use of the Mat package in PETSc
  4: !
  5: #if !defined (__PETSCMATDEF_H)

  8: #include "petsc/finclude/petscvec.h"

 10: #define Mat type(tMat)
 11: #define MatNullSpace type(tMatNullSpace)
 12: #define MatFDColoring type(tMatFDColoring)

 14: #define MatColoring PetscFortranAddr
 15: #define MatPartitioning PetscFortranAddr
 16: #define MatCoarsen PetscFortranAddr
 17: #define MatAIJIndices PetscFortranAddr
 18: #define MatType character*(80)
 19: #define MatSolverType character*(80)
 20: #define MatOption PetscEnum
 21: #define MatCreateSubMatrixOption PetscEnum
 22: #define MPChacoGlobalType PetscEnum
 23: #define MPChacoLocalType PetscEnum
 24: #define MPChacoEigenType PetscEnum
 25: #define MPPTScotchStragegyType PetscEnum
 26: #define MatAssemblyType PetscEnum
 27: #define MatFactorType PetscEnum
 28: #define MatFactorError PetscEnum
 29: #define MatFactorShiftType PetscEnum
 30: #define MatFactorSchurStatus PetscEnum
 31: #define MatOrderingType character*(80)
 32: #define MatSORType PetscEnum
 33: #define MatInfoType PetscEnum
 34: #define MatReuse PetscEnum
 35: #define MatOperation PetscEnum
 36: #define MatColoringType character*(80)
 37: #define MatInfo PetscLogDouble
 38: #define MatFactorInfo PetscReal
 39: #define MatDuplicateOption PetscEnum
 40: #define MatStructure PetscEnum
 41: #define MatPartitioningType character*(80)
 42: #define MatCoarsenType character*(80)
 43: #define MatCompositeType PetscEnum
 44: #define MatStencil PetscInt
 45: #define MatStencil_k 1
 46: #define MatStencil_j 2
 47: #define MatStencil_i 3
 48: #define MatStencil_c 4

 50: #define MATPARTITIONING_CURRENT 'current'
 51: #define MATPARTITIONING_PARMETIS 'parmetis'

 53: #define MATCOARSEN_MIS 'mis'

 55: #define MATCOLORINGNATURAL 'natural'
 56: #define MATCOLORINGSL      'sl'
 57: #define MATCOLORINGLF      'lf'
 58: #define MATCOLORINGID      'id'
 59: #define MATCOLORINGGREEDY  'greedy'
 60: #define MATCOLORINGJP      'jp'

 62: #define MATORDERINGNATURAL   'natural'
 63: #define MATORDERINGND        'nd'
 64: #define MATORDERING1WD       '1wd'
 65: #define MATORDERINGRCM       'rcm'
 66: #define MATORDERINGQMD       'qmd'
 67: #define MATORDERINGROWLENGTH 'rowlength'
 68: #define MATORDERINGWBM       'wbm'
 69: #define MATORDERINGSPECTRAL  'spectral'
 70: #define MATORDERINGAMD       'amd'
 71: !
 72: !  Matrix types
 73: !
 74: #define MATSAME            'same'
 75: #define MATMAIJ            'maij'
 76: #define MATSEQMAIJ         'seqmaij'
 77: #define MATMPIMAIJ         'mpimaij'
 78: #define MATIS              'is'
 79: #define MATAIJ             'aij'
 80: #define MATSEQAIJ          'seqaij'
 81: #define MATMPIAIJ          'mpiaij'
 82: #define MATAIJCRL          'aijcrl'
 83: #define MATSEQAIJCRL       'seqaijcrl'
 84: #define MATMPIAIJCRL       'mpiaijcrl'
 85: #define MATAIJCUSPARSE     'aijcusparse'
 86: #define MATSEQAIJCUSPARSE  'seqaijcusparse'
 87: #define MATMPIAIJCUSPARSE  'mpiaijcusparse'
 88: #define MATAIJVIENNACL     'aijviennacl'
 89: #define MATSEQAIJVIENNACL  'seqaijviennacl'
 90: #define MATMPIAIJVIENNACL  'mpiaijviennacl'
 91: #define MATAIJPERM         'aijperm'
 92: #define MATSEQAIJPERM      'seqaijperm'
 93: #define MATMPIAIJPERM      'mpiaijperm'
 94: #define MATAIJSELL         'aijsell'
 95: #define MATSEQAIJSELL      'seqaijsell'
 96: #define MATMPIAIJSELL      'mpiaijsell'
 97: #define MATAIJMKL          'aijmkl'
 98: #define MATSEQAIJMKL       'seqaijmkl'
 99: #define MATMPIAIJMKL       'mpiaijmkl'
100: #define MATBAIJMKL         'baijmkl'
101: #define MATSEQBAIJMKL      'seqbaijmkl'
102: #define MATMPIBAIJMKL      'mpibaijmkl'
103: #define MATSHELL           'shell'
104: #define MATDENSE           'dense'
105: #define MATSEQDENSE        'seqdense'
106: #define MATMPIDENSE        'mpidense'
107: #define MATELEMENTAL       'elemental'
108: #define MATBAIJ            'baij'
109: #define MATSEQBAIJ         'seqbaij'
110: #define MATMPIBAIJ         'mpibaij'
111: #define MATMPIADJ          'mpiadj'
112: #define MATSBAIJ           'sbaij'
113: #define MATSEQSBAIJ        'seqsbaij'
114: #define MATMPISBAIJ        'mpisbaij'

116: #define MATDAAD            'daad'
117: #define MATMFFD            'mffd'
118: #define MATNORMAL          'normal'
119: #define MATNORMALHERMITIAN 'normalh'
120: #define MATLRC             'lrc'
121: #define MATSCATTER         'scatter'
122: #define MATBLOCKMAT        'blockmat'
123: #define MATCOMPOSITE       'composite'
124: #define MATFFT             'fft'
125: #define MATFFTW            'fftw'
126: #define MATSEQCUFFT        'seqcufft'
127: #define MATTRANSPOSEMAT    'transpose'
128: #define MATSCHURCOMPLEMENT 'schurcomplement'
129: #define MATPYTHON          'python'
130: #define MATHYPRESTRUCT     'hyprestruct'
131: #define MATHYPRESSTRUCT    'hypresstruct'
132: #define MATSUBMATRIX       'submatrix'
133: #define MATLOCALREF        'localref'
134: #define MATNEST            'nest'
135: #define MATPREALLOCATOR    'preallocator'
136: #define MATSELL            'sell'
137: #define MATSEQSELL         'seqsell'
138: #define MATMPISELL         'mpisell'
139: #define MATDUMMY           'dummy'

141: !
142: ! MatMFFDType values
143: !
144: #define MATMFFD_DS 'ds'
145: #define MATMFFD_WP 'wp'

147: !
148: ! MatSolverTypes
149: !
150: #define MATSOLVERSUPERLU         'superlu'
151: #define MATSOLVERSUPERLU_DIST    'superlu_dist'
152: #define MATSOLVERSTRUMPACK       'strumpack'
153: #define MATSOLVERUMFPACK         'umfpack'
154: #define MATSOLVERCHOLMOD         'cholmod'
155: #define MATSOLVERSPARSEELEMENTAL 'sparseelemental'
156: #define MATSOLVERKLU             'klu'
157: #define MATSOLVERELEMENTAL       'elemental'
158: #define MATSOLVERESSL            'essl'
159: #define MATSOLVERLUSOL           'lusol'
160: #define MATSOLVERMUMPS           'mumps'
161: #define MATSOLVERMKL_PARDISO     'mkl_pardiso'
162: #define MATSOLVERMKL_CPARDISO    'mkl_cpardiso'
163: #define MATSOLVERPASTIX          'pastix'
164: #define MATSOLVERMATLAB          'matlab'
165: #define MATSOLVERPETSC           'petsc'
166: #define MATSOLVERBAS             'bas'
167: #define MATSOLVERCUSPARSE        'cusparse'

169: !
170: ! GPU Storage Formats for CUSPARSE
171: !
172: #define MatCUSPARSEStorageFormat PetscEnum
173: #define MatCUSPARSEFormatOperation PetscEnum

175: !
176: ! sparsity reducing ordering for STRUMPACK
177: !
178: #define MatSTRUMPACKReordering PetscEnum

180: #endif