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