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