Actual source code: petscsys.h

petsc-3.11.4 2019-09-28
Report Typos and Errors
  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"