Actual source code: petscsys.h
1: !
2: !
3: ! Base include file for Fortran use of the PETSc package.
4: !
5: #include "petscconf.h"
6: #include "petscversion.h"
7: #include "petsc/finclude/petscsys.h"
9: !
10: ! The following block allows one to write constants that match the
11: ! precision of PetscReal as, for example, x = .7_PETSC_REAL_KIND
12: !
13: PetscReal,Parameter :: PetscReal_Private = 1.0
14: Integer,Parameter :: PETSC_REAL_KIND = Selected_Real_Kind(Precision(PetscReal_Private))
16: type tPetscOptions
17: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
18: end type tPetscOptions
20: PetscOptions, parameter :: PETSC_NULL_OPTIONS = tPetscOptions(0)
22: type tPetscBench
23: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
24: end type tPetscBench
26: PetscBench, parameter :: PETSC_NULL_BM = tPetscBench(0)
27: ! ------------------------------------------------------------------------
28: ! Non Common block Stuff declared first
29: !
30: ! Flags
31: !
32: PetscBool, parameter :: PETSC_TRUE = .true.
33: PetscBool, parameter :: PETSC_FALSE = .false.
35: PetscBool3, parameter :: PETSC_BOOL3_TRUE = 1
36: PetscBool3, parameter :: PETSC_BOOL3_FALSE = 0
37: PetscBool3, parameter :: PETSC_BOOL3_UNKNOWN = -1
39: PetscInt, parameter :: PETSC_DECIDE = -1
40: PetscInt, parameter :: PETSC_DETERMINE = -1
41: PetscInt, parameter :: PETSC_DEFAULT_INTEGER = -2
43: PetscReal, parameter :: PETSC_DEFAULT_REAL = -2.0d0
45: PetscEnum, parameter :: PETSC_FP_TRAP_OFF = 0
46: PetscEnum, parameter :: PETSC_FP_TRAP_ON = 55
47: PetscEnum, parameter :: PETSC_FP_TRAP_INDIV = 1
48: PetscEnum, parameter :: PETSC_FP_TRAP_FLTOPERR = 2
49: PetscEnum, parameter :: PETSC_FP_TRAP_FLTOVF = 4
50: PetscEnum, parameter :: PETSC_FP_TRAP_FLTUND = 8
51: PetscEnum, parameter :: PETSC_FP_TRAP_FLTDIV = 16
52: PetscEnum, parameter :: PETSC_FP_TRAP_FLTINEX =32
54: PetscFortranAddr, parameter :: PETSC_STDOUT = 0
55: !
56: ! PETSc DataTypes
57: !
58: #if defined(PETSC_USE_REAL_SINGLE)
59: #define PETSC_REAL PETSC_FLOAT
60: #elif defined(PETSC_USE_REAL___FLOAT128)
61: #define PETSC_REAL PETSC___FLOAT128
62: #else
63: #define PETSC_REAL PETSC_DOUBLE
64: #endif
65: #define PETSC_FORTRANADDR PETSC_LONG
67: PetscEnum, parameter :: PETSC_DATATYPE_UNKNOWN = 0
68: PetscEnum, parameter :: PETSC_DOUBLE = 1
69: PetscEnum, parameter :: PETSC_COMPLEX = 2
70: PetscEnum, parameter :: PETSC_LONG = 3
71: PetscEnum, parameter :: PETSC_SHORT = 4
72: PetscEnum, parameter :: PETSC_FLOAT = 5
73: PetscEnum, parameter :: PETSC_CHAR = 6
74: PetscEnum, parameter :: PETSC_BIT_LOGICAL = 7
75: PetscEnum, parameter :: PETSC_ENUM = 8
76: PetscEnum, parameter :: PETSC_BOOL = 9
77: PetscEnum, parameter :: PETSC___FLOAT128 = 10
78: PetscEnum, parameter :: PETSC_OBJECT = 11
79: PetscEnum, parameter :: PETSC_FUNCTION = 12
80: PetscEnum, parameter :: PETSC_STRING = 13
81: PetscEnum, parameter :: PETSC___FP16 = 14
82: PetscEnum, parameter :: PETSC_STRUCT = 15
83: PetscEnum, parameter :: PETSC_INT = 16
84: !
85: !
86: !
87: PetscEnum, parameter :: PETSC_COPY_VALUES = 0
88: PetscEnum, parameter :: PETSC_OWN_POINTER = 1
89: PetscEnum, parameter :: PETSC_USE_POINTER = 2
90: !
91: ! ------------------------------------------------------------------------
92: ! PETSc mathematics include file. Defines certain basic mathematical
93: ! constants and functions for working with single and double precision
94: ! floating point numbers as well as complex and integers.
95: !
96: ! Representation of complex i
97: !
98: #if defined(PETSC_USE_REAL_SINGLE)
99: PetscFortranComplex, parameter :: PETSC_i = (0.0e0,1.0e0)
100: #else
101: PetscFortranComplex, parameter :: PETSC_i = (0.0d0,1.0d0)
102: #endif
104: ! A PETSC_NULL_FUNCTION pointer
105: !
106: external PETSC_NULL_FUNCTION
107: !
108: ! Possible arguments to PetscPushErrorHandler()
109: !
110: external PETSCTRACEBACKERRORHANDLER
111: external PETSCABORTERRORHANDLER
112: external PETSCEMACSCLIENTERRORHANDLER
113: external PETSCATTACHDEBUGGERERRORHANDLER
114: external PETSCIGNOREERRORHANDLER
115: !
116: external PetscIsInfOrNanScalar
117: external PetscIsInfOrNanReal
118: PetscBool PetscIsInfOrNanScalar
119: PetscBool PetscIsInfOrNanReal
121: ! ----------------------------------------------------------------------------
122: !
123: ! Random numbers
124: !
125: type tPetscRandom
126: sequence
127: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
128: end type tPetscRandom
130: PetscRandom, parameter :: PETSC_NULL_RANDOM = tPetscRandom(0)
131: !
132: #define PETSCRAND 'rand'
133: #define PETSCRAND48 'rand48'
134: #define PETSCSPRNG 'sprng'
135: #define PETSCRANDER48 'rander48'
136: !
137: !
138: !
139: PetscEnum, parameter :: PETSC_BINARY_INT_SIZE = 4
140: PetscEnum, parameter :: PETSC_BINARY_FLOAT_SIZE = 4
141: PetscEnum, parameter :: PETSC_BINARY_CHAR_SIZE = 1
142: PetscEnum, parameter :: PETSC_BINARY_SHORT_SIZE = 2
143: PetscEnum, parameter :: PETSC_BINARY_DOUBLE_SIZE = 8
144: #if defined(PETSC_USE_COMPLEX)
145: PetscEnum, parameter :: PETSC_BINARY_SCALAR_SIZE = 16
146: #else
147: PetscEnum, parameter :: PETSC_BINARY_SCALAR_SIZE = 8
148: #endif
150: PetscEnum, parameter :: PETSC_BINARY_SEEK_SET = 0
151: PetscEnum, parameter :: PETSC_BINARY_SEEK_CUR = 1
152: PetscEnum, parameter :: PETSC_BINARY_SEEK_END = 2
154: PetscEnum, parameter :: PETSC_BUILDTWOSIDED_ALLREDUCE = 0
155: PetscEnum, parameter :: PETSC_BUILDTWOSIDED_IBARRIER = 1
156: PetscEnum, parameter :: PETSC_BUILDTWOSIDED_REDSCATTER = 2
158: type tPetscSubcomm
159: sequence
160: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
161: end type tPetscSubcomm
163: PetscSubcomm, parameter :: PETSC_NULL_SUBCOMM = tPetscSubcomm(0)
165: !
166: ! PetscSubcommType
167: !
168: PetscEnum, parameter :: PETSC_SUBCOMM_GENERAL = 0
169: PetscEnum, parameter :: PETSC_SUBCOMM_CONTIGUOUS = 1
170: PetscEnum, parameter :: PETSC_SUBCOMM_INTERLACED = 2
172: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
173: !DEC$ ATTRIBUTES DLLEXPORT::PetscReal_Private
174: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_REAL_KIND
175: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_OPTIONS
176: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_TRUE
177: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FALSE
178: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE
179: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE
180: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_INTEGER
181: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_REAL
182: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FP_TRAP_OFF
183: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FP_TRAP_ON
184: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STDOUT
185: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_INT
186: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DOUBLE
187: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COMPLEX
188: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_LONG
189: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SHORT
190: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FLOAT
191: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CHAR
192: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BIT_LOGICAL
193: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_ENUM
194: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BOOL
195: !DEC$ ATTRIBUTES DLLEXPORT::PETSC___FLOAT128
196: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_OBJECT
197: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FUNCTION
198: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STRING
199: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STRUC
200: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DATATYPE_UNKNOWN
201: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COPY_VALUES
202: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_OWN_POINTER
203: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_USE_POINTER
204: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_i
205: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_RANDOM
206: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_INT_SIZE
207: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_FLOAT_SIZE
208: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_CHAR_SIZE
209: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SHORT_SIZE
210: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_DOUBLE_SIZE
211: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SCALAR_SIZE
212: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_SET
213: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_CUR
214: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_END
215: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_ALLREDUCE
216: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_IBARRIER
217: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_REDSCATTER
218: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_GENERAL
219: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_CONTIGUOUS
220: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_INTERLACED
221: #endif
223: ! ----------------------------------------------------------------------------
224: !
225: ! PetscInfoCommFlag Enum
226: !
227: !
228: ! PetscInfoCommFlag
229: !
230: PetscEnum PETSC_INFO_COMM_ALL
231: PetscEnum PETSC_INFO_COMM_NO_SELF
232: PetscEnum PETSC_INFO_COMM_ONLY_SELF
233: parameter(PETSC_INFO_COMM_ALL=-1)
234: parameter(PETSC_INFO_COMM_NO_SELF=0)
235: parameter(PETSC_INFO_COMM_ONLY_SELF=1)