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 12377 for NEMO/trunk/src/OCE/ZDF/zdfphy.F90 – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/OCE/ZDF/zdfphy.F90

    r11536 r12377  
    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.