C $Header: /u/gcmpack/MITgcm/eesupp/inc/EEPARAMS.h,v 1.36 2014/02/13 04:10:25 jmc Exp $
C $Name: $
CBOP
C !ROUTINE: EEPARAMS.h
C !INTERFACE:
C include "EEPARAMS.h"
C
C !DESCRIPTION:
C *==========================================================*
C | EEPARAMS.h |
C *==========================================================*
C | Parameters for "execution environemnt". These are used |
C | by both the particular numerical model and the execution |
C | environment support routines. |
C *==========================================================*
CEOP
C ======== EESIZE.h ========================================
C MAX_LEN_MBUF :: Default message buffer max. size
C MAX_LEN_FNAM :: Default file name max. size
C MAX_LEN_PREC :: Default rec len for reading "parameter" files
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
C MAX_NO_THREADS :: Maximum number of threads allowed.
CC MAX_NO_PROCS :: Maximum number of processes allowed.
CC MAX_NO_BARRIERS :: Maximum number of distinct thread "barriers"
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
c INTEGER MAX_NO_PROCS
c PARAMETER ( MAX_NO_PROCS = 70000 )
c INTEGER MAX_NO_BARRIERS
c PARAMETER ( MAX_NO_BARRIERS = 1 )
C Particularly weird and obscure voodoo numbers
C lShare :: This wants to be the length in
C [148]-byte words of the size of
C the address "window" that is snooped
C on an SMP bus. By separating elements in
C the global sum buffer we can avoid generating
C extraneous invalidate traffic between
C processors. The length of this window is usually
C a cache line i.e. small O(64 bytes).
C The buffer arrays are usually short arrays
C and are declared REAL ARRA(lShare[148],LBUFF).
C Setting lShare[148] to 1 is like making these arrays
C one dimensional.
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
CC MAX_VGS :: Maximum buffer size for Global Vector Sum
c INTEGER MAX_VGS
c PARAMETER ( MAX_VGS = 8192 )
C ======== EESIZE.h ========================================
C Symbolic values
C precXXXX :: precision used for I/O
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
C Real-type constant for some frequently used simple number (0,1,2,1/2):
_RS zeroRS, oneRS, twoRS, halfRS
PARAMETER ( zeroRS = 0.0 _d 0 , oneRS = 1.0 _d 0 )
PARAMETER ( twoRS = 2.0 _d 0 , halfRS = 0.5 _d 0 )
_RL zeroRL, oneRL, twoRL, halfRL
PARAMETER ( zeroRL = 0.0 _d 0 , oneRL = 1.0 _d 0 )
PARAMETER ( twoRL = 2.0 _d 0 , halfRL = 0.5 _d 0 )
C UNSET_xxx :: Used to indicate variables that have not been given a value
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
_RL UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
_RS UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
C debLevX :: used to decide when to print debug messages
INTEGER debLevZero
INTEGER debLevA, debLevB, debLevC, debLevD, debLevE
PARAMETER ( debLevZero=0 )
PARAMETER ( debLevA=1 )
PARAMETER ( debLevB=2 )
PARAMETER ( debLevC=3 )
PARAMETER ( debLevD=4 )
PARAMETER ( debLevE=5 )
C SQUEEZE_RIGHT :: Flag indicating right blank space removal
C from text field.
C SQUEEZE_LEFT :: Flag indicating left blank space removal
C from text field.
C SQUEEZE_BOTH :: Flag indicating left and right blank
C space removal from text field.
C PRINT_MAP_XY :: Flag indicating to plot map as XY slices
C PRINT_MAP_XZ :: Flag indicating to plot map as XZ slices
C PRINT_MAP_YZ :: Flag indicating to plot map as YZ slices
C commentCharacter :: Variable used in column 1 of parameter
C files to indicate comments.
C INDEX_I :: Variable used to select an index label
C INDEX_J for formatted input parameters.
C INDEX_K
C INDEX_NONE
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
C EXCH_IGNORE_CORNERS :: Flag to select ignoring or
C EXCH_UPDATE_CORNERS updating of corners during an edge exchange.
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
C FORWARD_SIMULATION
C REVERSE_SIMULATION
C TANGENT_SIMULATION
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
C-- COMMON /EEPARAMS_L/ Execution environment public logical variables.
C eeBootError :: Flags indicating error during multi-processing
C eeEndError :: initialisation and termination.
C fatalError :: Flag used to indicate that the model is ended with an error
C debugMode :: controls printing of debug msg (sequence of S/R calls).
C useSingleCpuIO :: When useSingleCpuIO is set, MDS_WRITE_FIELD outputs from
C master MPI process only. -- NOTE: read from main parameter
C file "data" and not set until call to INI_PARMS.
C useSingleCpuInput :: When useSingleCpuInput is set, EXF_INTERP_READ
C reads forcing files from master MPI process only.
C -- NOTE: read from main parameter file "data"
C and defaults to useSingleCpuInput = useSingleCpuIO
C printMapIncludesZeros :: Flag that controls whether character constant
C map code ignores exact zero values.
C useCubedSphereExchange :: use Cubed-Sphere topology domain.
C useCoupler :: use Coupler for a multi-components set-up.
C useNEST_PARENT :: use Parent Nesting interface (pkg/nest_parent)
C useNEST_CHILD :: use Child Nesting interface (pkg/nest_child)
C useOASIS :: use OASIS-coupler for a multi-components set-up.
COMMON /EEPARAMS_L/
c & eeBootError, fatalError, eeEndError,
& eeBootError, eeEndError, fatalError, debugMode,
& useSingleCpuIO, useSingleCpuInput, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL debugMode
LOGICAL useSingleCpuIO
LOGICAL useSingleCpuInput
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
C-- COMMON /EPARAMS_I/ Execution environment public integer variables.
C errorMessageUnit :: Fortran IO unit for error messages
C standardMessageUnit :: Fortran IO unit for informational messages
C maxLengthPrt1D :: maximum length for printing (to Std-Msg-Unit) 1-D array
C scrUnit1 :: Scratch file 1 unit number
C scrUnit2 :: Scratch file 2 unit number
C eeDataUnit :: Unit # for reading "execution environment" parameter file
C modelDataUnit :: Unit number for reading "model" parameter file.
C numberOfProcs :: Number of processes computing in parallel
C pidIO :: Id of process to use for I/O.
C myBxLo, myBxHi :: Extents of domain in blocks in X and Y
C myByLo, myByHi :: that each threads is responsble for.
C myProcId :: My own "process" id.
C myPx :: My X coord on the proc. grid.
C myPy :: My Y coord on the proc. grid.
C myXGlobalLo :: My bottom-left (south-west) x-index global domain.
C The x-coordinate of this point in for example m or
C degrees is *not* specified here. A model needs to
C provide a mechanism for deducing that information
C if it is needed.
C myYGlobalLo :: My bottom-left (south-west) y-index in global domain.
C The y-coordinate of this point in for example m or
C degrees is *not* specified here. A model needs to
C provide a mechanism for deducing that information
C if it is needed.
C nThreads :: No. of threads
C nTx, nTy :: No. of threads in X and in Y
C This assumes a simple cartesian gridding of the threads
C which is not required elsewhere but that makes it easier
C ioErrorCount :: IO Error Counter. Set to zero initially and increased
C by one every time an IO error occurs.
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
CEH3 ;;; Local Variables: ***
CEH3 ;;; mode:fortran ***
CEH3 ;;; End: ***