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 13006 for NEMO/branches/2020 – NEMO

Changeset 13006 for NEMO/branches/2020


Ignore:
Timestamp:
2020-06-02T18:06:07+02:00 (4 years ago)
Author:
cetlod
Message:

branch clem_dan_fixcpl : add mixing length parameterization depending on sea-ice thickness, see ticket #2476

Location:
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/cfgs/SHARED/namelist_ref

    r12785 r13006  
    10561056   !                       !                 = 3 as =2 with distinct dissipative an mixing length scale 
    10571057   ln_mxl0     = .true.    !  surface mixing length scale = F(wind stress) (T) or not (F) 
     1058      nn_mxlice    = 0        ! type of scaling under sea-ice 
     1059                              !    = 0 no scaling under sea-ice 
     1060                              !    = 1 scaling with constant sea-ice thickness 
     1061                              !    = 2  scaling with mean sea-ice thickness ( only with SI3 sea-ice model ) 
     1062                              !    = 3  scaling with maximum sea-ice thickness 
     1063      rn_mxlice   = 10.       ! max constant ice thickness value when scaling under sea-ice ( nn_mxlice=1) 
    10581064   rn_mxl0     =   0.04    !  surface  buoyancy lenght scale minimum value 
    10591065   ln_drg      = .false.   !  top/bottom friction added as boundary condition of TKE 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/ZDF/zdftke.F90

    r12703 r13006  
    4646   USE zdfmxl         ! vertical physics: mixed layer 
    4747   ! 
     48#if defined key_si3 
     49   USE ice, ONLY: hm_i, h_i 
     50#endif 
     51#if defined key_cice 
     52   USE sbc_ice, ONLY: h_i 
     53#endif 
    4854   USE in_out_manager ! I/O manager 
    4955   USE iom            ! I/O manager library 
     
    6268   !                      !!** Namelist  namzdf_tke  ** 
    6369   LOGICAL  ::   ln_mxl0   ! mixing length scale surface value as function of wind stress or not 
     70   INTEGER  ::   nn_mxlice ! type of scaling under sea-ice (=0/1/2/3) 
     71   REAL(wp) ::   rn_mxlice ! ice thickness value when scaling under sea-ice 
    6472   INTEGER  ::   nn_mxl    ! type of mixing length (=0/1/2/3) 
    6573   REAL(wp) ::   rn_mxl0   ! surface  min value of mixing length (kappa*z_o=0.4*0.1 m)  [m] 
     
    478486      REAL(wp) ::   zrn2, zraug, zcoef, zav   ! local scalars 
    479487      REAL(wp) ::   zdku,   zdkv, zsqen       !   -      - 
    480       REAL(wp) ::   zemxl, zemlm, zemlp       !   -      - 
     488      REAL(wp) ::   zemxl, zemlm, zemlp, zmaxice       !   -      - 
    481489      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmxlm, zmxld   ! 3D workspace 
    482490      !!-------------------------------------------------------------------- 
     
    492500      zmxld(:,:,:)  = rmxl_min 
    493501      ! 
    494       IF( ln_mxl0 ) THEN            ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rau0*g) 
     502     IF( ln_mxl0 ) THEN            ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rau0*g) 
     503         ! 
    495504         zraug = vkarmn * 2.e5_wp / ( rau0 * grav ) 
     505#if ! defined key_si3 && ! defined key_cice 
    496506         DO jj = 2, jpjm1 
    497507            DO ji = fs_2, fs_jpim1 
    498                zmxlm(ji,jj,1) = MAX( rn_mxl0, zraug * taum(ji,jj) * tmask(ji,jj,1) ) 
    499             END DO 
    500          END DO 
    501       ELSE  
     508               zmxlm(ji,jj,1) =  zraug * taum(ji,jj) * tmask(ji,jj,1) 
     509            END DO 
     510         END DO 
     511#else 
     512         SELECT CASE( nn_mxlice )             ! Type of scaling under sea-ice 
     513         ! 
     514         CASE( 0 )                      ! No scaling under sea-ice 
     515            DO jj = 2, jpjm1 
     516               DO ji = fs_2, fs_jpim1 
     517                  zmxlm(ji,jj,1) = zraug * taum(ji,jj) * tmask(ji,jj,1) 
     518               END DO 
     519            END DO 
     520            ! 
     521         CASE( 1 )                           ! scaling with constant sea-ice thickness 
     522            DO jj = 2, jpjm1 
     523               DO ji = fs_2, fs_jpim1 
     524                  zmxlm(ji,jj,1) =  ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * rn_mxlice ) * tmask(ji,jj,1) 
     525               END DO 
     526            END DO 
     527            ! 
     528         CASE( 2 )                                 ! scaling with mean sea-ice thickness 
     529            DO jj = 2, jpjm1 
     530               DO ji = fs_2, fs_jpim1 
     531#if defined key_si3 
     532                  zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * hm_i(ji,jj) * 2. ) * tmask(ji,jj,1) 
     533#elif defined key_cice 
     534                  zmaxice = MAXVAL( h_i(ji,jj,:) ) 
     535                  zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * zmaxice ) * tmask(ji,jj,1) 
     536#endif 
     537               END DO 
     538            END DO 
     539            ! 
     540         CASE( 3 )                                 ! scaling with max sea-ice thickness 
     541            DO jj = 2, jpjm1 
     542               DO ji = fs_2, fs_jpim1 
     543                  zmaxice = MAXVAL( h_i(ji,jj,:) ) 
     544                  zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * zmaxice ) * tmask(ji,jj,1) 
     545               END DO 
     546            END DO 
     547            ! 
     548         END SELECT 
     549#endif 
     550         ! 
     551         DO jj = 2, jpjm1 
     552            DO ji = fs_2, fs_jpim1 
     553               zmxlm(ji,jj,1) = MAX( rn_mxl0, zmxlm(ji,jj,1) ) 
     554            END DO 
     555         END DO 
     556         ! 
     557      ELSE 
    502558         zmxlm(:,:,1) = rn_mxl0 
    503559      ENDIF 
     
    644700      INTEGER ::   ios 
    645701      !! 
    646       NAMELIST/namzdf_tke/ rn_ediff, rn_ediss , rn_ebb , rn_emin  ,          & 
    647          &                 rn_emin0, rn_bshear, nn_mxl , ln_mxl0  ,          & 
    648          &                 rn_mxl0 , nn_pdl   , ln_drg , ln_lc    , rn_lc,   & 
    649          &                 nn_etau , nn_htau  , rn_efr , rn_eice   
     702      NAMELIST/namzdf_tke/ rn_ediff, rn_ediss , rn_ebb   , rn_emin  ,  & 
     703         &                 rn_emin0, rn_bshear, nn_mxl   , ln_mxl0  ,  & 
     704         &                 rn_mxl0 , nn_mxlice, rn_mxlice,             & 
     705         &                 nn_pdl  , ln_drg   , ln_lc    , rn_lc,      & 
     706         &                 nn_etau , nn_htau  , rn_efr   , rn_eice   
    650707      !!---------------------------------------------------------------------- 
    651708      ! 
     
    676733         WRITE(numout,*) '         surface mixing length = F(stress) or not    ln_mxl0   = ', ln_mxl0 
    677734         WRITE(numout,*) '         surface  mixing length minimum value        rn_mxl0   = ', rn_mxl0 
     735         IF( ln_mxl0 ) THEN 
     736            WRITE(numout,*) '      type of scaling under sea-ice               nn_mxlice = ', nn_mxlice 
     737            IF( nn_mxlice == 1 ) & 
     738            WRITE(numout,*) '      ice thickness when scaling under sea-ice    rn_mxlice = ', rn_mxlice 
     739         ENDIF 
    678740         WRITE(numout,*) '      top/bottom friction forcing flag            ln_drg    = ', ln_drg 
    679741         WRITE(numout,*) '      Langmuir cells parametrization              ln_lc     = ', ln_lc 
Note: See TracChangeset for help on using the changeset viewer.