File indexing completed on 2023-08-29 05:10:29 UTC
view on githubraw file Latest commit b038e3cc on 2023-08-28 16:15:16 UTC
89474f9a5c Mart*0001 #include "GGL90_OPTIONS.h"
0002
31a3206180 Mart*0003
0004
0005
89474f9a5c Mart*0006 SUBROUTINE GGL90_READPARMS( myThid )
31a3206180 Mart*0007
0008
4da4b49499 Jean*0009
89474f9a5c Mart*0010
0011
4da4b49499 Jean*0012
31a3206180 Mart*0013
89474f9a5c Mart*0014
31a3206180 Mart*0015
0016 IMPLICIT NONE
89474f9a5c Mart*0017
0018 #include "SIZE.h"
0019 #include "EEPARAMS.h"
0020 #include "PARAMS.h"
0021 #include "GRID.h"
0022 #include "GGL90.h"
0023
31a3206180 Mart*0024
89474f9a5c Mart*0025
0026
0027 INTEGER myThid
0028
0029 #ifdef ALLOW_GGL90
0030
31a3206180 Mart*0031
ae4c29e0db Jean*0032
0033 INTEGER ILNBLNK
0034 EXTERNAL ILNBLNK
0035
31a3206180 Mart*0036
89474f9a5c Mart*0037
ae4c29e0db Jean*0038
89474f9a5c Mart*0039
0040
0041 CHARACTER*(MAX_LEN_MBUF) msgBuf
3cdeda61e8 Jean*0042 INTEGER errIO, iUnit, iL
016b84c482 Mart*0043
0044 INTEGER nRetired
0045 _RL GGL90taveFreq
3cdeda61e8 Jean*0046
89474f9a5c Mart*0047
0048 NAMELIST /GGL90_PARM01/
0049 & GGL90dumpFreq, GGL90taveFreq,
76f580e1f0 Mart*0050 & GGL90diffTKEh,
89474f9a5c Mart*0051 & GGL90mixingMaps, GGL90writeState,
0052 & GGL90ck, GGL90ceps, GGL90alpha, GGL90m2,
6ab314cf42 Mart*0053 & GGL90TKEmin, GGL90TKEsurfMin, GGL90TKEbottom,
b038e3cc4f Mart*0054 & GGL90mixingLengthMin, mxlMaxFlag, adMxlMaxFlag, mxlSurfFlag,
31a3206180 Mart*0055 & GGL90viscMax, GGL90diffMax, GGL90TKEFile,
9293d3c672 Hajo*0056 & GGL90_dirichlet, calcMeanVertShear, useIDEMIX,
0057 & useLANGMUIR
ae4c29e0db Jean*0058
31a3206180 Mart*0059 #ifdef ALLOW_GGL90_IDEMIX
9293d3c672 Hajo*0060
0061
0062
31a3206180 Mart*0063 NAMELIST /GGL90_PARM02/
0064 & IDEMIX_tau_v, IDEMIX_tau_h, IDEMIX_gamma, IDEMIX_jstar,
0065 & IDEMIX_mu0,IDEMIX_tidal_file,IDEMIX_wind_file,
0066 & IDEMIX_mixing_efficiency, IDEMIX_diff_max,
0067 & IDEMIX_diff_min, IDEMIX_frac_F_b, IDEMIX_frac_F_s,
0068 & IDEMIX_include_GM,IDEMIX_include_GM_bottom
0069 #endif /* ALLOW_GGL90_IDEMIX */
9293d3c672 Hajo*0070
0071 #ifdef ALLOW_GGL90_LANGMUIR
0072
0073
0074
0075 NAMELIST /GGL90_PARM03/
0076 & LC_Gamma, LC_num, LC_lambda
0077 #endif /* ALLOW_GGL90_LANGMUIR*/
0078
31a3206180 Mart*0079
ae4c29e0db Jean*0080
0081
0082 IF ( .NOT.useGGL90 ) THEN
0083
0084 _BEGIN_MASTER(myThid)
0085
0086
0087 CALL PACKAGES_UNUSED_MSG( 'useGGL90', ' ', ' ' )
0088 _END_MASTER(myThid)
0089 RETURN
0090 ENDIF
0091
89474f9a5c Mart*0092 _BEGIN_MASTER(myThid)
0093
0094 WRITE(msgBuf,'(A)') ' GGL90_READPARMS: opening data.ggl90'
0095 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0096 & SQUEEZE_RIGHT, myThid )
0097 errIO = 0
89474f9a5c Mart*0098 CALL OPEN_COPY_DATA_FILE(
0099 I 'data.ggl90', 'GGL90_READPARMS',
0100 O iUnit,
0101 I myThid )
0102
0103
0104 GGL90dumpFreq = dumpFreq
016b84c482 Mart*0105 GGL90taveFreq = UNSET_RL
89474f9a5c Mart*0106 GGL90mixingMaps = .FALSE.
0107 GGL90writeState = .FALSE.
0108 GGL90ck = 0.1 _d 0
0109 GGL90ceps = 0.7 _d 0
0110 GGL90alpha = 1.0 _d 0
6ab314cf42 Mart*0111
0112 GGL90m2 = 3.75 _d 0
89474f9a5c Mart*0113 GGL90TKEmin = 1.0 _d -11
6ab314cf42 Mart*0114
0115 GGL90TKEsurfMin = 1.0 _d -04
89474f9a5c Mart*0116 GGL90TKEbottom = UNSET_RL
d5a2f35c68 Davi*0117 GGL90viscMax = 1. _d 2
0118 GGL90diffMax = 1. _d 2
76f580e1f0 Mart*0119 GGL90diffTKEh = 0.0 _d 0
89474f9a5c Mart*0120 GGL90mixingLengthMin = 1.0 _d -08
004d5ee949 Davi*0121 mxlMaxFlag = 0
b038e3cc4f Mart*0122 adMxlMaxFlag = UNSET_I
31a3206180 Mart*0123 mxlSurfFlag = .FALSE.
89474f9a5c Mart*0124 GGL90TKEFile = ' '
31a3206180 Mart*0125 GGL90_dirichlet = .TRUE.
1d389ab3d9 Jean*0126 calcMeanVertShear = .FALSE.
31a3206180 Mart*0127 useIDEMIX = .FALSE.
9293d3c672 Hajo*0128 useLANGMUIR = .FALSE.
31a3206180 Mart*0129
0130 #ifdef ALLOW_GGL90_IDEMIX
0131
0132
0133
31f96e9372 Jean*0134
0135
0136 IDEMIX_tau_v = 2.0*86400.0 _d 0
31a3206180 Mart*0137 IDEMIX_tau_h = 10.0*86400.0 _d 0
0138 IDEMIX_gamma = 1.57 _d 0
31f96e9372 Jean*0139 IDEMIX_jstar = 5.0 _d 0
0140 IDEMIX_mu0 = 1.0 _d 0/3.0 _d 0
31a3206180 Mart*0141 IDEMIX_mixing_efficiency = 0.1666 _d 0
0142 IDEMIX_diff_max = 1.0 _d 0
0143 IDEMIX_diff_min = 1.0 _d -9
1d389ab3d9 Jean*0144 IDEMIX_frac_F_b = 1.0 _d 0
31f96e9372 Jean*0145
31a3206180 Mart*0146 IDEMIX_frac_F_s = 0.2 _d 0
0147
0148
0149 IDEMIX_tidal_file = ' '
0150 IDEMIX_wind_file = ' '
0151 IDEMIX_include_GM = .FALSE.
0152 IDEMIX_include_GM_bottom = .FALSE.
0153 #endif /* ALLOW_GGL90_IDEMIX */
0154
9293d3c672 Hajo*0155 #ifdef ALLOW_GGL90_LANGMUIR
0156
0157
0158
0159 LC_Gamma = 1.0 _d 1
0160 LC_num = 3.2 _d -1
0161 LC_lambda = 4.0 _d 1
0162 #endif /* ALLOW_GGL90_LANGMUIR */
0163
89474f9a5c Mart*0164
0165
0166
0167
4da4b49499 Jean*0168
89474f9a5c Mart*0169
1d82a71159 Jean*0170 WRITE(msgBuf,'(A)')
0171 & ' GGL90_READPARMS ; starts to read GGL90_PARM01'
0172 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0173 & SQUEEZE_RIGHT, myThid )
0174 READ( UNIT=iUnit, NML=GGL90_PARM01 )
0175
89474f9a5c Mart*0176 IF ( errIO .LT. 0 ) THEN
9293d3c672 Hajo*0177 WRITE(msgBuf,'(A)')
0178 & 'S/R GGL90_READPARMS, Problem reading NML GGL90_PARM01'
0179 CALL PRINT_ERROR( msgBuf, myThid )
0180 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
89474f9a5c Mart*0181 ENDIF
1d82a71159 Jean*0182 WRITE(msgBuf,'(A)')
0183 & ' GGL90_READPARMS: read GGL90_PARM01 : OK'
0184 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0185 & SQUEEZE_RIGHT, myThid )
89474f9a5c Mart*0186
31a3206180 Mart*0187 #ifdef ALLOW_GGL90_IDEMIX
0188 IF (useIDEMIX) THEN
1d82a71159 Jean*0189 WRITE(msgBuf,'(A)')
0190 & ' GGL90_READPARMS ; starts to read GGL90_PARM02'
0191 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0192 & SQUEEZE_RIGHT, myThid )
0193 READ( UNIT=iUnit, NML=GGL90_PARM02 )
0194
31a3206180 Mart*0195 IF ( errIO .LT. 0 ) THEN
0196 WRITE(msgBuf,'(A)')
9293d3c672 Hajo*0197 & 'S/R GGL90_READPARMS, Problem reading NML GGL90_PARM02'
0198 CALL PRINT_ERROR( msgBuf, myThid )
31a3206180 Mart*0199 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0200 ENDIF
1d82a71159 Jean*0201 WRITE(msgBuf,'(A)')
0202 & ' GGL90_READPARMS: read GGL90_PARM02 : OK'
0203 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0204 & SQUEEZE_RIGHT, myThid )
31a3206180 Mart*0205 ENDIF
0206 #endif /* ALLOW_GGL90_IDEMIX */
0207
9293d3c672 Hajo*0208 #ifdef ALLOW_GGL90_LANGMUIR
0209 IF (useLANGMUIR) THEN
0210 WRITE(msgBuf,'(A)')
0211 & ' GGL90_READPARMS ; starts to read GGL90_PARM03'
0212 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0213 & SQUEEZE_RIGHT, myThid )
0214 READ( UNIT=iUnit, NML=GGL90_PARM03 )
0215
0216 IF ( errIO .LT. 0 ) THEN
0217 WRITE(msgBuf,'(A)')
0218 & 'S/R GGL90_READPARMS, Problem reading NML GGL90_PARM03'
0219 CALL PRINT_ERROR( msgBuf, myThid )
0220 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0221 ENDIF
0222 WRITE(msgBuf,'(A)')
0223 & ' GGL90_READPARMS: read GGL90_PARM03 : OK'
0224 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0225 & SQUEEZE_RIGHT, myThid )
0226 ENDIF
0227 #endif /* ALLOW_GGL90_LANGMUIR */
0228
7a77863887 Mart*0229 #ifdef SINGLE_DISK_IO
89474f9a5c Mart*0230 CLOSE(iUnit)
7a77863887 Mart*0231 #else
0232 CLOSE(iUnit,STATUS='DELETE')
0233 #endif /* SINGLE_DISK_IO */
89474f9a5c Mart*0234
0235 WRITE(msgBuf,'(A)')
0236 & ' GGL90_READPARMS: finished reading data.ggl90'
0237 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0238 & SQUEEZE_RIGHT, myThid )
89474f9a5c Mart*0239
31a3206180 Mart*0240 #ifdef ALLOW_GGL90_IDEMIX
0241 IF ( useIDEMIX ) THEN
0242 IF ( OLx .LT. 3 .or. OLy .lt. 3) THEN
0243 WRITE(msgBuf,'(A)') 'OLx/OLy must be greater than 2'
0244 CALL PRINT_ERROR( msgBuf , 1)
0245 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0246 ENDIF
0247 ENDIF
0248 #endif /* ALLOW_GGL90_IDEMIX */
0249
4da4b49499 Jean*0250
89474f9a5c Mart*0251 IF ( GGL90TKEbottom .EQ. UNSET_RL ) THEN
0252 GGL90TKEbottom = GGL90TKEmin
0253 ENDIF
b038e3cc4f Mart*0254 IF ( adMxlMaxFlag .EQ. UNSET_I ) THEN
0255 adMxlMaxFlag = mxlMaxFlag
0256 ENDIF
31a3206180 Mart*0257 #ifdef ALLOW_GGL90_IDEMIX
0258 IF ( GGL90TKEmin .LT. 0. ) THEN
0259 #else
89474f9a5c Mart*0260 IF ( GGL90TKEmin .LE. 0. ) THEN
31a3206180 Mart*0261 #endif
4da4b49499 Jean*0262 WRITE(msgBuf,'(A)')
89474f9a5c Mart*0263 & 'GGL90TKEmin must be greater than zero'
0264 CALL PRINT_ERROR( msgBuf , 1)
0265 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0266 ENDIF
0267 IF ( GGL90TKEbottom .LT. 0. ) THEN
4da4b49499 Jean*0268 WRITE(msgBuf,'(A)')
89474f9a5c Mart*0269 & 'GGL90TKEbottom must not be less than zero'
0270 CALL PRINT_ERROR( msgBuf , 1)
0271 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0272 ENDIF
0273 IF ( GGL90mixingLengthMin .LE. 0. ) THEN
4da4b49499 Jean*0274 WRITE(msgBuf,'(A)')
89474f9a5c Mart*0275 & 'GGL90mixingLengthMin must be greater than zero'
0276 CALL PRINT_ERROR( msgBuf , 1)
0277 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0278 ENDIF
0279 IF ( GGL90viscMax .LE. 0. ) THEN
0280 WRITE(msgBuf,'(A)') 'GGL90viscMax must be greater than zero'
0281 CALL PRINT_ERROR( msgBuf , 1)
0282 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0283 ENDIF
0284 IF ( GGL90diffMax .LE. 0. ) THEN
0285 WRITE(msgBuf,'(A)') 'GGL90diffMax must be greater than zero'
0286 CALL PRINT_ERROR( msgBuf , 1)
0287 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0288 ENDIF
0289
016b84c482 Mart*0290
0291 nRetired = 0
0292 IF ( GGL90taveFreq .NE. UNSET_RL ) THEN
0293 nRetired = nRetired + 1
0294 WRITE(msgBuf,'(A,A)')
0295 & 'S/R GGL90_READPARMS: "GGL90taveFreq" ',
0296 & 'is no longer allowed in file "data.ggl90"'
0297 CALL PRINT_ERROR( msgBuf, myThid )
0298 WRITE(msgBuf,'(A)')
0299 & 'S/R GGL90_READPARMS: use diagnostics variables instead'
0300 CALL PRINT_ERROR( msgBuf, myThid )
0301 ENDIF
0302 IF ( nRetired .GT. 0 ) THEN
0303 WRITE(msgBuf,'(2A)') 'S/R GGL90_READPARMS: ',
0304 & 'Error reading parameter file "data.ggl90"'
0305 CALL PRINT_ERROR( msgBuf, myThid )
0306 WRITE(msgBuf,'(A)')
0307 & 'some out of date parameters were found in the namelist'
0308 CALL PRINT_ERROR( msgBuf, myThid )
0309 STOP 'ABNORMAL END: S/R GGL90_READPARMS'
0310 ENDIF
0311
c4344fa574 Mart*0312
de2cc1c4d8 Mart*0313 WRITE(msgBuf,'(A)')
0314 &'// ======================================================='
4da4b49499 Jean*0315 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0316 & SQUEEZE_RIGHT, myThid )
de2cc1c4d8 Mart*0317 WRITE(msgBuf,'(A)') '// GGL90 configuration'
4da4b49499 Jean*0318 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0319 & SQUEEZE_RIGHT, myThid )
de2cc1c4d8 Mart*0320 WRITE(msgBuf,'(A)')
0321 &'// ======================================================='
0322 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0323 & SQUEEZE_RIGHT, myThid )
de2cc1c4d8 Mart*0324
4da4b49499 Jean*0325 CALL WRITE_0D_RL( GGL90dumpFreq, INDEX_NONE,'GGL90dumpFreq =',
de2cc1c4d8 Mart*0326 &' /* GGL90 state write out interval ( s ). */')
4da4b49499 Jean*0327 CALL WRITE_0D_RL( GGL90taveFreq, INDEX_NONE,'GGL90taveFreq =',
de2cc1c4d8 Mart*0328 &' /* GGL90 averaging interval ( s ). */')
0329 CALL WRITE_0D_L(GGL90mixingMaps,INDEX_NONE,
0320e25227 Mart*0330 & 'GGL90mixingMAPS =', ' /* GGL90 IO flag */')
de2cc1c4d8 Mart*0331 CALL WRITE_0D_L(GGL90writeState,INDEX_NONE,
0320e25227 Mart*0332 & 'GGL90writeState =', ' /* GGL90 IO flag */')
4da4b49499 Jean*0333 CALL WRITE_0D_RL( GGL90ck, INDEX_NONE,'GGL90ck =',
0320e25227 Mart*0334 &' /* GGL90 viscosity parameter */')
4da4b49499 Jean*0335 CALL WRITE_0D_RL( GGL90ceps, INDEX_NONE,'GGL90ceps =',
0320e25227 Mart*0336 &' /* GGL90 dissipation parameter */')
4da4b49499 Jean*0337 CALL WRITE_0D_RL( GGL90alpha, INDEX_NONE,'GGL90alpha =',
0320e25227 Mart*0338 &' /* GGL90 TKE diffusivity parameter */')
4da4b49499 Jean*0339 CALL WRITE_0D_RL( GGL90m2, INDEX_NONE,'GGL90m2 =',
0320e25227 Mart*0340 &' /* GGL90 wind stress to vertical stress ratio */')
4da4b49499 Jean*0341 CALL WRITE_0D_RL( GGL90TKEmin, INDEX_NONE,'GGL90TKEmin =',
0320e25227 Mart*0342 &' /* GGL90 minimum kinetic energy ( m^2/s^2 ) */')
4da4b49499 Jean*0343 CALL WRITE_0D_RL( GGL90TKEsurfMin, INDEX_NONE,
de2cc1c4d8 Mart*0344 & 'GGL90TKEsurfMin =',
0320e25227 Mart*0345 &' /* GGL90 minimum surface kinetic energy ( m^2/s^2 ) */')
4da4b49499 Jean*0346 CALL WRITE_0D_RL( GGL90TKEbottom, INDEX_NONE,
0347 & 'GGL90TKEbottom =',
0320e25227 Mart*0348 & ' /* GGL90 bottom kinetic energy ( m^2/s^2 ) */')
4da4b49499 Jean*0349 CALL WRITE_0D_RL( GGL90viscMax, INDEX_NONE,'GGL90viscMax =',
0320e25227 Mart*0350 & ' /* GGL90 upper limit for viscosity (m^2/s ) */')
4da4b49499 Jean*0351 CALL WRITE_0D_RL( GGL90diffMax, INDEX_NONE,'GGL90diffMax =',
0320e25227 Mart*0352 & ' /* GGL90 upper limit for diffusivity (m^2/s ) */')
4da4b49499 Jean*0353 CALL WRITE_0D_RL( GGL90diffTKEh, INDEX_NONE,'GGL90diffTKEh =',
0320e25227 Mart*0354 & ' /* GGL90 horizontal diffusivity for TKE ( m^2/s ) */')
4da4b49499 Jean*0355 CALL WRITE_0D_RL( GGL90mixingLengthMin, INDEX_NONE,
0356 & 'GGL90mixingLengthMin =',
0320e25227 Mart*0357 & ' /* GGL90 minimum mixing length (m) */')
004d5ee949 Davi*0358 CALL WRITE_0D_I(mxlMaxFlag, INDEX_NONE, 'mxlMaxFlag =',
0359 & ' /* Flag for limiting mixing-length method */')
b038e3cc4f Mart*0360 #ifdef ALLOW_AUTODIFF
0361 CALL WRITE_0D_I(adMxlMaxFlag, INDEX_NONE, 'adMxlMaxFlag =',
0362 & ' /* Flag for limiting mixing-length method in AD-mode */')
0363 #endif
ab33ce9f77 Gael*0364 CALL WRITE_0D_L(mxlSurfFlag,INDEX_NONE,
0365 & 'mxlSurfFlag =',
0320e25227 Mart*0366 & ' /* GGL90 flag for near surface mixing */')
1d389ab3d9 Jean*0367 CALL WRITE_0D_L( calcMeanVertShear, INDEX_NONE,
0368 & 'calcMeanVertShear =',
0369 & ' /* calc Mean of Vert.Shear (vs shear of Mean flow) */')
3cdeda61e8 Jean*0370 iL = MAX_LEN_MBUF - 22
d3e8093554 Jean*0371 iL = MIN( iL, MAX(ILNBLNK(GGL90TKEFile),1) )
3cdeda61e8 Jean*0372 WRITE(msgBuf,'(A,A)')'GGL90: GGL90TKEFile = ',GGL90TKEFile(1:iL)
c4344fa574 Mart*0373 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0374 & SQUEEZE_RIGHT, myThid )
31a3206180 Mart*0375 CALL WRITE_0D_L(GGL90_dirichlet,INDEX_NONE,
0320e25227 Mart*0376 & 'GGL90_dirichlet =', ' /* GGL90 Boundary condition flag */')
9293d3c672 Hajo*0377
31a3206180 Mart*0378 #ifdef ALLOW_GGL90_IDEMIX
1d389ab3d9 Jean*0379 CALL WRITE_0D_L(useIDEMIX,INDEX_NONE, 'useIDEMIX =',
31a3206180 Mart*0380 & ' /* turn on IDEMIX contribution. */')
9293d3c672 Hajo*0381
31a3206180 Mart*0382 IF ( useIDEMIX ) THEN
0383 CALL WRITE_0D_RL( IDEMIX_tau_v, INDEX_NONE,'IDEMIX_tau_v =',
0384 & ' /* IDEMIX vertical group speed parameter. */')
0385 CALL WRITE_0D_RL( IDEMIX_tau_h, INDEX_NONE,'IDEMIX_tau_h =',
0386 & ' /* IDEMIX horizontal group speed parameter. */')
0387 CALL WRITE_0D_RL( IDEMIX_gamma, INDEX_NONE,'IDEMIX_gamma =',
0388 & ' /* IDEMIX group speed parameter. */')
0389 CALL WRITE_0D_RL( IDEMIX_jstar, INDEX_NONE,'IDEMIX_jstar =',
0390 & ' /* IDEMIX baroclinic mode bandwidth. */')
0391 CALL WRITE_0D_RL( IDEMIX_mu0, INDEX_NONE,'IDEMIX_mu0 =',
0392 & ' /* IDEMIX dissipation parameter. */')
0393 CALL WRITE_0D_RL( IDEMIX_mixing_efficiency,INDEX_NONE,
0394 & 'IDEMIX_mixing_efficiency =',
0395 & ' /* IDEMIX mixing efficiency. */')
0396 CALL WRITE_0D_RL( IDEMIX_diff_max,INDEX_NONE,'IDEMIX_diff_max =',
0397 & ' /* IDEMIX maximal diffusivity. */')
0398 CALL WRITE_0D_RL( IDEMIX_diff_min,INDEX_NONE,'IDEMIX_diff_min =',
0399 & ' /* IDEMIX minimal diffusivity. */')
0400 CALL WRITE_0D_RL( IDEMIX_frac_F_b,INDEX_NONE,'IDEMIX_frac_F_b =',
0401 & ' /* Fraction of F_b which enters IW field. */')
0402 CALL WRITE_0D_RL( IDEMIX_frac_F_s,INDEX_NONE,'IDEMIX_frac_F_s =',
0403 & ' /* Fraction of F_s which enters IW field. */')
0404 CALL WRITE_0D_L(IDEMIX_include_GM,INDEX_NONE,
0405 & 'IDEMIX_include_GM =', ' /* IDEMIX GM flag */')
0406 CALL WRITE_0D_L(IDEMIX_include_GM_bottom,INDEX_NONE,
0407 & 'IDEMIX_include_GM_bottom =', ' /* IDEMIX GM flag */')
0408
1d389ab3d9 Jean*0409 CALL WRITE_0D_C( IDEMIX_tidal_file, -1, INDEX_NONE,
31a3206180 Mart*0410 & 'IDEMIX_tidal_file =', ' /* file name of tidal energy field */')
1d389ab3d9 Jean*0411 CALL WRITE_0D_C( IDEMIX_wind_file, -1, INDEX_NONE,
31a3206180 Mart*0412 & 'IDEMIX_wind_file =', ' /* file name of wind energy field */')
0413 ENDIF
0414 #endif /* ALLOW_GGL90_IDEMIX */
9293d3c672 Hajo*0415
0416 #ifdef ALLOW_GGL90_LANGMUIR
0417 CALL WRITE_0D_L(useLANGMUIR,INDEX_NONE, 'useLANGMUIR =',
0418 & ' /* turn on Langmuir circulation effect. */')
0419
0420 IF ( useLANGMUIR ) THEN
0421 CALL WRITE_0D_RL( LC_Gamma, INDEX_NONE,'LC_Gamma =',
0422 & ' /* Mix-Length Amplification fac. from Langmuir Circ. (>=1) */')
0423 CALL WRITE_0D_RL( LC_num, INDEX_NONE,'LC_num =',
0424 & ' /* Value for the Langmuir number (no units) */')
0425 CALL WRITE_0D_RL( LC_lambda, INDEX_NONE,'LC_lambda =',
0426 & ' /* Vertical scale for Stokes velocity ( m ) */')
0427 ENDIF
0428 #endif /* ALLOW_GGL90_LANGMUIR */
0429
de2cc1c4d8 Mart*0430 WRITE(msgBuf,'(A)')
0431 &'// ======================================================='
4da4b49499 Jean*0432 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0433 & SQUEEZE_RIGHT, myThid )
de2cc1c4d8 Mart*0434 WRITE(msgBuf,'(A)') '// End of GGL90 config. summary'
4da4b49499 Jean*0435 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0436 & SQUEEZE_RIGHT, myThid )
de2cc1c4d8 Mart*0437 WRITE(msgBuf,'(A)')
0438 &'// ======================================================='
c4344fa574 Mart*0439 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0440 & SQUEEZE_RIGHT, myThid )
de2cc1c4d8 Mart*0441 WRITE(msgBuf,'(A)') ' '
c4344fa574 Mart*0442 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1d82a71159 Jean*0443 & SQUEEZE_RIGHT, myThid )
c4344fa574 Mart*0444
0445 _END_MASTER(myThid)
0446
0447
0448 _BARRIER
0449
89474f9a5c Mart*0450 #endif /* ALLOW_GGL90 */
0451
ae4c29e0db Jean*0452 RETURN
0453 END