Actual source code: petscsys.h

petsc-3.15.0 2021-03-30
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 :: 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:       PetscInt, parameter :: PETSC_DECIDE = -1
 31:       PetscInt, parameter :: PETSC_DETERMINE = -1
 32:       PetscInt, parameter :: PETSC_DEFAULT_INTEGER = -2

 34:       PetscReal, parameter :: PETSC_DEFAULT_REAL = -2.0d0

 36:       PetscEnum, parameter :: PETSC_FP_TRAP_OFF = 0
 37:       PetscEnum, parameter :: PETSC_FP_TRAP_ON = 1

 39:       PetscFortranAddr, parameter :: PETSC_STDOUT = 0
 40: !
 41: !     PETSc DataTypes
 42: !
 43: #if defined(PETSC_USE_REAL_SINGLE)
 44: #define PETSC_REAL PETSC_FLOAT
 45: #elif defined(PETSC_USE_REAL___FLOAT128)
 46: #define PETSC_REAL PETSC___FLOAT128
 47: #else
 48: #define PETSC_REAL PETSC_DOUBLE
 49: #endif
 50: #define PETSC_FORTRANADDR PETSC_LONG

 52:       PetscEnum, parameter :: PETSC_DATATYPE_UNKNOWN = 0
 53:       PetscEnum, parameter :: PETSC_DOUBLE = 1
 54:       PetscEnum, parameter :: PETSC_COMPLEX = 2
 55:       PetscEnum, parameter :: PETSC_LONG = 3
 56:       PetscEnum, parameter :: PETSC_SHORT = 4
 57:       PetscEnum, parameter :: PETSC_FLOAT = 5
 58:       PetscEnum, parameter :: PETSC_CHAR = 6
 59:       PetscEnum, parameter :: PETSC_BIT_LOGICAL = 7
 60:       PetscEnum, parameter :: PETSC_ENUM = 8
 61:       PetscEnum, parameter :: PETSC_BOOL = 9
 62:       PetscEnum, parameter :: PETSC___FLOAT128 = 10
 63:       PetscEnum, parameter :: PETSC_OBJECT = 11
 64:       PetscEnum, parameter :: PETSC_FUNCTION = 12
 65:       PetscEnum, parameter :: PETSC_STRING = 13
 66:       PetscEnum, parameter :: PETSC___FP16 = 14
 67:       PetscEnum, parameter :: PETSC_STRUCT = 15
 68:       PetscEnum, parameter :: PETSC_INT = 16
 69: !
 70: !
 71: !
 72:       PetscEnum, parameter :: PETSC_COPY_VALUES = 0
 73:       PetscEnum, parameter :: PETSC_OWN_POINTER = 1
 74:       PetscEnum, parameter :: PETSC_USE_POINTER = 2
 75: !
 76: ! ------------------------------------------------------------------------
 77: !     PETSc mathematics include file. Defines certain basic mathematical
 78: !    constants and functions for working with single and double precision
 79: !    floating point numbers as well as complex and integers.
 80: !
 81: !     Representation of complex i
 82: !
 83: #if defined(PETSC_USE_REAL_SINGLE)
 84:       PetscFortranComplex, parameter :: PETSC_i = (0.0e0,1.0e0)
 85: #else
 86:       PetscFortranComplex, parameter :: PETSC_i = (0.0d0,1.0d0)
 87: #endif

 89: !      A PETSC_NULL_FUNCTION pointer
 90: !
 91:       external PETSC_NULL_FUNCTION
 92: !
 93: !     Possible arguments to PetscPushErrorHandler()
 94: !
 95:       external PETSCTRACEBACKERRORHANDLER
 96:       external PETSCABORTERRORHANDLER
 97:       external PETSCEMACSCLIENTERRORHANDLER
 98:       external PETSCATTACHDEBUGGERERRORHANDLER
 99:       external PETSCIGNOREERRORHANDLER
100: !
101:       external  PetscIsInfOrNanScalar
102:       external  PetscIsInfOrNanReal
103:       PetscBool PetscIsInfOrNanScalar
104:       PetscBool PetscIsInfOrNanReal


107: ! ----------------------------------------------------------------------------
108: !
109: !     Random numbers
110: !
111:       type tPetscRandom
112:         sequence
113:         PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
114:       end type tPetscRandom

116:       PetscRandom, parameter :: PETSC_NULL_RANDOM = tPetscRandom(0)
117: !
118: #define PETSCRAND 'rand'
119: #define PETSCRAND48 'rand48'
120: #define PETSCSPRNG 'sprng'
121: #define PETSCRANDER48 'rander48'
122: !
123: !
124: !
125:       PetscEnum, parameter :: PETSC_BINARY_INT_SIZE = 4
126:       PetscEnum, parameter :: PETSC_BINARY_FLOAT_SIZE = 4
127:       PetscEnum, parameter :: PETSC_BINARY_CHAR_SIZE = 1
128:       PetscEnum, parameter :: PETSC_BINARY_SHORT_SIZE = 2
129:       PetscEnum, parameter :: PETSC_BINARY_DOUBLE_SIZE = 8
130: #if defined(PETSC_USE_COMPLEX)
131:       PetscEnum, parameter :: PETSC_BINARY_SCALAR_SIZE = 16
132: #else
133:       PetscEnum, parameter :: PETSC_BINARY_SCALAR_SIZE = 8
134: #endif

136:       PetscEnum, parameter :: PETSC_BINARY_SEEK_SET = 0
137:       PetscEnum, parameter :: PETSC_BINARY_SEEK_CUR = 1
138:       PetscEnum, parameter :: PETSC_BINARY_SEEK_END = 2

140:       PetscEnum, parameter :: PETSC_BUILDTWOSIDED_ALLREDUCE = 0
141:       PetscEnum, parameter :: PETSC_BUILDTWOSIDED_IBARRIER = 1
142:       PetscEnum, parameter :: PETSC_BUILDTWOSIDED_REDSCATTER = 2

144:       type tPetscSubcomm
145:         sequence
146:         PetscFortranAddr:: v PETSC_FORTRAN_TYPE_INITIALIZE
147:       end type tPetscSubcomm

149:       PetscSubcomm, parameter :: PETSC_NULL_SUBCOMM = tPetscSubcomm(0)

151: !
152: !     PetscSubcommType
153: !
154:       PetscEnum, parameter :: PETSC_SUBCOMM_GENERAL = 0
155:       PetscEnum, parameter :: PETSC_SUBCOMM_CONTIGUOUS = 1
156:       PetscEnum, parameter :: PETSC_SUBCOMM_INTERLACED = 2

158: #if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
159: !DEC$ ATTRIBUTES DLLEXPORT::PetscReal_Private
160: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_REAL_KIND
161: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_OPTIONS
162: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_TRUE
163: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FALSE
164: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DECIDE
165: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DETERMINE
166: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_INTEGER
167: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DEFAULT_REAL
168: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FP_TRAP_OFF
169: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FP_TRAP_ON
170: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STDOUT
171: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_INT
172: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DOUBLE
173: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COMPLEX
174: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_LONG
175: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SHORT
176: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FLOAT
177: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_CHAR
178: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BIT_LOGICAL
179: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_ENUM
180: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BOOL
181: !DEC$ ATTRIBUTES DLLEXPORT::PETSC___FLOAT128
182: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_OBJECT
183: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_FUNCTION
184: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STRING
185: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_STRUC
186: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_DATATYPE_UNKNOWN
187: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_COPY_VALUES
188: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_OWN_POINTER
189: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_USE_POINTER
190: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_i
191: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_RANDOM
192: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_INT_SIZE
193: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_FLOAT_SIZE
194: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_CHAR_SIZE
195: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SHORT_SIZE
196: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_DOUBLE_SIZE
197: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SCALAR_SIZE
198: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_SET
199: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_CUR
200: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BINARY_SEEK_END
201: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_ALLREDUCE
202: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_IBARRIER
203: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_BUILDTWOSIDED_REDSCATTER
204: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_GENERAL
205: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_CONTIGUOUS
206: !DEC$ ATTRIBUTES DLLEXPORT::PETSC_SUBCOMM_INTERLACED
207: #endif

209: ! ----------------------------------------------------------------------------
210: !
211: !     PetscInfoCommFlag Enum
212: !
213: !
214: !     PetscInfoCommFlag
215: !
216:       PetscEnum PETSC_INFO_COMM_ALL
217:       PetscEnum PETSC_INFO_COMM_NO_SELF
218:       PetscEnum PETSC_INFO_COMM_ONLY_SELF
219:       parameter(PETSC_INFO_COMM_ALL=-1)
220:       parameter(PETSC_INFO_COMM_NO_SELF=0)
221:       parameter(PETSC_INFO_COMM_ONLY_SELF=1)