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