Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:37:38 UTC

view on githubraw file Latest commit 672ec4d5 on 2016-12-01 17:05:48 UTC
672ec4d5cf Jean*0001 <HTML>
                0002 <TITLE>module vert_turb_driver_mod</TITLE>
                0003 <BODY BGCOLOR="#AABBCC" TEXT="#332211" >
                0004 
                0005 <DIV ALIGN="CENTER"> <FONT SIZE=1>
                0006 <A HREF="#INTERFACE">PUBLIC INTERFACE</A> / 
                0007 <A HREF="#ROUTINES">ROUTINES</A> / 
                0008 <A HREF="#NAMELIST">NAMELIST</A> / 
                0009 <A HREF="#DIAGNOSTICS">DIAGNOSTICS</A> / 
                0010 <A HREF="#ERRORS">ERRORS</A>
                0011 </FONT>
                0012 <BR><BR></DIV><HR>
                0013 
                0014 
                0015 <H2>Module vert_turb_driver_mod</H2>
                0016 <A NAME="HEADER">
                0017 <PRE>
                0018      <B>Contact:</B>   Bruce Wyman, Steve Klein
                0019      <B>Reviewers:</B>
                0020 
                0021 </PRE>
                0022 </A><!-- END HEADER -->
                0023 <!--------------------------------------------------------------------->
                0024 <A NAME="OVERVIEW">
                0025 <HR>
                0026 <H4>OVERVIEW</H4>
                0027 <!-- BEGIN OVERVIEW -->
                0028 <PRE>
                0029 
                0030      Controls the selection of schemes to determine diffusion
                0031      coefficents in the free atmosphere and outputs related
                0032      diagnostic quantities.
                0033 
                0034 </PRE>
                0035 </A><!-- END OVERVIEW -->
                0036 <!--------------------------------------------------------------------->
                0037 <A NAME="DESCRIPTION">
                0038 <!-- BEGIN DESCRIPTION -->
                0039 <PRE>
                0040 
                0041      The follow processes are controlled by this module:
                0042 
                0043         1) Mellor-Yamada 2.5 turbulence closure scheme
                0044         2) Generalized diffusivity scheme
                0045         3) Shallow convection scheme
                0046         4) Calculation of gustiness
                0047 
                0048 </PRE>
                0049 </A><!-- END DESCRIPTION -->
                0050 <!--------------------------------------------------------------------->
                0051 <A NAME="MODULES_USED">
                0052 <HR>
                0053 <H4>OTHER MODULES USED</H4>
                0054 <!-- BEGIN MODULES_USED -->
                0055 <PRE>
                0056 
                0057          my25_turb_mod
                0058        diffusivity_mod
                0059       shallow_conv_mod
                0060       diag_manager_mod
                0061       time_manager_mod
                0062          constants_mod
                0063          utilities_mod
                0064 
                0065 </PRE>
                0066 </A><!-- END MODULES_USED -->
                0067 <!--------------------------------------------------------------------->
                0068 <A NAME="INTERFACE">
                0069 <HR>
                0070 <H4>PUBLIC INTERFACE</H4>
                0071 <!-- BEGIN INTERFACE -->
                0072 <PRE>
                0073 
                0074 use vert_turb_driver_mod [,only: vert_turb_driver_init,
                0075                                  vert_turb_driver, vert_turb_driver_end]
                0076 
                0077 vert_turb_driver_init - Must be called once before vert_turb_driver to
                0078                         initialize the module (reads namelist input)
                0079                         and other modules used.
                0080 
                0081 vert_turb_driver      - Called every time step to compute diffusion
                0082                         coefficients.
                0083 
                0084 vert_turb_driver_end  - Called at the end of the model run to terminate
                0085                         the vert_turb_driver module and other modules used.
                0086 
                0087 Notes:
                0088  1) A namelist interface controls runtime options and selects fields
                0089     for diagnostics output.
                0090  
                0091 </PRE>
                0092 </A><!-- END INTERFACE -->
                0093 <!--------------------------------------------------------------------->
                0094 <A NAME="ROUTINES">
                0095 <HR>
                0096 <H4>PUBLIC ROUTINES</H4>
                0097 <!-- BEGIN ROUTINES -->
                0098 <PRE>
                0099 
                0100 <b>call vert_turb_driver_init</b> (id, jd, kd, axes, Time)
                0101 
                0102 input
                0103 
                0104     id, jd    number of horizontal grid points in the global
                0105               fields along the i and j axis, repectively.
                0106                  [integer]
                0107 
                0108     kd        number of vertical points in a column of the atmosphere
                0109                  [integer]
                0110 
                0111     axes      The axis indices that are returned by previous calls to
                0112               diag_axis_init. The values of this array correspond to the
                0113               x, y, full (p)level, and half (p)level axes. These are the
                0114               axes that diagnostic fields are output on.
                0115                  [integer, dimension(4)]
                0116 
                0117     Time      The current time.  [time_type]
                0118 
                0119 ---------------------------------------------------------------------
                0120 
                0121 <b>call vert_turb_driver</b> (is, js, Time, Time_next, dt, frac_land,
                0122                        p_half, p_full, z_half, z_full,
                0123                        u_star, b_star, rough, u, v, t, q, 
                0124                        um, vm, tm, qm, udt, vdt, tdt, qdt,
                0125                        diff_t, diff_m, gust [, mask, kbot] )
                0126 
                0127 input
                0128 
                0129     is         starting i index for current window [integer]
                0130 
                0131     js         starting j index for current window [integer]
                0132 
                0133     Time       time at the current time level (tau) [time_type]
                0134 
                0135     Time_next  time at the next time level (tau+1) [time_type]
                0136 
                0137     dt         time step in seconds (from tau-1 to tau+1 if leapfrog)
                0138                  [real]
                0139 
                0140     frac_land  fraction (0. to 1.) of surface which covered by land
                0141                  [real, dimension(:,:)]
                0142 
                0143     p_half     pressure at half model levels [real, dimension(:,:,nlev+1)]
                0144 
                0145     p_full     pressure at full model levels [real, dimension(:,:,nlev)]
                0146 
                0147     z_half     height (in meters) at half model levels
                0148                  [real, dimension(:,:,nlev+1)]
                0149 
                0150     z_full     height (in meters) at full model levels
                0151                  [real, dimension(:,:,nlev)]
                0152 
                0153     u_star     friction velocity (m/s) for the surface layer
                0154                  [real, dimension(:,:)]
                0155 
                0156     b_star     bouyancy scale (deg K/m ???) for the surface layer
                0157                  [real, dimension(:,:)]
                0158 
                0159     rough      surface roughness length scale (m)   [real, dimension(:,:)]
                0160 
                0161     u          zonal wind component (m/s) at full model levels at the current time level
                0162                  [real, dimension(:,:,nlev)]
                0163 
                0164     v          meridional wind component (m/s) at full model levels at the current time level
                0165                  [real, dimension(:,:,nlev)]
                0166 
                0167     t          temperature (deg K) at full model levels at the current time level
                0168                  [real, dimension(:,:,nlev)]
                0169 
                0170     q          specific humidity (kg/kg) at full model levels at the current time level
                0171                  [real, dimension(:,:,nlev)]
                0172 
                0173     um         zonal wind component (m/s) at the previous time level
                0174                  [real, dimension(:,:,nlev)]
                0175 
                0176     vm         meridional wind component (m/s) at the previous time level
                0177                  [real, dimension(:,:,nlev)]
                0178 
                0179     tm         temperature (deg K) at the previous time level
                0180                  [real, dimension(:,:,nlev)]
                0181 
                0182     qm         specific humidity (kg/kg) at the previous time level
                0183                  [real, dimension(:,:,nlev)]
                0184 
                0185     udt        zonal wind tendency in m/s2
                0186                  [real, dimension(:,:,nlev)]
                0187 
                0188     vdt        meridional wind tendency in m/s2
                0189                  [real, dimension(:,:,nlev)]
                0190 
                0191     tdt        temperature tendency in deg k per sec
                0192                  [real, dimension(:,:,nlev)]
                0193 
                0194     qdt        specific humidity tendency in kg vapor/kg air/sec
                0195                  [real, dimension(:,:,nlev)]
                0196 
                0197 output
                0198 
                0199     diff_t     diffusion coefficients (m2/s) for heat/moisture/tracers at 
                0200                half model levels, note that there is no surface value
                0201                  [real, dimension(:,:,nlev)]
                0202 
                0203     diff_m     diffusion coefficients (m2/s) for momentum at 
                0204                half model levels, note that there is no surface value
                0205                  [real, dimension(:,:,nlev)]
                0206 
                0207     gust       surface layer gustiness (m/s), currently this returns a
                0208                constant value (1 m/s) everywhere
                0209                  [real, dimension(:,:)]
                0210 
                0211 input (optional), for the step-mountain (eta) coordinate option
                0212 
                0213     mask       mask (1. or 0.) for grid boxes above or below
                0214                the ground, usually only necessary for the step-mountain
                0215                (eta) vertical coordinate  [real, dimension(:,:,nlev)]
                0216 
                0217     kbot       index of the lowest model level, usually only necessary
                0218                for the step-mountain (eta) vertical coordinate
                0219                  [integer, dimension(:,:)]
                0220 
                0221 ---------------------------------------------------------------------
                0222 
                0223 <b>call vert_turb_driver_end</b>
                0224 
                0225    There are no arguments to this routine.
                0226 
                0227 </PRE>
                0228 </A><!-- END ROUTINES -->
                0229 <!--------------------------------------------------------------------->
                0230 <A NAME="NAMELIST">
                0231 <HR>
                0232 <H4>NAMELIST</H4>
                0233 <!-- BEGIN NAMELIST -->
                0234 <PRE>
                0235 
                0236 <b>&vert_turb_driver_nml</b>
                0237 
                0238   do_mellor_yamada   Switch to to determine when Mellor-Yamada or
                0239                      the generalized diffusivity scheme is used.
                0240                        [logical, default: do_mellor_yamada=.true.]
                0241 
                0242   do_shallow_conv    Switch to turn on/off shallow convection scheme.
                0243                        [logical, default: do_shallow_conv=.false.]
                0244 
                0245   gust_scheme        Sets the scheme used for the gustiness calculation.
                0246                      Valid schemes (case sensitive) are:
                0247                      = 'constant' --> use namelist value CONSTANT_GUST
                0248                      = 'beljaars' --> use Beljaars(1994) scheme
                0249                        [character, default: gust_scheme = 'constant']
                0250 
                0251   constant_gust      Value used for gustiness (in m/s) when
                0252                      gust_scheme = 'constant'.
                0253                        [real, default: constant_gust = 1.]
                0254 
                0255   use_tau        Switch to determine whether the input data (momentum, temp, sphum)
                0256                  used to computed the diffusion coefficients and/or update TKE should
                0257                  be for the current time level (tau) or next time level (tau+1)
                0258                    if use_tau = true then data at tau is used (e.g., u,v,t,q)
                0259                    if use_tau = false then data at tau+1 is used by explicitly
                0260                                 adding the tendency to the data at tau-1
                0261                                 (e.g., tt=t+dt*tdt)
                0262                    [logical, default: use_tau=true ]
                0263 
                0264   do_molecular_diffusion ??????
                0265                    [logical, default: do_molecular_diffusion = .false.]
                0266 
                0267 </PRE>
                0268 </A><!-- END NAMELIST -->
                0269 <!--------------------------------------------------------------------->
                0270 <A NAME="DIAGNOSTICS">
                0271 <HR>
                0272 <H4>DIAGNOSTIC FIELDS</H4>
                0273 <PRE>
                0274 Diagnostic fields may be output to a netcdf file by specifying the
                0275 module name <b>vert_turb</b> and the desired field names (given below)
                0276 in file <b>diag_table</b>. See the documentation for diag_manager.
                0277 </PRE>
                0278 <!-- BEGIN DIAGNOSTICS -->
                0279 <PRE>
                0280 
                0281 Diagnostic fields for module name: <b>vert_turb</b>
                0282 
                0283    field name     field description
                0284    ----------     -----------------
                0285 
                0286    tke            turbulent kinetic energy (m2/s2)
                0287    lscale         turbulent length scale (m)
                0288    lscale_0       master length scale (m)
                0289    z_pbl          depth of planetary boundary layer (m)
                0290    gust           gustiness (m/s)
                0291    diff_t         vert diff coeff for temp (m2/s)
                0292    diff_m         vert diff coeff for momentum (m2/s)
                0293    diff_sc        vert diff coeff for shallow conv (m2/s)
                0294 
                0295 Notes:
                0296 
                0297  1) tke, lscale, and lscale_0 can only be output when the Mellor-Yamada
                0298     scheme is used.
                0299 
                0300 </PRE>
                0301 </A><!-- END DIAGNOSTICS -->
                0302 <!--------------------------------------------------------------------->
                0303 <A NAME="CHANGES">
                0304 <HR>
                0305 <H4>CHANGE HISTORY</H4>
                0306 <!-- BEGIN CHANGES -->
                0307 <PRE>
                0308 
                0309 <B>Changes prior to CVS version control</B>
                0310 
                0311 <b>changes</b> (1/24/2000)
                0312 
                0313   * Minor change.
                0314 
                0315     When the Mellor-Yamada scheme is NOT selected the Mellor-Yamada
                0316     initialization and end routines are no longer called.
                0317 
                0318 <b>changes</b> (10/4/1999)
                0319 
                0320   * Major changes.
                0321 
                0322   * MPP version created. Minor changes for open_file, error_mesg,
                0323     and Fortran write statements. Answers should reproduce the
                0324     previous version.
                0325 
                0326   * Implementation of the new MPP diagnostics package.
                0327     This required major changes to the diagnostic interface and
                0328     the manner in which diagnostics quantities are selected.
                0329     There are additional arguments to several interfaces.
                0330 
                0331 <b>changes</b> (8/31/1999)
                0332 
                0333     Diagnostic field z_pbl, the depth of planetary boundary layer,
                0334     may now be output for either the generalized diffusivity scheme
                0335     or the Mellor-Yamada scheme. (In an earlier revision PBL depth
                0336     could only be output for the diffusivity scheme.)
                0337 
                0338 </PRE>
                0339 </A><!-- END CHANGES -->
                0340 <!--------------------------------------------------------------------->
                0341 <A NAME="ERRORS">
                0342 <HR>
                0343 <H4>ERROR MESSAGES</H4>
                0344 <!-- BEGIN ERRORS -->
                0345 <PRE>
                0346 
                0347 <b>Fatal errors in vert_turb_driver_init:</b>
                0348 
                0349     <b>attempting to call initialization twice</b>
                0350        You can not call vert_turb_driver_init more than once.
                0351 
                0352     <b>invalid value for namelist variable GUST_SCHEME</b>
                0353        The gustiness scheme you have selected is not valid.
                0354        Check the <a href="vert_turb_driver.doc.html#NAMELIST">namelist options</a> for variable GUST_SCHEME.
                0355 
                0356 <b>Fatal errors in vert_turb_driver:</b>
                0357 
                0358     <b>initialization has not been called</b>
                0359        You have not called vert_turb_driver_init before calling
                0360        vert_turb_driver.
                0361 
                0362 </PRE>
                0363 </A><!-- END ERRORS -->
                0364 <!--------------------------------------------------------------------->
                0365 <A NAME="BUGS">
                0366 <HR>
                0367 <H4>KNOWN BUGS</H4>
                0368 <!-- BEGIN BUGS -->
                0369 <PRE>
                0370 
                0371      There are no known bugs.
                0372 
                0373 </PRE>
                0374 </A><!-- END BUGS -->
                0375 <!--------------------------------------------------------------------->
                0376 <A NAME="PLANS">
                0377 <HR>
                0378 <H4>FUTURE PLANS</H4>
                0379 <!-- BEGIN PLANS -->
                0380 <PRE>
                0381 
                0382      None.
                0383 
                0384 </PRE>
                0385 </A><!-- END PLANS -->
                0386 <!--------------------------------------------------------------------->
                0387 
                0388 <HR>
                0389 </BODY>
                0390 </HTML>