Actual source code: petscsys.h
petsc-3.11.4 2019-09-28
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 :: &
14: & PetscReal_Private = 1.0
15: Integer,Parameter :: PETSC_REAL_KIND &
16: & = Selected_Real_Kind(Precision(PetscReal_Private))
19: #if !defined(PETSC_AVOID_MPIF_H)
20: #if defined(PETSC_HAVE_MPIUNI)
21: #include "petsc/mpiuni/mpif.h"
22: #else
23: #include "mpif.h"
24: #endif
25: #endif
27: type tPetscOptions
28: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
29: end type tPetscOptions
31: PetscOptions, parameter :: PETSC_NULL_OPTIONS = &
32: & tPetscOptions(0)
34: ! ------------------------------------------------------------------------
35: ! Non Common block Stuff declared first
36: !
37: ! Flags
38: !
39: PetscBool PETSC_TRUE
40: PetscBool PETSC_FALSE
41: #if defined(PETSC_FORTRAN_PETSCTRUTH_INT)
42: parameter (PETSC_TRUE = 1,PETSC_FALSE = 0)
43: #else
44: parameter (PETSC_TRUE = .true.,PETSC_FALSE = .false.)
45: #endif
46: PetscInt PETSC_DECIDE,PETSC_DETERMINE
47: parameter (PETSC_DECIDE=-1,PETSC_DETERMINE=-1)
49: PetscInt PETSC_DEFAULT_INTEGER
50: parameter (PETSC_DEFAULT_INTEGER = -2)
52: PetscReal PETSC_DEFAULT_REAL
53: parameter (PETSC_DEFAULT_REAL=-2.0d0)
55: PetscEnum PETSC_FP_TRAP_OFF
56: PetscEnum PETSC_FP_TRAP_ON
57: parameter (PETSC_FP_TRAP_OFF = 0,PETSC_FP_TRAP_ON = 1)
59: PetscFortranAddr PETSC_STDOUT
61: parameter (PETSC_STDOUT = 0)
62: !
63: ! PETSc DataTypes
64: !
65: PetscEnum PETSC_INT
66: PetscEnum PETSC_DOUBLE
67: PetscEnum PETSC_COMPLEX
68: PetscEnum PETSC_LONG
69: PetscEnum PETSC_SHORT
70: PetscEnum PETSC_FLOAT
71: PetscEnum PETSC_CHAR
72: PetscEnum PETSC_BIT_LOGICAL
73: PetscEnum PETSC_ENUM
74: PetscEnum PETSC_BOOL
75: PetscEnum PETSC___FLOAT128
76: PetscEnum PETSC_OBJECT
77: PetscEnum PETSC_FUNCTION
78: PetscEnum PETSC_STRING
79: PetscEnum PETSC___FP16
80: PetscEnum PETSC_STRUCT
81: PetscEnum PETSC_DATATYPE_UNKNOWN
83: #if defined(PETSC_USE_REAL_SINGLE)
84: #define PETSC_REAL PETSC_FLOAT
85: #elif defined(PETSC_USE_REAL___FLOAT128)
86: #define PETSC_REAL PETSC___FLOAT128
87: #else
88: #define PETSC_REAL PETSC_DOUBLE
89: #endif
90: #define PETSC_FORTRANADDR PETSC_LONG
92: parameter (PETSC_DATATYPE_UNKNOWN=0)
93: parameter (PETSC_DOUBLE=1,PETSC_COMPLEX=2)
94: parameter (PETSC_LONG=3,PETSC_SHORT=4,PETSC_FLOAT=5)
95: parameter (PETSC_CHAR=6,PETSC_BIT_LOGICAL=7,PETSC_ENUM=8)
96: parameter (PETSC_BOOL=9,PETSC___FLOAT128=10)
97: parameter (PETSC_OBJECT=11,PETSC_FUNCTION=12)
98: parameter (PETSC_STRING=13,PETSC___FP16=14,PETSC_STRUCT=15)
99: parameter (PETSC_INT=16)
100: !
101: !
102: !
103: PetscEnum PETSC_COPY_VALUES
104: PetscEnum PETSC_OWN_POINTER
105: PetscEnum PETSC_USE_POINTER
107: parameter (PETSC_COPY_VALUES = 0)
108: parameter (PETSC_OWN_POINTER = 1)
109: parameter (PETSC_USE_POINTER = 2)
110: !
111: ! ------------------------------------------------------------------------
112: ! PETSc mathematics include file. Defines certain basic mathematical
113: ! constants and functions for working with single and double precision
114: ! floating point numbers as well as complex and integers.
115: !
116: ! Representation of complex i
117: !
118: PetscFortranComplex PETSC_i
119: #if defined(PETSC_USE_REAL_SINGLE)
120: parameter (PETSC_i = (0.0e0,1.0e0))
121: #else
122: parameter (PETSC_i = (0.0d0,1.0d0))
123: #endif
125: !
126: ! ----------------------------------------------------------------------------
127: ! BEGIN PETSc aliases for MPI_ constants
128: !
129: ! These values for __float128 are handled in the common block (below)
130: ! and transmitted from the C code
131: !
132: #if !defined(PETSC_USE_REAL___FLOAT128)
133: integer MPIU_REAL
134: #if defined (PETSC_USE_REAL_SINGLE)
135: parameter (MPIU_REAL = MPI_REAL)
136: #else
137: parameter(MPIU_REAL = MPI_DOUBLE_PRECISION)
138: #endif
140: integer MPIU_SUM
141: parameter (MPIU_SUM = MPI_SUM)
143: integer MPIU_SCALAR
144: #if defined(PETSC_USE_COMPLEX)
145: #if defined (PETSC_USE_REAL_SINGLE)
146: parameter(MPIU_SCALAR = MPI_COMPLEX)
147: #else
148: parameter(MPIU_SCALAR = MPI_DOUBLE_COMPLEX)
149: #endif
150: #else
151: #if defined (PETSC_USE_REAL_SINGLE)
152: parameter (MPIU_SCALAR = MPI_REAL)
153: #else
154: parameter(MPIU_SCALAR = MPI_DOUBLE_PRECISION)
155: #endif
156: #endif
157: #endif
159: integer MPIU_INTEGER
160: #if defined(PETSC_USE_64BIT_INDICES)
161: parameter(MPIU_INTEGER = MPI_INTEGER8)
162: #else
163: parameter(MPIU_INTEGER = MPI_INTEGER)
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
184: ! ----------------------------------------------------------------------------
185: !
186: ! Random numbers
187: !
188: type tPetscRandom
189: sequence
190: PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
191: end type tPetscRandom
193: PetscRandom, parameter :: PETSC_NULL_RANDOM &
194: & = tPetscRandom(0)
195: !
196: #define PETSCRAND 'rand'
197: #define PETSCRAND48 'rand48'
198: #define PETSCSPRNG 'sprng'
199: #define PETSCRANDER48 'rander48'
200: !
201: !
202: !
203: PetscEnum PETSC_BINARY_INT_SIZE
204: PetscEnum PETSC_BINARY_FLOAT_SIZE
205: PetscEnum PETSC_BINARY_CHAR_SIZE
206: PetscEnum PETSC_BINARY_SHORT_SIZE
207: PetscEnum PETSC_BINARY_DOUBLE_SIZE
208: PetscEnum PETSC_BINARY_SCALAR_SIZE
210: parameter (PETSC_BINARY_INT_SIZE = 4)
211: parameter (PETSC_BINARY_FLOAT_SIZE = 4)
212: parameter (PETSC_BINARY_CHAR_SIZE = 1)
213: parameter (PETSC_BINARY_SHORT_SIZE = 2)
214: parameter (PETSC_BINARY_DOUBLE_SIZE = 8)
215: #if defined(PETSC_USE_COMPLEX)
216: parameter (PETSC_BINARY_SCALAR_SIZE = 16)
217: #else
218: parameter (PETSC_BINARY_SCALAR_SIZE = 8)
219: #endif
221: PetscEnum PETSC_BINARY_SEEK_SET
222: PetscEnum PETSC_BINARY_SEEK_CUR
223: PetscEnum PETSC_BINARY_SEEK_END
225: parameter (PETSC_BINARY_SEEK_SET = 0,PETSC_BINARY_SEEK_CUR = 1)
226: parameter (PETSC_BINARY_SEEK_END = 2)
228: PetscEnum PETSC_BUILDTWOSIDED_ALLREDUCE
229: PetscEnum PETSC_BUILDTWOSIDED_IBARRIER
230: PetscEnum PETSC_BUILDTWOSIDED_REDSCATTER
231: parameter (PETSC_BUILDTWOSIDED_ALLREDUCE = 0)
232: parameter (PETSC_BUILDTWOSIDED_IBARRIER = 1)
233: parameter (PETSC_BUILDTWOSIDED_REDSCATTER = 2)
234: !
235: ! PetscSubcommType
236: !
237: PetscEnum PETSC_SUBCOMM_GENERAL
238: PetscEnum PETSC_SUBCOMM_CONTIGUOUS
239: PetscEnum PETSC_SUBCOMM_INTERLACED
240: parameter(PETSC_SUBCOMM_GENERAL=0)
241: parameter(PETSC_SUBCOMM_CONTIGUOUS=1)
242: parameter(PETSC_SUBCOMM_INTERLACED=2)
244: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
245: !DEC$ ATTRIBUTES DLLEXPORT::PetscReal_Private
246: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_REAL_KIND
247: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_OPTIONS
248: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_TRUE
249: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FALSE
250: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE
251: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE
252: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_INTEGER
253: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_REAL
254: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FP_TRAP_OFF
255: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FP_TRAP_ON
256: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STDOUT
257: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_INT
258: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DOUBLE
259: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COMPLEX
260: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_LONG
261: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SHORT
262: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FLOAT
263: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CHAR
264: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BIT_LOGICAL
265: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_ENUM
266: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BOOL
267: !DEC$ ATTRIBUTES DLLEXPORT::PETSC___FLOAT128
268: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_OBJECT
269: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FUNCTION
270: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STRING
271: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STRUC
272: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DATATYPE_UNKNOWN
273: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COPY_VALUES
274: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_OWN_POINTER
275: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_USE_POINTER
276: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_i
277: !DEC$ ATTRIBUTES DLLEXPORT::MPIU_REAL
278: !DEC$ ATTRIBUTES DLLEXPORT::MPIU_SUM
279: !DEC$ ATTRIBUTES DLLEXPORT::MPIU_SCALAR
280: !DEC$ ATTRIBUTES DLLEXPORT::MPIU_INTEGER
281: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_RANDOM
282: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_INT_SIZE
283: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_FLOAT_SIZE
284: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_CHAR_SIZE
285: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SHORT_SIZE
286: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_DOUBLE_SIZE
287: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SCALAR_SIZE
288: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_SET
289: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_CUR
290: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_END
291: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_ALLREDUCE
292: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_IBARRIER
293: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_REDSCATTER
294: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_GENERAL
295: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_CONTIGUOUS
296: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_INTERLACED
297: #endif
298: !
299: ! include other sys components
300: !
301: #include "../src/sys/f90-mod/petscerror.h"
302: #include "../src/sys/f90-mod/petsclog.h"
303: #include "../src/sys/f90-mod/petscbag.h"