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'
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
124: parameter (MAT_ROW_ORIENTED=1,MAT_COLUMN_ORIENTED=2)
125: parameter (MAT_ROWS_SORTED=4,MAT_COLUMNS_SORTED=8)
126: parameter (MAT_NO_NEW_NONZERO_LOCATIONS=16)
127: parameter (MAT_YES_NEW_NONZERO_LOCATIONS=32)
128: parameter (MAT_SYMMETRIC=64,MAT_STRUCTURALLY_SYMMETRIC=65)
129: parameter (MAT_NO_NEW_DIAGONALS=66,MAT_YES_NEW_DIAGONALS=67)
130: parameter (MAT_INODE_LIMIT_1=68,MAT_INODE_LIMIT_2=69)
131: parameter (MAT_INODE_LIMIT_3=70,MAT_INODE_LIMIT_4=71)
132: parameter (MAT_INODE_LIMIT_5=72,MAT_IGNORE_OFF_PROC_ENTRIES=73)
133: parameter (MAT_ROWS_UNSORTED=74,MAT_COLUMNS_UNSORTED=75)
134: parameter (MAT_NEW_NONZERO_LOCATION_ERR=76)
135: parameter (MAT_NEW_NONZERO_ALLOCATION_ERR=77)
136: parameter (MAT_USE_HASH_TABLE=78)
137: parameter (MAT_KEEP_ZEROED_ROWS=79)
138: parameter (MAT_IGNORE_ZERO_ENTRIES=80)
139: parameter (MAT_USE_INODES=81,MAT_DO_NOT_USE_INODES=82)
140: !
141: ! MatDuplicateOption
142: !
143: integer MAT_DO_NOT_COPY_VALUES,MAT_COPY_VALUES
144: parameter (MAT_DO_NOT_COPY_VALUES=0,MAT_COPY_VALUES=1)
145: !
146: ! Flags for PCSetOperators()
147: !
148: integer SAME_NONZERO_PATTERN,DIFFERENT_NONZERO_PATTERN
149: integer SAME_PRECONDITIONER
151: parameter (SAME_NONZERO_PATTERN = 0,DIFFERENT_NONZERO_PATTERN = 1)
152: parameter (SAME_PRECONDITIONER = 2)
154: !
155: ! Note: MAT_INFO_SIZE must equal # elements in MatInfo structure
156: ! (See petsc/include/petscmat.h)
157: !
158: integer MAT_INFO_SIZE
160: parameter (MAT_INFO_SIZE=14)
162: integer MAT_INFO_ROWS_GLOBAL,MAT_INFO_COLUMNS_GLOBAL
163: integer MAT_INFO_ROWS_LOCAL,MAT_INFO_COLUMNS_LOCAL
164: integer MAT_INFO_BLOCK_SIZE,MAT_INFO_NZ_ALLOCATED
165: integer MAT_INFO_NZ_USED,MAT_INFO_NZ_UNNEEDED
166: integer MAT_INFO_MEMORY,MAT_INFO_ASSEMBLIES
167: integer MAT_INFO_MALLOCS,MAT_INFO_FILL_RATIO_GIVEN
168: integer MAT_INFO_FILL_RATIO_NEEDED,MAT_INFO_FACTOR_MALLOCS
170: parameter (MAT_INFO_ROWS_GLOBAL=1,MAT_INFO_COLUMNS_GLOBAL=2)
171: parameter (MAT_INFO_ROWS_LOCAL=3,MAT_INFO_COLUMNS_LOCAL=4)
172: parameter (MAT_INFO_BLOCK_SIZE=5,MAT_INFO_NZ_ALLOCATED=6)
173: parameter (MAT_INFO_NZ_USED=7,MAT_INFO_NZ_UNNEEDED=8)
174: parameter (MAT_INFO_MEMORY=9,MAT_INFO_ASSEMBLIES=10)
175: parameter (MAT_INFO_MALLOCS=11,MAT_INFO_FILL_RATIO_GIVEN=12)
176: parameter (MAT_INFO_FILL_RATIO_NEEDED=13)
177: parameter (MAT_INFO_FACTOR_MALLOCS=14)
178: !
179: ! MatReuse
180: !
181: integer MAT_INITIAL_MATRIX,MAT_REUSE_MATRIX
183: parameter (MAT_INITIAL_MATRIX=0,MAT_REUSE_MATRIX=1)
185: !
186: ! MatInfoType
187: !
188: integer MAT_LOCAL,MAT_GLOBAL_MAX,MAT_GLOBAL_SUM
190: parameter (MAT_LOCAL=1,MAT_GLOBAL_MAX=2,MAT_GLOBAL_SUM=3)
192: !
193: ! Note: MAT_FACTORINFO_SIZE must equal # elements in MatFactorInfo structure
194: ! (See petsc/include/petscmat.h)
195: !
196: integer MAT_FACTORINFO_SIZE
198: parameter (MAT_FACTORINFO_SIZE=11)
200: integer MAT_FACTORINFO_LEVELS
201: integer MAT_FACTORINFO_FILL
202: integer MAT_FACTORINFO_DIAGONAL_FILL
203: integer MAT_FACTORINFO_DT
204: integer MAT_FACTORINFO_DTCOL
205: integer MAT_FACTORINFO_DTCOUNT
206: integer MAT_FACTORINFO_DAMPING
207: integer MAT_FACTORINFO_SHIFT
208: integer MAT_FACTORINFO_SHIFT_FRACTION
209: integer MAT_FACTORINFO_ZERO_PIVOT
210: integer MAT_FACTORINFO_PIVOT_IN_BLOCKS
212: parameter (MAT_FACTORINFO_DAMPING = 1)
213: parameter (MAT_FACTORINFO_SHIFT = 2)
214: parameter (MAT_FACTORINFO_SHIFT_FRACTION = 3)
215: parameter (MAT_FACTORINFO_DIAGONAL_FILL = 4)
216: parameter (MAT_FACTORINFO_DT = 5)
217: parameter (MAT_FACTORINFO_DTCOL = 6)
218: parameter (MAT_FACTORINFO_DTCOUNT = 7)
219: parameter (MAT_FACTORINFO_LEVELS = 8)
220: parameter (MAT_FACTORINFO_FILL = 9)
221: parameter (MAT_FACTORINFO_PIVOT_IN_BLOCKS = 10)
222: parameter (MAT_FACTORINFO_ZERO_PIVOT = 11)
225: !
226: ! Options for SOR and SSOR
227: ! MatSorType may be bitwise ORd together, so do not change the numbers
228: !
229: integer SOR_FORWARD_SWEEP,SOR_BACKWARD_SWEEP,SOR_SYMMETRIC_SWEEP
230: integer SOR_LOCAL_FORWARD_SWEEP,SOR_LOCAL_BACKWARD_SWEEP
231: integer SOR_LOCAL_SYMMETRIC_SWEEP,SOR_ZERO_INITIAL_GUESS
232: integer SOR_EISENSTAT,SOR_APPLY_UPPER,SOR_APPLY_LOWER
234: parameter (SOR_FORWARD_SWEEP=1,SOR_BACKWARD_SWEEP=2)
235: parameter (SOR_SYMMETRIC_SWEEP=3,SOR_LOCAL_FORWARD_SWEEP=4)
236: parameter (SOR_LOCAL_BACKWARD_SWEEP=8)
237: parameter (SOR_LOCAL_SYMMETRIC_SWEEP=12)
238: parameter (SOR_ZERO_INITIAL_GUESS=16,SOR_EISENSTAT=32)
239: parameter (SOR_APPLY_UPPER=64,SOR_APPLY_LOWER=128)
240: !
241: ! MatOperation
242: !
243: integer MATOP_SET_VALUES
244: integer MATOP_GET_ROW
245: integer MATOP_RESTORE_ROW
246: integer MATOP_MULT
247: integer MATOP_MULT_ADD
248: integer MATOP_MULT_TRANSPOSE
249: integer MATOP_MULT_TRANSPOSE_ADD
250: integer MATOP_SOLVE
251: integer MATOP_SOLVE_ADD
252: integer MATOP_SOLVE_TRANSPOSE
253: integer MATOP_SOLVE_TRANSPOSE_ADD
254: integer MATOP_LUFACTOR
255: integer MATOP_CHOLESKYFACTOR
256: integer MATOP_RELAX
257: integer MATOP_TRANSPOSE
258: integer MATOP_GETINFO
259: integer MATOP_EQUAL
260: integer MATOP_GET_DIAGONAL
261: integer MATOP_DIAGONAL_SCALE
262: integer MATOP_NORM
263: integer MATOP_ASSEMBLY_BEGIN
264: integer MATOP_ASSEMBLY_END
265: integer MATOP_COMPRESS
266: integer MATOP_SET_OPTION
267: integer MATOP_ZERO_ENTRIES
268: integer MATOP_ZERO_ROWS
269: integer MATOP_LUFACTOR_SYMBOLIC
270: integer MATOP_LUFACTOR_NUMERIC
271: integer MATOP_CHOLESKY_FACTOR_SYMBOLIC
272: integer MATOP_CHOLESKY_FACTOR_NUMERIC
273: integer MATOP_GET_SIZE
274: integer MATOP_GET_LOCAL_SIZE
275: integer MATOP_GET_OWNERSHIP_RANGE
276: integer MATOP_ILUFACTOR_SYMBOLIC
277: integer MATOP_ICCFACTOR_SYMBOLIC
278: integer MATOP_GET_ARRAY
279: integer MATOP_RESTORE_ARRAY
281: integer MATOP_CONVERT_SAME_TYPE
282: integer MATOP_FORWARD_SOLVE
283: integer MATOP_BACKWARD_SOLVE
284: integer MATOP_ILUFACTOR
285: integer MATOP_ICCFACTOR
286: integer MATOP_AXPY
287: integer MATOP_GET_SUBMATRICES
288: integer MATOP_INCREASE_OVERLAP
289: integer MATOP_GET_VALUES
290: integer MATOP_COPY
291: integer MATOP_PRINT_HELP
292: integer MATOP_SCALE
293: integer MATOP_SHIFT
294: integer MATOP_DIAGONAL_SHIFT
295: integer MATOP_ILUDT_FACTOR
296: integer MATOP_GET_BLOCK_SIZE
298: integer MATOP_GET_ROW_IJ
299: integer MATOP_RESTORE_ROW_IJ
300: integer MATOP_GET_COLUMN_IJ
301: integer MATOP_RESTORE_COLUMN_IJ
302: integer MATOP_FDCOLORING_CREATE
303: integer MATOP_COLORING_PATCH
304: integer MATOP_SET_UNFACTORED
305: integer MATOP_PERMUTE
306: integer MATOP_SET_VALUES_BLOCKED
308: integer MATOP_DESTROY
309: integer MATOP_VIEW
311: parameter(MATOP_SET_VALUES=0)
312: parameter(MATOP_GET_ROW=1)
313: parameter(MATOP_RESTORE_ROW=2)
314: parameter(MATOP_MULT=3)
315: parameter(MATOP_MULT_ADD=4)
316: parameter(MATOP_MULT_TRANSPOSE=5)
317: parameter(MATOP_MULT_TRANSPOSE_ADD=6)
318: parameter(MATOP_SOLVE=7)
319: parameter(MATOP_SOLVE_ADD=8)
320: parameter(MATOP_SOLVE_TRANSPOSE=9)
321: parameter(MATOP_SOLVE_TRANSPOSE_ADD=10)
322: parameter(MATOP_LUFACTOR=11)
323: parameter(MATOP_CHOLESKYFACTOR=12)
324: parameter(MATOP_RELAX=13)
325: parameter(MATOP_TRANSPOSE=14)
326: parameter(MATOP_GETINFO=15)
327: parameter(MATOP_EQUAL=16)
328: parameter(MATOP_GET_DIAGONAL=17)
329: parameter(MATOP_DIAGONAL_SCALE=18)
330: parameter(MATOP_NORM=19)
331: parameter(MATOP_ASSEMBLY_BEGIN=20)
332: parameter(MATOP_ASSEMBLY_END=21)
333: parameter(MATOP_COMPRESS=22)
334: parameter(MATOP_SET_OPTION=23)
335: parameter(MATOP_ZERO_ENTRIES=24)
336: parameter(MATOP_ZERO_ROWS=25)
337: parameter(MATOP_LUFACTOR_SYMBOLIC=26)
338: parameter(MATOP_LUFACTOR_NUMERIC=27)
339: parameter(MATOP_CHOLESKY_FACTOR_SYMBOLIC=28)
340: parameter(MATOP_CHOLESKY_FACTOR_NUMERIC=29)
341: parameter(MATOP_GET_SIZE=30)
342: parameter(MATOP_GET_LOCAL_SIZE=31)
343: parameter(MATOP_GET_OWNERSHIP_RANGE=32)
344: parameter(MATOP_ILUFACTOR_SYMBOLIC=33)
345: parameter(MATOP_ICCFACTOR_SYMBOLIC=34)
346: parameter(MATOP_GET_ARRAY=35)
347: parameter(MATOP_RESTORE_ARRAY=36)
349: parameter(MATOP_CONVERT_SAME_TYPE=37)
350: parameter(MATOP_FORWARD_SOLVE=38)
351: parameter(MATOP_BACKWARD_SOLVE=39)
352: parameter(MATOP_ILUFACTOR=40)
353: parameter(MATOP_ICCFACTOR=41)
354: parameter(MATOP_AXPY=42)
355: parameter(MATOP_GET_SUBMATRICES=43)
356: parameter(MATOP_INCREASE_OVERLAP=44)
357: parameter(MATOP_GET_VALUES=45)
358: parameter(MATOP_COPY=46)
359: parameter(MATOP_PRINT_HELP=47)
360: parameter(MATOP_SCALE=48)
361: parameter(MATOP_SHIFT=49)
362: parameter(MATOP_DIAGONAL_SHIFT=50)
363: parameter(MATOP_ILUDT_FACTOR=51)
364: parameter(MATOP_GET_BLOCK_SIZE=52)
366: parameter(MATOP_GET_ROW_IJ=53)
367: parameter(MATOP_RESTORE_ROW_IJ=54)
368: parameter(MATOP_GET_COLUMN_IJ=55)
369: parameter(MATOP_RESTORE_COLUMN_IJ=56)
370: parameter(MATOP_FDCOLORING_CREATE=57)
371: parameter(MATOP_COLORING_PATCH=58)
372: parameter(MATOP_SET_UNFACTORED=59)
373: parameter(MATOP_PERMUTE=60)
374: parameter(MATOP_SET_VALUES_BLOCKED=61)
377: parameter(MATOP_DESTROY=250)
378: parameter(MATOP_VIEW=251)
379: !
380: !
381: !
382: integer MATRIX_BINARY_FORMAT_DENSE
383: parameter (MATRIX_BINARY_FORMAT_DENSE=-1)
384: !
385: ! End of Fortran include file for the Mat package in PETSc
386: !
387: #endif