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 12928 for NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/ZDF/zdfphy.F90 – NEMO

Ignore:
Timestamp:
2020-05-14T21:46:00+02:00 (4 years ago)
Author:
smueller
Message:

Synchronizing with /NEMO/trunk@12925 (ticket #2170)

Location:
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser

    • Property svn:externals
      •  

        old new  
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@HEAD         sette 
  • NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/ZDF/zdfphy.F90

    r12320 r12928  
    5656   !!---------------------------------------------------------------------- 
    5757   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
    58    !! $Id: zdfphy.F90 12178 2019-12-11 11:02:38Z agn $ 
     58   !! $Id$ 
    5959   !! Software governed by the CeCILL license (see ./LICENSE) 
    6060   !!---------------------------------------------------------------------- 
    6161CONTAINS 
    6262 
    63    SUBROUTINE zdf_phy_init 
     63   SUBROUTINE zdf_phy_init( Kmm ) 
    6464      !!---------------------------------------------------------------------- 
    6565      !!                  ***  ROUTINE zdf_phy_init  *** 
     
    7070      !!                set horizontal shape and vertical profile of background mixing coef. 
    7171      !!---------------------------------------------------------------------- 
     72      INTEGER, INTENT(in)    :: Kmm ! time level index (middle) 
     73      ! 
    7274      INTEGER ::   jk            ! dummy loop indices 
    7375      INTEGER ::   ioptio, ios   ! local integers 
     
    9193      ! 
    9294      !                           !==  Namelist  ==! 
    93       REWIND( numnam_ref )              ! Namelist namzdf in reference namelist : Vertical mixing parameters 
    9495      READ  ( numnam_ref, namzdf, IOSTAT = ios, ERR = 901) 
    9596901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namzdf in reference namelist' ) 
    9697      ! 
    97       REWIND( numnam_cfg )              ! Namelist namzdf in reference namelist : Vertical mixing parameters 
    9898      READ  ( numnam_cfg, namzdf, IOSTAT = ios, ERR = 902 ) 
    9999902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namzdf in configuration namelist' ) 
     
    191191      ioptio = 0  
    192192      IF( ln_zdfcst ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_CST   ;   ENDIF 
    193       IF( ln_zdfric ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_RIC   ;   CALL zdf_ric_init   ;   ENDIF 
    194       IF( ln_zdftke ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_TKE   ;   CALL zdf_tke_init   ;   ENDIF 
    195       IF( ln_zdfgls ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_GLS   ;   CALL zdf_gls_init   ;   ENDIF 
    196       IF( ln_zdfosm ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_OSM   ;   CALL zdf_osm_init   ;   ENDIF 
     193      IF( ln_zdfric ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_RIC   ;   CALL zdf_ric_init          ;   ENDIF 
     194      IF( ln_zdftke ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_TKE   ;   CALL zdf_tke_init( Kmm )   ;   ENDIF 
     195      IF( ln_zdfgls ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_GLS   ;   CALL zdf_gls_init          ;   ENDIF 
     196      IF( ln_zdfosm ) THEN   ;   ioptio = ioptio + 1   ;    nzdf_phy = np_OSM   ;   CALL zdf_osm_init( Kmm )   ;   ENDIF 
    197197      ! 
    198198      IF( ioptio /= 1 )    CALL ctl_stop( 'zdf_phy_init: one and only one vertical diffusion option has to be defined ' ) 
     
    219219 
    220220 
    221    SUBROUTINE zdf_phy( kt ) 
     221   SUBROUTINE zdf_phy( kt, Kbb, Kmm, Krhs ) 
    222222      !!---------------------------------------------------------------------- 
    223223      !!                     ***  ROUTINE zdf_phy  *** 
     
    231231      !!                bottom stress.....                               <<<<====verifier ! 
    232232      !!---------------------------------------------------------------------- 
    233       INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     233      INTEGER, INTENT(in) ::   kt         ! ocean time-step index 
     234      INTEGER, INTENT(in) ::   Kbb, Kmm, Krhs   ! ocean time level indices 
    234235      ! 
    235236      INTEGER ::   ji, jj, jk   ! dummy loop indice 
     
    242243         ! 
    243244         !                       !* bottom drag 
    244          CALL zdf_drg( kt, mbkt    , r_Cdmin_bot, r_Cdmax_bot,   &   ! <<== in  
     245         CALL zdf_drg( kt, Kmm, mbkt , r_Cdmin_bot, r_Cdmax_bot,   &   ! <<== in  
    245246            &              r_z0_bot,   r_ke0_bot,    rCd0_bot,   & 
    246247            &                                        rCdU_bot  )     ! ==>> out : bottom drag [m/s] 
    247248         IF( ln_isfcav ) THEN    !* top drag   (ocean cavities) 
    248             CALL zdf_drg( kt, mikt    , r_Cdmin_top, r_Cdmax_top,   &   ! <<== in  
     249            CALL zdf_drg( kt, Kmm, mikt , r_Cdmin_top, r_Cdmax_top,   &   ! <<== in  
    249250               &              r_z0_top,   r_ke0_top,    rCd0_top,   & 
    250251               &                                        rCdU_top  )     ! ==>> out : bottom drag [m/s] 
     
    255256      ! 
    256257      IF( l_zdfsh2 )   &         !* shear production at w-points (energy conserving form) 
    257          CALL zdf_sh2( ub, vb, un, vn, avm_k,   &     ! <<== in 
    258             &                           zsh2    )     ! ==>> out : shear production 
     258         CALL zdf_sh2( Kbb, Kmm, avm_k,   &     ! <<== in 
     259            &                     zsh2    )     ! ==>> out : shear production 
    259260      ! 
    260261      SELECT CASE ( nzdf_phy )                  !* Vertical eddy viscosity and diffusivity coefficients at w-points 
    261       CASE( np_RIC )   ;   CALL zdf_ric( kt, gdept_n, zsh2, avm_k, avt_k )    ! Richardson number dependent Kz 
    262       CASE( np_TKE )   ;   CALL zdf_tke( kt         , zsh2, avm_k, avt_k )    ! TKE closure scheme for Kz 
    263       CASE( np_GLS )   ;   CALL zdf_gls( kt         , zsh2, avm_k, avt_k )    ! GLS closure scheme for Kz 
    264       CASE( np_OSM )   ;   CALL zdf_osm( kt               , avm_k, avt_k )    ! OSMOSIS closure scheme for Kz 
     262      CASE( np_RIC )   ;   CALL zdf_ric( kt,      Kmm, zsh2, avm_k, avt_k )    ! Richardson number dependent Kz 
     263      CASE( np_TKE )   ;   CALL zdf_tke( kt, Kbb, Kmm, zsh2, avm_k, avt_k )    ! TKE closure scheme for Kz 
     264      CASE( np_GLS )   ;   CALL zdf_gls( kt, Kbb, Kmm, zsh2, avm_k, avt_k )    ! GLS closure scheme for Kz 
     265      CASE( np_OSM )   ;   CALL zdf_osm( kt, Kbb, Kmm, Krhs, avm_k, avt_k )    ! OSMOSIS closure scheme for Kz 
    265266!     CASE( np_CST )                                  ! Constant Kz (reset avt, avm to the background value) 
    266267!         ! avt_k and avm_k set one for all at initialisation phase 
     
    281282      ENDIF 
    282283      ! 
    283       IF( ln_zdfevd )   CALL zdf_evd( kt, avm, avt )  !* convection: enhanced vertical eddy diffusivity 
     284      IF( ln_zdfevd )   CALL zdf_evd( kt, Kmm, Krhs, avm, avt )  !* convection: enhanced vertical eddy diffusivity 
    284285      ! 
    285286      !                                         !* double diffusive mixing 
    286287      IF( ln_zdfddm ) THEN                            ! update avt and compute avs 
    287                         CALL zdf_ddm( kt, avm, avt, avs ) 
     288                        CALL zdf_ddm( kt, Kmm,  avm, avt, avs ) 
    288289      ELSE                                            ! same mixing on all tracers 
    289290         avs(2:jpim1,2:jpjm1,1:jpkm1) = avt(2:jpim1,2:jpjm1,1:jpkm1) 
     
    291292      ! 
    292293      !                                         !* wave-induced mixing  
    293       IF( ln_zdfswm )   CALL zdf_swm( kt, avm, avt, avs )   ! surface  wave (Qiao et al. 2004)  
    294       IF( ln_zdfiwm )   CALL zdf_iwm( kt, avm, avt, avs )   ! internal wave (de Lavergne et al 2017) 
     294      IF( ln_zdfswm )   CALL zdf_swm( kt, Kmm, avm, avt, avs )   ! surface  wave (Qiao et al. 2004)  
     295      IF( ln_zdfiwm )   CALL zdf_iwm( kt, Kmm, avm, avt, avs )   ! internal wave (de Lavergne et al 2017) 
    295296 
    296297#if defined key_agrif  
     
    313314      ENDIF 
    314315      ! 
    315       CALL zdf_mxl( kt )                        !* mixed layer depth, and level 
     316      CALL zdf_mxl( kt, Kmm )                        !* mixed layer depth, and level 
    316317      ! 
    317318      IF( lrst_oce ) THEN                       !* write TKE, GLS or RIC fields in the restart file 
     
    319320         IF( ln_zdfgls )   CALL gls_rst( kt, 'WRITE' ) 
    320321         IF( ln_zdfric )   CALL ric_rst( kt, 'WRITE' )  
    321          ! NB. OSMOSIS restart (osm_rst) will be called in step.F90 after wn has been updated 
     322         ! NB. OSMOSIS restart (osm_rst) will be called in step.F90 after ww has been updated 
    322323      ENDIF 
    323324      ! 
Note: See TracChangeset for help on using the changeset viewer.