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 2132 – NEMO

Changeset 2132


Ignore:
Timestamp:
2010-09-29T17:31:36+02:00 (14 years ago)
Author:
cbricaud
Message:

add change from DEV_r1784_GLS

Location:
branches/devmercator2010_1
Files:
10 edited
3 copied

Legend:

Unmodified
Added
Removed
  • branches/devmercator2010_1/CONFIG/ORCA2_LIM/EXP00/namelist

    r2130 r2132  
    607607   nn_ave      =  1        !  constant (=0) or profile (=1) background on avt 
    608608/ 
     609----------------------------------------------------------------------- 
     610&namzdf_gls                !   GLS vertical diffusion  ("key_zdfgls") 
     611!----------------------------------------------------------------------- 
     612   rn_emin     =   1.e-6   !  minimum value of e   [m2/s2] 
     613   rn_epsmin   =   1.e-12  !  minimum value of eps [m2/s3] 
     614   ln_length_lim = .true.  !  limit on the dissipation rate under stable stratification (Galperin et al., 1988) 
     615   clim_galp   =   0.53    !  galperin limit 
     616   ln_crban = .TRUE.       !  Use Craig & Banner (1994) surface wave mixing parametrisation 
     617   ln_sigpsi = .TRUE.      !  Activate or not Burchard 2001 mods on psi schmidt number in the wb case 
     618   rn_crban = 100.         !  Craig and Banner 1994 constant for wb tke flux 
     619   rn_charn =  70000.      !  Charnock constant for wb induced roughness length 
     620   nn_tkebc_surf  =   1    !  surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) 
     621   nn_tkebc_bot   =   1    !  bottom tke condition (0/1=Dir/Neum) 
     622   nn_psibc_surf  =   1    !  surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) 
     623   nn_psibc_bot   =   1    !  bottom psi condition (0/1=Dir/Neum) 
     624   nn_stab_func   =   2    !  stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) 
     625   nn_clos        =   1    !  predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) 
     626/ 
    609627!----------------------------------------------------------------------- 
    610628&namzdf_ddm    !   double diffusive mixing parameterization             ("key_zdfddm") 
  • branches/devmercator2010_1/DOC/TexFiles/Biblio/Biblio.bib

    r1225 r2132  
    8585 
    8686@STRING{Tellus = {Tellus}} 
     87 
     88@STRING{RGSP = {Rev. Geophys. Space Phys.} 
    8789 
    8890@ARTICLE{Adcroft_Campin_OM04, 
     
    523525} 
    524526 
     527@ARTICLE{Canuto_2001, 
     528  author = {V. M. Canuto and A. Howard and Y. Cheng and M. S. Dubovikov}, 
     529  title = {Ocean turbulence. PartI: One-point closure model-momentum and heat vertical diffusivities}, 
     530  journal = JPO, 
     531  year = {2001}, 
     532  volume = {24, 12}, 
     533  pages = {2546-2559}, 
     534  owner = {gr}, 
     535  timestamp = {2010.09.09} 
     536} 
     537 
    525538@ARTICLE{Cox1987, 
    526539  author = {M. Cox}, 
     
    532545  owner = {gm}, 
    533546  timestamp = {2007.08.03} 
     547} 
     548 
     549@ARTICLE{Craig_Banner_1994, 
     550  author = {P. D. Banner and M. L. Banner}, 
     551  title = {Modeling wave-enhanced turbulence in the ocean surface layer}, 
     552  journal = JPO, 
     553  year = {1994}, 
     554  volume = {24, 12}, 
     555  pages = {2546-2559}, 
     556  owner = {g5}, 
     557  timestamp = {2010.09.09} 
    534558} 
    535559 
     
    705729  owner = {gm}, 
    706730  timestamp = {2007.08.04} 
     731} 
     732 
     733@ARTICLE{Galperin_1988, 
     734  author = {B. Galperin and L. H. Kantha and S. Hassid and A. Rosati}, 
     735  title = {A quasi-equilibrium turbulent energy model for geophysical flows}, 
     736  journal = JAS, 
     737  year = {1988}, 
     738  volume = {45}, 
     739  pages = {55-62}, 
     740  owner = {gr}, 
     741  timestamp = {2010.09.09} 
    707742} 
    708743 
     
    10831118  owner = {gm}, 
    10841119  timestamp = {2008.08.31} 
     1120} 
     1121 
     1122@ARTICLE{Kantha_Clayson_1994, 
     1123  author = {L. H. Kantha and C. A. Clayson}, 
     1124  title = {An improved mixed layer model for geophysical applications}, 
     1125  journal = JGR, 
     1126  year = {1994}, 
     1127  volume = {99}, 
     1128  pages = {25235-25266}, 
     1129  owner = {gr}, 
     1130  timestamp = {2010.09.09} 
    10851131} 
    10861132 
     
    15841630} 
    15851631 
     1632@ARTICLE{Mellor_Yamada_1982, 
     1633  author = {G. L. Mellor and T. Yamada}, 
     1634  title = {Development of a turbulence closure model for geophysical fluid problems}, 
     1635  journal = RGSP, 
     1636  year = {1982}, 
     1637  volume = {20}, 
     1638  pages = {851-875}, 
     1639  owner = {gr}, 
     1640  timestamp = {2010.09.09} 
     1641} 
     1642 
    15861643@ARTICLE{Merryfield1999, 
    15871644  author = {W. J. Merryfield and G. Holloway and A. E. Gargett}, 
     
    17911848  owner = {gm}, 
    17921849  timestamp = {2007.08.04} 
     1850} 
     1851 
     1852@ARTICLE{Rodi_1987, 
     1853  author = {W. Rodi}, 
     1854  title = {Examples of calculation methods for flow and mixing in stratified fluids}, 
     1855  journal = JGR, 
     1856  year = {1987}, 
     1857  volume = {92, C5}, 
     1858  pages = {5305-5328}, 
     1859  owner = {gr}, 
     1860  timestamp = {2010.09.09} 
    17931861} 
    17941862 
     
    22142282} 
    22152283 
     2284@ARTICLE{Umlauf_Burchard_2003, 
     2285  author = {L. Umlauf and H. Burchard}, 
     2286  title = {A generic length-scale equation for geophysical turbulence models}, 
     2287  journal = {Journal of Marine Systems},  
     2288  year = {2003}, 
     2289  volume = {61}, 
     2290  pages = {235-265}, 
     2291  number = {2}, 
     2292  owner = {gr}, 
     2293  timestamp = {2010.09.09} 
     2294} 
     2295 
    22162296@BOOK{UNESCO1983, 
    22172297  title = {Algorithms for computation of fundamental property of sea water}, 
     
    23082388  owner = {gm}, 
    23092389  timestamp = {2007.08.04} 
     2390} 
     2391 
     2392@ARTICLE{Wilcox_1988, 
     2393  author = {D. C. Wilcox}, 
     2394  title = {Reassessment of the scale-determining equation for advanced turbulence models}, 
     2395  journal = {AIAA journal}, 
     2396  year = {1988}, 
     2397  volume = {26, 11}, 
     2398  pages = {1299-1310}, 
     2399  owner = {gr}, 
     2400  timestamp = {2010.09.09} 
    23102401} 
    23112402 
  • branches/devmercator2010_1/DOC/TexFiles/Chapters/Chap_ZDF.tex

    r1225 r2132  
    233233 
    234234% ------------------------------------------------------------------------------------------------------------- 
     235%        GLS Generic Length Scale Scheme  
     236% ------------------------------------------------------------------------------------------------------------- 
     237\subsection{GLS Generic Length Scale (\key{zdfgls})} 
     238\label{ZDF_gls} 
     239 
     240%--------------------------------------------namgls--------------------------------------------------------- 
     241\namdisplay{namgls} 
     242%-------------------------------------------------------------------------------------------------------------- 
     243 
     244The model allows to resolve two prognostic equations for turbulent  
     245kinetic energy $\bar {e}$ and a generic length scale \citep{Umlauf_Burchard_2003}. Thanks to the latter, commonly  
     246used closures can be retrieved: $k-kl$ \citep{Mellor_Yamada_1982}, $k-{\epsilon }$ \citep{Rodi_1987} and $k-{\omega }$  
     247\citep{Wilcox_1988}. These equations could be written in a generic form with the incorporation  
     248of a new variable : ${\psi} = (C^{0}_{\mu})^{p} \ {\bar{e}}^{m} \ l^{n}$. 
     249 
     250\begin{equation} \label{Eq_zdfgls_e} 
     251\frac{\partial \bar{e}}{\partial t} =  
     252\frac{A^{vm}}{{\sigma_e} {e_3} }\;\left[ {\left( {\frac{\partial u}{\partial k}} \right)^2 
     253                                                        +\left( {\frac{\partial v}{\partial k}} \right)^2} \right] 
     254-A^{vT}\,N^2 
     255+\frac{1}{e_3}  \;\frac{\partial }{\partial k}\left[ {\frac{A^{vm}}{e_3 } 
     256                                \;\frac{\partial \bar{e}}{\partial k}} \right] 
     257- \epsilon \; 
     258\end{equation} 
     259 
     260\begin{equation} \label{Eq_zdfgls_psi} 
     261\frac{\partial \psi}{\partial t} = \frac{\psi}{\bar{e}}  
     262(\frac{{C_1}A^{vm}}{{\sigma_{\psi}} {e_3} }\;\left[ {\left( {\frac{\partial u}{\partial k}} \right)^2 
     263                                                        +\left( {\frac{\partial v}{\partial k}} \right)^2} \right] 
     264-{C_3}A^{vT}\,N^2- C_2{\epsilon}Fw)  
     265+\frac{1}{e_3}  \;\frac{\partial }{\partial k}\left[ {\frac{A^{vm}}{e_3 } 
     266                                \;\frac{\partial \psi}{\partial k}} \right]\; 
     267\end{equation} 
     268 
     269\begin{equation} \label{Eq_zdfgls_kz} 
     270   \begin{split} 
     271         A^{vm} &= C_{\mu} \ \sqrt {\bar{e}} \ l         \\ 
     272         A^{vT} &= C_{\mu'}\ \sqrt {\bar{e}} \ l 
     273   \end{split} 
     274\end{equation} 
     275 
     276\begin{equation} \label{Eq_zdfgls_eps} 
     277{\epsilon} = (C^{0}_{\mu}) \frac{\bar {e}^{3/2}}{l} \; 
     278\end{equation} 
     279where $N$ is the local Brunt-Vais\"{a}l\"{a} frequency (see \S\ref{TRA_bn2}) and $\epsilon$ the dissipation rate. 
     280In function of the parameters k, m and n, common turbulent closure could be retrieved. 
     281The constants C1, C2, C3, ${\sigma_e}$, ${\sigma_{\psi}}$ and the wall function (Fw) depends of the choice of the turbulence model. 
     282%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     283\begin{figure}[!h] 
     284\centering 
     285\includegraphics[scale=0.7]{./TexFiles/Figures/tabgls.png} 
     286\caption {Values of the parameters in function of the model of turbulence.} 
     287\label{tabgls} 
     288\end{figure} 
     289%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     290 
     291About the Mellor-Yamada model, the negativity of n allows to use a wall function to force 
     292the convergence of the mixing length towards Kzb (K: Kappa and zb: rugosity length) value 
     293near physical boundaries (logarithmic boundary layer law). $C_{\mu}$ and $C_{\mu'}$ are calculated from stability functions  
     294of \citet{Galperin_1988}, \citet{Kantha_Clayson_1994} or \citet{Canuto_2001}. 
     295$C^{0}_{\mu}$ depends of the choice of the stability function. 
     296 
     297The boundary condition at the surface and the bottom could be calculated thanks to Diriclet or Neumann condition. 
     298The wave effect on the mixing could be also being considered \citep{Craig_Banner_1994}. 
     299 
     300------------------------------------------------------------------------------------------------------------- 
    235301%        K Profile Parametrisation (KPP)  
    236302% ------------------------------------------------------------------------------------------------------------- 
  • branches/devmercator2010_1/NEMO/OPA_SRC/DYN/dynzdf.F90

    r1533 r2132  
    107107      USE zdftke_old 
    108108      USE zdftke 
     109      USE zdfgls 
    109110      USE zdfkpp 
    110111      !!---------------------------------------------------------------------- 
     
    116117 
    117118      ! Force implicit schemes 
    118       IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfkpp )   nzdf = 1   ! TKE or KPP physics 
    119       IF( ln_dynldf_iso                               )   nzdf = 1   ! iso-neutral lateral physics 
    120       IF( ln_dynldf_hor .AND. ln_sco                  )   nzdf = 1   ! horizontal lateral physics in s-coordinate 
     119      IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfgls .OR. lk_zdfkpp )   nzdf = 1   ! TKE, GLS or KPP physics 
     120      IF( ln_dynldf_iso                                              )   nzdf = 1   ! iso-neutral lateral physics 
     121      IF( ln_dynldf_hor .AND. ln_sco                                 )   nzdf = 1   ! horizontal lateral physics in s-coordinate 
    121122 
    122123      IF( lk_esopa )    nzdf = -1                   ! Esopa key: All schemes used 
  • branches/devmercator2010_1/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r1662 r2132  
    2424   USE phycst          ! physical constants 
    2525   USE in_out_manager  ! I/O manager 
     26#if defined key_zdfgls 
     27   USE zdfbfr, ONLY : bfrua, bfrva, wbotu, wbotv ! bottom stresses 
     28   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     29#endif 
    2630 
    2731   IMPLICIT NONE 
     
    7579      REAL(wp) ::   zzwi                               ! temporary scalars 
    7680      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwi        ! temporary workspace arrays 
     81#if defined key_zdfgls 
     82      INTEGER :: ikbu, ikbv, ikbum1, ikbvm1 
     83      REAL(wp) :: zcbcu, zcbcv 
     84#endif 
    7785      !!---------------------------------------------------------------------- 
    7886 
     
    173181         END DO 
    174182      END DO 
     183 
     184#if defined key_zdfgls 
     185      ! Save bottom stress for next time step 
     186      DO jj = 2, jpjm1 
     187         DO ji = fs_2, fs_jpim1   ! vector opt. 
     188            ikbu   = MIN( mbathy(ji+1,jj  ), mbathy(ji,jj) ) 
     189            ikbum1 = MAX( ikbu-1, 1 ) 
     190            wbotu(ji,jj) = bfrua(ji,jj) * ua(ji,jj,ikbum1) * umask(ji,jj,ikbum1) 
     191         END DO 
     192      END DO 
     193      CALL lbc_lnk( wbotu(:,:), 'U', -1. ) 
     194#endif 
    175195 
    176196      ! Normalization to obtain the general momentum trend ua 
     
    272292      END DO 
    273293 
     294#if defined key_zdfgls 
     295      ! Save bottom stress for next time step 
     296      DO jj = 2, jpjm1 
     297         DO ji = fs_2, fs_jpim1   ! vector opt. 
     298            ikbv   = MIN( mbathy(ji,jj+1), mbathy(ji,jj) ) 
     299            ikbvm1 = MAX( ikbv-1, 1 ) 
     300            wbotv(ji,jj) = bfrva(ji,jj) * va(ji,jj,ikbvm1) * vmask(ji,jj,ikbvm1) 
     301         END DO 
     302      END DO 
     303      CALL lbc_lnk( wbotv(:,:), 'V', -1. ) 
     304#endif 
     305 
    274306      ! Normalization to obtain the general momentum trend va 
    275307      DO jk = 1, jpkm1 
  • branches/devmercator2010_1/NEMO/OPA_SRC/IOM/restart.F90

    r1613 r2132  
    2626   USE zdfmxl          ! mixed layer depth 
    2727   USE trdmld_oce      ! ocean active mixed layer tracers trends variables 
     28#if defined key_zdfgls 
     29   USE zdfbfr, ONLY : wbotu, wbotv ! bottom stresses 
     30   USE zdf_oce 
     31#endif 
    2832 
    2933   IMPLICIT NONE 
     
    136140#endif 
    137141 
     142#if defined key_zdfgls 
     143      ! Save bottom stresses 
     144      CALL iom_rstput( kt, nitrst, numrow, 'wbotu' , wbotu ) 
     145      CALL iom_rstput( kt, nitrst, numrow, 'wbotv' , wbotv ) 
     146#endif 
     147 
    138148      IF( kt == nitrst ) THEN 
    139149         CALL iom_close( numrow )     ! close the restart file (only at last time step) 
  • branches/devmercator2010_1/NEMO/OPA_SRC/TRA/trazdf.F90

    r1533 r2132  
    125125      USE zdftke_old 
    126126      USE zdftke 
     127      USE zdfgls 
    127128      USE zdfkpp 
    128129      !!---------------------------------------------------------------------- 
     
    139140 
    140141      ! Force implicit schemes 
    141       IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfkpp )   nzdf = 1      ! TKE or KPP physics 
    142       IF( ln_traldf_iso                               )   nzdf = 1      ! iso-neutral lateral physics 
    143       IF( ln_traldf_hor .AND. ln_sco                  )   nzdf = 1      ! horizontal lateral physics in s-coordinate 
     142      IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfgls .OR. lk_zdfkpp )   nzdf = 1      ! TKE, GLS or KPP physics 
     143      IF( ln_traldf_iso                                              )   nzdf = 1      ! iso-neutral lateral physics 
     144      IF( ln_traldf_hor .AND. ln_sco                                 )   nzdf = 1      ! horizontal lateral physics in s-coordinate 
    144145 
    145146      IF( ln_zdfexp .AND. nzdf == 1 )   THEN 
  • branches/devmercator2010_1/NEMO/OPA_SRC/ZDF/zdfbfr.F90

    r1708 r2132  
    2929    
    3030   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   bfrua , bfrva   !: Bottom friction coefficients set in zdfbfr 
     31#if defined key_zdfgls 
     32   REAL(wp), PUBLIC                     ::   rn_hbro =  0.003_wp  ! Bottom roughness (m) 
     33   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   wbotu, wbotv    !  Bottom stresses 
     34#endif 
    3135 
    3236   !                                    !!* Namelist nambfr: bottom friction namelist * 
  • branches/devmercator2010_1/NEMO/OPA_SRC/ZDF/zdfini.F90

    r1601 r2132  
    2020   USE zdftke_old      ! TKE vertical mixing  (old scheme) 
    2121   USE zdftke          ! TKE vertical mixing 
     22   USE zdfgls          ! GLS vertical mixing 
    2223   USE zdfkpp          ! KPP vertical mixing           
    2324   USE zdfddm          ! double diffusion mixing       
     
    106107         ioptio = ioptio+1 
    107108      ENDIF 
     109      IF( lk_zdfgls ) THEN 
     110         IF(lwp) WRITE(numout,*) '      GLS dependent eddy coefficients' 
     111         ioptio = ioptio+1 
     112      ENDIF 
    108113      IF( lk_zdfkpp ) THEN 
    109114         IF(lwp) WRITE(numout,*) '      KPP dependent eddy coefficients' 
     
    128133         IF(lwp) WRITE(numout,*) '      use the 1.5 turbulent closure' 
    129134      ENDIF 
     135      IF( lk_zdfgls ) THEN 
     136         IF(lwp) WRITE(numout,*) '      use the GLS closure scheme' 
     137      ENDIF 
    130138      IF( lk_zdfkpp ) THEN 
    131139         IF(lwp) WRITE(numout,*) '      use the KPP closure scheme' 
     
    136144      ENDIF 
    137145      IF ( ioptio > 1 .AND. .NOT. lk_esopa )   CALL ctl_stop( ' chose between ln_zdfnpc and ln_zdfevd' ) 
    138       IF( ioptio == 0 .AND. .NOT.( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfkpp ) ) & 
    139          CALL ctl_stop( ' except for TKE sor KPP physics, a convection scheme is', & 
     146      IF( ioptio == 0 .AND. .NOT.( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfgls .OR. lk_zdfkpp ) ) & 
     147         CALL ctl_stop( ' except for TKE, GLS or KPP physics, a convection scheme is', & 
    140148         &              ' required: ln_zdfevd or ln_zdfnpc logicals' ) 
    141149 
  • branches/devmercator2010_1/NEMO/OPA_SRC/step.F90

    r1756 r2132  
    9090   USE zdftke_old      ! old TKE vertical mixing      (zdf_tke_old routine) 
    9191   USE zdftke          ! TKE vertical mixing              (zdf_tke routine) 
     92   USE zdfgls          ! GLS vertical mixing              (zdf_gls routine)   
    9293   USE zdfkpp          ! KPP vertical mixing              (zdf_kpp routine) 
    9394   USE zdfddm          ! double diffusion mixing          (zdf_ddm routine) 
     
    204205      IF( lk_zdftke_old )   CALL zdf_tke_old( kstp )  ! TKE closure scheme for Kz (old scheme) 
    205206      IF( lk_zdftke     )   CALL zdf_tke    ( kstp )  ! TKE closure scheme for Kz 
     207      IF( lk_zdfgls     )   CALL zdf_gls    ( kstp )  ! GLS closure scheme for Kz 
    206208      IF( lk_zdfkpp     )   CALL zdf_kpp    ( kstp )  ! KPP closure scheme for Kz 
    207209      IF( lk_zdfcst     )   THEN                      ! Constant Kz (reset avt, avm[uv] to the background value) 
     
    223225                                                      ! write tke information in the restart file 
    224226      IF( lrst_oce .AND. lk_zdftke )   CALL tke_rst( kstp, 'WRITE' ) 
     227                                                      ! write gls information in the restart file 
     228      IF( lrst_oce .AND. lk_zdfgls )   CALL gls_rst( kstp, 'WRITE' ) 
    225229      ! 
    226230      !  LATERAL  PHYSICS  
Note: See TracChangeset for help on using the changeset viewer.