1: ! 2: ! 3: ! Include file for Fortran use of the Mat package in PETSc 4: ! 5: #if !defined (PETSCMATDEF_H) 6: #define 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 MatProductType PetscEnum 31: #define MatProductAlgorithm character*(80) 32: #define MatFactorSchurStatus PetscEnum 33: #define MatOrderingType character*(80) 34: #define MatSORType PetscEnum 35: #define MatInfoType PetscEnum 36: #define MatReuse PetscEnum 37: #define MatOperation PetscEnum 38: #define MatColoringType character*(80) 39: #define MatInfo PetscLogDouble 40: #define MatFactorInfo PetscReal 41: #define MatDuplicateOption PetscEnum 42: #define MatStructure PetscEnum 43: #define MatPartitioningType character*(80) 44: #define MatCoarsenType character*(80) 45: #define MatCompositeType PetscEnum 46: #define MatCompositeMergeType PetscEnum 47: #define MatStencil PetscInt 48: #define MatStencil_k 1 49: #define MatStencil_j 2 50: #define MatStencil_i 3 51: #define MatStencil_c 4 53: #define MATPARTITIONING_CURRENT 'current' 54: #define MATPARTITIONING_PARMETIS 'parmetis' 56: #define MATCOARSEN_MIS 'mis' 58: #define MATCOLORINGJP 'jp' 59: #define MATCOLORINGPOWER 'power' 60: #define MATCOLORINGNATURAL 'natural' 61: #define MATCOLORINGSL 'sl' 62: #define MATCOLORINGLF 'lf' 63: #define MATCOLORINGID 'id' 64: #define MATCOLORINGGREEDY 'greedy' 66: #define MATORDERINGNATURAL 'natural' 67: #define MATORDERINGNATURAL_OR_ND 'natural_or_nd' 68: #define MATORDERINGND 'nd' 69: #define MATORDERING1WD '1wd' 70: #define MATORDERINGRCM 'rcm' 71: #define MATORDERINGQMD 'qmd' 72: #define MATORDERINGROWLENGTH 'rowlength' 73: #define MATORDERINGWBM 'wbm' 74: #define MATORDERINGSPECTRAL 'spectral' 75: #define MATORDERINGAMD 'amd' 76: #define MATORDERINGEXTERNAL 'external' 77: ! 78: ! Matrix types 79: ! 80: #define MATSAME 'same' 81: #define MATMAIJ 'maij' 82: #define MATSEQMAIJ 'seqmaij' 83: #define MATMPIMAIJ 'mpimaij' 84: #define MATIS 'is' 85: #define MATAIJ 'aij' 86: #define MATSEQAIJ 'seqaij' 87: #define MATMPIAIJ 'mpiaij' 88: #define MATAIJCRL 'aijcrl' 89: #define MATSEQAIJCRL 'seqaijcrl' 90: #define MATMPIAIJCRL 'mpiaijcrl' 91: #define MATAIJCUSPARSE 'aijcusparse' 92: #define MATSEQAIJCUSPARSE 'seqaijcusparse' 93: #define MATMPIAIJCUSPARSE 'mpiaijcusparse' 94: #define MATAIJVIENNACL 'aijviennacl' 95: #define MATSEQAIJVIENNACL 'seqaijviennacl' 96: #define MATMPIAIJVIENNACL 'mpiaijviennacl' 97: #define MATAIJPERM 'aijperm' 98: #define MATSEQAIJPERM 'seqaijperm' 99: #define MATMPIAIJPERM 'mpiaijperm' 100: #define MATAIJSELL 'aijsell' 101: #define MATSEQAIJSELL 'seqaijsell' 102: #define MATMPIAIJSELL 'mpiaijsell' 103: #define MATAIJMKL 'aijmkl' 104: #define MATSEQAIJMKL 'seqaijmkl' 105: #define MATMPIAIJMKL 'mpiaijmkl' 106: #define MATBAIJMKL 'baijmkl' 107: #define MATSEQBAIJMKL 'seqbaijmkl' 108: #define MATMPIBAIJMKL 'mpibaijmkl' 109: #define MATSHELL 'shell' 110: #define MATDENSE 'dense' 111: #define MATSEQDENSE 'seqdense' 112: #define MATSEQDENSECUDA 'seqdensecuda' 113: #define MATMPIDENSE 'mpidense' 114: #define MATELEMENTAL 'elemental' 115: #define MATSCALAPACK 'scalapack' 116: #define MATBAIJ 'baij' 117: #define MATSEQBAIJ 'seqbaij' 118: #define MATMPIBAIJ 'mpibaij' 119: #define MATMPIADJ 'mpiadj' 120: #define MATSBAIJ 'sbaij' 121: #define MATSEQSBAIJ 'seqsbaij' 122: #define MATMPISBAIJ 'mpisbaij' 123: #define MATMFFD 'mffd' 124: #define MATNORMAL 'normal' 125: #define MATNORMALHERMITIAN 'normalh' 126: #define MATLRC 'lrc' 127: #define MATSCATTER 'scatter' 128: #define MATBLOCKMAT 'blockmat' 129: #define MATCOMPOSITE 'composite' 130: #define MATFFT 'fft' 131: #define MATFFTW 'fftw' 132: #define MATSEQCUFFT 'seqcufft' 133: #define MATTRANSPOSEMAT 'transpose' 134: #define MATSCHURCOMPLEMENT 'schurcomplement' 135: #define MATPYTHON 'python' 136: #define MATHYPRESTRUCT 'hyprestruct' 137: #define MATHYPRESSTRUCT 'hypresstruct' 138: #define MATSUBMATRIX 'submatrix' 139: #define MATLOCALREF 'localref' 140: #define MATNEST 'nest' 141: #define MATPREALLOCATOR 'preallocator' 142: #define MATSELL 'sell' 143: #define MATSEQSELL 'seqsell' 144: #define MATMPISELL 'mpisell' 145: #define MATDUMMY 'dummy' 146: #define MATLMVM 'lmvm' 147: #define MATLMVMDFP 'lmvmdfp' 148: #define MATLMVMBFGS 'lmvmbfgs' 149: #define MATLMVMSR1 'lmvmsr1' 150: #define MATLMVMBROYDEN 'lmvmbroyden' 151: #define MATLMVMBADBROYDEN 'lmvmbadbroyden' 152: #define MATLMVMSYMBROYDEN 'lmvmsymbroyden' 153: #define MATLMVMSYMBADBROYDEN 'lmvmsymbadbroyden' 154: #define MATLMVMDIAGBROYDEN 'lmvmdiagbroyden' 155: #define MATHARA 'hara' 157: ! 158: ! MatMFFDType values 159: ! 160: #define MATMFFD_DS 'ds' 161: #define MATMFFD_WP 'wp' 163: ! 164: ! MatSolverTypes 165: ! 166: #define MATSOLVERSUPERLU 'superlu' 167: #define MATSOLVERSUPERLU_DIST 'superlu_dist' 168: #define MATSOLVERSTRUMPACK 'strumpack' 169: #define MATSOLVERUMFPACK 'umfpack' 170: #define MATSOLVERCHOLMOD 'cholmod' 171: #define MATSOLVERSPARSEELEMENTAL 'sparseelemental' 172: #define MATSOLVERKLU 'klu' 173: #define MATSOLVERELEMENTAL 'elemental' 174: #define MATSOLVERSCALAPACK 'scalapack' 175: #define MATSOLVERESSL 'essl' 176: #define MATSOLVERLUSOL 'lusol' 177: #define MATSOLVERMUMPS 'mumps' 178: #define MATSOLVERMKL_PARDISO 'mkl_pardiso' 179: #define MATSOLVERMKL_CPARDISO 'mkl_cpardiso' 180: #define MATSOLVERPASTIX 'pastix' 181: #define MATSOLVERMATLAB 'matlab' 182: #define MATSOLVERPETSC 'petsc' 183: #define MATSOLVERBAS 'bas' 184: #define MATSOLVERCUSPARSE 'cusparse' 185: #define MATSOLVERCUDA 'cuda' 187: ! 188: ! GPU Storage Formats for CUSPARSE 189: ! 190: #define MatCUSPARSEStorageFormat PetscEnum 191: #define MatCUSPARSEFormatOperation PetscEnum 193: ! 194: ! sparsity reducing ordering for STRUMPACK 195: ! 196: #define MatSTRUMPACKReordering PetscEnum 198: #endif