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 7953 for branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90 – NEMO

Ignore:
Timestamp:
2017-04-23T09:30:41+02:00 (7 years ago)
Author:
gm
Message:

#1880 (HPC-09): add zdfphy (the ZDF manager) + remove all key_...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r7813 r7953  
    2727   !!            3.3  !  2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase 
    2828   !!            3.6  !  2014-11  (P. Mathiot) add ice shelf capability 
     29   !!            4.0  !  2017-04  (G. Madec)  Remove CPP keys 
    2930   !!---------------------------------------------------------------------- 
    30 #if defined key_zdftke 
    31    !!---------------------------------------------------------------------- 
    32    !!   'key_zdftke'                                   TKE vertical physics 
     31 
    3332   !!---------------------------------------------------------------------- 
    3433   !!   zdf_tke       : update momentum and tracer Kz from a tke scheme 
     
    6564   PUBLIC   tke_rst        ! routine called in step module 
    6665 
    67    LOGICAL , PUBLIC, PARAMETER ::   lk_zdftke = .TRUE.  !: TKE vertical mixing flag 
    68  
    6966   !                      !!** Namelist  namzdf_tke  ** 
    7067   LOGICAL  ::   ln_mxl0   ! mixing length scale surface value as function of wind stress or not 
     
    376373            DO ji = fs_2, fs_jpim1   ! vector opt. 
    377374               zcof   = zfact1 * tmask(ji,jj,jk) 
    378 # if defined key_zdftmx_new 
    379                ! key_zdftmx_new: New internal wave-driven param: set a minimum value for Kz on TKE (ensure numerical stability) 
    380                zzd_up = zcof * MAX( avm(ji,jj,jk+1) + avm(ji,jj,jk), 2.e-5_wp )   &  ! upper diagonal 
    381                   &          / (  e3t_n(ji,jj,jk  ) * e3w_n(ji,jj,jk  )  ) 
    382                zzd_lw = zcof * MAX( avm(ji,jj,jk) + avm(ji,jj,jk-1), 2.e-5_wp )   &  ! lower diagonal 
    383                   &          / (  e3t_n(ji,jj,jk-1) * e3w_n(ji,jj,jk  )  ) 
    384 # else 
    385                zzd_up = zcof * ( avm  (ji,jj,jk+1) + avm  (ji,jj,jk  ) )   &  ! upper diagonal 
    386                   &          / ( e3t_n(ji,jj,jk  ) * e3w_n(ji,jj,jk  ) ) 
    387                zzd_lw = zcof * ( avm  (ji,jj,jk  ) + avm  (ji,jj,jk-1) )   &  ! lower diagonal 
    388                   &          / ( e3t_n(ji,jj,jk-1) * e3w_n(ji,jj,jk  ) ) 
    389 # endif 
     375               !                                   ! A minimum of 2.e-5 m2/s is imposed on TKE vertical 
     376               !                                   ! eddy coefficient (ensure numerical stability) 
     377               zzd_up = zcof * MAX(   avm(ji,jj,jk+1) +   avm(ji,jj,jk  ) , 2.e-5_wp  )   &  ! upper diagonal 
     378                  &          /    ( e3t_n(ji,jj,jk  ) * e3w_n(ji,jj,jk  )  ) 
     379               zzd_lw = zcof * MAX(   avm(ji,jj,jk  ) +   avm(ji,jj,jk-1) , 2.e-5_wp  )   &  ! lower diagonal 
     380                  &          /    ( e3t_n(ji,jj,jk-1) * e3w_n(ji,jj,jk  )  ) 
     381               ! 
    390382               !                                   ! shear prod. at w-point weightened by mask 
    391383               zesh2  =  ( z3du(ji-1,jj,jk) + z3du(ji,jj,jk) ) / MAX( 1._wp , umask(ji-1,jj,jk) + umask(ji,jj,jk) )   & 
     
    741733      ! 
    742734      ri_cri   = 2._wp    / ( 2._wp + rn_ediss / rn_ediff )   ! resulting critical Richardson number 
    743 # if defined key_zdftmx_new 
    744       ! key_zdftmx_new: New internal wave-driven param: specified value of rn_emin & rmxl_min are used 
    745       rn_emin  = 1.e-10_wp 
    746       rmxl_min = 1.e-03_wp 
    747       IF(lwp) THEN                  ! Control print 
    748          WRITE(numout,*) 
    749          WRITE(numout,*) 'zdf_tke_init :  New tidal mixing case: force rn_emin = 1.e-10 and rmxl_min = 1.e-3 ' 
    750          WRITE(numout,*) '~~~~~~~~~~~~' 
    751       ENDIF 
    752 # else 
    753       rmxl_min = 1.e-6_wp / ( rn_ediff * SQRT( rn_emin ) )    ! resulting minimum length to recover molecular viscosity 
    754 # endif 
    755735      ! 
    756736      IF(lwp) THEN                    !* Control print 
     
    776756         WRITE(numout,*) 
    777757         WRITE(numout,*) '      critical Richardson nb with your parameters  ri_cri = ', ri_cri 
     758         WRITE(numout,*) 
     759      ENDIF 
     760      ! 
     761      IF( ln_zdftmx ) THEN          ! Internal wave driven mixing 
     762         !                          ! specific values of rn_emin & rmxl_min are used 
     763         rn_emin  = 1.e-10_wp 
     764         rmxl_min = 1.e-03_wp 
     765         IF(lwp) WRITE(numout,*) '      Internal wave-driven mixing case:   force   rn_emin = 1.e-10 and rmxl_min = 1.e-3 ' 
     766      ELSE 
     767         rmxl_min = 1.e-6_wp / ( rn_ediff * SQRT( rn_emin ) )    ! resulting minimum length to recover molecular viscosity 
     768         IF(lwp) WRITE(numout,*) '      minimum mixing length with your parameters rmxl_min = ', rmxl_min 
    778769      ENDIF 
    779770      ! 
     
    891882   END SUBROUTINE tke_rst 
    892883 
    893 #else 
    894    !!---------------------------------------------------------------------- 
    895    !!   Dummy module :                                        NO TKE scheme 
    896    !!---------------------------------------------------------------------- 
    897    LOGICAL, PUBLIC, PARAMETER ::   lk_zdftke = .FALSE.   !: TKE flag 
    898 CONTAINS 
    899    SUBROUTINE zdf_tke_init           ! Dummy routine 
    900    END SUBROUTINE zdf_tke_init 
    901    SUBROUTINE zdf_tke( kt )          ! Dummy routine 
    902       WRITE(*,*) 'zdf_tke: You should not have seen this print! error?', kt 
    903    END SUBROUTINE zdf_tke 
    904    SUBROUTINE tke_rst( kt, cdrw ) 
    905      CHARACTER(len=*) ::   cdrw 
    906      WRITE(*,*) 'tke_rst: You should not have seen this print! error?', kt, cdwr 
    907    END SUBROUTINE tke_rst 
    908 #endif 
    909  
    910884   !!====================================================================== 
    911885END MODULE zdftke 
Note: See TracChangeset for help on using the changeset viewer.