/[MITgcm]/MITgcm/pkg/ggl90/ggl90_readparms.F
ViewVC logotype

Diff of /MITgcm/pkg/ggl90/ggl90_readparms.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.10 by dfer, Fri Jan 30 02:23:56 2009 UTC revision 1.11 by jmc, Tue Apr 28 23:27:24 2009 UTC
# Line 4  C $Name$ Line 4  C $Name$
4  #include "GGL90_OPTIONS.h"  #include "GGL90_OPTIONS.h"
5    
6        SUBROUTINE GGL90_READPARMS( myThid )        SUBROUTINE GGL90_READPARMS( myThid )
7  C     /==========================================================\  C     *==========================================================*
8  C     | SUBROUTINE GGL90_READPARMS                               |  C     | SUBROUTINE GGL90_READPARMS                               |
9  C     | o Routine to read in file data.ggl90                     |  C     | o Routine to read in file data.ggl90                     |
10  C     \==========================================================/  C     *==========================================================*
11        IMPLICIT NONE        IMPLICIT NONE
12    
13  C     === Global variables ===  C     === Global variables ===
# Line 80  C--------------------------------------- Line 80  C---------------------------------------
80  C define some non-dimensional constants and  C define some non-dimensional constants and
81  C the vertical mixing coefficients in m-k-s units  C the vertical mixing coefficients in m-k-s units
82  C-----------------------------------------------------------------------  C-----------------------------------------------------------------------
83    
84  C--   Read settings from model parameter file "data.ggl90".  C--   Read settings from model parameter file "data.ggl90".
85        READ(UNIT=iUnit,NML=GGL90_PARM01,IOSTAT=errIO)        READ(UNIT=iUnit,NML=GGL90_PARM01,IOSTAT=errIO)
86        IF ( errIO .LT. 0 ) THEN        IF ( errIO .LT. 0 ) THEN
# Line 107  C      CALL MODELDATA_EXAMPLE( myThid ) Line 107  C      CALL MODELDATA_EXAMPLE( myThid )
107        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
108       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
109    
110  C Now set-up any remaining parameters that result from the input parameters  C Now set-up any remaining parameters that result from the input parameters
111        IF ( GGL90TKEbottom .EQ. UNSET_RL ) THEN        IF ( GGL90TKEbottom .EQ. UNSET_RL ) THEN
112         GGL90TKEbottom = GGL90TKEmin         GGL90TKEbottom = GGL90TKEmin
113        ENDIF        ENDIF
114        IF ( GGL90TKEmin .LE. 0. ) THEN        IF ( GGL90TKEmin .LE. 0. ) THEN
115         WRITE(msgBuf,'(A)')         WRITE(msgBuf,'(A)')
116       &      'GGL90TKEmin must be greater than zero'       &      'GGL90TKEmin must be greater than zero'
117         CALL PRINT_ERROR( msgBuf , 1)         CALL PRINT_ERROR( msgBuf , 1)
118         STOP 'ABNORMAL END: S/R GGL90_READPARMS'         STOP 'ABNORMAL END: S/R GGL90_READPARMS'
119        ENDIF        ENDIF
120        IF ( GGL90TKEbottom .LT. 0. ) THEN        IF ( GGL90TKEbottom .LT. 0. ) THEN
121         WRITE(msgBuf,'(A)')         WRITE(msgBuf,'(A)')
122       &      'GGL90TKEbottom must not be less than zero'       &      'GGL90TKEbottom must not be less than zero'
123         CALL PRINT_ERROR( msgBuf , 1)         CALL PRINT_ERROR( msgBuf , 1)
124         STOP 'ABNORMAL END: S/R GGL90_READPARMS'         STOP 'ABNORMAL END: S/R GGL90_READPARMS'
125        ENDIF        ENDIF
126        IF ( GGL90mixingLengthMin .LE. 0. ) THEN        IF ( GGL90mixingLengthMin .LE. 0. ) THEN
127         WRITE(msgBuf,'(A)')         WRITE(msgBuf,'(A)')
128       &      'GGL90mixingLengthMin must be greater than zero'       &      'GGL90mixingLengthMin must be greater than zero'
129         CALL PRINT_ERROR( msgBuf , 1)         CALL PRINT_ERROR( msgBuf , 1)
130         STOP 'ABNORMAL END: S/R GGL90_READPARMS'         STOP 'ABNORMAL END: S/R GGL90_READPARMS'
# Line 143  C Now set-up any remaining parameters th Line 143  C Now set-up any remaining parameters th
143  C--   print TKE vertical mixing parameters to stdout for better debugging  C--   print TKE vertical mixing parameters to stdout for better debugging
144        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
145       &'// ======================================================='       &'// ======================================================='
146        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
147       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
148        WRITE(msgBuf,'(A)') '// GGL90 configuration'        WRITE(msgBuf,'(A)') '// GGL90 configuration'
149        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
150       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
151        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
152       &'// ======================================================='       &'// ======================================================='
153        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
154       &  SQUEEZE_RIGHT , 1)       &  SQUEEZE_RIGHT , 1)
155    
156        CALL WRITE_0D_R8( GGL90dumpFreq, INDEX_NONE,'GGL90dumpFreq =',        CALL WRITE_0D_RL( GGL90dumpFreq, INDEX_NONE,'GGL90dumpFreq =',
157       &'   /* GGL90 state write out interval ( s ). */')       &'   /* GGL90 state write out interval ( s ). */')
158        CALL WRITE_0D_R8( GGL90taveFreq, INDEX_NONE,'GGL90taveFreq =',        CALL WRITE_0D_RL( GGL90taveFreq, INDEX_NONE,'GGL90taveFreq =',
159       &'   /* GGL90 averaging interval ( s ). */')       &'   /* GGL90 averaging interval ( s ). */')
160        CALL WRITE_0D_L(GGL90mixingMaps,INDEX_NONE,        CALL WRITE_0D_L(GGL90mixingMaps,INDEX_NONE,
161       &     'GGL90mixingMAPS =', '   /* GGL90 IO flag. */')       &     'GGL90mixingMAPS =', '   /* GGL90 IO flag. */')
162        CALL WRITE_0D_L(GGL90writeState,INDEX_NONE,        CALL WRITE_0D_L(GGL90writeState,INDEX_NONE,
163       &     'GGL90writeState =', '   /* GGL90 IO flag. */')       &     'GGL90writeState =', '   /* GGL90 IO flag. */')
164        CALL WRITE_0D_R8( GGL90ck, INDEX_NONE,'GGL90ck =',        CALL WRITE_0D_RL( GGL90ck, INDEX_NONE,'GGL90ck =',
165       &'   /* GGL90 viscosity parameter. */')       &'   /* GGL90 viscosity parameter. */')
166        CALL WRITE_0D_R8( GGL90ceps, INDEX_NONE,'GGL90ceps =',        CALL WRITE_0D_RL( GGL90ceps, INDEX_NONE,'GGL90ceps =',
167       &'   /* GGL90 dissipation parameter. */')       &'   /* GGL90 dissipation parameter. */')
168        CALL WRITE_0D_R8( GGL90alpha, INDEX_NONE,'GGL90alpha =',        CALL WRITE_0D_RL( GGL90alpha, INDEX_NONE,'GGL90alpha =',
169       &'   /* GGL90 TKE diffusivity parameter. */')       &'   /* GGL90 TKE diffusivity parameter. */')
170        CALL WRITE_0D_R8( GGL90m2, INDEX_NONE,'GGL90m2 =',        CALL WRITE_0D_RL( GGL90m2, INDEX_NONE,'GGL90m2 =',
171       &'   /* GGL90 wind stress to vertical stress ratio. */')       &'   /* GGL90 wind stress to vertical stress ratio. */')
172        CALL WRITE_0D_R8( GGL90TKEmin, INDEX_NONE,'GGL90TKEmin =',        CALL WRITE_0D_RL( GGL90TKEmin, INDEX_NONE,'GGL90TKEmin =',
173       &'   /* GGL90 minimum kinetic energy ( m^2/s^2 ). */')       &'   /* GGL90 minimum kinetic energy ( m^2/s^2 ). */')
174        CALL WRITE_0D_R8( GGL90TKEsurfMin, INDEX_NONE,        CALL WRITE_0D_RL( GGL90TKEsurfMin, INDEX_NONE,
175       &     'GGL90TKEsurfMin =',       &     'GGL90TKEsurfMin =',
176       &'   /* GGL90 minimum surface kinetic energy ( m^2/s^2 ). */')       &'   /* GGL90 minimum surface kinetic energy ( m^2/s^2 ). */')
177        CALL WRITE_0D_R8( GGL90TKEbottom, INDEX_NONE,        CALL WRITE_0D_RL( GGL90TKEbottom, INDEX_NONE,
178       &     'GGL90TKEbottom =',       &     'GGL90TKEbottom =',
179       &     '   /* GGL90 bottom kinetic energy ( m^2/s^2 ). */')       &     '   /* GGL90 bottom kinetic energy ( m^2/s^2 ). */')
180        CALL WRITE_0D_R8( GGL90viscMax, INDEX_NONE,'GGL90viscMax =',        CALL WRITE_0D_RL( GGL90viscMax, INDEX_NONE,'GGL90viscMax =',
181       &     '   /* GGL90 upper limit for viscosity ( m^2/s ). */')       &     '   /* GGL90 upper limit for viscosity ( m^2/s ). */')
182        CALL WRITE_0D_R8( GGL90diffMax, INDEX_NONE,'GGL90diffMax =',        CALL WRITE_0D_RL( GGL90diffMax, INDEX_NONE,'GGL90diffMax =',
183       &     '   /* GGL90 upper limit for diffusivity ( m^2/s ). */')       &     '   /* GGL90 upper limit for diffusivity ( m^2/s ). */')
184        CALL WRITE_0D_R8( GGL90diffTKEh, INDEX_NONE,'GGL90diffTKEh =',        CALL WRITE_0D_RL( GGL90diffTKEh, INDEX_NONE,'GGL90diffTKEh =',
185       &     '   /* GGL90 horizontal diffusivity for TKE ( m^2/s ). */')       &     '   /* GGL90 horizontal diffusivity for TKE ( m^2/s ). */')
186        CALL WRITE_0D_R8( GGL90mixingLengthMin, INDEX_NONE,        CALL WRITE_0D_RL( GGL90mixingLengthMin, INDEX_NONE,
187       &     'GGL90mixingLengthMin =',       &     'GGL90mixingLengthMin =',
188       &     '   /* GGL90 minimum mixing length ( m ). */')       &     '   /* GGL90 minimum mixing length ( m ). */')
189        CALL WRITE_0D_I(mxlMaxFlag, INDEX_NONE, 'mxlMaxFlag =',        CALL WRITE_0D_I(mxlMaxFlag, INDEX_NONE, 'mxlMaxFlag =',
190       &     '   /* Flag for limiting mixing-length method */')       &     '   /* Flag for limiting mixing-length method */')
# Line 196  C--   print TKE vertical mixing paramete Line 196  C--   print TKE vertical mixing paramete
196    
197        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
198       &'// ======================================================='       &'// ======================================================='
199        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
200       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
201        WRITE(msgBuf,'(A)') '// End of GGL90 config. summary'        WRITE(msgBuf,'(A)') '// End of GGL90 config. summary'
202        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
203       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
204        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
205       &'// ======================================================='       &'// ======================================================='

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22