Subsections


Tracer Lateral Diffusion (traldf.F90)


!----------------------------------------------------------------------------------
&namtra_ldf    !   lateral diffusion scheme for tracers
!----------------------------------------------------------------------------------
   !                       !  Operator type:
   ln_traldf_lap    =  .true.   !  laplacian operator
   ln_traldf_bilap  =  .false.  !  bilaplacian operator
   !                       !  Direction of action:
   ln_traldf_level  =  .false.  !  iso-level
   ln_traldf_hor    =  .false.  !  horizontal (geopotential)   (needs "key_ldfslp" when ln_sco=T)
   ln_traldf_iso    =  .true.   !  iso-neutral                 (needs "key_ldfslp")
   !		       	   !  Griffies parameters              (all need "key_ldfslp")
   ln_traldf_grif   =  .false.  !  use griffies triads
   ln_traldf_gdia   =  .false.  !  output griffies eddy velocities
   ln_triad_iso     =  .false.  !  pure lateral mixing in ML
   ln_botmix_grif   =  .false.  !  lateral mixing on bottom
   !                       !  Coefficients
   ! Eddy-induced (GM) advection always used with Griffies; otherwise needs "key_traldf_eiv"
   ! Value rn_aeiv_0 is ignored unless = 0 with Held-Larichev spatially varying aeiv
   !                                  (key_traldf_c2d & key_traldf_eiv & key_orca_r2, _r1 or _r05)
   rn_aeiv_0        =  2000.    !  eddy induced velocity coefficient [m2/s]
   rn_aht_0         =  2000.    !  horizontal eddy diffusivity for tracers [m2/s]
   rn_ahtb_0        =     0.    !  background eddy diffusivity for ldf_iso [m2/s]
   !                                           (normally=0; not used with Griffies)
   rn_slpmax        =     0.01  !  slope limit
   rn_chsmag        =     1.    !  multiplicative factor in Smagorinsky diffusivity
   rn_smsh          =     1.    !  Smagorinsky diffusivity: = 0 - use only sheer
   rn_aht_m         =  2000.    !  upper limit or stability criteria for lateral eddy diffusivity (m2/s)
/

Options are defined through the namtra_ldf namelist variables. The options available for lateral diffusion are a laplacian (rotated or not) or a biharmonic operator, the latter being more scale-selective (more diffusive at small scales). The specification of eddy diffusivity coefficients (either constant or variable in space and time) as well as the computation of the slope along which the operators act, are performed in the ldftra.F90 and ldfslp.F90 modules, respectively. This is described in Chap. 9. The lateral diffusion of tracers is evaluated using a forward scheme, $ i.e.$ the tracers appearing in its expression are the before tracers in time, except for the pure vertical component that appears when a rotation tensor is used. This latter term is solved implicitly together with the vertical diffusion term (see §3).


Iso-level laplacian operator (lap) (ln_traldf_lap=true)

A laplacian diffusion operator ($ i.e.$ a harmonic operator) acting along the model surfaces is given by:

$\displaystyle D_T^{lT} =\frac{1}{b_t} \left( \; \delta _{i}\left[ A_u^{lT} \; \...
...v^{lT} \; \frac{e_{1v} e_{3v}}{e_{2v}} \;\delta _{j+1/2} [T] \right] \;\right)$ (5.8)

where $ b_t$= $ e_{1t} e_{2t} e_{3t}$ is the volume of $ T$-cells. It is implemented in the traadv_lap.F90 module.

This lateral operator is computed in traldf_lap.F90. It is a horizontal operator ($ i.e.$ acting along geopotential surfaces) in the $ z$-coordinate with or without partial steps, but is simply an iso-level operator in the $ s$-coordinate. It is thus used when, in addition to ln_traldf_lap=true, we have ln_traldf_level=true or ln_traldf_hor=ln_zco=true. In both cases, it significantly contributes to diapycnal mixing. It is therefore not recommended.

Note that in the partial step $ z$-coordinate (ln_zps=true), tracers in horizontally adjacent cells are located at different depths in the vicinity of the bottom. In this case, horizontal derivatives in (5.8) at the bottom level require a specific treatment. They are calculated in the zpshde.F90 module, described in §5.9.


Rotated laplacian operator (iso) (ln_traldf_lap=true)

If the Griffies trad scheme is not employed (ln_traldf_grif=true; see App.D) the general form of the second order lateral tracer subgrid scale physics (2.34) takes the following semi-discrete space form in $ z$- and $ s$-coordinates:

\begin{displaymath}\begin{split}D_T^{lT} = \frac{1}{b_t} & \left\{  \;\delta_i ...
...ta_{k+1/2} [T] } \right) } \right] \quad } \right\} \end{split}\end{displaymath} (5.9)

where $ b_t$= $ e_{1t} e_{2t} e_{3t}$ is the volume of $ T$-cells, $ r_1$ and $ r_2$ are the slopes between the surface of computation ($ z$- or $ s$-surfaces) and the surface along which the diffusion operator acts ($ i.e.$ horizontal or iso-neutral surfaces). It is thus used when, in addition to ln_traldf_lap= true, we have ln_traldf_iso=true, or both ln_traldf_hor=true and ln_zco=true. The way these slopes are evaluated is given in §9.2. At the surface, bottom and lateral boundaries, the turbulent fluxes of heat and salt are set to zero using the mask technique (see §8.1).

The operator in (5.9) involves both lateral and vertical derivatives. For numerical stability, the vertical second derivative must be solved using the same implicit time scheme as that used in the vertical physics (see §5.3). For computer efficiency reasons, this term is not computed in the traldf_iso.F90 module, but in the trazdf.F90 module where, if iso-neutral mixing is used, the vertical mixing coefficient is simply increased by $ \frac{e_{1w} e_{2w} }{e_{3w} } \left( {r_{1w} ^2+r_{2w} ^2} \right)$.

This formulation conserves the tracer but does not ensure the decrease of the tracer variance. Nevertheless the treatment performed on the slopes (see §9) allows the model to run safely without any additional background horizontal diffusion [Guilyardi et al., 2001]. An alternative scheme developed by Griffies et al. [1998] which ensures tracer variance decreases is also available in NEMO (ln_traldf_grif=true). A complete description of the algorithm is given in App.D.

Note that in the partial step $ z$-coordinate (ln_zps=true), the horizontal derivatives at the bottom level in (5.9) require a specific treatment. They are calculated in module zpshde, described in §5.9.


Iso-level bilaplacian operator (bilap) (ln_traldf_bilap=true)

The lateral fourth order bilaplacian operator on tracers is obtained by applying (5.8) twice. The operator requires an additional assumption on boundary conditions: both first and third derivative terms normal to the coast are set to zero. It is used when, in addition to ln_traldf_bilap=true, we have ln_traldf_level=true, or both ln_traldf_hor=true and ln_zco=false. In both cases, it can contribute diapycnal mixing, although less than in the laplacian case. It is therefore not recommended.

Note that in the code, the bilaplacian routine does not call the laplacian routine twice but is rather a separate routine that can be found in the traldf_bilap.F90 module. This is due to the fact that we introduce the eddy diffusivity coefficient, A, in the operator as: $ \nabla \cdot \nabla \left( {A\nabla \cdot \nabla T} \right)$, instead of $ -\nabla \cdot a\nabla \left( {\nabla \cdot a\nabla T} \right)$ where $ a=\sqrt{\vert A\vert}$ and $ A<0$. This was a mistake: both formulations ensure the total variance decrease, but the former requires a larger number of code-lines.


Rotated bilaplacian operator (bilapg) (ln_traldf_bilap=true)

The lateral fourth order operator formulation on tracers is obtained by applying (5.9) twice. It requires an additional assumption on boundary conditions: first and third derivative terms normal to the coast, normal to the bottom and normal to the surface are set to zero. It can be found in the traldf_bilapg.F90.

It is used when, in addition to ln_traldf_bilap=true, we have ln_traldf_iso= .true, or both ln_traldf_hor=true and ln_zco=true. This rotated bilaplacian operator has never been seriously tested. There are no guarantees that it is either free of bugs or correctly formulated. Moreover, the stability range of such an operator will be probably quite narrow, requiring a significantly smaller time-step than the one used with an unrotated operator.

Gurvan Madec and the NEMO Team
NEMO European Consortium2017-02-17