source: issm/trunk-jpl/externalpackages/petsc-dev/src/include/finclude/petscsys.h@ 11896

Last change on this file since 11896 was 11896, checked in by habbalf, 13 years ago

petsc-dev : Petsc development code in external packages. Mercurial updates

File size: 7.7 KB
Line 
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/petscsysdef.h"
8
9#if !defined(PETSC_AVOID_MPIF_H)
10#include "mpif.h"
11#endif
12
13! ------------------------------------------------------------------------
14! Non Common block Stuff declared first
15!
16! Flags
17!
18 PetscBool PETSC_TRUE
19 PetscBool PETSC_FALSE
20#if defined(PETSC_FORTRAN_PETSCTRUTH_INT)
21 parameter (PETSC_TRUE = 1,PETSC_FALSE = 0)
22#else
23 parameter (PETSC_TRUE = .true.,PETSC_FALSE = .false.)
24#endif
25 PetscInt PETSC_DECIDE,PETSC_DETERMINE
26 parameter (PETSC_DECIDE=-1,PETSC_DETERMINE=-1)
27
28 PetscInt PETSC_DEFAULT_INTEGER
29 parameter (PETSC_DEFAULT_INTEGER = -2)
30
31 PetscFortranDouble PETSC_DEFAULT_DOUBLE_PRECISION
32 parameter (PETSC_DEFAULT_DOUBLE_PRECISION=-2.0d0)
33
34 PetscEnum PETSC_FP_TRAP_OFF
35 PetscEnum PETSC_FP_TRAP_ON
36 parameter (PETSC_FP_TRAP_OFF = 0,PETSC_FP_TRAP_ON = 1)
37
38
39
40!
41! Default PetscViewers.
42!
43 PetscFortranAddr PETSC_VIEWER_DRAW_WORLD
44 PetscFortranAddr PETSC_VIEWER_DRAW_SELF
45 PetscFortranAddr PETSC_VIEWER_SOCKET_WORLD
46 PetscFortranAddr PETSC_VIEWER_SOCKET_SELF
47 PetscFortranAddr PETSC_VIEWER_STDOUT_WORLD
48 PetscFortranAddr PETSC_VIEWER_STDOUT_SELF
49 PetscFortranAddr PETSC_VIEWER_STDERR_WORLD
50 PetscFortranAddr PETSC_VIEWER_STDERR_SELF
51 PetscFortranAddr PETSC_VIEWER_BINARY_WORLD
52 PetscFortranAddr PETSC_VIEWER_BINARY_SELF
53 PetscFortranAddr PETSC_VIEWER_MATLAB_WORLD
54 PetscFortranAddr PETSC_VIEWER_MATLAB_SELF
55
56!
57! The numbers used below should match those in
58! petsc-private/fortranimpl.h
59!
60 parameter (PETSC_VIEWER_DRAW_WORLD = 4)
61 parameter (PETSC_VIEWER_DRAW_SELF = 5)
62 parameter (PETSC_VIEWER_SOCKET_WORLD = 6)
63 parameter (PETSC_VIEWER_SOCKET_SELF = 7)
64 parameter (PETSC_VIEWER_STDOUT_WORLD = 8)
65 parameter (PETSC_VIEWER_STDOUT_SELF = 9)
66 parameter (PETSC_VIEWER_STDERR_WORLD = 10)
67 parameter (PETSC_VIEWER_STDERR_SELF = 11)
68 parameter (PETSC_VIEWER_BINARY_WORLD = 12)
69 parameter (PETSC_VIEWER_BINARY_SELF = 13)
70 parameter (PETSC_VIEWER_MATLAB_WORLD = 14)
71 parameter (PETSC_VIEWER_MATLAB_SELF = 15)
72!
73! PETSc DataTypes
74!
75 PetscEnum PETSC_INT
76 PetscEnum PETSC_DOUBLE
77 PetscEnum PETSC_COMPLEX
78 PetscEnum PETSC_LONG
79 PetscEnum PETSC_SHORT
80 PetscEnum PETSC_FLOAT
81 PetscEnum PETSC_CHAR
82 PetscEnum PETSC_BIT_LOGICAL
83 PetscEnum PETSC_ENUM
84 PetscEnum PETSC_BOOL
85 PetscEnum PETSC___FLOAT128
86
87#if defined(PETSC_USE_REAL_SINGLE)
88#define PETSC_REAL PETSC_FLOAT
89#elif defined(PETSC_USE_REAL___FLOAT128)
90#define PETSC_REAL PETSC___FLOAT128
91#else
92#define PETSC_REAL PETSC_DOUBLE
93#endif
94#define PETSC_FORTRANADDR PETSC_LONG
95
96 parameter (PETSC_INT=0,PETSC_DOUBLE=1,PETSC_COMPLEX=2)
97 parameter (PETSC_LONG=3,PETSC_SHORT=4,PETSC_FLOAT=5)
98 parameter (PETSC_CHAR=6,PETSC_BIT_LOGICAL=7,PETSC_ENUM=8)
99 parameter (PETSC_BOOL=9,PETSC___FLOAT128=10)
100!
101!
102!
103 PetscEnum PETSC_COPY_VALUES
104 PetscEnum PETSC_OWN_POINTER
105 PetscEnum PETSC_USE_POINTER
106
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 parameter (PETSC_i = (0.0d0,1.0d0))
120!
121! Basic constants
122!
123 PetscFortranDouble PETSC_PI
124 PetscFortranDouble PETSC_MAX_REAL
125 PetscFortranDouble PETSC_MIN_REAL
126
127 parameter (PETSC_PI = 3.14159265358979323846264d0)
128 parameter (PETSC_MAX_REAL = 1.d300,PETSC_MIN_REAL = -1.d300)
129
130 PetscFortranDouble PETSC_MACHINE_EPSILON
131 PetscFortranDouble PETSC_SQRT_MACHINE_EPSILON
132 PetscFortranDouble PETSC_SMALL
133
134#if defined(PETSC_USE_REAL_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 PETSc aliases for MPI_ constants
146!
147 integer MPIU_SCALAR
148#if defined(PETSC_USE_COMPLEX)
149#if defined (PETSC_USE_REAL_SINGLE)
150 parameter(MPIU_SCALAR = MPI_COMPLEX)
151#else
152 parameter(MPIU_SCALAR = MPI_DOUBLE_COMPLEX)
153#endif
154#else
155#if defined (PETSC_USE_REAL_SINGLE)
156 parameter (MPIU_SCALAR = MPI_REAL)
157#else
158 parameter(MPIU_SCALAR = MPI_DOUBLE_PRECISION)
159#endif
160#endif
161
162 integer MPIU_INTEGER
163#if defined(PETSC_USE_64BIT_INDICES)
164 parameter(MPIU_INTEGER = MPI_INTEGER8)
165#else
166 parameter(MPIU_INTEGER = MPI_INTEGER)
167#endif
168
169!
170! ----------------------------------------------------------------------------
171! BEGIN COMMON-BLOCK VARIABLES
172!
173!
174! PETSc world communicator
175!
176 MPI_Comm PETSC_COMM_WORLD
177 MPI_Comm PETSC_COMM_SELF
178!
179! Fortran Null
180!
181 PetscChar(80) PETSC_NULL_CHARACTER
182 PetscInt PETSC_NULL_INTEGER
183 PetscFortranDouble PETSC_NULL_DOUBLE
184 PetscInt PETSC_NULL
185 PetscObject PETSC_NULL_OBJECT
186!
187! A PETSC_NULL_FUNCTION pointer
188!
189 external PETSC_NULL_FUNCTION
190 PetscScalar PETSC_NULL_SCALAR
191 PetscReal PETSC_NULL_REAL
192 PetscBool PETSC_NULL_BOOL
193!
194! Common Block to store some of the PETSc constants.
195! which can be set - only at runtime.
196!
197!
198! A string should be in a different common block
199!
200 common /petscfortran1/ PETSC_NULL_CHARACTER
201 common /petscfortran2/ PETSC_NULL_INTEGER
202 common /petscfortran3/ PETSC_NULL
203 common /petscfortran4/ PETSC_NULL_SCALAR
204 common /petscfortran5/ PETSC_NULL_DOUBLE
205 common /petscfortran6/ PETSC_NULL_REAL
206 common /petscfortran7/ PETSC_NULL_BOOL
207 common /petscfortran8/ PETSC_NULL_OBJECT
208 common /petscfortran9/ PETSC_COMM_WORLD
209 common /petscfortran10/ PETSC_COMM_SELF
210!
211! Possible arguments to PetscPushErrorHandler()
212!
213 external PETSCTRACEBACKERRORHANDLER
214 external PETSCABORTERRORHANDLER
215 external PETSCEMACSCLIENTERRORHANDLER
216 external PETSCATTACHDEBUGGERERRORHANDLER
217 external PETSCIGNOREERRORHANDLER
218!
219 external PetscIsInfOrNanScalar
220 external PetscIsInfOrNanReal
221 PetscBool PetscIsInfOrNanScalar
222 PetscBool PetscIsInfOrNanReal
223
224
225! END COMMON-BLOCK VARIABLES
226! ----------------------------------------------------------------------------
227!
228!
229! Random numbers
230!
231#define PETSCRAND 'rand'
232#define PETSCRAND48 'rand48'
233#define PETSCSPRNG 'sprng'
234!
235!
236!
237 PetscEnum PETSC_BINARY_INT_SIZE
238 PetscEnum PETSC_BINARY_FLOAT_SIZE
239 PetscEnum PETSC_BINARY_CHAR_SIZE
240 PetscEnum PETSC_BINARY_SHORT_SIZE
241 PetscEnum PETSC_BINARY_DOUBLE_SIZE
242 PetscEnum PETSC_BINARY_SCALAR_SIZE
243
244 parameter (PETSC_BINARY_INT_SIZE = 4)
245 parameter (PETSC_BINARY_FLOAT_SIZE = 4)
246 parameter (PETSC_BINARY_CHAR_SIZE = 1)
247 parameter (PETSC_BINARY_SHORT_SIZE = 2)
248 parameter (PETSC_BINARY_DOUBLE_SIZE = 8)
249#if defined(PETSC_USE_COMPLEX)
250 parameter (PETSC_BINARY_SCALAR_SIZE = 16)
251#else
252 parameter (PETSC_BINARY_SCALAR_SIZE = 8)
253#endif
254
255 PetscEnum PETSC_BINARY_SEEK_SET
256 PetscEnum PETSC_BINARY_SEEK_CUR
257 PetscEnum PETSC_BINARY_SEEK_END
258
259 parameter (PETSC_BINARY_SEEK_SET = 0,PETSC_BINARY_SEEK_CUR = 1)
260 parameter (PETSC_BINARY_SEEK_END = 2)
261
262!
Note: See TracBrowser for help on using the repository browser.