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