Here, the turbulence module of the General Ocean Turbulence Model (GOTM, see www.gotm.net and Umlauf et al. (2005)) is called. First, all necessary parameters are transformed to suit with a 1D water column model, i.e., 3D fields are transformed to a vertical vector, 2D horizontal fields are converted to a scalar. The transformed 3D fields are the layer heights hn h, the shear squared SS SS1d, the buoyancy frequency squared NN NN1d, the turbulent kinetic energy tke tke1d, the dissipation rate eps eps1d (from which the integral length scale L1d is calculated), the eddy viscosity num num1d, and the eddy diffusivity nuh nuh1d. The scalars are the surface and bottom friction velocities, u_taus and u_taub, respectively, the surface roughness parameter z0s (which is currently hard-coded), and the bottom roughess parameter z0b. Then, the GOTM turbulence module do_turbulence is called with all the transformed parameters discussed above. Finally, the vertical vectors tke1d, eps1d, num1d and nuh1d are transformed back to 3D fields.
In case that the compiler option STRUCTURE_FRICTION is switched on, the additional turbulence production by structures in the water column is calculated by calculating the total production as
There are furthermore a number of compiler options provided, e.g. for an older GOTM version, for barotropic calcuations, and for simple parabolic viscosity profiles circumventing the GOTM turbulence module. USES:
use halo_zones, only: update_3d_halo,wait_halo,H_TAG use domain, only: imin,imax,jmin,jmax,kmax,az,min_depth,crit_depth use variables_2d, only: D,zub,zvb,z use variables_3d, only: dt,kmin,ho,hn,tke,eps,SS,num,taus,taub #ifndef NO_BAROCLINIC use variables_3d, only: NN,nuh #endif use variables_3d, only: avmback,avhback #ifdef STRUCTURE_FRICTION use variables_3d, only: uu,vv,hun,hvn,sf #endif use turbulence, only: do_turbulence,cde use turbulence, only: tke1d => tke, eps1d => eps, L1d => L use turbulence, only: num1d => num, nuh1d => nuh use getm_timers, only: tic, toc, TIM_GOTM, TIM_GOTMTURB, TIM_GOTMH IMPLICIT NONEREVISION HISTORY:
Original author(s): Karsten Bolding & Hans BurchardLOCAL VARIABLES:
integer :: i,j,k REALTYPE :: u_taus,u_taub,z0s,z0b REALTYPE :: h(0:kmax),dry,zz REALTYPE :: NN1d(0:kmax),SS1d(0:kmax) REALTYPE :: xP(0:kmax)