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 MatILUInfo double precision
24: #define MatLUInfo double precision
25: #define MatCholeskyInfo double precision
26: #define MatDuplicateOption integer
27: #define MatStructure integer
28: #define MatPartitioningType character*(80)
29: #define MatNullSpace PetscFortranAddr
31: #define MatStencil integer
32: #define MatStencil_k 1
33: #define MatStencil_j 2
34: #define MatStencil_i 3
35: #define MatStencil_c 4
37: #define MATPARTITIONING_CURRENT 'current'
38: #define MATPARTITIONING_PARMETIS 'parmetis'
40: #define MATCOLORING_NATURAL 'natural'
41: #define MATCOLORING_SL 'sl'
42: #define MATCOLORING_LF 'lf'
43: #define MATCOLORING_ID 'id'
45: #define MATORDERING_NATURAL 'natural'
46: #define MATORDERING_ND 'nd'
47: #define MATORDERING_1WD '1wd'
48: #define MATORDERING_RCM 'rcm'
49: #define MATORDERING_QMD 'qmd'
50: #define MATORDERING_ROWLENGTH 'rowlength'
51: #define MATORDERING_DSC_ND 'dsc_nd'
52: #define MATORDERING_DSC_MMD 'dsc_mmd'
53: #define MATORDERING_DSC_MDF 'dsc_mdf'
55: #endif
57: !
58: ! Matrix types
59: !
60: #define MATSAME 'same'
61: #define MATSEQMAIJ 'seqmaij'
62: #define MATMPIMAIJ 'mpimaij'
63: #define MATIS 'is'
64: #define MATMPIROWBS 'mpirowbs'
65: #define MATSEQDENSE 'seqdense'
66: #define MATSEQAIJ 'seqaij'
67: #define MATMPIAIJ 'mpiaij'
68: #define MATSHELL 'shell'
69: #define MATSEQBDIAG 'seqbdiag'
70: #define MATMPIBDIAG 'mpibdiag'
71: #define MATMPIDENSE 'mpidense'
72: #define MATSEQBAIJ 'seqbaij'
73: #define MATMPIBAIJ 'mpibaij'
74: #define MATMPIADJ 'mpiadj'
75: #define MATSEQSBAIJ 'seqsbaij'
76: #define MATMPISBAIJ 'mpisbaij'
79: #if !defined (PETSC_AVOID_DECLARATIONS)
81: !
82: ! Flag for matrix assembly
83: !
84: integer MAT_FLUSH_ASSEMBLY,MAT_FINAL_ASSEMBLY
86: parameter(MAT_FLUSH_ASSEMBLY=1,MAT_FINAL_ASSEMBLY=0)
87: !
88: ! Matrix options; must match those in include/petscmat.h
89: !
90: integer MAT_ROW_ORIENTED,MAT_COLUMN_ORIENTED,MAT_ROWS_SORTED
91: integer MAT_COLUMNS_SORTED,MAT_NO_NEW_NONZERO_LOCATIONS
92: integer MAT_YES_NEW_NONZERO_LOCATIONS,MAT_SYMMETRIC
93: integer MAT_STRUCTURALLY_SYMMETRIC,MAT_NO_NEW_DIAGONALS
94: integer MAT_YES_NEW_DIAGONALS,MAT_INODE_LIMIT_1
95: integer MAT_INODE_LIMIT_2,MAT_INODE_LIMIT_3,MAT_INODE_LIMIT_4
96: integer MAT_INODE_LIMIT_5,MAT_IGNORE_OFF_PROC_ENTRIES
97: integer MAT_ROWS_UNSORTED,MAT_COLUMNS_UNSORTED
98: integer MAT_NEW_NONZERO_LOCATION_ERR
99: integer MAT_NEW_NONZERO_ALLOCATION_ERR,MAT_USE_HASH_TABLE
100: integer MAT_KEEP_ZEROED_ROWS,MAT_IGNORE_ZERO_ENTRIES
101: integer MAT_USE_INODES,MAT_DO_NOT_USE_INODES
102: integer MAT_USE_SINGLE_PRECISION_SOLVES
104: parameter (MAT_ROW_ORIENTED=1,MAT_COLUMN_ORIENTED=2)
105: parameter (MAT_ROWS_SORTED=4,MAT_COLUMNS_SORTED=8)
106: parameter (MAT_NO_NEW_NONZERO_LOCATIONS=16)
107: parameter (MAT_YES_NEW_NONZERO_LOCATIONS=32)
108: parameter (MAT_SYMMETRIC=64,MAT_STRUCTURALLY_SYMMETRIC=65)
109: parameter (MAT_NO_NEW_DIAGONALS=66,MAT_YES_NEW_DIAGONALS=67)
110: parameter (MAT_INODE_LIMIT_1=68,MAT_INODE_LIMIT_2=69)
111: parameter (MAT_INODE_LIMIT_3=70,MAT_INODE_LIMIT_4=71)
112: parameter (MAT_INODE_LIMIT_5=72,MAT_IGNORE_OFF_PROC_ENTRIES=73)
113: parameter (MAT_ROWS_UNSORTED=74,MAT_COLUMNS_UNSORTED=75)
114: parameter (MAT_NEW_NONZERO_LOCATION_ERR=76)
115: parameter (MAT_NEW_NONZERO_ALLOCATION_ERR=77)
116: parameter (MAT_USE_HASH_TABLE=78)
117: parameter (MAT_KEEP_ZEROED_ROWS=79)
118: parameter (MAT_IGNORE_ZERO_ENTRIES=80)
119: parameter (MAT_USE_INODES=81,MAT_DO_NOT_USE_INODES=82)
120: parameter (MAT_USE_SINGLE_PRECISION_SOLVES=83)
121: !
122: ! MatDuplicateOption
123: !
124: integer MAT_DO_NOT_COPY_VALUES,MAT_COPY_VALUES
125: parameter (MAT_DO_NOT_COPY_VALUES=0,MAT_COPY_VALUES=1)
126: !
127: ! Flags for PCSetOperators()
128: !
129: integer SAME_NONZERO_PATTERN,DIFFERENT_NONZERO_PATTERN
130: integer SAME_PRECONDITIONER
132: parameter (SAME_NONZERO_PATTERN = 0,DIFFERENT_NONZERO_PATTERN = 1)
133: parameter (SAME_PRECONDITIONER = 2)
135: !
136: ! Note: MAT_INFO_SIZE must equal # elements in MatInfo structure
137: ! (See petsc/include/petscmat.h)
138: !
139: integer MAT_INFO_SIZE
141: parameter (MAT_INFO_SIZE=14)
143: integer MAT_INFO_ROWS_GLOBAL,MAT_INFO_COLUMNS_GLOBAL
144: integer MAT_INFO_ROWS_LOCAL,MAT_INFO_COLUMNS_LOCAL
145: integer MAT_INFO_BLOCK_SIZE,MAT_INFO_NZ_ALLOCATED
146: integer MAT_INFO_NZ_USED,MAT_INFO_NZ_UNNEEDED
147: integer MAT_INFO_MEMORY,MAT_INFO_ASSEMBLIES
148: integer MAT_INFO_MALLOCS,MAT_INFO_FILL_RATIO_GIVEN
149: integer MAT_INFO_FILL_RATIO_NEEDED,MAT_INFO_FACTOR_MALLOCS
151: parameter (MAT_INFO_ROWS_GLOBAL=1,MAT_INFO_COLUMNS_GLOBAL=2)
152: parameter (MAT_INFO_ROWS_LOCAL=3,MAT_INFO_COLUMNS_LOCAL=4)
153: parameter (MAT_INFO_BLOCK_SIZE=5,MAT_INFO_NZ_ALLOCATED=6)
154: parameter (MAT_INFO_NZ_USED=7,MAT_INFO_NZ_UNNEEDED=8)
155: parameter (MAT_INFO_MEMORY=9,MAT_INFO_ASSEMBLIES=10)
156: parameter (MAT_INFO_MALLOCS=11,MAT_INFO_FILL_RATIO_GIVEN=12)
157: parameter (MAT_INFO_FILL_RATIO_NEEDED=13)
158: parameter (MAT_INFO_FACTOR_MALLOCS=14)
159: !
160: ! MatReuse
161: !
162: integer MAT_INITIAL_MATRIX,MAT_REUSE_MATRIX
164: parameter (MAT_INITIAL_MATRIX=0,MAT_REUSE_MATRIX=1)
166: !
167: ! MatInfoType
168: !
169: integer MAT_LOCAL,MAT_GLOBAL_MAX,MAT_GLOBAL_SUM
171: parameter (MAT_LOCAL=1,MAT_GLOBAL_MAX=2,MAT_GLOBAL_SUM=3)
173: !
174: ! Note: MAT_ILUINFO_SIZE must equal # elements in MatILUInfo structure
175: ! (See petsc/include/petscmat.h)
176: !
177: integer MAT_ILUINFO_SIZE
179: parameter (MAT_ILUINFO_SIZE=109)
181: integer MAT_ILUINFO_LEVELS
182: integer MAT_ILUINFO_FILL
183: integer MAT_ILUINFO_DIAGONAL_FILL
184: integer MAT_ILUINFO_DT
185: integer MAT_ILUINFO_DTCOL
186: integer MAT_ILUINFO_DTCOUNT
187: integer MAT_ILUINFO_DAMPING
188: integer MAT_ILUINFO_DAMP
189: integer MAT_ILUINFO_PIVOT_ZERO
190: integer MAT_ILUINFO_PIVOT_IN_BLOCKS
192: parameter (MAT_ILUINFO_LEVELS = 1)
193: parameter (MAT_ILUINFO_FILL = 2)
194: parameter (MAT_ILUINFO_DIAGONAL_FILL = 3)
195: parameter (MAT_ILUINFO_DT = 4)
196: parameter (MAT_ILUINFO_DTCOL = 5)
197: parameter (MAT_ILUINFO_DTCOUNT = 6)
198: parameter (MAT_ILUINFO_DAMPING = 7)
199: parameter (MAT_ILUINFO_DAMP = 8)
200: parameter (MAT_ILUINFO_PIVOT_ZERO = 9)
201: parameter (MAT_ILUINFO_PIVOT_IN_BLOCKS = 10)
203: !
204: ! Note: MAT_LUINFO_SIZE must equal # elements in MatLUInfo structure
205: ! (See petsc/include/petscmat.h)
206: !
207: integer MAT_LUINFO_SIZE
209: parameter (MAT_LUINFO_SIZE = 6)
211: integer MAT_LUINFO_FILL
212: integer MAT_LUINFO_DTCOL
213: integer MAT_LUINFO_DAMPING
214: integer MAT_LUINFO_DAMP
215: integer MAT_LUINFO_PIVOT_ZERO
216: integer MAT_LUINFO_PIVOT_IN_BLOCKS
218: parameter (MAT_LUINFO_FILL = 1)
219: parameter (MAT_LUINFO_DTCOL = 2)
220: parameter (MAT_LUINFO_DAMPING = 3)
221: parameter (MAT_LUINFO_DAMP = 4)
222: parameter (MAT_LUINFO_PIVOT_ZERO = 5)
223: parameter (MAT_LUINFO_PIVOT_IN_BLOCKS = 6)
226: !
227: ! Note: MAT_CHOLESKYINFO_SIZE must equal # elements in MatCholeskyInfo structure
228: ! (See petsc/include/petscmat.h)
229: !
230: integer MAT_CHOLESKYINFO_SIZE
232: parameter (MAT_CHOLESKYINFO_SIZE = 4)
234: integer MAT_CHOLESKYINFO_FILL
235: integer MAT_CHOLESKYINFO_DAMPING
236: integer MAT_CHOLESKYINFO_DAMP
237: integer MAT_CHOLESKYINFO_PIVOTINBLOCKS
239: parameter (MAT_CHOLESKYINFO_FILL = 1)
240: parameter (MAT_CHOLESKYINFO_DAMPING = 2)
241: parameter (MAT_CHOLESKYINFO_DAMP = 3)
242: parameter (MAT_CHOLESKYINFO_PIVOTINBLOCKS = 4)
244: !
245: ! Options for SOR and SSOR
246: ! MatSorType may be bitwise ORd together, so do not change the numbers
247: !
248: integer SOR_FORWARD_SWEEP,SOR_BACKWARD_SWEEP,SOR_SYMMETRIC_SWEEP
249: integer SOR_LOCAL_FORWARD_SWEEP,SOR_LOCAL_BACKWARD_SWEEP
250: integer SOR_LOCAL_SYMMETRIC_SWEEP,SOR_ZERO_INITIAL_GUESS
251: integer SOR_EISENSTAT,SOR_APPLY_UPPER,SOR_APPLY_LOWER
253: parameter (SOR_FORWARD_SWEEP=1,SOR_BACKWARD_SWEEP=2)
254: parameter (SOR_SYMMETRIC_SWEEP=3,SOR_LOCAL_FORWARD_SWEEP=4)
255: parameter (SOR_LOCAL_BACKWARD_SWEEP=8)
256: parameter (SOR_LOCAL_SYMMETRIC_SWEEP=12)
257: parameter (SOR_ZERO_INITIAL_GUESS=16,SOR_EISENSTAT=32)
258: parameter (SOR_APPLY_UPPER=64,SOR_APPLY_LOWER=128)
259: !
260: ! MatOperation
261: !
262: integer MATOP_SET_VALUES
263: integer MATOP_GET_ROW
264: integer MATOP_RESTORE_ROW
265: integer MATOP_MULT
266: integer MATOP_MULT_ADD
267: integer MATOP_MULT_TRANSPOSE
268: integer MATOP_MULT_TRANSPOSE_ADD
269: integer MATOP_SOLVE
270: integer MATOP_SOLVE_ADD
271: integer MATOP_SOLVE_TRANSPOSE
272: integer MATOP_SOLVE_TRANSPOSE_ADD
273: integer MATOP_LUFACTOR
274: integer MATOP_CHOLESKYFACTOR
275: integer MATOP_RELAX
276: integer MATOP_TRANSPOSE
277: integer MATOP_GETINFO
278: integer MATOP_EQUAL
279: integer MATOP_GET_DIAGONAL
280: integer MATOP_DIAGONAL_SCALE
281: integer MATOP_NORM
282: integer MATOP_ASSEMBLY_BEGIN
283: integer MATOP_ASSEMBLY_END
284: integer MATOP_COMPRESS
285: integer MATOP_SET_OPTION
286: integer MATOP_ZERO_ENTRIES
287: integer MATOP_ZERO_ROWS
288: integer MATOP_LUFACTOR_SYMBOLIC
289: integer MATOP_LUFACTOR_NUMERIC
290: integer MATOP_CHOLESKY_FACTOR_SYMBOLIC
291: integer MATOP_CHOLESKY_FACTOR_NUMERIC
292: integer MATOP_GET_SIZE
293: integer MATOP_GET_LOCAL_SIZE
294: integer MATOP_GET_OWNERSHIP_RANGE
295: integer MATOP_ILUFACTOR_SYMBOLIC
296: integer MATOP_ICCFACTOR_SYMBOLIC
297: integer MATOP_GET_ARRAY
298: integer MATOP_RESTORE_ARRAY
300: integer MATOP_CONVERT_SAME_TYPE
301: integer MATOP_FORWARD_SOLVE
302: integer MATOP_BACKWARD_SOLVE
303: integer MATOP_ILUFACTOR
304: integer MATOP_ICCFACTOR
305: integer MATOP_AXPY
306: integer MATOP_GET_SUBMATRICES
307: integer MATOP_INCREASE_OVERLAP
308: integer MATOP_GET_VALUES
309: integer MATOP_COPY
310: integer MATOP_PRINT_HELP
311: integer MATOP_SCALE
312: integer MATOP_SHIFT
313: integer MATOP_DIAGONAL_SHIFT
314: integer MATOP_ILUDT_FACTOR
315: integer MATOP_GET_BLOCK_SIZE
317: integer MATOP_GET_ROW_IJ
318: integer MATOP_RESTORE_ROW_IJ
319: integer MATOP_GET_COLUMN_IJ
320: integer MATOP_RESTORE_COLUMN_IJ
321: integer MATOP_FDCOLORING_CREATE
322: integer MATOP_COLORING_PATCH
323: integer MATOP_SET_UNFACTORED
324: integer MATOP_PERMUTE
325: integer MATOP_SET_VALUES_BLOCKED
327: integer MATOP_DESTROY
328: integer MATOP_VIEW
330: parameter(MATOP_SET_VALUES=0)
331: parameter(MATOP_GET_ROW=1)
332: parameter(MATOP_RESTORE_ROW=2)
333: parameter(MATOP_MULT=3)
334: parameter(MATOP_MULT_ADD=4)
335: parameter(MATOP_MULT_TRANSPOSE=5)
336: parameter(MATOP_MULT_TRANSPOSE_ADD=6)
337: parameter(MATOP_SOLVE=7)
338: parameter(MATOP_SOLVE_ADD=8)
339: parameter(MATOP_SOLVE_TRANSPOSE=9)
340: parameter(MATOP_SOLVE_TRANSPOSE_ADD=10)
341: parameter(MATOP_LUFACTOR=11)
342: parameter(MATOP_CHOLESKYFACTOR=12)
343: parameter(MATOP_RELAX=13)
344: parameter(MATOP_TRANSPOSE=14)
345: parameter(MATOP_GETINFO=15)
346: parameter(MATOP_EQUAL=16)
347: parameter(MATOP_GET_DIAGONAL=17)
348: parameter(MATOP_DIAGONAL_SCALE=18)
349: parameter(MATOP_NORM=19)
350: parameter(MATOP_ASSEMBLY_BEGIN=20)
351: parameter(MATOP_ASSEMBLY_END=21)
352: parameter(MATOP_COMPRESS=22)
353: parameter(MATOP_SET_OPTION=23)
354: parameter(MATOP_ZERO_ENTRIES=24)
355: parameter(MATOP_ZERO_ROWS=25)
356: parameter(MATOP_LUFACTOR_SYMBOLIC=26)
357: parameter(MATOP_LUFACTOR_NUMERIC=27)
358: parameter(MATOP_CHOLESKY_FACTOR_SYMBOLIC=28)
359: parameter(MATOP_CHOLESKY_FACTOR_NUMERIC=29)
360: parameter(MATOP_GET_SIZE=30)
361: parameter(MATOP_GET_LOCAL_SIZE=31)
362: parameter(MATOP_GET_OWNERSHIP_RANGE=32)
363: parameter(MATOP_ILUFACTOR_SYMBOLIC=33)
364: parameter(MATOP_ICCFACTOR_SYMBOLIC=34)
365: parameter(MATOP_GET_ARRAY=35)
366: parameter(MATOP_RESTORE_ARRAY=36)
368: parameter(MATOP_CONVERT_SAME_TYPE=37)
369: parameter(MATOP_FORWARD_SOLVE=38)
370: parameter(MATOP_BACKWARD_SOLVE=39)
371: parameter(MATOP_ILUFACTOR=40)
372: parameter(MATOP_ICCFACTOR=41)
373: parameter(MATOP_AXPY=42)
374: parameter(MATOP_GET_SUBMATRICES=43)
375: parameter(MATOP_INCREASE_OVERLAP=44)
376: parameter(MATOP_GET_VALUES=45)
377: parameter(MATOP_COPY=46)
378: parameter(MATOP_PRINT_HELP=47)
379: parameter(MATOP_SCALE=48)
380: parameter(MATOP_SHIFT=49)
381: parameter(MATOP_DIAGONAL_SHIFT=50)
382: parameter(MATOP_ILUDT_FACTOR=51)
383: parameter(MATOP_GET_BLOCK_SIZE=52)
385: parameter(MATOP_GET_ROW_IJ=53)
386: parameter(MATOP_RESTORE_ROW_IJ=54)
387: parameter(MATOP_GET_COLUMN_IJ=55)
388: parameter(MATOP_RESTORE_COLUMN_IJ=56)
389: parameter(MATOP_FDCOLORING_CREATE=57)
390: parameter(MATOP_COLORING_PATCH=58)
391: parameter(MATOP_SET_UNFACTORED=59)
392: parameter(MATOP_PERMUTE=60)
393: parameter(MATOP_SET_VALUES_BLOCKED=61)
396: parameter(MATOP_DESTROY=250)
397: parameter(MATOP_VIEW=251)
398: !
399: !
400: !
401: integer MATRIX_BINARY_FORMAT_DENSE
402: parameter (MATRIX_BINARY_FORMAT_DENSE=-1)
403: !
404: ! End of Fortran include file for the Mat package in PETSc
405: !
406: #endif