C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/eesupp/inc/EEPARAMS.h,v 1.9 2001/05/29 14:01:35 adcroft Exp $ C $Name: $ C 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 \==========================================================/ C MAX_LEN_MBUF - Default message buffer max. size C MAX_LEN_FNAM - Default file name max. size C MAX_LEN_PREC - Default record length 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 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 files to C 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 C 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 INTEGER FORWARD_SIMULATION INTEGER REVERSE_SIMULATION PARAMETER ( FORWARD_SIMULATION = 0, & REVERSE_SIMULATION = 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 ) C MAX_NO_THREADS - Maximum number of threads allowed. C MAX_NO_PROCS - Maximum number of processes allowed. C MAX_NO_BARRIERS - Maximum number of distinct thread "barriers" INTEGER MAX_NO_THREADS PARAMETER ( MAX_NO_THREADS = 32 ) INTEGER MAX_NO_PROCS PARAMETER ( MAX_NO_PROCS = 128 ) INTEGER MAX_NO_BARRIERS PARAMETER ( MAX_NO_BARRIERS = 1 ) C-- COMMON /EEPARAMS_L/ Execution environment public logical variables. C eeBootError - Flag indicating error during multi-processing C eeEndError initialisation/termination. C fatalError - Flag used to indicate that the model is ended with C an error COMMON /EEPARAMS_L/ eeBootError, fatalError, eeEndError, & useCubedSphereExchange LOGICAL eeBootError LOGICAL eeEndError LOGICAL fatalError LOGICAL useCubedSphereExchange 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 scrUnit1 - Scratch file 1 unit number C scrUnit2 - Scratch file 2 unit number C eeDataUnit - Unit number used 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 C global domain. The x-coordinate of this C point in for example m or degrees is *not* C specified here. A model needs to provide a C mechanism for deducing that information if it C is needed. C myYGlobalLo - My bottom-left (south-west) y-index in C global domain. The y-coordinate of this C point in for example m or degrees is *not* C specified here. A model needs to provide a C mechanism for deducing that information if it C is needed. C nThreads - No. of threads C nTx - No. of threads in X C nTy - No. of threads in Y C This assumes a simple cartesian C gridding of the threads which is not required elsewhere C 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, & scrUnit1, scrUnit2, eeDataUnit, modelDataUnit, & numberOfProcs, pidIO, myProcId, & myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads, & myBxLo, myBxHi, myByLo, myByHi, & nTx, nTy, ioErrorCount INTEGER eeDataUnit INTEGER errorMessageUnit INTEGER ioErrorCount(MAX_NO_THREADS) INTEGER modelDataUnit 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 INTEGER scrUnit1 INTEGER scrUnit2 INTEGER standardMessageUnit