!----------------------------------------------------------------------- &nambfr ! bottom friction !----------------------------------------------------------------------- nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction ! = 2 : nonlinear friction rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_bfri2_max = 1.e-1 ! max. bottom drag coefficient (non linear case and ln_loglayer=T) rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) rn_bfrz0 = 3.e-3 ! bottom roughness [m] if ln_loglayer=T ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) rn_tfri1 = 4.e-4 ! top drag coefficient (linear case) rn_tfri2 = 2.5e-3 ! top drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_tfri2_max = 1.e-1 ! max. top drag coefficient (non linear case and ln_loglayer=T) rn_tfeb2 = 0.0 ! top turbulent kinetic energy background (m2/s2) rn_tfrz0 = 3.e-3 ! top roughness [m] if ln_loglayer=T ln_tfr2d = .false. ! horizontal variation of the top friction coef (read a 2D mask file ) rn_tfrien = 50. ! local multiplying factor of tfr (ln_tfr2d=T) ln_bfrimp = .true. ! implicit bottom friction (requires ln_zdfexp = .false. if true) ln_loglayer = .false. ! logarithmic formulation (non linear case) /
Options to define the top and bottom friction are defined through the nambfr namelist variables.
The bottom friction represents the friction generated by the bathymetry.
The top friction represents the friction generated by the ice shelf/ocean interface.
As the friction processes at the top and bottom are represented similarly, only the bottom friction is described in detail below.
Both the surface momentum flux (wind stress) and the bottom momentum flux (bottom friction) enter the equations as a condition on the vertical diffusive flux. For the bottom boundary layer, one has:
In the code, the bottom friction is imposed by adding the trend due to the bottom friction to the general momentum trend in dynbfr.F90. For the time-split surface pressure gradient algorithm, the momentum trend due to the barotropic component needs to be handled separately. For this purpose it is convenient to compute and store coefficients which can be simply combined with bottom velocities and geometric values to provide the momentum trend due to bottom friction. These coefficients are computed in zdfbfr.F90 and generally take the form where:
The linear bottom friction parameterisation (including the special case of a free-slip condition) assumes that the bottom friction is proportional to the interior velocity (i.e. the velocity of the last model level):
For the linear friction case the coefficients defined in the general expression (10.29) are:
The non-linear bottom friction parameterisation assumes that the bottom friction is quadratic:
As for the linear case, the bottom friction is imposed in the code by adding the trend due to the bottom friction to the general momentum trend in dynbfr.F90. For the non-linear friction case the terms computed in zdfbfr.F90 are:
The coefficients that control the strength of the non-linear bottom friction are initialised as namelist parameters: = rn_bfri2, and =rn_bfeb2. Note for applications which treat tides explicitly a low or even zero value of rn_bfeb2 is recommended. From v3.2 onwards a local enhancement of is possible via an externally defined 2D mask array (ln_bfr2d=true). This works in the same way as for the linear bottom friction case with non-zero masked locations increased by *rn_bfrien*rn_bfri2.
In the non-linear bottom friction case, the drag coefficient, , can be optionally enhanced using a "law of the wall" scaling. If ln_loglayer = .true., is no longer constant but is related to the thickness of the last wet layer in each column by:
where is the von-Karman constant and rn_bfrz0 is a roughness length provided via the namelist.
For stability, the drag coefficient is bounded such that it is kept greater or equal to the base rn_bfri2 value and it is not allowed to exceed the value of an additional namelist parameter: rn_bfri2_max, i.e.:
Note also that a log-layer enhancement can also be applied to the top boundary friction if under ice-shelf cavities are in use (ln_isfcav=.true.). In this case, the relevant namelist parameters are rn_tfrz0, rn_tfri2 and rn_tfri2_max.
Some care needs to exercised over the choice of parameters to ensure that the implementation of bottom friction does not induce numerical instability. For the purposes of stability analysis, an approximation to (10.28) is:
Limits on the bottom friction coefficient are not imposed if the user has elected to handle the bottom friction implicitly (see §10.4.5). The number of potential breaches of the explicit stability criterion are still reported for information purposes.
An optional implicit form of bottom friction has been implemented to improve model stability. We recommend this option for shelf sea and coastal ocean applications, especially for split-explicit time splitting. This option can be invoked by setting ln_bfrimp to true in the nambfr namelist. This option requires ln_zdfexp to be false in the namzdf namelist.
This implementation is realised in dynzdf_imp.F90 and dynspg_ts.F90. In dynzdf_imp.F90, the bottom boundary condition is implemented implicitly.
where is the layer number of the bottom wet layer. superscript means the velocity used in the friction formula is to be calculated, so, it is implicit.
If split-explicit time splitting is used, care must be taken to avoid the double counting of the bottom friction in the 2-D barotropic momentum equations. As NEMO only updates the barotropic pressure gradient and Coriolis' forcing terms in the 2-D barotropic calculation, we need to remove the bottom friction induced by these two terms which has been included in the 3-D momentum trend and update it with the latest value. On the other hand, the bottom friction contributed by the other terms (e.g. the advection term, viscosity term) has been included in the 3-D momentum equations and should not be added in the 2-D barotropic mode.
The implementation of the implicit bottom friction in dynspg_ts.F90 is done in two steps as the following:
where is the vertical integrated 3-D momentum trend. We assume the leap-frog time-stepping is used here. is the barotropic mode time step and is the baroclinic mode time step. is the friction coefficient. is the sea surface level calculated in the barotropic loops while is the sea surface level used in the 3-D baroclinic mode. is the bottom layer horizontal velocity.
When calculating the momentum trend due to bottom friction in dynbfr.F90, the bottom velocity at the before time step is used. This velocity includes both the baroclinic and barotropic components which is appropriate when using either the explicit or filtered surface pressure gradient algorithms (key_ dynspg_exp or key_ dynspg_flt). Extra attention is required, however, when using split-explicit time stepping (key_ dynspg_ts). In this case the free surface equation is solved with a small time step rn_rdt/nn_baro, while the three dimensional prognostic variables are solved with the longer time step of rn_rdt seconds. The trend in the barotropic momentum due to bottom friction appropriate to this method is that given by the selected parameterisation ( linear or non-linear bottom friction) computed with the evolving velocities at each barotropic timestep.
In the case of non-linear bottom friction, we have elected to partially linearise the problem by keeping the coefficients fixed throughout the barotropic time-stepping to those computed in zdfbfr.F90 using the now timestep. This decision allows an efficient use of the coefficients to:
Note that the use of an implicit formulation within the barotropic loop for the bottom friction trend means that any limiting of the bottom friction coefficient in dynbfr.F90 does not adversely affect the solution when using split-explicit time splitting. This is because the major contribution to bottom friction is likely to come from the barotropic component which uses the unrestricted value of the coefficient. However, if the limiting is thought to be having a major effect (a more likely prospect in coastal and shelf seas applications) then the fully implicit form of the bottom friction should be used (see §10.4.5 ) which can be selected by setting ln_bfrimp true.
Otherwise, the implicit formulation takes the form:
Gurvan Madec and the NEMO Team
NEMO European Consortium2017-02-17