1 ! 2 ! 3 ! Include file for Fortran use of the Mat package in PETSc 4 ! 5 #if !defined (PETSCMATDEF_H) 6 #define PETSCMATDEF_H 7 8 #include "petsc/finclude/petscvec.h" 9 10 #define Mat type(tMat) 11 #define MatNullSpace type(tMatNullSpace) 12 #define MatFDColoring type(tMatFDColoring) 13 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 52 53 #define MATPARTITIONING_CURRENT 'current' 54 #define MATPARTITIONING_PARMETIS 'parmetis' 55 56 #define MATCOARSEN_MIS 'mis' 57 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' 65 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 MATDAAD 'daad' 124 #define MATMFFD 'mffd' 125 #define MATNORMAL 'normal' 126 #define MATNORMALHERMITIAN 'normalh' 127 #define MATLRC 'lrc' 128 #define MATSCATTER 'scatter' 129 #define MATBLOCKMAT 'blockmat' 130 #define MATCOMPOSITE 'composite' 131 #define MATFFT 'fft' 132 #define MATFFTW 'fftw' 133 #define MATSEQCUFFT 'seqcufft' 134 #define MATTRANSPOSEMAT 'transpose' 135 #define MATSCHURCOMPLEMENT 'schurcomplement' 136 #define MATPYTHON 'python' 137 #define MATHYPRESTRUCT 'hyprestruct' 138 #define MATHYPRESSTRUCT 'hypresstruct' 139 #define MATSUBMATRIX 'submatrix' 140 #define MATLOCALREF 'localref' 141 #define MATNEST 'nest' 142 #define MATPREALLOCATOR 'preallocator' 143 #define MATSELL 'sell' 144 #define MATSEQSELL 'seqsell' 145 #define MATMPISELL 'mpisell' 146 #define MATDUMMY 'dummy' 147 #define MATLMVM 'lmvm' 148 #define MATLMVMDFP 'lmvmdfp' 149 #define MATLMVMBFGS 'lmvmbfgs' 150 #define MATLMVMSR1 'lmvmsr1' 151 #define MATLMVMBROYDEN 'lmvmbroyden' 152 #define MATLMVMBADBROYDEN 'lmvmbadbroyden' 153 #define MATLMVMSYMBROYDEN 'lmvmsymbroyden' 154 #define MATLMVMSYMBADBROYDEN 'lmvmsymbadbroyden' 155 #define MATLMVMDIAGBROYDEN 'lmvmdiagbroyden' 156 #define MATHARA 'hara' 157 158 ! 159 ! MatMFFDType values 160 ! 161 #define MATMFFD_DS 'ds' 162 #define MATMFFD_WP 'wp' 163 164 ! 165 ! MatSolverTypes 166 ! 167 #define MATSOLVERSUPERLU 'superlu' 168 #define MATSOLVERSUPERLU_DIST 'superlu_dist' 169 #define MATSOLVERSTRUMPACK 'strumpack' 170 #define MATSOLVERUMFPACK 'umfpack' 171 #define MATSOLVERCHOLMOD 'cholmod' 172 #define MATSOLVERSPARSEELEMENTAL 'sparseelemental' 173 #define MATSOLVERKLU 'klu' 174 #define MATSOLVERELEMENTAL 'elemental' 175 #define MATSOLVERSCALAPACK 'scalapack' 176 #define MATSOLVERESSL 'essl' 177 #define MATSOLVERLUSOL 'lusol' 178 #define MATSOLVERMUMPS 'mumps' 179 #define MATSOLVERMKL_PARDISO 'mkl_pardiso' 180 #define MATSOLVERMKL_CPARDISO 'mkl_cpardiso' 181 #define MATSOLVERPASTIX 'pastix' 182 #define MATSOLVERMATLAB 'matlab' 183 #define MATSOLVERPETSC 'petsc' 184 #define MATSOLVERBAS 'bas' 185 #define MATSOLVERCUSPARSE 'cusparse' 186 #define MATSOLVERCUDA 'cuda' 187 188 ! 189 ! GPU Storage Formats for CUSPARSE 190 ! 191 #define MatCUSPARSEStorageFormat PetscEnum 192 #define MatCUSPARSEFormatOperation PetscEnum 193 194 ! 195 ! sparsity reducing ordering for STRUMPACK 196 ! 197 #define MatSTRUMPACKReordering PetscEnum 198 199 #endif 200