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