C $Header: /u/gcmpack/MITgcm/eesupp/src/eewrite_eeenv.F,v 1.12 2011/06/08 12:17:54 jmc Exp $
C $Name: $
#include "CPP_EEOPTIONS.h"
CBOP
C !ROUTINE: EEWRITE_EEENV
C !INTERFACE:
SUBROUTINE EEWRITE_EEENV
C !DESCRIPTION:
C *==========================================================*
C | SUBROUTINE EERWITE\_EEENV
C | o Write execution environment summary
C *==========================================================*
C | Write a summary of the execution environment as
C | configured for this run. The execution environment is
C | the computational mode in which the model operatoes. It
C | includes the computational grid but does not include any
C | model specific nuerical parameters.
C *==========================================================*
C !USES:
IMPLICIT NONE
C == Global data ==
#include "SIZE.h"
#include "EEPARAMS.h"
#include "EESUPPORT.h"
C !LOCAL VARIABLES:
C == Local variables ==
C msgBuf :: Temp. for building text messages.
CHARACTER*(MAX_LEN_MBUF) msgBuf
CEOP
WRITE(msgBuf,'(A)')
& '// ======================================================='
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A)')
& '// Computational Grid Specification ( see files "SIZE.h" )'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A)')
& '// ( and "eedata" )'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A)')
& '// ======================================================='
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' nPx =',nPx,
& ' ; /* No. processes in X */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' nPy =',nPy,
& ' ; /* No. processes in Y */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' nSx =',nSx,
& ' ; /* No. tiles in X per process */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' nSy =',nSy,
& ' ; /* No. tiles in Y per process */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' sNx =',sNx,
& ' ; /* Tile size in X */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' sNy =',sNy,
& ' ; /* Tile size in Y */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' OLx =',OLx,
& ' ; /* Tile overlap distance in X */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' OLy =',OLy,
& ' ; /* Tile overlap distance in Y */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' nTx =',nTx,
& ' ; /* No. threads in X per process */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' nTy =',nTy,
& ' ; /* No. threads in Y per process */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' Nr =', Nr,
& ' ; /* No. levels in the vertical */ '
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' Nx =', Nx,
& ' ; /* Total domain size in X ( = nPx*nSx*sNx ) */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' Ny =', Ny,
& ' ; /* Total domain size in Y ( = nPy*nSy*sNy ) */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' nTiles =', nSx*nSy,
& ' ; /* Total no. tiles per process ( = nSx*nSy ) */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') ' nProcs =', nPx*nPy,
& ' ; /* Total no. processes ( = nPx*nPy ) */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') 'nThreads =', nTx*nTy,
& ' ; /* Total no. threads per process ( = nTx*nTy ) */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,L5,A)') 'usingMPI =', usingMPI,
& ' ; /* Flag used to control whether MPI is in use */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,A,A)') ' ', ' ' ,
& ' /* note: To execute a program with MPI calls */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,A,A)') ' ', ' ' ,
& ' /* it must be launched appropriately e.g */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,A,A)') ' ', ' ' ,
& ' /* "mpirun -np 64 ......" */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,L5,A)') 'useCoupler=', useCoupler,
& ' ;/* Flag used to control communications with */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,A,A)') ' ', ' ',
& ' /* other model components, through a coupler */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,L5,A)') 'debugMode =', debugMode,
& ' ; /* print debug msg. (sequence of S/R calls) */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,L5,A)')
& 'printMapIncludesZeros=', printMapIncludesZeros,
& ' ; /* print zeros in Std.Output maps */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A,I5,A)') 'maxLengthPrt1D=', maxLengthPrt1D,
& ' /* maxLength of 1D array printed to StdOut */'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
WRITE(msgBuf,'(A)') ' '
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
RETURN
END