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.
Changeset 2928 for branches/2011/dev_r2802_NOCL_Smagorinsky – NEMO

Ignore:
Timestamp:
2011-10-16T09:46:42+02:00 (13 years ago)
Author:
hliu
Message:

Submitted by Maria Luneva. Calculation of Smagronsky diffusivity and viscosity

ldftra_smag.F90 ldfdyn_smag.F90 step_oce.F90 step.F90 ldftra_oce.F90 ldftra.F90 ldfdyn_oce.F90 ldfdyn.F90 ldftra_c3d.h90 dynldf_bilap.F90 dynldf_bilapg.F90 traldf_bilap.F90 traldf_bilapg.F90


Modules added: ldftra_smag.F90 - calculates Smagorinsky diffusivity for laplacian and bilaplacian operators,

called by step.F90

ldfdyn_smag.F90 - calculates Smagorinsky viscosity for laplacian and bilaplacian operators
called by step.F90


(Griffies and Hallberg, 2000)

laplacian case:

aht=(rn_chsmag*delta/pi)2*D (1)
(or rn_cmsmag for viscousity)

where D2=Dt2 + Ds2, Dt is horisontal tension and Ds is the horizontal shearing strain

delta=1/(1/e12+1/e22)0,5

in bilaplacian case diffusivity(viscousity) bht=aht*delta2/8

Stability criteria is twice stronger then in (Griffies and Hallberg, 2000)in assumption of positiveness of the solution
Aht<delta2/(16 rdt)

rn_aht_0 - background diffusivity (either laplacian or bilaplacian)
rn_ahm_0_lap, rn_ahm_0_blp background viscosity in laplacian and bilaplacian case


Keys added : key_traldf_smag ( should be set with key_traldf_c3d)

key_dynldf_smag ( should be set with key_dynldf_c3d)


Modules changed:

step_oce.F90 : added:
USE ldftra_smag ! smagorinsky diffusivity . (ldf_tra_smag routine)
USE ldfdyn_smag ! smagorinsky viscosity (ldf_dyn_smag routine)


step.F90
added calculation of smagorinsky diffusivity/viscousity:

#if defined key_traldf_c3d && key_traldf_smag

CALL ldf_tra_smag( kstp ) ! Smagorinsky diffusivity

# endif
#if defined key_dynldf_c3d && key_dynldf_smag

CALL ldf_dyn_smag( kstp ) ! Smagorinsky viscosity

# endif


LDF:

ldftra_oce.F90

added : definition of new scalar constants

REAL(wp), PUBLIC
rn_chsmag = 1._wp !: constant in Smagorinsky diffusivity
INTEGER , PUBLIC
nkaht_smag =0 !: switch of diffusivity in bilaplacian Smagorinsky

nkaht_smag =1 in smagorinsky case andchanges the order of multiplication by diffusivity in bilaplacian case (and makes in unconservative!!!) as in usual case nkaht_smag =0 operator absolutely unstable (but conservative)

Bilaplacian Smagorinsky operator is not recommended

ldfdyn_oce.F90

added :definition of new constants

REAL(wp), PUBLIC
rn_cmsmag_1 = 3._wp !: constant in laplacian Smagorinsky viscosity
REAL(wp), PUBLIC
rn_cmsmag_2 = 3._wp !: constant in bilaplacian Smagorinsky viscosity
INTEGER , PUBLIC
nkahm_smag = 0

ldftra.F90

added : new scalar to namelist namtra_ldf:

NAMELIST/namtra_ldf/ ln_traldf_lap , ln_traldf_bilap, &

....
& rn_slpmax , rn_chsmag

check and warnings:

#if defined key_traldf_smag && ! defined key_traldf_c3d

CALL ctl_stop( 'key_traldf_smag can only be used with key_traldf_c3d' )

#endif

nkaht_smag=0

# if defined key_traldf_smag

nkaht_smag=1

IF(lwp.and.ln_traldf_bilap) WRITE(numout,*)' SMAGORINSKY + BILAPLACIAN - UNSTABLE OR NON_CONSERVATIVE'

# endif

ldfdyn.F90

added: to NAMELIST/namdyn_ldf/ new variable and assignment to nkahm_smag

NAMELIST/namdyn_ldf/ ln_dynldf_lap , ln_dynldf_bilap, &

...

& rn_cmsmag_1 ,rn_cmsmag_2

nkahm_smag = 0

#if defined key_dynldf_smag

nkahm_smag = 1

#endif

ldftra_c3d.h90:

corrected small bug for key_traldf_c3d and not key_traldf_eiv


TRA:

traldf_bilap.F90

  • traldf_bilapg.F90

All lines containing nkaht:

zlt(ji,jj) = ((1-nkaht_smag)*fsahtt(ji,jj,jk)+nkaht_smag) * zbtr * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) &

pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra*(nkaht_smag*fsahtt(ji,jj,jk)+1-nkaht_smag


etc.

DYN : modified lines contain nkahm in modules

dynldf_bilap.F90

  • dynldf_bilapg.F90

namelist: added to the corresponding namelists:

namtra_ldf:
rn_chsmag=1 (corresponding to for typical horcon values for POM)

namdyn_ldf: (as recommended by (Griffies and Hallberg, 2000) )

rn_cmsmag_1=3 (laplacian)
rn_cmsmag_2=3 (bilaplacian)



TESTS: GYRE 0.2 and 0.1 km resolution with very low backgrouns viscosity/diffusivity (5/1 m2/s for laplacian and -1-3e7m4/s for bilaplacian


File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2802_NOCL_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/step.F90

    r2926 r2928  
    157157#endif 
    158158 
     159#if defined key_traldf_c3d && key_traldf_smag 
     160        CALL ldf_tra_smag( kstp )      ! Smagorinsky diffusivity 
     161#  endif 
     162#if defined key_dynldf_c3d && key_dynldf_smag 
     163        CALL ldf_dyn_smag( kstp )      ! Smagorinsky viscosity 
     164#  endif 
     165 
    159166      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    160167      ! diagnostics and outputs             (ua, va, ta, sa used as workspace) 
Note: See TracChangeset for help on using the changeset viewer.