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