1: ! 2: ! 3: ! Include file for Fortran use of the Mat package in PETSc 4: ! Portions of this code are under: 5: ! Copyright (c) 2022 Advanced Micro Devices, Inc. All rights reserved. 6: ! 7: #if !defined (PETSCMATDEF_H) 8: #define PETSCMATDEF_H 10: #include "petsc/finclude/petscvec.h" 12: #define Mat type(tMat) 13: #define MatNullSpace type(tMatNullSpace) 14: #define MatFDColoring type(tMatFDColoring) 15: #define MatColoring type(tMatColoring) 16: #define MatTransposeColoring type(tMatTransposeColoring) 17: #define MatPartitioning type(tMatPartitioning) 18: #define MatCoarsen type(tMatCoarsen) 20: #define MatAIJIndices PetscFortranAddr 21: #define MatType character*(80) 22: #define MatSolverType character*(80) 23: #define MatOption PetscEnum 24: #define MatCreateSubMatrixOption PetscEnum 25: #define MPChacoGlobalType PetscEnum 26: #define MPChacoLocalType PetscEnum 27: #define MPChacoEigenType PetscEnum 28: #define MPPTScotchStragegyType PetscEnum 29: #define MatAssemblyType PetscEnum 30: #define MatFactorType PetscEnum 31: #define MatFactorError PetscEnum 32: #define MatFactorShiftType PetscEnum 33: #define MatProductType PetscEnum 34: #define MatProductAlgorithm character*(80) 35: #define MatFactorSchurStatus PetscEnum 36: #define MatOrderingType character*(80) 37: #define MatSORType PetscEnum 38: #define MatInfoType PetscEnum 39: #define MatReuse PetscEnum 40: #define MatOperation PetscEnum 41: #define MatColoringType character*(80) 42: #define MatInfo PetscLogDouble 43: #define MatFactorInfo PetscReal 44: #define MatDuplicateOption PetscEnum 45: #define MatStructure PetscEnum 46: #define MatPartitioningType character*(80) 47: #define MatCoarsenType character*(80) 48: #define MatCompositeType PetscEnum 49: #define MatCompositeMergeType PetscEnum 50: #define MatStencil PetscInt 51: #define MatStencil_k 1 52: #define MatStencil_j 2 53: #define MatStencil_i 3 54: #define MatStencil_c 4 56: #define MATPARTITIONING_CURRENT 'current' 57: #define MATPARTITIONING_PARMETIS 'parmetis' 59: #define MATCOARSEN_MIS 'mis' 61: #define MATCOLORINGJP 'jp' 62: #define MATCOLORINGPOWER 'power' 63: #define MATCOLORINGNATURAL 'natural' 64: #define MATCOLORINGSL 'sl' 65: #define MATCOLORINGLF 'lf' 66: #define MATCOLORINGID 'id' 67: #define MATCOLORINGGREEDY 'greedy' 69: #define MATORDERINGNATURAL 'natural' 70: #define MATORDERINGNATURAL_OR_ND 'natural_or_nd' 71: #define MATORDERINGND 'nd' 72: #define MATORDERING1WD '1wd' 73: #define MATORDERINGRCM 'rcm' 74: #define MATORDERINGQMD 'qmd' 75: #define MATORDERINGROWLENGTH 'rowlength' 76: #define MATORDERINGWBM 'wbm' 77: #define MATORDERINGSPECTRAL 'spectral' 78: #define MATORDERINGAMD 'amd' 79: #define MATORDERINGEXTERNAL 'external' 80: ! 81: ! Matrix types 82: ! 83: #define MATSAME 'same' 84: #define MATMAIJ 'maij' 85: #define MATSEQMAIJ 'seqmaij' 86: #define MATMPIMAIJ 'mpimaij' 87: #define MATKAIJ 'kaij' 88: #define MATSEQKAIJ 'seqkaij' 89: #define MATMPIKAIJ 'mpikaij' 90: #define MATIS 'is' 91: #define MATAIJ 'aij' 92: #define MATSEQAIJ 'seqaij' 93: #define MATMPIAIJ 'mpiaij' 94: #define MATAIJCRL 'aijcrl' 95: #define MATSEQAIJCRL 'seqaijcrl' 96: #define MATMPIAIJCRL 'mpiaijcrl' 97: #define MATAIJCUSPARSE 'aijcusparse' 98: #define MATSEQAIJCUSPARSE 'seqaijcusparse' 99: #define MATMPIAIJCUSPARSE 'mpiaijcusparse' 100: #define MATAIJHIPSPARSE 'aijhipsparse' 101: #define MATSEQAIJHIPSPARSE 'seqaijhipsparse' 102: #define MATMPIAIJHIPSPARSE 'mpiaijhipsparse' 103: #define MATAIJKOKKOS 'aijkokkos' 104: #define MATSEQAIJKOKKOS 'seqaijkokkos' 105: #define MATMPIAIJKOKKOS 'mpiaijkokkos' 106: #define MATAIJVIENNACL 'aijviennacl' 107: #define MATSEQAIJVIENNACL 'seqaijviennacl' 108: #define MATMPIAIJVIENNACL 'mpiaijviennacl' 109: #define MATAIJPERM 'aijperm' 110: #define MATSEQAIJPERM 'seqaijperm' 111: #define MATMPIAIJPERM 'mpiaijperm' 112: #define MATAIJSELL 'aijsell' 113: #define MATSEQAIJSELL 'seqaijsell' 114: #define MATMPIAIJSELL 'mpiaijsell' 115: #define MATAIJMKL 'aijmkl' 116: #define MATSEQAIJMKL 'seqaijmkl' 117: #define MATMPIAIJMKL 'mpiaijmkl' 118: #define MATBAIJMKL 'baijmkl' 119: #define MATSEQBAIJMKL 'seqbaijmkl' 120: #define MATMPIBAIJMKL 'mpibaijmkl' 121: #define MATSHELL 'shell' 122: #define MATCENTERING 'centering' 123: #define MATDENSE 'dense' 124: #define MATDENSECUDA 'densecuda' 125: #define MATDENSEHIP 'densehip' 126: #define MATSEQDENSE 'seqdense' 127: #define MATSEQDENSECUDA 'seqdensecuda' 128: #define MATSEQDENSEHIP 'seqdensehip' 129: #define MATMPIDENSE 'mpidense' 130: #define MATMPIDENSECUDA 'mpidensecuda' 131: #define MATMPIDENSEHIP 'mpidensehip' 132: #define MATELEMENTAL 'elemental' 133: #define MATSCALAPACK 'scalapack' 134: #define MATBAIJ 'baij' 135: #define MATSEQBAIJ 'seqbaij' 136: #define MATMPIBAIJ 'mpibaij' 137: #define MATMPIADJ 'mpiadj' 138: #define MATSBAIJ 'sbaij' 139: #define MATSEQSBAIJ 'seqsbaij' 140: #define MATMPISBAIJ 'mpisbaij' 141: #define MATMFFD 'mffd' 142: #define MATNORMAL 'normal' 143: #define MATNORMALHERMITIAN 'normalh' 144: #define MATLRC 'lrc' 145: #define MATSCATTER 'scatter' 146: #define MATBLOCKMAT 'blockmat' 147: #define MATCOMPOSITE 'composite' 148: #define MATFFT 'fft' 149: #define MATFFTW 'fftw' 150: #define MATSEQCUFFT 'seqcufft' 151: #define MATTRANSPOSEVIRTUAL 'transpose' 152: #define MATHERMITIANTRANSPOSEVIRTUAL 'hermitiantranspose' 153: #define MATSCHURCOMPLEMENT 'schurcomplement' 154: #define MATPYTHON 'python' 155: #define MATHYPRE 'hypre' 156: #define MATHYPRESTRUCT 'hyprestruct' 157: #define MATHYPRESSTRUCT 'hypresstruct' 158: #define MATSUBMATRIX 'submatrix' 159: #define MATLOCALREF 'localref' 160: #define MATNEST 'nest' 161: #define MATPREALLOCATOR 'preallocator' 162: #define MATSELL 'sell' 163: #define MATSEQSELL 'seqsell' 164: #define MATMPISELL 'mpisell' 165: #define MATDUMMY 'dummy' 166: #define MATLMVM 'lmvm' 167: #define MATLMVMDFP 'lmvmdfp' 168: #define MATLMVMDDFP 'lmvmddfp' 169: #define MATLMVMBFGS 'lmvmbfgs' 170: #define MATLMVMDBFGS 'lmvmdbfgs' 171: #define MATLMVMDQN 'lmvmdqn' 172: #define MATLMVMSR1 'lmvmsr1' 173: #define MATLMVMBROYDEN 'lmvmbroyden' 174: #define MATLMVMBADBROYDEN 'lmvmbadbroyden' 175: #define MATLMVMSYMBROYDEN 'lmvmsymbroyden' 176: #define MATLMVMSYMBADBROYDEN 'lmvmsymbadbroyden' 177: #define MATLMVMDIAGBROYDEN 'lmvmdiagbroyden' 178: #define MATCONSTANTDIAGONAL 'constantdiagonal' 179: #define MATHTOOL 'htool' 180: #define MATH2OPUS 'h2opus' 182: ! 183: ! MatMFFDType values 184: ! 185: #define MATMFFD_DS 'ds' 186: #define MATMFFD_WP 'wp' 188: ! 189: ! MatSolverTypes 190: ! 191: #define MATSOLVERSUPERLU 'superlu' 192: #define MATSOLVERSUPERLU_DIST 'superlu_dist' 193: #define MATSOLVERSTRUMPACK 'strumpack' 194: #define MATSOLVERUMFPACK 'umfpack' 195: #define MATSOLVERCHOLMOD 'cholmod' 196: #define MATSOLVERKLU 'klu' 197: #define MATSOLVERELEMENTAL 'elemental' 198: #define MATSOLVERSCALAPACK 'scalapack' 199: #define MATSOLVERESSL 'essl' 200: #define MATSOLVERLUSOL 'lusol' 201: #define MATSOLVERMUMPS 'mumps' 202: #define MATSOLVERMKL_PARDISO 'mkl_pardiso' 203: #define MATSOLVERMKL_CPARDISO 'mkl_cpardiso' 204: #define MATSOLVERPASTIX 'pastix' 205: #define MATSOLVERMATLAB 'matlab' 206: #define MATSOLVERPETSC 'petsc' 207: #define MATSOLVERBAS 'bas' 208: #define MATSOLVERCUSPARSE 'cusparse' 209: #define MATSOLVERCUDA 'cuda' 210: #define MATSOLVERHIPSPARSE 'hipsparse' 211: #define MATSOLVERHIP 'hip' 212: #define MATSOLVERKOKKOS 'kokkos' 213: #define MATSOLVERSPQR 'spqr' 214: #define MATSOLVERHTOOL 'htool' 216: ! 217: ! GPU Storage Formats for CUSPARSE 218: ! 219: #define MatCUSPARSEStorageFormat PetscEnum 220: #define MatCUSPARSEFormatOperation PetscEnum 222: ! 223: ! GPU Storage Formats for HIPSPARSE 224: ! 225: #define MatHIPSPARSEStorageFormat PetscEnum 226: #define MatHIPSPARSEFormatOperation PetscEnum 228: ! 229: ! sparsity reducing ordering for STRUMPACK 230: ! 231: #define MatSTRUMPACKReordering PetscEnum 232: ! 233: ! compression types for STRUMPACK 234: ! 235: #define MatSTRUMPACKCompressionType PetscEnum 237: #endif