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,PETSC_FALSE
 21:       PetscEnum   PETSC_YES,PETSC_NO
 22:       parameter (PETSC_TRUE = 1,PETSC_FALSE = 0)
 23:       parameter (PETSC_YES=1, PETSC_NO=0)

 25:       PetscInt   PETSC_DECIDE,PETSC_DETERMINE
 26:       parameter (PETSC_DECIDE=-1,PETSC_DETERMINE=-1)

 28:       PetscInt  PETSC_DEFAULT_INTEGER
 29:       parameter (PETSC_DEFAULT_INTEGER = -2)

 31:       PetscFortranDouble PETSC_DEFAULT_DOUBLE_PRECISION
 32:       parameter (PETSC_DEFAULT_DOUBLE_PRECISION=-2.0d0)

 34:       PetscEnum   PETSC_FP_TRAP_OFF,PETSC_FP_TRAP_ON
 35:       parameter (PETSC_FP_TRAP_OFF = 0,PETSC_FP_TRAP_ON = 1)



 39: !
 40: !     Default PetscViewers.
 41: !
 42:       PetscFortranAddr PETSC_VIEWER_DRAW_WORLD
 43:       PetscFortranAddr PETSC_VIEWER_DRAW_SELF
 44:       PetscFortranAddr PETSC_VIEWER_SOCKET_WORLD
 45:       PetscFortranAddr PETSC_VIEWER_SOCKET_SELF
 46:       PetscFortranAddr PETSC_VIEWER_STDOUT_WORLD
 47:       PetscFortranAddr PETSC_VIEWER_STDOUT_SELF
 48:       PetscFortranAddr PETSC_VIEWER_STDERR_WORLD
 49:       PetscFortranAddr PETSC_VIEWER_STDERR_SELF
 50:       PetscFortranAddr PETSC_VIEWER_BINARY_WORLD
 51:       PetscFortranAddr PETSC_VIEWER_BINARY_SELF
 52:       PetscFortranAddr PETSC_VIEWER_MATLAB_WORLD
 53:       PetscFortranAddr PETSC_VIEWER_MATLAB_SELF

 55: !
 56: !     The numbers used below should match those in
 57: !     src/fortran/custom/zpetsc.h
 58: !
 59:       parameter (PETSC_VIEWER_DRAW_WORLD   = -4)
 60:       parameter (PETSC_VIEWER_DRAW_SELF    = -5)
 61:       parameter (PETSC_VIEWER_SOCKET_WORLD = -6)
 62:       parameter (PETSC_VIEWER_SOCKET_SELF  = -7)
 63:       parameter (PETSC_VIEWER_STDOUT_WORLD = -8)
 64:       parameter (PETSC_VIEWER_STDOUT_SELF  = -9)
 65:       parameter (PETSC_VIEWER_STDERR_WORLD = -10)
 66:       parameter (PETSC_VIEWER_STDERR_SELF  = -11)
 67:       parameter (PETSC_VIEWER_BINARY_WORLD = -12)
 68:       parameter (PETSC_VIEWER_BINARY_SELF  = -13)
 69:       parameter (PETSC_VIEWER_MATLAB_WORLD = -14)
 70:       parameter (PETSC_VIEWER_MATLAB_SELF  = -15)
 71: !
 72: !     PETSc DataTypes
 73: !
 74:       PetscEnum PETSC_INT,PETSC_DOUBLE,PETSC_COMPLEX
 75:       PetscEnum PETSC_LONG,PETSC_SHORT,PETSC_FLOAT
 76:       PetscEnum PETSC_CHAR,PETSC_LOGICAL,PETSC_ENUM
 77:       PetscEnum PETSC_TRUTH,PETSC_LONG_DOUBLE

 79: #if defined(PETSC_USE_SINGLE)
 80: #define PETSC_REAL PETSC_FLOAT
 81: #elif defined(PETSC_USE_LONG_DOUBLE)
 82: #define PETSC_REAL PETSC_LONG_DOUBLE
 83: #elif defined(PETSC_USE_INT)
 84: #define PETSC_REAL PETSC_INT
 85: #else
 86: #define PETSC_REAL PETSC_DOUBLE
 87: #endif
 88: #define PETSC_FORTRANADDR PETSC_LONG

 90:       parameter (PETSC_INT=0,PETSC_DOUBLE=1,PETSC_COMPLEX=2)
 91:       parameter (PETSC_LONG=3,PETSC_SHORT=4,PETSC_FLOAT=5)
 92:       parameter (PETSC_CHAR=6,PETSC_LOGICAL=7,PETSC_ENUM=8)
 93:       parameter (PETSC_TRUTH=9,PETSC_LONG_DOUBLE=10)
 94: !
 95: ! ------------------------------------------------------------------------
 96: !     PETSc mathematics include file. Defines certain basic mathematical
 97: !    constants and functions for working with single and double precision
 98: !    floating point numbers as well as complex and integers.
 99: !
100: !     Representation of complex i
101: !
102:       PetscFortranComplex PETSC_i
103:       parameter (PETSC_i = (0.0d0,1.0d0))
104: !
105: !     Basic constants
106: !
107:       PetscFortranDouble PETSC_PI
108:       PetscFortranDouble PETSC_DEGREES_TO_RADIANS
109:       PetscFortranDouble PETSC_MAX
110:       PetscFortranDouble PETSC_MIN

112:       parameter (PETSC_PI = 3.14159265358979323846264d0)
113:       parameter (PETSC_DEGREES_TO_RADIANS = 0.01745329251994d0)
114:       parameter (PETSC_MAX = 1.d300,PETSC_MIN = -1.d300)

116:       PetscFortranDouble PETSC_MACHINE_EPSILON
117:       PetscFortranDouble PETSC_SQRT_MACHINE_EPSILON
118:       PetscFortranDouble PETSC_SMALL

120: #if defined(PETSC_USE_SINGLE)
121:       parameter (PETSC_MACHINE_EPSILON = 1.e-7)
122:       parameter (PETSC_SQRT_MACHINE_EPSILON = 3.e-4)
123:       parameter (PETSC_SMALL = 1.e-5)
124: #else
125:       parameter (PETSC_MACHINE_EPSILON = 1.d-14)
126:       parameter (PETSC_SQRT_MACHINE_EPSILON = 1.d-7)
127:       parameter (PETSC_SMALL = 1.d-10)
128: #endif
129: !
130: ! ----------------------------------------------------------------------------
131: !    BEGIN COMMON-BLOCK VARIABLES
132: !
133: !
134: !     PETSc world communicator
135: !
136:       MPI_Comm PETSC_COMM_WORLD,PETSC_COMM_SELF
137: !
138: !     Fortran Null
139: !
140:       PetscChar(80)       PETSC_NULL_CHARACTER
141:       PetscInt            PETSC_NULL_INTEGER
142:       PetscFortranDouble  PETSC_NULL_DOUBLE
143:       PetscInt            PETSC_NULL
144:       PetscObject         PETSC_NULL_OBJECT
145: !
146: !      A PETSC_NULL_FUNCTION pointer
147: !
148:       external PETSC_NULL_FUNCTION
149:       PetscScalar   PETSC_NULL_SCALAR
150:       PetscReal     PETSC_NULL_REAL
151: !
152: !     Common Block to store some of the PETSc constants.
153: !     which can be set - only at runtime.
154: !
155: !
156: !     A string should be in a different common block
157: !
158:       common /petscfortran1/ PETSC_NULL_CHARACTER
159:       common /petscfortran2/ PETSC_NULL_INTEGER
160:       common /petscfortran3/ PETSC_NULL
161:       common /petscfortran4/ PETSC_NULL_SCALAR
162:       common /petscfortran5/ PETSC_NULL_DOUBLE
163:       common /petscfortran6/ PETSC_NULL_REAL
164:       common /petscfortran7/ PETSC_COMM_WORLD,PETSC_COMM_SELF
165:       common /petscfortran8/ PETSC_NULL_OBJECT
166: !
167: !     Possible arguments to PetscPushErrorHandler()
168: !
169:       external PETSCTRACEBACKERRORHANDLER
170:       external PETSCABORTERRORHANDLER
171:       external PETSCEMACSCLIENTERRORHANDLER
172:       external PETSCATTACHDEBUGGERERRORHANDLER
173:       external PETSCIGNOREERRORHANDLER

175: 
176: !    END COMMON-BLOCK VARIABLES
177: ! ----------------------------------------------------------------------------

179: #endif