--- MITgcm/model/src/config_summary.F 2001/02/04 14:38:46 1.25 +++ MITgcm/model/src/config_summary.F 2002/03/07 14:09:02 1.32 @@ -1,25 +1,29 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/model/src/config_summary.F,v 1.25 2001/02/04 14:38:46 cnh Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/model/src/config_summary.F,v 1.32 2002/03/07 14:09:02 jmc Exp $ C $Name: $ #include "CPP_OPTIONS.h" -CStartOfInterface +CBOP +C !ROUTINE: CONFIG_SUMMARY +C !INTERFACE: SUBROUTINE CONFIG_SUMMARY( myThid ) -C /========================================================== -C | SUBROUTINE CONFIG_SUMMARY | -C | o Summarize model prognostic variables. | -C |==========================================================| -C | This routine writes a tabulated summary of the model | -C | configuration. | -C | Note | -C | 1. Under multi-process parallelism the summary | -C | is only given for the per-process data. | -C | 2. Under multi-threading the summary is produced by | -C | the master thread. This threads reads data managed by| -C | other threads. | -C \==========================================================/ - IMPLICIT NONE +C !DESCRIPTION: \bv +C *=========================================================* +C | SUBROUTINE CONFIG_SUMMARY +C | o Summarize model parameter settings. +C *=========================================================* +C | This routine writes a tabulated summary of the kernel +C | model configuration. Information describes all the +C | parameter setting in force and the meaning and units of +C | those parameters. Individal packages report a similar +C | table for each package using the same format as employed +C | here. If parameters are missing or incorrectly described +C | or dimensioned please contact support@mitgcm.org +C *=========================================================* +C \ev +C !USES: + IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" @@ -27,18 +31,29 @@ #include "GRID.h" #include "DYNVARS.h" +C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C myThid - Number of this instance of CONFIG_SUMMARY INTEGER myThid CEndOfInterface +C !LOCAL VARIABLES: C == Local variables == +C msgBuf :: Temp. for building output string. +C I,J,K :: Loop counters. +C bi,bj :: Tile loop counters. +C xcoord :: Temps. for building lists of values for uni-dimensionally +C ycoord :: varying parameters. +C zcoord :: CHARACTER*(MAX_LEN_MBUF) msgBuf INTEGER I,J,K INTEGER bi, bj _RL xcoord(Nx) _RL ycoord(Ny) - _RL rcoord(Nr) + _RL rcoord(Nr+1) + INTEGER coordLine + INTEGER tileLine +CEOP _BARRIER @@ -128,14 +143,62 @@ &' /* Reference coriolis parameter ( 1/s ) */') CALL WRITE_0D_R8( beta, INDEX_NONE,'beta =', &' /* Beta ( 1/(m.s) ) */') + CALL WRITE_0D_R8( freeSurfFac, INDEX_NONE,'freeSurfFac =', - &' /* Implcit free surface factor */') + &' /* Implicit free surface factor */') CALL WRITE_0D_L( implicitFreeSurface, INDEX_NONE, & 'implicitFreeSurface =', &' /* Implicit free surface on/off flag */') CALL WRITE_0D_L( rigidLid, INDEX_NONE, & 'rigidLid =', &' /* Rigid lid on/off flag */') + CALL WRITE_0D_R8( implicSurfPress, INDEX_NONE, + &'implicSurfPress =', + &' /* Surface Pressure implicit factor (0-1)*/') + CALL WRITE_0D_R8( implicDiv2Dflow, INDEX_NONE, + &'implicDiv2Dflow =', + &' /* Barot. Flow Div. implicit factor (0-1)*/') + CALL WRITE_0D_L( exactConserv, INDEX_NONE, + &'exactConserv =', + &' /* Exact Volume Conservation on/off flag*/') + CALL WRITE_0D_L( uniformLin_PhiSurf, INDEX_NONE, + &'uniformLin_PhiSurf =', + &' /* use uniform Bo_surf on/off flag*/') + CALL WRITE_0D_I( nonlinFreeSurf, INDEX_NONE, + &'nonlinFreeSurf =', + &' /* Non-linear Free Surf. options (-1,0,1,2,3)*/') + WRITE(msgBuf,'(2A)') ' -1,0= Off ; 1,2,3= On,', + & ' 2=+rescale gU,gV, 3=+update cg2d solv.' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + CALL WRITE_0D_R8( hFacInf, INDEX_NONE, + &'hFacInf =', + &' /* lower threshold for hFac (nonlinFreeSurf only)*/') + CALL WRITE_0D_R8( hFacSup, INDEX_NONE, + &'hFacSup =', + &' /* upper threshold for hFac (nonlinFreeSurf only)*/') + CALL WRITE_0D_L( useRealFreshWaterFlux, INDEX_NONE, + &'useRealFreshWaterFlux =', + &' /* Real Fresh Water Flux on/off flag*/') + IF (useRealFreshWaterFlux .AND. nonlinFreeSurf.GT.0) THEN + CALL WRITE_0D_R8( temp_EvPrRn, INDEX_NONE, + &'temp_EvPrRn =', + &' /* Temp. of Evap/Prec/R (UNSET=use local T)(oC)*/') + CALL WRITE_0D_R8( salt_EvPrRn, INDEX_NONE, + &'salt_EvPrRn =', + &' /* Salin. of Evap/Prec/R (UNSET=use local S)(ppt)*/') + CALL WRITE_0D_R8( trac_EvPrRn, INDEX_NONE, + &'trac_EvPrRn =', + &' /* Tracer in Evap/Prec/R (UNSET=use local Tr)*/') + ELSE + CALL WRITE_0D_R8( convertFW2Salt, INDEX_NONE, + &'convertFW2Salt =', + &' /* convert F.W. Flux to Salt Flux (-1=use local S)(ppt)*/') + ENDIF + + CALL WRITE_0D_L( staggerTimeStep, INDEX_NONE, + & 'staggerTimeStep =', + &' /* Stagger time stepping on/off flag */') CALL WRITE_0D_L( momStepping, INDEX_NONE, & 'momStepping =', ' /* Momentum equation on/off flag */') CALL WRITE_0D_L( momAdvection, INDEX_NONE, @@ -235,11 +298,15 @@ &' /* minus Vertical index orientation */') CALL WRITE_1D_R8( horiVertRatio,1, INDEX_NONE,'horiVertRatio =', &' /* Ratio on units : Horiz - Vertical */') - CALL WRITE_1D_R8( delZ,Nr, INDEX_K,'delZ = ', - &' /* W spacing ( m ) */') - CALL WRITE_1D_R8( delP,Nr, INDEX_K,'delP = ', - &' /* W spacing ( Pa ) */') - CALL WRITE_1D_R8( delR,Nr, INDEX_K,'delR = ', +c CALL WRITE_1D_R8( delZ,Nr, INDEX_K,'delZ = ', +c &' /* W spacing ( m ) */') +c CALL WRITE_1D_R8( delP,Nr, INDEX_K,'delP = ', +c &' /* W spacing ( Pa ) */') +c CALL WRITE_1D_R8( delR,Nr, INDEX_K,'delR = ', +c &' /* W spacing ( units of r ) */') + CALL WRITE_1D_R8( drC,Nr, INDEX_K,'drC = ', + &' /* C spacing ( units of r ) */') + CALL WRITE_1D_R8( drF,Nr, INDEX_K,'drF = ', &' /* W spacing ( units of r ) */') CALL WRITE_1D_R8( delX, Nx, INDEX_I,'delX = ', &' /* U spacing ( m - cartesian, degrees - spherical ) */') @@ -270,8 +337,59 @@ ENDDO CALL WRITE_1D_R8( rcoord, Nr, INDEX_K,'rcoord = ', &' /* P-point R coordinate ( units of r ) */') + DO K=1,Nr+1 + rcoord(K) = rF(K) + ENDDO + CALL WRITE_1D_R8( rcoord, Nr+1, INDEX_K,'rF = ', + &' /* W-Interf. R coordinate ( units of r ) */') - +C Grid along selected grid lines + coordLine = 1 + tileLine = 1 + CALL WRITE_XY_XLINE_RS( dxF, coordLine, tileLine, + I 'dxF','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( dxF, coordLine, tileLine, + I 'dxF','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( dyF, coordLine, tileLine, + I 'dyF','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( dyF, coordLine, tileLine, + I 'dyF','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( dxG, coordLine, tileLine, + I 'dxG','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( dxG, coordLine, tileLine, + I 'dxG','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( dyG, coordLine, tileLine, + I 'dyG','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( dyG, coordLine, tileLine, + I 'dyG','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( dxC, coordLine, tileLine, + I 'dxC','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( dxC, coordLine, tileLine, + I 'dxC','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( dyC, coordLine, tileLine, + I 'dyC','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( dyC, coordLine, tileLine, + I 'dyC','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( dxV, coordLine, tileLine, + I 'dxV','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( dxV, coordLine, tileLine, + I 'dxV','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( dyU, coordLine, tileLine, + I 'dyU','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( dyU, coordLine, tileLine, + I 'dyU','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( rA, coordLine, tileLine, + I 'rA','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( rA, coordLine, tileLine, + I 'rA','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( rAw, coordLine, tileLine, + I 'rAw','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( rAw, coordLine, tileLine, + I 'rAw','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_XLINE_RS( rAs, coordLine, tileLine, + I 'rAs','( m - cartesian, degrees - spherical )') + CALL WRITE_XY_YLINE_RS( rAs, coordLine, tileLine, + I 'rAs','( m - cartesian, degrees - spherical )') WRITE(msgBuf,'(A)') ' ' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,