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 :: tPetscObject
17: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
18: end type tPetscObject
19: PetscObject, parameter :: PETSC_NULL_OBJECT = tPetscObject(0)
20: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
21: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_OBJECT
22: #endif
24: type, extends(tPetscObject) :: tPetscOptions
25: end type tPetscOptions
26: PetscOptions, parameter :: PETSC_NULL_OPTIONS = tPetscOptions(0)
27: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
28: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_OPTIONS
29: #endif
31: type, extends(tPetscObject) :: tPetscBench
32: end type tPetscBench
33: PetscBench, parameter :: PETSC_NULL_BENCH = tPetscBench(0)
34: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
35: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_BENCH
36: #endif
38: type :: tPetscDevice
39: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
40: end type tPetscDevice
41: PetscDevice, parameter :: PETSC_NULL_DEVICE = tPetscDevice(0)
42: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
43: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DEVICE
44: #endif
46: type, extends(tPetscObject) :: tPetscDeviceContext
47: end type tPetscDeviceContext
48: PetscDeviceContext, parameter :: PETSC_NULL_DEVICE_CONTEXT = tPetscDeviceContext(0)
49: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
50: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL__DEVICE_CONTEXT
51: #endif
53: type, extends(tPetscObject) :: tPetscMatlabEngine
54: end type tPetscMatlabEngine
55: PetscMatlabEngine, parameter :: PETSC_NULL_MATLAB_ENGINE = tPetscMatlabEngine(0)
56: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
57: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_MATLAB_ENGINE
58: #endif
59: ! ------------------------------------------------------------------------
60: ! Non Common block Stuff declared first
61: !
62: ! Flags
63: !
64: PetscBool, parameter :: PETSC_TRUE = .true.
65: PetscBool, parameter :: PETSC_FALSE = .false.
67: PetscBool3, parameter :: PETSC_BOOL3_TRUE = 1
68: PetscBool3, parameter :: PETSC_BOOL3_FALSE = 0
69: PetscBool3, parameter :: PETSC_BOOL3_UNKNOWN = -1
71: PetscInt, parameter :: PETSC_DECIDE = -1
72: PetscInt, parameter :: PETSC_DECIDE_INTEGER = -1
73: PetscReal, parameter :: PETSC_DECIDE_REAL = -1.0d0
74: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
75: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE
76: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE_INTEGER
77: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE_REAL
78: #endif
80: PetscInt, parameter :: PETSC_DETERMINE = -1
81: PetscInt, parameter :: PETSC_DETERMINE_INTEGER = -1
82: PetscReal, parameter :: PETSC_DETERMINE_REAL = -1.0d0
83: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
84: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE
85: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE_INTEGER
86: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE_REAL
87: #endif
89: PetscInt, parameter :: PETSC_CURRENT = -2
90: PetscInt, parameter :: PETSC_CURRENT_INTEGER = -2
91: PetscReal, parameter :: PETSC_CURRENT_REAL = -2.0d0
92: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
93: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT
94: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT_INTEGER
95: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CURRENT_REAL
96: #endif
98: PetscInt, parameter :: PETSC_DEFAULT = -2
99: PetscInt, parameter :: PETSC_DEFAULT_INTEGER = -2
100: PetscReal, parameter :: PETSC_DEFAULT_REAL = -2.0d0
101: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
102: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT
103: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_INTEGER
104: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_REAL
105: #endif
107: PetscEnum, parameter :: PETSC_FP_TRAP_OFF = 0
108: PetscEnum, parameter :: PETSC_FP_TRAP_ON = 55
109: PetscEnum, parameter :: PETSC_FP_TRAP_INDIV = 1
110: PetscEnum, parameter :: PETSC_FP_TRAP_FLTOPERR = 2
111: PetscEnum, parameter :: PETSC_FP_TRAP_FLTOVF = 4
112: PetscEnum, parameter :: PETSC_FP_TRAP_FLTUND = 8
113: PetscEnum, parameter :: PETSC_FP_TRAP_FLTDIV = 16
114: PetscEnum, parameter :: PETSC_FP_TRAP_FLTINEX =32
116: PetscFortranAddr, parameter :: PETSC_STDOUT = 0
117: !
118: ! PETSc DataTypes
119: !
120: #if defined(PETSC_USE_REAL_SINGLE)
121: #define PETSC_REAL PETSC_FLOAT
122: #elif defined(PETSC_USE_REAL___FLOAT128)
123: #define PETSC_REAL PETSC___FLOAT128
124: #else
125: #define PETSC_REAL PETSC_DOUBLE
126: #endif
127: #define PETSC_FORTRANADDR PETSC_LONG
129: PetscEnum, parameter :: PETSC_DATATYPE_UNKNOWN = 0
130: PetscEnum, parameter :: PETSC_DOUBLE = 1
131: PetscEnum, parameter :: PETSC_COMPLEX = 2
132: PetscEnum, parameter :: PETSC_LONG = 3
133: PetscEnum, parameter :: PETSC_SHORT = 4
134: PetscEnum, parameter :: PETSC_FLOAT = 5
135: PetscEnum, parameter :: PETSC_CHAR = 6
136: PetscEnum, parameter :: PETSC_BIT_LOGICAL = 7
137: PetscEnum, parameter :: PETSC_ENUM = 8
138: PetscEnum, parameter :: PETSC_BOOL = 9
139: PetscEnum, parameter :: PETSC___FLOAT128 = 10
140: PetscEnum, parameter :: PETSC_OBJECT = 11
141: PetscEnum, parameter :: PETSC_FUNCTION = 12
142: PetscEnum, parameter :: PETSC_STRING = 13
143: PetscEnum, parameter :: PETSC___FP16 = 14
144: PetscEnum, parameter :: PETSC_STRUCT = 15
145: PetscEnum, parameter :: PETSC_INT = 16
146: !
147: !
148: !
149: PetscEnum, parameter :: PETSC_COPY_VALUES = 0
150: PetscEnum, parameter :: PETSC_OWN_POINTER = 1
151: PetscEnum, parameter :: PETSC_USE_POINTER = 2
152: !
153: ! ------------------------------------------------------------------------
154: ! PETSc mathematics include file. Defines certain basic mathematical
155: ! constants and functions for working with single and double precision
156: ! floating point numbers as well as complex and integers.
157: !
158: ! Representation of complex i
159: !
160: #if defined(PETSC_USE_REAL_SINGLE)
161: PetscFortranComplex, parameter :: PETSC_i = (0.0e0,1.0e0)
162: #else
163: PetscFortranComplex, parameter :: PETSC_i = (0.0d0,1.0d0)
164: #endif
166: ! A PETSC_NULL_FUNCTION pointer
167: !
168: external PETSC_NULL_FUNCTION
169: !
170: ! Possible arguments to PetscPushErrorHandler()
171: !
172: external PETSCTRACEBACKERRORHANDLER
173: external PETSCABORTERRORHANDLER
174: external PETSCEMACSCLIENTERRORHANDLER
175: external PETSCATTACHDEBUGGERERRORHANDLER
176: external PETSCIGNOREERRORHANDLER
177: !
178: external PetscIsInfOrNanScalar
179: external PetscIsInfOrNanReal
180: PetscBool PetscIsInfOrNanScalar
181: PetscBool PetscIsInfOrNanReal
183: ! ----------------------------------------------------------------------------
184: !
185: ! Random numbers
186: !
187: type, extends(tPetscObject) :: tPetscRandom
188: end type tPetscRandom
189: PetscRandom, parameter :: PETSC_NULL_RANDOM = tPetscRandom(0)
190: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
191: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_RANDOM
192: #endif
193: !
194: #define PETSCRAND 'rand'
195: #define PETSCRAND48 'rand48'
196: #define PETSCSPRNG 'sprng'
197: #define PETSCRANDER48 'rander48'
198: !
199: !
200: !
201: PetscEnum, parameter :: PETSC_BINARY_INT_SIZE = 4
202: PetscEnum, parameter :: PETSC_BINARY_FLOAT_SIZE = 4
203: PetscEnum, parameter :: PETSC_BINARY_CHAR_SIZE = 1
204: PetscEnum, parameter :: PETSC_BINARY_SHORT_SIZE = 2
205: PetscEnum, parameter :: PETSC_BINARY_DOUBLE_SIZE = 8
206: #if defined(PETSC_USE_COMPLEX)
207: PetscEnum, parameter :: PETSC_BINARY_SCALAR_SIZE = 16
208: #else
209: PetscEnum, parameter :: PETSC_BINARY_SCALAR_SIZE = 8
210: #endif
212: PetscEnum, parameter :: PETSC_BINARY_SEEK_SET = 0
213: PetscEnum, parameter :: PETSC_BINARY_SEEK_CUR = 1
214: PetscEnum, parameter :: PETSC_BINARY_SEEK_END = 2
216: PetscEnum, parameter :: PETSC_BUILDTWOSIDED_ALLREDUCE = 0
217: PetscEnum, parameter :: PETSC_BUILDTWOSIDED_IBARRIER = 1
218: PetscEnum, parameter :: PETSC_BUILDTWOSIDED_REDSCATTER = 2
220: type tPetscSubcomm
221: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
222: end type tPetscSubcomm
223: PetscSubcomm, parameter :: PETSC_NULL_SUBCOMM = tPetscSubcomm(0)
224: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
225: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_SUBCOMM
226: #endif
227: !
228: ! PetscSubcommType
229: !
230: PetscEnum, parameter :: PETSC_SUBCOMM_GENERAL = 0
231: PetscEnum, parameter :: PETSC_SUBCOMM_CONTIGUOUS = 1
232: PetscEnum, parameter :: PETSC_SUBCOMM_INTERLACED = 2
234: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
235: !DEC$ ATTRIBUTES DLLEXPORT::PetscReal_Private
236: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_REAL_KIND
237: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_TRUE
238: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FALSE
239: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FP_TRAP_OFF
240: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FP_TRAP_ON
241: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STDOUT
242: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_INT
243: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DOUBLE
244: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COMPLEX
245: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_LONG
246: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SHORT
247: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FLOAT
248: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CHAR
249: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BIT_LOGICAL
250: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_ENUM
251: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BOOL
252: !DEC$ ATTRIBUTES DLLEXPORT::PETSC___FLOAT128
253: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_OBJECT
254: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FUNCTION
255: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STRING
256: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STRUC
257: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DATATYPE_UNKNOWN
258: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COPY_VALUES
259: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_OWN_POINTER
260: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_USE_POINTER
261: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_i
262: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_INT_SIZE
263: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_FLOAT_SIZE
264: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_CHAR_SIZE
265: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SHORT_SIZE
266: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_DOUBLE_SIZE
267: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SCALAR_SIZE
268: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_SET
269: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_CUR
270: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_END
271: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_ALLREDUCE
272: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_IBARRIER
273: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_REDSCATTER
274: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_GENERAL
275: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_CONTIGUOUS
276: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_INTERLACED
277: #endif
279: ! ----------------------------------------------------------------------------
280: !
281: ! PetscInfoCommFlag Enum
282: !
283: !
284: ! PetscInfoCommFlag
285: !
286: PetscEnum PETSC_INFO_COMM_ALL
287: PetscEnum PETSC_INFO_COMM_NO_SELF
288: PetscEnum PETSC_INFO_COMM_ONLY_SELF
289: parameter(PETSC_INFO_COMM_ALL=-1)
290: parameter(PETSC_INFO_COMM_NO_SELF=0)
291: parameter(PETSC_INFO_COMM_ONLY_SELF=1)