--- MITgcm/pkg/ggl90/ggl90_readparms.F 2004/09/27 08:02:04 1.2 +++ MITgcm/pkg/ggl90/ggl90_readparms.F 2009/01/30 02:23:56 1.10 @@ -1,5 +1,6 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/ggl90/ggl90_readparms.F,v 1.2 2004/09/27 08:02:04 mlosch Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/ggl90/ggl90_readparms.F,v 1.10 2009/01/30 02:23:56 dfer Exp $ C $Name: $ + #include "GGL90_OPTIONS.h" SUBROUTINE GGL90_READPARMS( myThid ) @@ -28,7 +29,10 @@ C iUnit - Work variable for IO unit number CHARACTER*(MAX_LEN_MBUF) msgBuf - INTEGER errIO, iUnit + INTEGER errIO, iUnit, iL + + INTEGER ILNBLNK + EXTERNAL ILNBLNK C-- GGL90 vertical mixing parameters NAMELIST /GGL90_PARM01/ @@ -36,9 +40,9 @@ & GGL90diffTKEh, & GGL90mixingMaps, GGL90writeState, & GGL90ck, GGL90ceps, GGL90alpha, GGL90m2, - & GGL90TKEmin, GGL90TKEbottom, - & GGL90mixingLengthMin, GGL90viscMax, GGL90diffMax, - & GGL90TKEFile + & GGL90TKEmin, GGL90TKEsurfMin, GGL90TKEbottom, + & GGL90mixingLengthMin, mxlMaxFlag, + & GGL90viscMax, GGL90diffMax, GGL90TKEFile _BEGIN_MASTER(myThid) WRITE(msgBuf,'(A)') ' GGL90_READPARMS: opening data.ggl90' @@ -59,13 +63,17 @@ GGL90ck = 0.1 _d 0 GGL90ceps = 0.7 _d 0 GGL90alpha = 1.0 _d 0 - GGL90m2 = 3.0 _d 0 +C Blanke and Delecluse (1993, JPO) use + GGL90m2 = 3.75 _d 0 GGL90TKEmin = 1.0 _d -11 +C Blanke and Delecluse (1993, JPO) use + GGL90TKEsurfMin = 1.0 _d -04 GGL90TKEbottom = UNSET_RL - GGL90viscMax = 1.0 _d 0 - GGL90diffMax = 1.0 _d 1 + GGL90viscMax = 1. _d 2 + GGL90diffMax = 1. _d 2 GGL90diffTKEh = 0.0 _d 0 GGL90mixingLengthMin = 1.0 _d -08 + mxlMaxFlag = 0 GGL90TKEFile = ' ' C----------------------------------------------------------------------- @@ -99,11 +107,6 @@ CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , 1) - _END_MASTER(myThid) - -C-- Everyone else must wait for the parameters to be loaded - _BARRIER - C Now set-up any remaining parameters that result from the input parameters IF ( GGL90TKEbottom .EQ. UNSET_RL ) THEN GGL90TKEbottom = GGL90TKEmin @@ -137,6 +140,80 @@ STOP 'ABNORMAL END: S/R GGL90_READPARMS' ENDIF +C-- print TKE vertical mixing parameters to stdout for better debugging + WRITE(msgBuf,'(A)') + &'// =======================================================' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + WRITE(msgBuf,'(A)') '// GGL90 configuration' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + WRITE(msgBuf,'(A)') + &'// =======================================================' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + + CALL WRITE_0D_R8( GGL90dumpFreq, INDEX_NONE,'GGL90dumpFreq =', + &' /* GGL90 state write out interval ( s ). */') + CALL WRITE_0D_R8( GGL90taveFreq, INDEX_NONE,'GGL90taveFreq =', + &' /* GGL90 averaging interval ( s ). */') + CALL WRITE_0D_L(GGL90mixingMaps,INDEX_NONE, + & 'GGL90mixingMAPS =', ' /* GGL90 IO flag. */') + CALL WRITE_0D_L(GGL90writeState,INDEX_NONE, + & 'GGL90writeState =', ' /* GGL90 IO flag. */') + CALL WRITE_0D_R8( GGL90ck, INDEX_NONE,'GGL90ck =', + &' /* GGL90 viscosity parameter. */') + CALL WRITE_0D_R8( GGL90ceps, INDEX_NONE,'GGL90ceps =', + &' /* GGL90 dissipation parameter. */') + CALL WRITE_0D_R8( GGL90alpha, INDEX_NONE,'GGL90alpha =', + &' /* GGL90 TKE diffusivity parameter. */') + CALL WRITE_0D_R8( GGL90m2, INDEX_NONE,'GGL90m2 =', + &' /* GGL90 wind stress to vertical stress ratio. */') + CALL WRITE_0D_R8( GGL90TKEmin, INDEX_NONE,'GGL90TKEmin =', + &' /* GGL90 minimum kinetic energy ( m^2/s^2 ). */') + CALL WRITE_0D_R8( GGL90TKEsurfMin, INDEX_NONE, + & 'GGL90TKEsurfMin =', + &' /* GGL90 minimum surface kinetic energy ( m^2/s^2 ). */') + CALL WRITE_0D_R8( GGL90TKEbottom, INDEX_NONE, + & 'GGL90TKEbottom =', + & ' /* GGL90 bottom kinetic energy ( m^2/s^2 ). */') + CALL WRITE_0D_R8( GGL90viscMax, INDEX_NONE,'GGL90viscMax =', + & ' /* GGL90 upper limit for viscosity ( m^2/s ). */') + CALL WRITE_0D_R8( GGL90diffMax, INDEX_NONE,'GGL90diffMax =', + & ' /* GGL90 upper limit for diffusivity ( m^2/s ). */') + CALL WRITE_0D_R8( GGL90diffTKEh, INDEX_NONE,'GGL90diffTKEh =', + & ' /* GGL90 horizontal diffusivity for TKE ( m^2/s ). */') + CALL WRITE_0D_R8( GGL90mixingLengthMin, INDEX_NONE, + & 'GGL90mixingLengthMin =', + & ' /* GGL90 minimum mixing length ( m ). */') + CALL WRITE_0D_I(mxlMaxFlag, INDEX_NONE, 'mxlMaxFlag =', + & ' /* Flag for limiting mixing-length method */') + iL = MAX_LEN_MBUF - 22 + iL = MIN( iL, MAX(ILNBLNK(GGL90TKEFile),1) ) + WRITE(msgBuf,'(A,A)')'GGL90: GGL90TKEFile = ',GGL90TKEFile(1:iL) + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + + WRITE(msgBuf,'(A)') + &'// =======================================================' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + WRITE(msgBuf,'(A)') '// End of GGL90 config. summary' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + WRITE(msgBuf,'(A)') + &'// =======================================================' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + WRITE(msgBuf,'(A)') ' ' + CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, + & SQUEEZE_RIGHT , 1) + + _END_MASTER(myThid) + +C-- Everyone else must wait for the parameters to be loaded + _BARRIER + #endif /* ALLOW_GGL90 */ return