Back to home page

MITgcm

 
 

    


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 CBOP
                0004 C     !ROUTINE: GGL90_READPARMS
                0005 C     !INTERFACE:
89474f9a5c Mart*0006       SUBROUTINE GGL90_READPARMS( myThid )
31a3206180 Mart*0007 
                0008 C     !DESCRIPTION: \bv
4da4b49499 Jean*0009 C     *==========================================================*
89474f9a5c Mart*0010 C     | SUBROUTINE GGL90_READPARMS                               |
                0011 C     | o Routine to read in file data.ggl90                     |
4da4b49499 Jean*0012 C     *==========================================================*
31a3206180 Mart*0013 C     \ev
89474f9a5c Mart*0014 
31a3206180 Mart*0015 C     !USES:
                0016       IMPLICIT NONE
89474f9a5c Mart*0017 C     === Global variables ===
                0018 #include "SIZE.h"
                0019 #include "EEPARAMS.h"
                0020 #include "PARAMS.h"
                0021 #include "GRID.h"
                0022 #include "GGL90.h"
                0023 
31a3206180 Mart*0024 C     !INPUT/OUTPUT PARAMETERS:
89474f9a5c Mart*0025 C     === Routine arguments ===
                0026 C     myThid -  Number of this instance of GGL90_READPARMS
                0027       INTEGER myThid
                0028 
                0029 #ifdef ALLOW_GGL90
                0030 
31a3206180 Mart*0031 C     !FUNCTIONS:
ae4c29e0db Jean*0032 C     === Functions ===
                0033       INTEGER  ILNBLNK
                0034       EXTERNAL ILNBLNK
                0035 
31a3206180 Mart*0036 C     !LOCAL VARIABLES:
89474f9a5c Mart*0037 C     === Local variables ===
ae4c29e0db Jean*0038 C     msgBuf      - Informational/error message buffer
89474f9a5c Mart*0039 C     errIO       - IO error flag
                0040 C     iUnit       - Work variable for IO unit number
                0041       CHARACTER*(MAX_LEN_MBUF) msgBuf
3cdeda61e8 Jean*0042       INTEGER errIO, iUnit, iL
016b84c482 Mart*0043 C     retired variables
                0044       INTEGER nRetired
                0045       _RL GGL90taveFreq
3cdeda61e8 Jean*0046 
89474f9a5c Mart*0047 C--   GGL90 vertical mixing parameters
                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 C-----------------------------------------------------------------------
                0061 C  IDEMIX
                0062 C-----------------------------------------------------------------------
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 C-----------------------------------------------------------------------
                0073 C  Langmuir circulation
                0074 C-----------------------------------------------------------------------
                0075       NAMELIST /GGL90_PARM03/
                0076      & LC_Gamma, LC_num, LC_lambda
                0077 #endif /* ALLOW_GGL90_LANGMUIR*/
                0078 
31a3206180 Mart*0079 CEOP
ae4c29e0db Jean*0080 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0081 
                0082       IF ( .NOT.useGGL90 ) THEN
                0083 C-    pkg GGL90 is not used
                0084         _BEGIN_MASTER(myThid)
                0085 C-    Track pkg activation status:
                0086 C     print a (weak) warning if data.ggl90 is found
                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 C--   set default TKE vertical mixing parameters
                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 C     Blanke and Delecluse (1993, JPO) use
                0112       GGL90m2              = 3.75 _d 0
89474f9a5c Mart*0113       GGL90TKEmin          = 1.0 _d -11
6ab314cf42 Mart*0114 C     Blanke and Delecluse (1993, JPO) use
                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 C-----------------------------------------------------------------------
                0132 C     set default parameter for IDEMIX
                0133 C-----------------------------------------------------------------------
31f96e9372 Jean*0134 C     New (and different from Olbers and Eden, 20130) parameter default
                0135 C     values for tau_v, jstar, mu0 according to Pollmann et al. (2017):
                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 C     only approx. 20% of near inertial wind power input reaches IDEMIX
31a3206180 Mart*0146       IDEMIX_frac_F_s   = 0.2 _d 0
                0147 C     IDEMIX_tidal_file = 'tidal_energy.bin'
                0148 C     IDEMIX_wind_file  = 'wind_energy.bin'
                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 C-----------------------------------------------------------------------
                0157 C     set default parameter for LANGMUIR
                0158 C-----------------------------------------------------------------------
                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 C-----------------------------------------------------------------------
                0165 C define some non-dimensional constants and
                0166 C the vertical mixing coefficients in m-k-s units
                0167 C-----------------------------------------------------------------------
4da4b49499 Jean*0168 
89474f9a5c Mart*0169 C--   Read settings from model parameter file "data.ggl90".
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 c     READ( UNIT=iUnit, NML=GGL90_PARM01, IOSTAT=errIO )
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 c      READ( UNIT=iUnit, NML=GGL90_PARM02, IOSTAT=errIO )
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 c      READ( UNIT=iUnit, NML=GGL90_PARM03, IOSTAT=errIO )
                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 C Now set-up any remaining parameters that result from the input parameters
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   ! CE: changed le to lt  !!!
                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 C-    Retired parameters
                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 C--   print TKE vertical mixing parameters to stdout for better debugging
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 C
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 C--   Everyone else must wait for the parameters to be loaded
                0448       _BARRIER
                0449 
89474f9a5c Mart*0450 #endif /* ALLOW_GGL90 */
                0451 
ae4c29e0db Jean*0452       RETURN
                0453       END