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