Actual source code: petsc.h
1: !
2: !
3: ! Base include file for Fortran use of the PETSc package.
4: !
5: #include "petscconf.h"
7: #if !defined(PETSC_AVOID_MPIF_H) && !defined(PETSC_AVOID_DECLARATIONS)
8: #include "mpif.h"
9: #endif
11: #include include/finclude/petscdef.h
13: #if !defined (PETSC_AVOID_DECLARATIONS)
14: ! ------------------------------------------------------------------------
15: ! Non Common block Stuff declared first
16: !
17: ! Flags
18: !
19: PetscEnum PETSC_TRUE,PETSC_FALSE
20: PetscEnum PETSC_YES,PETSC_NO
21: parameter (PETSC_TRUE = 1,PETSC_FALSE = 0)
22: parameter (PETSC_YES=1, PETSC_NO=0)
24: PetscInt PETSC_DECIDE,PETSC_DETERMINE
25: parameter (PETSC_DECIDE=-1,PETSC_DETERMINE=-1)
27: PetscInt PETSC_DEFAULT_INTEGER
28: parameter (PETSC_DEFAULT_INTEGER = -2)
30: PetscFortranDouble PETSC_DEFAULT_DOUBLE_PRECISION
31: parameter (PETSC_DEFAULT_DOUBLE_PRECISION=-2.0d0)
33: PetscEnum PETSC_FP_TRAP_OFF,PETSC_FP_TRAP_ON
34: parameter (PETSC_FP_TRAP_OFF = 0,PETSC_FP_TRAP_ON = 1)
38: !
39: ! Default PetscViewers.
40: !
41: PetscFortranAddr PETSC_VIEWER_DRAW_WORLD
42: PetscFortranAddr PETSC_VIEWER_DRAW_SELF
43: PetscFortranAddr PETSC_VIEWER_SOCKET_WORLD
44: PetscFortranAddr PETSC_VIEWER_SOCKET_SELF
45: PetscFortranAddr PETSC_VIEWER_STDOUT_WORLD
46: PetscFortranAddr PETSC_VIEWER_STDOUT_SELF
47: PetscFortranAddr PETSC_VIEWER_STDERR_WORLD
48: PetscFortranAddr PETSC_VIEWER_STDERR_SELF
49: PetscFortranAddr PETSC_VIEWER_BINARY_WORLD
50: PetscFortranAddr PETSC_VIEWER_BINARY_SELF
51: PetscFortranAddr PETSC_VIEWER_MATLAB_WORLD
52: PetscFortranAddr PETSC_VIEWER_MATLAB_SELF
54: !
55: ! The numbers used below should match those in
56: ! src/fortran/custom/zpetsc.h
57: !
58: parameter (PETSC_VIEWER_DRAW_WORLD = -4)
59: parameter (PETSC_VIEWER_DRAW_SELF = -5)
60: parameter (PETSC_VIEWER_SOCKET_WORLD = -6)
61: parameter (PETSC_VIEWER_SOCKET_SELF = -7)
62: parameter (PETSC_VIEWER_STDOUT_WORLD = -8)
63: parameter (PETSC_VIEWER_STDOUT_SELF = -9)
64: parameter (PETSC_VIEWER_STDERR_WORLD = -10)
65: parameter (PETSC_VIEWER_STDERR_SELF = -11)
66: parameter (PETSC_VIEWER_BINARY_WORLD = -12)
67: parameter (PETSC_VIEWER_BINARY_SELF = -13)
68: parameter (PETSC_VIEWER_MATLAB_WORLD = -14)
69: parameter (PETSC_VIEWER_MATLAB_SELF = -15)
70: !
71: ! PETSc DataTypes
72: !
73: PetscEnum PETSC_INT,PETSC_DOUBLE,PETSC_COMPLEX
74: PetscEnum PETSC_LONG,PETSC_SHORT,PETSC_FLOAT
75: PetscEnum PETSC_CHAR,PETSC_LOGICAL
77: parameter (PETSC_INT=0,PETSC_DOUBLE=1,PETSC_COMPLEX=2)
78: parameter (PETSC_LONG=3,PETSC_SHORT=4,PETSC_FLOAT=5)
79: parameter (PETSC_CHAR=6,PETSC_LOGICAL=7)
80: !
81: ! ------------------------------------------------------------------------
82: ! PETSc mathematics include file. Defines certain basic mathematical
83: ! constants and functions for working with single and double precision
84: ! floating point numbers as well as complex and integers.
85: !
86: ! Representation of complex i
87: !
88: PetscFortranComplex PETSC_i
89: parameter (PETSC_i = (0.0d0,1.0d0))
90: !
91: ! Basic constants
92: !
93: PetscFortranDouble PETSC_PI
94: PetscFortranDouble PETSC_DEGREES_TO_RADIANS
95: PetscFortranDouble PETSC_MAX
96: PetscFortranDouble PETSC_MIN
98: parameter (PETSC_PI = 3.14159265358979323846264d0)
99: parameter (PETSC_DEGREES_TO_RADIANS = 0.01745329251994d0)
100: parameter (PETSC_MAX = 1.d300,PETSC_MIN = -1.d300)
102: PetscFortranDouble PETSC_MACHINE_EPSILON
103: PetscFortranDouble PETSC_SQRT_MACHINE_EPSILON
104: PetscFortranDouble PETSC_SMALL
106: #if defined(PETSC_USE_SINGLE)
107: parameter (PETSC_MACHINE_EPSILON = 1.e-7)
108: parameter (PETSC_SQRT_MACHINE_EPSILON = 3.e-4)
109: parameter (PETSC_SMALL = 1.e-5)
110: #else
111: parameter (PETSC_MACHINE_EPSILON = 1.d-14)
112: parameter (PETSC_SQRT_MACHINE_EPSILON = 1.d-7)
113: parameter (PETSC_SMALL = 1.d-10)
114: #endif
115: !
116: ! ----------------------------------------------------------------------------
117: ! BEGIN COMMON-BLOCK VARIABLES
118: !
119: !
120: ! PETSc world communicator
121: !
122: MPI_Comm PETSC_COMM_WORLD,PETSC_COMM_SELF
123: !
124: ! Fortran Null
125: !
126: PetscChar(80) PETSC_NULL_CHARACTER
127: PetscInt PETSC_NULL_INTEGER
128: PetscFortranDouble PETSC_NULL_DOUBLE
129: PetscInt PETSC_NULL
130: PetscObject PETSC_NULL_OBJECT
131: !
132: ! A PETSC_NULL_FUNCTION pointer
133: !
134: external PETSC_NULL_FUNCTION
135: PetscScalar PETSC_NULL_SCALAR
136: PetscReal PETSC_NULL_REAL
137: !
138: ! Common Block to store some of the PETSc constants.
139: ! which can be set - only at runtime.
140: !
141: !
142: ! A string should be in a different common block
143: !
144: common /petscfortran1/ PETSC_NULL_CHARACTER
145: common /petscfortran2/ PETSC_NULL_INTEGER
146: common /petscfortran3/ PETSC_NULL
147: common /petscfortran4/ PETSC_NULL_SCALAR
148: common /petscfortran5/ PETSC_NULL_DOUBLE
149: common /petscfortran6/ PETSC_NULL_REAL
150: common /petscfortran7/ PETSC_COMM_WORLD,PETSC_COMM_SELF
151: common /petscfortran8/ PETSC_NULL_OBJECT
152: !
153: ! Possible arguments to PetscPushErrorHandler()
154: !
155: external PETSCTRACEBACKERRORHANDLER
156: external PETSCABORTERRORHANDLER
157: external PETSCEMACSCLIENTERRORHANDLER
158: external PETSCATTACHDEBUGGERERRORHANDLER
159: external PETSCIGNOREERRORHANDLER
161:
162: ! END COMMON-BLOCK VARIABLES
163: ! ----------------------------------------------------------------------------
165: #endif