The vertical grid


   subroutine updategrid(nlev,dt,zeta)

This subroutine calculates for each time step new layer thicknesses in order to fit them to the changing water depth. Three different grids can be specified:

  1. Equidistant grid with possible zooming towards surface and bottom. The number of layers, nlev, and the zooming factors, ddu=$ d_u$ and ddl=$ d_l$, are specified in gotmmean.nml. Zooming is applied according to the formula

    $\displaystyle h_k = D\frac{\mbox{tanh}\left( (d_l+d_u)\frac{k}{M}-d_l\right) +\mbox{tanh}(d_l)}{\mbox{tanh}(d_l)+\mbox{tanh}(d_u)}-1 \quad .$ (11)

    From this formula, the following grids are constructed:

  2. Sigma-layers. The fraction that every layer occupies is read-in from file, see gotmmean.nml.
  3. Cartesian layers. The height of every layer is read in from file, see gotmmean.nml. This method is not recommended when a varying sea surface is considered.

Furthermore, vertical velocity profiles are calculated here, if w_adv_method is 1 or 2, which has to be chosen in the w_advspec namelist in obs.nml. The profiles of vertical velocity are determined by two values, the height of maximum absolute value of vertical velocity, w_height, and the vertical velocity at this height, w_adv. From w_height, the vertical velocity is linearly decreasing towards the surface and the bottom, where is value is zero.


   use meanflow,     only: grid_ready
   use meanflow,     only: depth0,depth
   use meanflow,     only: ga,z,h,ho,ddu,ddl,grid_method
   use meanflow,     only: NN,SS,w_grid,grid_file,w
   use observations, only: zeta_method,w_adv_method
   use observations, only: w_adv,w_height,w_adv_discr
   integer, intent(in)                 :: nlev
   REALTYPE, intent(in)                :: dt,zeta
   Original author(s): Hans Burchard & Karsten Bolding

Karsten Bolding 2012-12-28