New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
#2075 (LDF: scale-aware setting of viscous and diffusive coefficient) – NEMO

Opened 6 years ago

Closed 6 years ago

Last modified 2 years ago

#2075 closed Enhancement (fixed)

LDF: scale-aware setting of viscous and diffusive coefficient

Reported by: gm Owned by: gm
Priority: normal Milestone: 2018 release-4.0
Component: OCE Version: trunk
Severity: minor Keywords: LDF OPA v4.0
Cc:

Description (last modified by nemo)

Context

In the current version of the trunk as well as in dev_merge_2017:

1- the diffusive and viscous coefficients are defined in a "scale-aware" way which may be problematic, especially with AGRIF zoom.
2- the masking of the coefficients has an error with under ice-shelf cavities: when a space-only variation is chosen, the coefficients are zero in the cavities.

3- simplification of the setting of passive tracer diffusivity.

Proposal

change in the dev_merge_2017 the following things:

1- scale-aware definition of diffusive and viscous coefficients:
The coefficients are now defined from characteristic velocity and length scale provided in the namelist:

laplacian case: ah = 1/2 Ud*Ld — bi-laplacian case: ah = 1/12 Ud*Ld3

Note that when the grid dependent option is used, only Ud is used, Ld is replaced by max(e1,e2) and when a velocity dependent case is chosen, Ud=|Un| and Ld=max(e1,e2).
2- Bug correction for under ice-shelf cavities:
remove all masking from ldfc1d_c2d.F90 and, in ldfdyn.F90 and ldftra.F90 add the masking only at the end of the initialization.
3- the choice for passive tracer operator/coefficient becomes simply : no diffusivity or use the active tracer choice with the possibility of a multiplier of aht.
4- update the NEMO ocean engine documentation.

Code modifications :

  • namelist : namtra_ldf, namtra_eiv and namdyn_ldf (_ref and all _cfg namelists) become:
!-----------------------------------------------------------------------
&namtra_ldf    !   lateral diffusion scheme for tracers                 (default: NO selection)
!-----------------------------------------------------------------------
   !                       !  Operator type:
   ln_traldf_NONE  = .false.   !  No explicit diffusion
   ln_traldf_lap   = .false.   !    laplacian operator
   ln_traldf_blp   = .false.   !  bilaplacian operator
   !
   !                       !  Direction of action:
   ln_traldf_lev   = .false.   !  iso-level
   ln_traldf_hor   = .false.   !  horizontal  (geopotential)
   ln_traldf_iso   = .false.   !  iso-neutral (standard operator)
   ln_traldf_triad = .false.   !  iso-neutral (triad    operator)
   !
   !                       !  iso-neutral options:        
   ln_traldf_msc   = .false.   !  Method of Stabilizing Correction      (both operators)
   rn_slpmax       =  0.01     !  slope limit                           (both operators)
   ln_triad_iso    = .false.   !  pure horizontal mixing in ML              (triad only)
   rn_sw_triad     = 1         !  =1 switching triad ; =0 all 4 triads used (triad only)
   ln_botmix_triad = .false.   !  lateral mixing on bottom                  (triad only)
   !
   !                       !  Coefficients:
   nn_aht_ijk_t    = 0         !  space/time variation of eddy coefficient:
      !                             !   =-20 (=-30)    read in eddy_diffusivity_2D.nc (..._3D.nc) file
      !                             !   =  0           constant 
      !                             !   = 10 F(k)      =ldf_c1d 
      !                             !   = 20 F(i,j)    =ldf_c2d 
      !                             !   = 21 F(i,j,t)  =Treguier et al. JPO 1997 formulation
      !                             !   = 30 F(i,j,k)  =ldf_c2d * ldf_c1d
      !                             !   = 31 F(i,j,k,t)=F(local velocity and grid-spacing)
      !                        !  time invariant coefficients:  aht = 1/2  Ud*Ld   (lap case) 
      !                             !                           or  = 1/12 Ud*Ld^3 (blp case)
      rn_Ud        = 0.1            !  lateral diffusive velocity [m/s] (nn_aht_ijk_t= 0, 10, 20, 30)
      rn_Ld        = 10.e+3         !  lateral diffusive length   [m]   (nn_aht_ijk_t= 0, 10)
/
&namtra_eiv    !   eddy induced velocity param.                         (default: NO eiv)
!-----------------------------------------------------------------------
   ln_ldfeiv   = .false.   ! use eddy induced velocity parameterization
      !
      !                        !  Coefficients:
      nn_aht_ijk_t    = 0           !  space/time variation of eddy coefficient:
      !                             !   =-20 (=-30)    read in eddy_induced_velocity_2D.nc (..._3D.nc) file
      !                             !   =  0           constant 
      !                             !   = 10 F(k)      =ldf_c1d 
      !                             !   = 20 F(i,j)    =ldf_c2d 
      !                             !   = 21 F(i,j,t)  =Treguier et al. JPO 1997 formulation
      !                             !   = 30 F(i,j,k)  =ldf_c2d * ldf_c1d
      !                        !  time invariant coefficients:  aei = 1/2  Ue*Le 
      rn_Ue        = 0.02           !  lateral diffusive velocity [m/s] (nn_aht_ijk_t= 0, 10, 20, 30)
      rn_Le        = 200.e+3        !  lateral diffusive length   [m]   (nn_aht_ijk_t= 0, 10)
      !
      ln_ldfeiv_dia =.false.   ! diagnose eiv stream function and velocities
/

...

!-----------------------------------------------------------------------
&namdyn_ldf    !   lateral diffusion on momentum                        (default: NO selection)
!-----------------------------------------------------------------------
   !                       !  Type of the operator :
   ln_dynldf_NONE= .false.     !  No operator (i.e. no explicit diffusion)
   ln_dynldf_lap = .false.     !    laplacian operator
   ln_dynldf_blp = .false.     !  bilaplacian operator
   !                       !  Direction of action  :
   ln_dynldf_lev = .false.     !  iso-level
   ln_dynldf_hor = .false.     !  horizontal  (geopotential)
   ln_dynldf_iso = .false.     !  iso-neutral (lap only)
   !                       !  Coefficient
   nn_ahm_ijk_t  = 0           !  space/time variation of eddy coefficient :
      !                             !  =-30  read in eddy_viscosity_3D.nc file
      !                             !  =-20  read in eddy_viscosity_2D.nc file
      !                             !  =  0  constant 
      !                             !  = 10  F(k)=c1d
      !                             !  = 20  F(i,j)=F(grid spacing)=c2d
      !                             !  = 30  F(i,j,k)=c2d*c1d
      !                             !  = 31  F(i,j,k)=F(grid spacing and local velocity)
      !                             !  = 32  F(i,j,k)=F(local gridscale and deformation rate)
      !                        !  time invariant coefficients :  ahm = 1/2  Uv*Lv   (lap case) 
      !                             !                            or  = 1/12 Uv*Lv^3 (blp case)
      rn_Uv      = 0.1              !  lateral viscous velocity [m/s] (nn_ahm_ijk_t= 0, 10, 20, 30)
      rn_Lv      = 10.e+3           !  lateral viscous length   [m]   (nn_ahm_ijk_t= 0, 10)
      !                       !  Smagorinsky settings  (nn_ahm_ijk_t= 32) :
      rn_csmc       = 3.5         !  Smagorinsky constant of proportionality
      rn_minfac     = 1.0         !  multiplier of theorectical lower limit
      rn_maxfac     = 1.0         !  multiplier of theorectical upper limit
      !                       !  iso-neutral laplacian operator (ln_dynldf_iso=T) :
      rn_ahm_b      = 0.0         !  background eddy viscosity  [m2/s]
/
  • LDF : modifications in all the modules (ldfc1d_c2d.F90 ; ldfdyn.F90 ; ldfslp.F90 ; ldftra.F90)
  • DYN and TRA : move operator choice from dynldf/traldf to ldfdyn/ldftra. Modification in dynldf_iso.F90 as it uses tracer mixing coefficient. move the definition of np_... parameters from traldf_lap_blp.F90 to ldftra.F90 and from dyn_ldf.F90 to ldfdyn.F90.
  • TOP : significant simplification in trcldf.F90 and oce_trc.F90. The namtrc_ldf simply becomes:
!-----------------------------------------------------------------------
&namtrc_ldf      !   lateral diffusion scheme for passive tracer        (default: NO selection)
!-----------------------------------------------------------------------
!                            !  Type of the operator:
   ln_trcldf_NONE  =  .false.    !  No explicit diffusion
   ln_trcldf_tra   =  .false.    !  use active tracer setting
   !                         !  Coefficient (defined with namtra_ldf coefficient)
   rn_ldf_multi    = 1.          !  multiplier of aht for TRC mixing coefficient
   rn_fact_lap     = 1.          !  Equatorial enhanced zonal eddy diffusivity (lap only)
/
  • DOC update the Chapter LDF (chap_LDF.tex)
  • miscellaneous issues

1- dynhpg.F90 : add np_ERROR, _zco, _sps ,... parameter and use them in SELECT CASE( nhpg)
2- nemogcm.F90 : change the size of cltxt arrays from 30 to 60 to correct a out-of-bound issue in TEST_CASES/CANAL configuration
3- some minor changes in comments in diatmb.F90, dom_oce.F90, domain.F90, step.F90

Commit History (2)

ChangesetAuthorTimeChangeLog
9516gm2018-04-27T16:46:20+02:00

#2075 - dev_merge_2017: CONFIG:correct the namelist_top_cfg + activate ln_traldf_msc in ORCA2 and NORDIC

9490gm2018-04-23T10:44:07+02:00

#2075 - dev_merge_2017: scale-aware setting of lateral viscous and diffusive coefficient

Change History (7)

comment:1 Changed 6 years ago by acc

Do we really need both:

   ln_trcldf_NONE  =  .false.    !  No explicit diffusion
   ln_trcldf_tra   =  .false.    !  use active tracer setting

if the only choice is to use the active tracer setting or not? Just:

   ln_trcldf_tra   =  .false.    !  use active tracer setting (T) or no explicit diffusion (F)

would do the job

Last edited 6 years ago by nemo (previous) (diff)

comment:2 Changed 6 years ago by nemo

  • Description modified (diff)

comment:3 Changed 6 years ago by gm

In 9490:

Error: Failed to load processor CommitTicketReference
No macro or processor named 'CommitTicketReference' found

comment:4 Changed 6 years ago by gm

In 9516:

Error: Failed to load processor CommitTicketReference
No macro or processor named 'CommitTicketReference' found

comment:5 Changed 6 years ago by nemo

  • Status changed from new to assigned

comment:6 Changed 6 years ago by gm

  • Resolution set to fixed
  • Status changed from assigned to closed

comment:7 Changed 2 years ago by nemo

  • Keywords OPA v4.0 added
Note: See TracTickets for help on using tickets.