Some algebraic length-scale relations (Source File: algebraiclength.F90)


INTERFACE:

    subroutine algebraiclength(method,nlev,z0b,z0s,depth,h,NN)
DESCRIPTION:

This subroutine computes the vertical profile of the turbulent scale $ l$ from different types of analytical expressions. These range from simple geometrical forms to more complicated expressions taking into account the effects of stratification and shear. The users can select their method in the input file gotmturb.nml. For convenience, we define here $ d_b$ and $ d_s$ as the distance from the bottom and the surface, respectively. The water depth is then given by $ H=d_b+d_s$, and $ z_0^b$ and $ z_0^s$ are the repective roughness lengths. With these abbreviations, the expressions implemented in GOTM are as follows.

  1. The parabolic profile is defined according to

    $\displaystyle l=\kappa \frac{(d_s+z_0^s) (d_b+z_0^b)} {d_s+d_b+z_0^b+z_0^s} \; , \quad$ (173)

    where it should be noted that only for large water depth this equation converges to $ \kappa(z+z_0)$ near the bottom or near the surface.
  2. The triangular profile is defined according to

    $\displaystyle l = \kappa \, \min(d_s+z_0^s,d_b+z_0^b) \; , \quad     $ (174)

    which converges always to $ \kappa(z+z_0)$ near the bottom or near the surface.
  3. A distorted parabola can be constructed by using a slightly modified form of the equation used by Xing and Davies (1995),

    $\displaystyle l = \kappa \frac{(d_s+z_0^s)(d_b^\text{Xing}+z_0^b)} {d_s+d_b^\te...
... d_b^\text{Xing} = d_b \exp{\left(-\beta \frac{d_b}{H} \right)} \; , \quad     $ (175)

    where it should be noted that only for large water depth this equation converges to $ \kappa(z+z_0)$ near the bottom or near the surface. The constant $ \beta$ is a form parameter determining the distortion of the profile. Currently we use $ \beta = 2$ in GOTM.
  4. A distorted parabola can be constructed by using a slightly modified form of the equation used by Robert and Ouellet (1987),

    $\displaystyle l = \kappa (d_b+z_0^b) \sqrt{1-\frac{d_b-z_0^s}{H}} \; , \quad    $ (176)

    where it should be noted that only for large water depth this equation converges to $ \kappa(z+z_0)$ near the bottom. Near the surface, the slope of $ l$ is always different from the law of the wall, a fact that becomes important when model solutions for the case of breaking waves are computed, see section 4.7.4.
  5. Also the famous formula of Blackadar (1962) is based on a parabolic shape, extended by an extra length-scale $ l_a$. Using the form of Luyten et al. (1996), the algebraic relation is expressed by

    $\displaystyle l = \left( \frac{1}{\kappa (d_s+z_0^s)} +\frac{1}{\kappa (d_b+z_0^b)} +\dfrac{1}{l_a} \right) \; , \quad$ (177)

    where

    $\displaystyle l_a = \gamma_0 \frac{\int_{-H}^\eta k^\frac{1}{2} z dz} {\int_{-H}^\eta k^\frac{1}{2} dz}$ (178)

    is the natural kinetic energy scale resulting from the first moment of the rms turbulent velocity. The constant $ \gamma_0$ usually takes the value $ \gamma_0 = 0.2$. It should be noted that this expression for $ l$ converges to $ \kappa(z+z_0)$ at the surface and the bottom only for large water depth, and when $ l_a$ plays only a minor role.
  6. The so-called ISPRAMIX method to compute the length-scale is described in detail in section 4.7.35.
After the length-scale has been computed, it is optionally limited by the method suggested by Galperin et al. (1988). This option can be activated in gotmturb.nml by setting length_lim = .true. The rate of dissipation is computed according to (153).


USES:

    use turbulence, only: L,eps,tke,k_min,eps_min
    use turbulence, only: cde,galp,kappa,length_lim
    IMPLICIT NONE
INPUT PARAMETERS:
 
    type of length scale
    integer,  intent(in)                :: method
 
    number of vertical layers
    integer,  intent(in)                :: nlev
 
    surface and bottom roughness (m)
    REALTYPE, intent(in)                :: z0b,z0s
 
    local depth (m)
    REALTYPE, intent(in)                :: depth
 
    layer thicknesses (m)
    REALTYPE, intent(in)                :: h(0:nlev)
 
    buoyancy frequency (1/s^2)
    REALTYPE, intent(in)                :: NN(0:nlev)
DEFINED PARAMETERS:
    integer, parameter                  :: Parabola=1
    integer, parameter                  :: Triangle=2
    integer, parameter                  :: Xing=3
    integer, parameter                  :: RobertOuellet=4
    integer, parameter                  :: Blackadar=5
    integer, parameter                  :: ispra_length=7
REVISION HISTORY:
    Original author(s):  Manuel Ruiz Villarreal, Hans Burchard
    $Log: algebraiclength.F90,v $
    Revision 1.7  2007-01-06 11:49:15  kbk
    namelist file extension changed .inp --> .nml
    Revision 1.6  2005/11/15 11:35:02  lars
    documentation finish for print
    Revision 1.5  2005/06/27 13:44:07  kbk
    modified + removed traling blanks
    Revision 1.4  2003/03/28 09:20:35  kbk
    added new copyright to files
    Revision 1.3  2003/03/10 09:02:03  gotm
    Added new Generic Turbulence Model +
    improved documentation and cleaned up code
    Revision 1.2  2002/02/08 08:59:58  gotm
    Revision 1.1.1.1  2001/02/12 15:55:58  gotm
    initial import into CVS

Karsten Bolding 2012-01-24