Manage turbulence time-stepping


    subroutine do_turbulence(nlev,dt,depth,u_taus,u_taub,z0s,z0b,h,      &

This routine is the central point of the turbulence scheme. It determines the order, in which turbulence variables are updated, and calls other member functions updating the TKE, the length-scale, the dissipation rate, the ASM etc. Note, that the list of arguments in do_turbulence() corresponds exactly to those mean flow and grid-related variables required to update the turbulent quantities. These variables have to be passed from a 3-D model, if the turbulence module of GOTM is used for the computation of the turbulent fluxes. Do not forget to call init_turbulence() from the 3-D model before the first call to do_turbulence().

The variable turb_method determines the essential structure of the calls in do_turbulence(). At the moment, the following model types are available:

The second-order models fall into different categories, depending on the value of second_method. These models, discussed in detail in section 4.4, are listed in the following.

Depending on the values of kb_method and epsb_method, different algebraic or differential equations for $ k_b$ and $ \epsilon_b$ are solved for second_method = 3,4.


       subroutine production(nlev,NN,SS,xP)
         integer,  intent(in)                :: nlev
         REALTYPE, intent(in)                :: NN(0:nlev)
         REALTYPE, intent(in)                :: SS(0:nlev)
         REALTYPE, intent(in), optional      :: xP(0:nlev)
       end subroutine production
    end interface
    number of vertical layers
    integer,  intent(in)                :: nlev
    time step (s)
    REALTYPE, intent(in)                :: dt
    distance between surface
    and bottom(m)
    REALTYPE, intent(in)                :: depth
    surface and bottom
    friction velocity (m/s)
    REALTYPE, intent(in)                :: u_taus,u_taub
    surface and bottom
    roughness length (m)
    REALTYPE, intent(in)                :: z0s,z0b
    layer thickness (m)
    REALTYPE, intent(in)                :: h(0:nlev)
    boyancy frequency squared (1/s^2)
    REALTYPE, intent(in)                :: NN(0:nlev)
    shear-frequency squared (1/s^2)
    REALTYPE, intent(in)                :: SS(0:nlev)
    TKE production due to seagrass
    friction (m^2/s^3)
    REALTYPE, intent(in), optional      :: xP(0:nlev)
    Original author(s): Karsten Bolding, Hans Burchard,
                        Lars Umlauf

Karsten Bolding 2012-01-24