Actual source code: petsc.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 finclude/petscdef.h
9: #if !defined(PETSC_AVOID_MPIF_H)
10: #include "mpif.h"
11: #endif
13: ! ------------------------------------------------------------------------
14: ! Non Common block Stuff declared first
15: !
16: ! Flags
17: !
18: PetscTruth PETSC_TRUE
19: PetscTruth PETSC_FALSE
20: PetscTruth PETSC_YES
21: PetscTruth PETSC_NO
22: #if defined(PETSC_FORTRAN_PETSCTRUTH_INT)
23: parameter (PETSC_TRUE = 1,PETSC_FALSE = 0)
24: parameter (PETSC_YES= 1, PETSC_NO = 0)
25: #else
26: parameter (PETSC_TRUE = .true.,PETSC_FALSE = .false.)
27: parameter (PETSC_YES=.true., PETSC_NO=.false.)
28: #endif
29: PetscInt PETSC_DECIDE,PETSC_DETERMINE
30: parameter (PETSC_DECIDE=-1,PETSC_DETERMINE=-1)
32: PetscInt PETSC_DEFAULT_INTEGER
33: parameter (PETSC_DEFAULT_INTEGER = -2)
35: PetscFortranDouble PETSC_DEFAULT_DOUBLE_PRECISION
36: parameter (PETSC_DEFAULT_DOUBLE_PRECISION=-2.0d0)
38: PetscEnum PETSC_FP_TRAP_OFF
39: PetscEnum PETSC_FP_TRAP_ON
40: parameter (PETSC_FP_TRAP_OFF = 0,PETSC_FP_TRAP_ON = 1)
44: !
45: ! Default PetscViewers.
46: !
47: PetscFortranAddr PETSC_VIEWER_DRAW_WORLD
48: PetscFortranAddr PETSC_VIEWER_DRAW_SELF
49: PetscFortranAddr PETSC_VIEWER_SOCKET_WORLD
50: PetscFortranAddr PETSC_VIEWER_SOCKET_SELF
51: PetscFortranAddr PETSC_VIEWER_STDOUT_WORLD
52: PetscFortranAddr PETSC_VIEWER_STDOUT_SELF
53: PetscFortranAddr PETSC_VIEWER_STDERR_WORLD
54: PetscFortranAddr PETSC_VIEWER_STDERR_SELF
55: PetscFortranAddr PETSC_VIEWER_BINARY_WORLD
56: PetscFortranAddr PETSC_VIEWER_BINARY_SELF
57: PetscFortranAddr PETSC_VIEWER_MATLAB_WORLD
58: PetscFortranAddr PETSC_VIEWER_MATLAB_SELF
60: !
61: ! The numbers used below should match those in
62: ! private/fortranimpl.h
63: !
64: parameter (PETSC_VIEWER_DRAW_WORLD = -4)
65: parameter (PETSC_VIEWER_DRAW_SELF = -5)
66: parameter (PETSC_VIEWER_SOCKET_WORLD = -6)
67: parameter (PETSC_VIEWER_SOCKET_SELF = -7)
68: parameter (PETSC_VIEWER_STDOUT_WORLD = -8)
69: parameter (PETSC_VIEWER_STDOUT_SELF = -9)
70: parameter (PETSC_VIEWER_STDERR_WORLD = -10)
71: parameter (PETSC_VIEWER_STDERR_SELF = -11)
72: parameter (PETSC_VIEWER_BINARY_WORLD = -12)
73: parameter (PETSC_VIEWER_BINARY_SELF = -13)
74: parameter (PETSC_VIEWER_MATLAB_WORLD = -14)
75: parameter (PETSC_VIEWER_MATLAB_SELF = -15)
76: !
77: ! PETSc DataTypes
78: !
79: PetscEnum PETSC_INT
80: PetscEnum PETSC_DOUBLE
81: PetscEnum PETSC_COMPLEX
82: PetscEnum PETSC_LONG
83: PetscEnum PETSC_SHORT
84: PetscEnum PETSC_FLOAT
85: PetscEnum PETSC_CHAR
86: PetscEnum PETSC_LOGICAL
87: PetscEnum PETSC_ENUM
88: PetscEnum PETSC_TRUTH
89: PetscEnum PETSC_LONG_DOUBLE
91: #if defined(PETSC_USE_SINGLE)
92: #define PETSC_REAL PETSC_FLOAT
93: #elif defined(PETSC_USE_LONG_DOUBLE)
94: #define PETSC_REAL PETSC_LONG_DOUBLE
95: #elif defined(PETSC_USE_INT)
96: #define PETSC_REAL PETSC_INT
97: #else
98: #define PETSC_REAL PETSC_DOUBLE
99: #endif
100: #define PETSC_FORTRANADDR PETSC_LONG
102: parameter (PETSC_INT=0,PETSC_DOUBLE=1,PETSC_COMPLEX=2)
103: parameter (PETSC_LONG=3,PETSC_SHORT=4,PETSC_FLOAT=5)
104: parameter (PETSC_CHAR=6,PETSC_LOGICAL=7,PETSC_ENUM=8)
105: parameter (PETSC_TRUTH=9,PETSC_LONG_DOUBLE=10)
106: !
107: ! ------------------------------------------------------------------------
108: ! PETSc mathematics include file. Defines certain basic mathematical
109: ! constants and functions for working with single and double precision
110: ! floating point numbers as well as complex and integers.
111: !
112: ! Representation of complex i
113: !
114: PetscFortranComplex PETSC_i
115: parameter (PETSC_i = (0.0d0,1.0d0))
116: !
117: ! Basic constants
118: !
119: PetscFortranDouble PETSC_PI
120: PetscFortranDouble PETSC_DEGREES_TO_RADIANS
121: PetscFortranDouble PETSC_MAX
122: PetscFortranDouble PETSC_MIN
124: parameter (PETSC_PI = 3.14159265358979323846264d0)
125: parameter (PETSC_DEGREES_TO_RADIANS = 0.01745329251994d0)
126: parameter (PETSC_MAX = 1.d300,PETSC_MIN = -1.d300)
128: PetscFortranDouble PETSC_MACHINE_EPSILON
129: PetscFortranDouble PETSC_SQRT_MACHINE_EPSILON
130: PetscFortranDouble PETSC_SMALL
132: #if defined(PETSC_USE_SINGLE)
133: parameter (PETSC_MACHINE_EPSILON = 1.e-7)
134: parameter (PETSC_SQRT_MACHINE_EPSILON = 3.e-4)
135: parameter (PETSC_SMALL = 1.e-5)
136: #else
137: parameter (PETSC_MACHINE_EPSILON = 1.d-14)
138: parameter (PETSC_SQRT_MACHINE_EPSILON = 1.d-7)
139: parameter (PETSC_SMALL = 1.d-10)
140: #endif
141: !
142: ! ----------------------------------------------------------------------------
143: ! BEGIN PETSc aliases for MPI_ constants
144: !
145: integer MPIU_SCALAR
146: #if defined(PETSC_USE_COMPLEX)
147: parameter(MPIU_SCALAR = MPI_DOUBLE_COMPLEX)
148: #else
149: #if defined (PETSC_USE_SINGLE)
150: parameter (MPIU_SCALAR = MPI_REAL)
151: #elif defined(PETSC_USE_LONG_DOUBLE)
152: parameter(MPIU_SCALAR = MPI_2DOUBLE_PRECISION)
153: #else
154: parameter(MPIU_SCALAR = MPI_DOUBLE_PRECISION)
155: #endif
156: #endif
157: !
158: ! ----------------------------------------------------------------------------
159: ! BEGIN COMMON-BLOCK VARIABLES
160: !
161: !
162: ! PETSc world communicator
163: !
164: MPI_Comm PETSC_COMM_WORLD
165: MPI_Comm PETSC_COMM_SELF
166: !
167: ! Fortran Null
168: !
169: PetscChar(80) PETSC_NULL_CHARACTER
170: PetscInt PETSC_NULL_INTEGER
171: PetscFortranDouble PETSC_NULL_DOUBLE
172: PetscInt PETSC_NULL
173: PetscObject PETSC_NULL_OBJECT
174: !
175: ! A PETSC_NULL_FUNCTION pointer
176: !
177: external PETSC_NULL_FUNCTION
178: PetscScalar PETSC_NULL_SCALAR
179: PetscReal PETSC_NULL_REAL
180: PetscTruth PETSC_NULL_TRUTH
181: !
182: ! Common Block to store some of the PETSc constants.
183: ! which can be set - only at runtime.
184: !
185: !
186: ! A string should be in a different common block
187: !
188: common /petscfortran1/ PETSC_NULL_CHARACTER
189: common /petscfortran2/ PETSC_NULL_INTEGER
190: common /petscfortran3/ PETSC_NULL
191: common /petscfortran4/ PETSC_NULL_SCALAR
192: common /petscfortran5/ PETSC_NULL_DOUBLE
193: common /petscfortran6/ PETSC_NULL_REAL
194: common /petscfortran7/ PETSC_COMM_WORLD,PETSC_COMM_SELF
195: common /petscfortran8/ PETSC_NULL_TRUTH
196: common /petscfortran9/ PETSC_NULL_OBJECT
197: !
198: ! Possible arguments to PetscPushErrorHandler()
199: !
200: external PETSCTRACEBACKERRORHANDLER
201: external PETSCABORTERRORHANDLER
202: external PETSCEMACSCLIENTERRORHANDLER
203: external PETSCATTACHDEBUGGERERRORHANDLER
204: external PETSCIGNOREERRORHANDLER
205: !
206: external PetscIsInfOrNanScalar
207: external PetscIsInfOrNanReal
208: PetscTruth PetscIsInfOrNanScalar
209: PetscTruth PetscIsInfOrNanReal
211:
212: ! END COMMON-BLOCK VARIABLES
213: ! ----------------------------------------------------------------------------
214: !