Actual source code: petscmat.h
1: !
2: ! $Id: petscmat.h,v 1.73 2001/08/06 21:19:26 bsmith Exp $;
3: !
4: ! Include file for Fortran use of the Mat package in PETSc
5: !
6: #if !defined (__PETSCMAT_H)
9: #define Mat PetscFortranAddr
10: #define MatFDColoring PetscFortranAddr
11: #define MatPartitioning PetscFortranAddr
12: #define MatAIJIndices PetscFortranAddr
13: #define MatType character*(80)
14: #define MatOption integer
15: #define MatAssemblyType integer
16: #define MatOrderingType character*(80)
17: #define MatSORType integer
18: #define MatInfoType integer
19: #define MatReuse integer
20: #define MatOperation integer
21: #define MatColoringType character*(80)
22: #define MatInfo double precision
23: #define MatFactorInfo double precision
24: #define MatDuplicateOption integer
25: #define MatStructure integer
26: #define MatPartitioningType character*(80)
27: #define MatNullSpace PetscFortranAddr
29: #define MatStencil integer
30: #define MatStencil_k 1
31: #define MatStencil_j 2
32: #define MatStencil_i 3
33: #define MatStencil_c 4
35: #define MATPARTITIONING_CURRENT 'current'
36: #define MATPARTITIONING_PARMETIS 'parmetis'
38: #define MATCOLORING_NATURAL 'natural'
39: #define MATCOLORING_SL 'sl'
40: #define MATCOLORING_LF 'lf'
41: #define MATCOLORING_ID 'id'
43: #define MATORDERING_NATURAL 'natural'
44: #define MATORDERING_ND 'nd'
45: #define MATORDERING_1WD '1wd'
46: #define MATORDERING_RCM 'rcm'
47: #define MATORDERING_QMD 'qmd'
48: #define MATORDERING_ROWLENGTH 'rowlength'
49: #define MATORDERING_DSC_ND 'dsc_nd'
50: #define MATORDERING_DSC_MMD 'dsc_mmd'
51: #define MATORDERING_DSC_MDF 'dsc_mdf'
53: #endif
55: !
56: ! Matrix types
57: !
58: #define MATSAME 'same'
59: #define MATSEQMAIJ 'seqmaij'
60: #define MATMPIMAIJ 'mpimaij'
61: #define MATMAIJ 'maij'
62: #define MATIS 'is'
63: #define MATMPIROWBS 'mpirowbs'
64: #define MATSEQAIJ 'seqaij'
65: #define MATMPIAIJ 'mpiaij'
66: #define MATAIJ 'aij'
67: #define MATSHELL 'shell'
68: #define MATSEQBDIAG 'seqbdiag'
69: #define MATMPIBDIAG 'mpibdiag'
70: #define MATBDIAG 'bdiag'
71: #define MATSEQDENSE 'seqdense'
72: #define MATMPIDENSE 'mpidense'
73: #define MATDENSE 'dense'
74: #define MATSEQBAIJ 'seqbaij'
75: #define MATMPIBAIJ 'mpibaij'
76: #define MATBAIJ 'baij'
77: #define MATMPIADJ 'mpiadj'
78: #define MATSEQSBAIJ 'seqsbaij'
79: #define MATMPISBAIJ 'mpisbaij'
80: #define MATSBAIJ 'sbaij'
81: #define MATDAAD 'daad'
82: #define MATMFFD 'mffd'
83: #define MATESI 'esi'
84: #define MATPETSCESI 'petscesi'
85: #define MATNORMAL 'normal'
86: #define MATSEQAIJSPOOLES 'seqaijspooles'
87: #define MATMPIAIJSPOOLES 'mpiaijspooles'
88: #define MATSEQSBAIJSPOOLES 'seqsbaijspooles'
89: #define MATMPISBAIJSPOOLES 'mpisbaijspooles'
90: #define MATSUPERLU 'superlu'
91: #define MATSUPERLU_DIST 'superlu_dist'
92: #define MATUMFPACK 'umfpack'
93: #define MATESSL 'essl'
94: #define MATLUSOL 'lusol'
95: #define MATAIJMUMPS 'aijmumps'
96: #define MATSBAIJMUMPS 'sbaijmumps'
97: #define MATDSCPACK 'dscpack'
98: #define MATMATLAB 'matlab'
100: #if !defined (PETSC_AVOID_DECLARATIONS)
102: !
103: ! Flag for matrix assembly
104: !
105: integer MAT_FLUSH_ASSEMBLY,MAT_FINAL_ASSEMBLY
107: parameter(MAT_FLUSH_ASSEMBLY=1,MAT_FINAL_ASSEMBLY=0)
108: !
109: ! Matrix options; must match those in include/petscmat.h
110: !
111: integer MAT_ROW_ORIENTED,MAT_COLUMN_ORIENTED,MAT_ROWS_SORTED
112: integer MAT_COLUMNS_SORTED,MAT_NO_NEW_NONZERO_LOCATIONS
113: integer MAT_YES_NEW_NONZERO_LOCATIONS,MAT_SYMMETRIC
114: integer MAT_STRUCTURALLY_SYMMETRIC,MAT_NO_NEW_DIAGONALS
115: integer MAT_YES_NEW_DIAGONALS,MAT_INODE_LIMIT_1
116: integer MAT_INODE_LIMIT_2,MAT_INODE_LIMIT_3,MAT_INODE_LIMIT_4
117: integer MAT_INODE_LIMIT_5,MAT_IGNORE_OFF_PROC_ENTRIES
118: integer MAT_ROWS_UNSORTED,MAT_COLUMNS_UNSORTED
119: integer MAT_NEW_NONZERO_LOCATION_ERR
120: integer MAT_NEW_NONZERO_ALLOCATION_ERR,MAT_USE_HASH_TABLE
121: integer MAT_KEEP_ZEROED_ROWS,MAT_IGNORE_ZERO_ENTRIES
122: integer MAT_USE_INODES,MAT_DO_NOT_USE_INODES
123: integer MAT_NOT_SYMMETRIC,MAT_HERMITIAN
124: integer MAT_NOT_STRUCTURALLY_SYMMETRIC,MAT_NOT_HERMITIAN
125: integer MAT_SYMMETRY_ETERNAL,MAT_NOT_SYMMETRY_ETERNAL
127: parameter (MAT_ROW_ORIENTED=1,MAT_COLUMN_ORIENTED=2)
128: parameter (MAT_ROWS_SORTED=4,MAT_COLUMNS_SORTED=8)
129: parameter (MAT_NO_NEW_NONZERO_LOCATIONS=16)
130: parameter (MAT_YES_NEW_NONZERO_LOCATIONS=32)
131: parameter (MAT_SYMMETRIC=64,MAT_STRUCTURALLY_SYMMETRIC=65)
132: parameter (MAT_NO_NEW_DIAGONALS=66,MAT_YES_NEW_DIAGONALS=67)
133: parameter (MAT_INODE_LIMIT_1=68,MAT_INODE_LIMIT_2=69)
134: parameter (MAT_INODE_LIMIT_3=70,MAT_INODE_LIMIT_4=71)
135: parameter (MAT_INODE_LIMIT_5=72,MAT_IGNORE_OFF_PROC_ENTRIES=73)
136: parameter (MAT_ROWS_UNSORTED=74,MAT_COLUMNS_UNSORTED=75)
137: parameter (MAT_NEW_NONZERO_LOCATION_ERR=76)
138: parameter (MAT_NEW_NONZERO_ALLOCATION_ERR=77)
139: parameter (MAT_USE_HASH_TABLE=78)
140: parameter (MAT_KEEP_ZEROED_ROWS=79)
141: parameter (MAT_IGNORE_ZERO_ENTRIES=80)
142: parameter (MAT_USE_INODES=81,MAT_DO_NOT_USE_INODES=82)
143: parameter (MAT_NOT_SYMMETRIC=83,MAT_HERMITIAN=84)
144: parameter (MAT_NOT_STRUCTURALLY_SYMMETRIC=85)
145: parameter (MAT_NOT_HERMITIAN=86)
146: parameter (MAT_SYMMETRY_ETERNAL=87,MAT_NOT_SYMMETRY_ETERNAL=88)
148: !
149: ! MatDuplicateOption
150: !
151: integer MAT_DO_NOT_COPY_VALUES,MAT_COPY_VALUES
152: parameter (MAT_DO_NOT_COPY_VALUES=0,MAT_COPY_VALUES=1)
153: !
154: ! Flags for PCSetOperators()
155: !
156: integer SAME_NONZERO_PATTERN,DIFFERENT_NONZERO_PATTERN
157: integer SAME_PRECONDITIONER
159: parameter (SAME_NONZERO_PATTERN = 0,DIFFERENT_NONZERO_PATTERN = 1)
160: parameter (SAME_PRECONDITIONER = 2)
162: !
163: ! Note: MAT_INFO_SIZE must equal # elements in MatInfo structure
164: ! (See petsc/include/petscmat.h)
165: !
166: integer MAT_INFO_SIZE
168: parameter (MAT_INFO_SIZE=14)
170: integer MAT_INFO_ROWS_GLOBAL,MAT_INFO_COLUMNS_GLOBAL
171: integer MAT_INFO_ROWS_LOCAL,MAT_INFO_COLUMNS_LOCAL
172: integer MAT_INFO_BLOCK_SIZE,MAT_INFO_NZ_ALLOCATED
173: integer MAT_INFO_NZ_USED,MAT_INFO_NZ_UNNEEDED
174: integer MAT_INFO_MEMORY,MAT_INFO_ASSEMBLIES
175: integer MAT_INFO_MALLOCS,MAT_INFO_FILL_RATIO_GIVEN
176: integer MAT_INFO_FILL_RATIO_NEEDED,MAT_INFO_FACTOR_MALLOCS
178: parameter (MAT_INFO_ROWS_GLOBAL=1,MAT_INFO_COLUMNS_GLOBAL=2)
179: parameter (MAT_INFO_ROWS_LOCAL=3,MAT_INFO_COLUMNS_LOCAL=4)
180: parameter (MAT_INFO_BLOCK_SIZE=5,MAT_INFO_NZ_ALLOCATED=6)
181: parameter (MAT_INFO_NZ_USED=7,MAT_INFO_NZ_UNNEEDED=8)
182: parameter (MAT_INFO_MEMORY=9,MAT_INFO_ASSEMBLIES=10)
183: parameter (MAT_INFO_MALLOCS=11,MAT_INFO_FILL_RATIO_GIVEN=12)
184: parameter (MAT_INFO_FILL_RATIO_NEEDED=13)
185: parameter (MAT_INFO_FACTOR_MALLOCS=14)
186: !
187: ! MatReuse
188: !
189: integer MAT_INITIAL_MATRIX,MAT_REUSE_MATRIX
191: parameter (MAT_INITIAL_MATRIX=0,MAT_REUSE_MATRIX=1)
193: !
194: ! MatInfoType
195: !
196: integer MAT_LOCAL,MAT_GLOBAL_MAX,MAT_GLOBAL_SUM
198: parameter (MAT_LOCAL=1,MAT_GLOBAL_MAX=2,MAT_GLOBAL_SUM=3)
200: !
201: ! Note: MAT_FACTORINFO_SIZE must equal # elements in MatFactorInfo structure
202: ! (See petsc/include/petscmat.h)
203: !
204: integer MAT_FACTORINFO_SIZE
206: parameter (MAT_FACTORINFO_SIZE=11)
208: integer MAT_FACTORINFO_LEVELS
209: integer MAT_FACTORINFO_FILL
210: integer MAT_FACTORINFO_DIAGONAL_FILL
211: integer MAT_FACTORINFO_DT
212: integer MAT_FACTORINFO_DTCOL
213: integer MAT_FACTORINFO_DTCOUNT
214: integer MAT_FACTORINFO_DAMPING
215: integer MAT_FACTORINFO_SHIFT
216: integer MAT_FACTORINFO_SHIFT_FRACTION
217: integer MAT_FACTORINFO_ZERO_PIVOT
218: integer MAT_FACTORINFO_PIVOT_IN_BLOCKS
220: parameter (MAT_FACTORINFO_DAMPING = 1)
221: parameter (MAT_FACTORINFO_SHIFT = 2)
222: parameter (MAT_FACTORINFO_SHIFT_FRACTION = 3)
223: parameter (MAT_FACTORINFO_DIAGONAL_FILL = 4)
224: parameter (MAT_FACTORINFO_DT = 5)
225: parameter (MAT_FACTORINFO_DTCOL = 6)
226: parameter (MAT_FACTORINFO_DTCOUNT = 7)
227: parameter (MAT_FACTORINFO_LEVELS = 8)
228: parameter (MAT_FACTORINFO_FILL = 9)
229: parameter (MAT_FACTORINFO_PIVOT_IN_BLOCKS = 10)
230: parameter (MAT_FACTORINFO_ZERO_PIVOT = 11)
233: !
234: ! Options for SOR and SSOR
235: ! MatSorType may be bitwise ORd together, so do not change the numbers
236: !
237: integer SOR_FORWARD_SWEEP,SOR_BACKWARD_SWEEP,SOR_SYMMETRIC_SWEEP
238: integer SOR_LOCAL_FORWARD_SWEEP,SOR_LOCAL_BACKWARD_SWEEP
239: integer SOR_LOCAL_SYMMETRIC_SWEEP,SOR_ZERO_INITIAL_GUESS
240: integer SOR_EISENSTAT,SOR_APPLY_UPPER,SOR_APPLY_LOWER
242: parameter (SOR_FORWARD_SWEEP=1,SOR_BACKWARD_SWEEP=2)
243: parameter (SOR_SYMMETRIC_SWEEP=3,SOR_LOCAL_FORWARD_SWEEP=4)
244: parameter (SOR_LOCAL_BACKWARD_SWEEP=8)
245: parameter (SOR_LOCAL_SYMMETRIC_SWEEP=12)
246: parameter (SOR_ZERO_INITIAL_GUESS=16,SOR_EISENSTAT=32)
247: parameter (SOR_APPLY_UPPER=64,SOR_APPLY_LOWER=128)
248: !
249: ! MatOperation
250: !
251: integer MATOP_SET_VALUES
252: integer MATOP_GET_ROW
253: integer MATOP_RESTORE_ROW
254: integer MATOP_MULT
255: integer MATOP_MULT_ADD
256: integer MATOP_MULT_TRANSPOSE
257: integer MATOP_MULT_TRANSPOSE_ADD
258: integer MATOP_SOLVE
259: integer MATOP_SOLVE_ADD
260: integer MATOP_SOLVE_TRANSPOSE
261: integer MATOP_SOLVE_TRANSPOSE_ADD
262: integer MATOP_LUFACTOR
263: integer MATOP_CHOLESKYFACTOR
264: integer MATOP_RELAX
265: integer MATOP_TRANSPOSE
266: integer MATOP_GETINFO
267: integer MATOP_EQUAL
268: integer MATOP_GET_DIAGONAL
269: integer MATOP_DIAGONAL_SCALE
270: integer MATOP_NORM
271: integer MATOP_ASSEMBLY_BEGIN
272: integer MATOP_ASSEMBLY_END
273: integer MATOP_COMPRESS
274: integer MATOP_SET_OPTION
275: integer MATOP_ZERO_ENTRIES
276: integer MATOP_ZERO_ROWS
277: integer MATOP_LUFACTOR_SYMBOLIC
278: integer MATOP_LUFACTOR_NUMERIC
279: integer MATOP_CHOLESKY_FACTOR_SYMBOLIC
280: integer MATOP_CHOLESKY_FACTOR_NUMERIC
281: integer MATOP_GET_SIZE
282: integer MATOP_GET_LOCAL_SIZE
283: integer MATOP_GET_OWNERSHIP_RANGE
284: integer MATOP_ILUFACTOR_SYMBOLIC
285: integer MATOP_ICCFACTOR_SYMBOLIC
286: integer MATOP_GET_ARRAY
287: integer MATOP_RESTORE_ARRAY
289: integer MATOP_CONVERT_SAME_TYPE
290: integer MATOP_FORWARD_SOLVE
291: integer MATOP_BACKWARD_SOLVE
292: integer MATOP_ILUFACTOR
293: integer MATOP_ICCFACTOR
294: integer MATOP_AXPY
295: integer MATOP_GET_SUBMATRICES
296: integer MATOP_INCREASE_OVERLAP
297: integer MATOP_GET_VALUES
298: integer MATOP_COPY
299: integer MATOP_PRINT_HELP
300: integer MATOP_SCALE
301: integer MATOP_SHIFT
302: integer MATOP_DIAGONAL_SHIFT
303: integer MATOP_ILUDT_FACTOR
304: integer MATOP_GET_BLOCK_SIZE
306: integer MATOP_GET_ROW_IJ
307: integer MATOP_RESTORE_ROW_IJ
308: integer MATOP_GET_COLUMN_IJ
309: integer MATOP_RESTORE_COLUMN_IJ
310: integer MATOP_FDCOLORING_CREATE
311: integer MATOP_COLORING_PATCH
312: integer MATOP_SET_UNFACTORED
313: integer MATOP_PERMUTE
314: integer MATOP_SET_VALUES_BLOCKED
316: integer MATOP_DESTROY
317: integer MATOP_VIEW
319: parameter(MATOP_SET_VALUES=0)
320: parameter(MATOP_GET_ROW=1)
321: parameter(MATOP_RESTORE_ROW=2)
322: parameter(MATOP_MULT=3)
323: parameter(MATOP_MULT_ADD=4)
324: parameter(MATOP_MULT_TRANSPOSE=5)
325: parameter(MATOP_MULT_TRANSPOSE_ADD=6)
326: parameter(MATOP_SOLVE=7)
327: parameter(MATOP_SOLVE_ADD=8)
328: parameter(MATOP_SOLVE_TRANSPOSE=9)
329: parameter(MATOP_SOLVE_TRANSPOSE_ADD=10)
330: parameter(MATOP_LUFACTOR=11)
331: parameter(MATOP_CHOLESKYFACTOR=12)
332: parameter(MATOP_RELAX=13)
333: parameter(MATOP_TRANSPOSE=14)
334: parameter(MATOP_GETINFO=15)
335: parameter(MATOP_EQUAL=16)
336: parameter(MATOP_GET_DIAGONAL=17)
337: parameter(MATOP_DIAGONAL_SCALE=18)
338: parameter(MATOP_NORM=19)
339: parameter(MATOP_ASSEMBLY_BEGIN=20)
340: parameter(MATOP_ASSEMBLY_END=21)
341: parameter(MATOP_COMPRESS=22)
342: parameter(MATOP_SET_OPTION=23)
343: parameter(MATOP_ZERO_ENTRIES=24)
344: parameter(MATOP_ZERO_ROWS=25)
345: parameter(MATOP_LUFACTOR_SYMBOLIC=26)
346: parameter(MATOP_LUFACTOR_NUMERIC=27)
347: parameter(MATOP_CHOLESKY_FACTOR_SYMBOLIC=28)
348: parameter(MATOP_CHOLESKY_FACTOR_NUMERIC=29)
349: parameter(MATOP_GET_SIZE=30)
350: parameter(MATOP_GET_LOCAL_SIZE=31)
351: parameter(MATOP_GET_OWNERSHIP_RANGE=32)
352: parameter(MATOP_ILUFACTOR_SYMBOLIC=33)
353: parameter(MATOP_ICCFACTOR_SYMBOLIC=34)
354: parameter(MATOP_GET_ARRAY=35)
355: parameter(MATOP_RESTORE_ARRAY=36)
357: parameter(MATOP_CONVERT_SAME_TYPE=37)
358: parameter(MATOP_FORWARD_SOLVE=38)
359: parameter(MATOP_BACKWARD_SOLVE=39)
360: parameter(MATOP_ILUFACTOR=40)
361: parameter(MATOP_ICCFACTOR=41)
362: parameter(MATOP_AXPY=42)
363: parameter(MATOP_GET_SUBMATRICES=43)
364: parameter(MATOP_INCREASE_OVERLAP=44)
365: parameter(MATOP_GET_VALUES=45)
366: parameter(MATOP_COPY=46)
367: parameter(MATOP_PRINT_HELP=47)
368: parameter(MATOP_SCALE=48)
369: parameter(MATOP_SHIFT=49)
370: parameter(MATOP_DIAGONAL_SHIFT=50)
371: parameter(MATOP_ILUDT_FACTOR=51)
372: parameter(MATOP_GET_BLOCK_SIZE=52)
374: parameter(MATOP_GET_ROW_IJ=53)
375: parameter(MATOP_RESTORE_ROW_IJ=54)
376: parameter(MATOP_GET_COLUMN_IJ=55)
377: parameter(MATOP_RESTORE_COLUMN_IJ=56)
378: parameter(MATOP_FDCOLORING_CREATE=57)
379: parameter(MATOP_COLORING_PATCH=58)
380: parameter(MATOP_SET_UNFACTORED=59)
381: parameter(MATOP_PERMUTE=60)
382: parameter(MATOP_SET_VALUES_BLOCKED=61)
385: parameter(MATOP_DESTROY=250)
386: parameter(MATOP_VIEW=251)
387: !
388: !
389: !
390: integer MATRIX_BINARY_FORMAT_DENSE
391: parameter (MATRIX_BINARY_FORMAT_DENSE=-1)
392: !
393: ! End of Fortran include file for the Mat package in PETSc
394: !
395: #endif