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

Changeset 13249


Ignore:
Timestamp:
2020-07-04T10:22:08+02:00 (4 years ago)
Author:
clem
Message:

merge with Jerome's branch NEMO_4.03_IODRAG

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

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/cfgs/AGRIF_DEMO/EXPREF/namelist_cfg

    r12206 r13249  
    353353&namzdf_tke    !   turbulent eddy kinetic dependent vertical diffusion  (ln_zdftke =T) 
    354354!----------------------------------------------------------------------- 
    355       rn_eice     =   0       !  below sea ice: =0 ON ; =4 OFF when ice fraction > 1/4    
    356355/ 
    357356!!====================================================================== 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_cfg

    r12206 r13249  
    374374                               !        = 2 add a tke source just at the base of the ML 
    375375                               !        = 3 as = 1 applied on HF part of the stress           (ln_cpl=T) 
    376       rn_eice     =   0       !  below sea ice: =0 ON ; =4 OFF when ice fraction > 1/4    
    377376/ 
    378377!----------------------------------------------------------------------- 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/cfgs/SHARED/namelist_ref

    r13006 r13249  
    681681   ! 
    682682   ln_drgimp   = .true.    !  implicit top/bottom friction flag 
     683      ln_drgice_imp = .false. ! implicit ice-ocean drag 
    683684/ 
    684685!----------------------------------------------------------------------- 
     
    10591060                              !    = 0 no scaling under sea-ice 
    10601061                              !    = 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 
     1062                              !    = 2 scaling with mean sea-ice thickness ( only with SI3 sea-ice model ) 
     1063                              !    = 3 scaling with maximum sea-ice thickness 
    10631064      rn_mxlice   = 10.       ! max constant ice thickness value when scaling under sea-ice ( nn_mxlice=1) 
    10641065   rn_mxl0     =   0.04    !  surface  buoyancy lenght scale minimum value 
     
    10741075                              !        = 0  constant 10 m length scale 
    10751076                              !        = 1  0.5m at the equator to 30m poleward of 40 degrees 
    1076       rn_eice     =   4       !  below sea ice: =0 ON ; =4 OFF when ice fraction > 1/4    
     1077   nn_eice     =   1       !  attenutaion of langmuir & surface wave breaking under ice 
     1078   !                       !           = 0 no impact of ice cover on langmuir & surface wave breaking 
     1079   !                       !           = 1 weigthed by 1-TANH(10*fr_i) 
     1080   !                       !           = 2 weighted by 1-fr_i 
     1081   !                       !           = 3 weighted by 1-MIN(1,4*fr_i)    
    10771082/ 
    10781083!----------------------------------------------------------------------- 
     
    10871092   rn_charn      = 70000.  !  Charnock constant for wb induced roughness length 
    10881093   rn_hsro       =  0.02   !  Minimum surface roughness 
     1094   rn_hsri       =  0.03   !  Ice-ocean roughness 
    10891095   rn_frac_hs    =   1.3   !  Fraction of wave height as roughness (if nn_z0_met>1) 
    10901096   nn_z0_met     =     2   !  Method for surface roughness computation (0/1/2/3) 
    1091    !                             ! =3 requires ln_wave=T 
     1097   !                       !     = 3 requires ln_wave=T 
     1098   nn_z0_ice     =   1     !  attenutaion of surface wave breaking under ice 
     1099   !                       !           = 0 no impact of ice cover 
     1100   !                       !           = 1 roughness uses rn_hsri and is weigthed by 1-TANH(10*fr_i) 
     1101   !                       !           = 2 roughness uses rn_hsri and is weighted by 1-fr_i 
     1102   !                       !           = 3 roughness uses rn_hsri and is weighted by 1-MIN(1,4*fr_i) 
    10921103   nn_bc_surf    =     1   !  surface condition (0/1=Dir/Neum) 
    10931104   nn_bc_bot     =     1   !  bottom condition (0/1=Dir/Neum) 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/cfgs/SPITZ12/EXPREF/namelist_cfg

    r12206 r13249  
    217217   ln_loglayer = .true.   !  logarithmic drag: Cd = vkarmn/log(z/z0) |U| 
    218218   ln_drgimp   = .true.   !  implicit top/bottom friction flag 
     219      ln_drgice_imp = .true. ! implicit ice-ocean drag 
    219220/ 
    220221!----------------------------------------------------------------------- 
     
    340341   nn_havtb    =    1         !  horizontal shape for avtb (=1) or not (=0) 
    341342/ 
     343!----------------------------------------------------------------------- 
     344&namzdf_tke    !   turbulent eddy kinetic dependent vertical diffusion  (ln_zdftke =T) 
     345!----------------------------------------------------------------------- 
     346   ln_mxl0     = .true.    !  surface mixing length scale = F(wind stress) (T) or not (F) 
     347      nn_mxlice    = 2        ! type of scaling under sea-ice 
     348                              !    = 0 no scaling under sea-ice 
     349                              !    = 1 scaling with constant sea-ice thickness 
     350                              !    = 2 scaling with mean sea-ice thickness ( only with SI3 sea-ice model ) 
     351                              !    = 3 scaling with maximum sea-ice thickness 
     352   nn_eice     =   1       !  attenutaion of langmuir & surface wave breaking under ice 
     353   !                       !           = 0 no impact of ice cover on langmuir & surface wave breaking 
     354   !                       !           = 1 weigthed by 1-TANH(10*fr_i) 
     355   !                       !           = 2 weighted by 1-fr_i 
     356   !                       !           = 3 weighted by 1-MIN(1,4*fr_i) 
     357/ 
    342358!!====================================================================== 
    343359!!                  ***  Diagnostics namelists  ***                   !! 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/doc/namelists/namdrg

    r10075 r13249  
    88   ! 
    99   ln_drgimp   = .true.    !  implicit top/bottom friction flag 
     10      ln_drgice_imp = .false. ! implicit ice-ocean drag 
    1011/ 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/doc/namelists/namzdf_gls

    r9355 r13249  
    1313   nn_z0_met     =     2   !  Method for surface roughness computation (0/1/2/3) 
    1414   !                             ! =3 requires ln_wave=T 
     15   nn_z0_ice     =   1     !  attenutaion of surface wave breaking under ice 
     16   !                       !           = 0 no impact of ice cover 
     17   !                       !           = 1 roughness uses rn_hsri and is weigthed by 1-TANH(10*fr_i) 
     18   !                       !           = 2 roughness uses rn_hsri and is weighted by 1-fr_i 
     19   !                       !           = 3 roughness uses rn_hsri and is weighted by 1-MIN(1,4*fr_i) 
    1520   nn_bc_surf    =     1   !  surface condition (0/1=Dir/Neum) 
    1621   nn_bc_bot     =     1   !  bottom condition (0/1=Dir/Neum) 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/doc/namelists/namzdf_tke

    r10075 r13249  
    2626                              !        = 0  constant 10 m length scale 
    2727                              !        = 1  0.5m at the equator to 30m poleward of 40 degrees 
    28       rn_eice     =   4       !  below sea ice: =0 ON ; =4 OFF when ice fraction > 1/4    
     28   nn_eice     =   1       !  attenutaion of langmuir & surface wave breaking under ice 
     29   !                       !           = 0 no impact of ice cover on langmuir & surface wave breaking 
     30   !                       !           = 1 weigthed by 1-TANH(10*fr_i) 
     31   !                       !           = 2 weighted by 1-fr_i 
     32   !                       !           = 3 weighted by 1-MIN(1,4*fr_i) 
    2933/ 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/iceupdate.F90

    r12785 r13249  
    2626   USE icectl         ! sea-ice: control prints 
    2727   USE bdy_oce , ONLY : ln_bdy 
     28   USE zdfdrg  , ONLY : ln_drgice_imp 
    2829   ! 
    2930   USE in_out_manager ! I/O manager 
     
    321322      REAL(wp) ::   zat_u, zutau_ice, zu_t, zmodt   ! local scalar 
    322323      REAL(wp) ::   zat_v, zvtau_ice, zv_t, zrhoco  !   -      - 
     324      REAL(wp) ::   zflagi                          !   -      - 
    323325      !!--------------------------------------------------------------------- 
    324326      IF( ln_timing )   CALL timing_start('ice_update_tau') 
     
    353355      ! 
    354356      !                                      !==  every ocean time-step  ==! 
     357      IF ( ln_drgice_imp ) THEN 
     358         ! Save drag with right sign to update top drag in the ocean implicit friction  
     359         rCdU_ice(:,:) = -r1_rau0 * tmod_io(:,:) * at_i(:,:) * tmask(:,:,1)  
     360         zflagi = 0._wp 
     361      ELSE 
     362         zflagi = 1._wp 
     363      ENDIF 
    355364      ! 
    356365      DO jj = 2, jpjm1                                !* update the stress WITHOUT an ice-ocean rotation angle 
     
    362371               &     / MAX( 1.0_wp , tmask(ji,jj,1) + tmask(ji  ,jj+1,1) ) 
    363372            !                                                   ! linearized quadratic drag formulation 
    364             zutau_ice   = 0.5_wp * ( tmod_io(ji,jj) + tmod_io(ji+1,jj) ) * ( u_ice(ji,jj) - pu_oce(ji,jj) ) 
    365             zvtau_ice   = 0.5_wp * ( tmod_io(ji,jj) + tmod_io(ji,jj+1) ) * ( v_ice(ji,jj) - pv_oce(ji,jj) ) 
     373            zutau_ice   = 0.5_wp * ( tmod_io(ji,jj) + tmod_io(ji+1,jj) ) * ( u_ice(ji,jj) - zflagi * pu_oce(ji,jj) ) 
     374            zvtau_ice   = 0.5_wp * ( tmod_io(ji,jj) + tmod_io(ji,jj+1) ) * ( v_ice(ji,jj) - zflagi * pv_oce(ji,jj) ) 
    366375            !                                                   ! stresses at the ocean surface 
    367376            utau(ji,jj) = ( 1._wp - zat_u ) * utau_oce(ji,jj) + zat_u * zutau_ice 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/DYN/dynnxt.F90

    r12366 r13249  
    3434   USE dynspg_ts      ! surface pressure gradient: split-explicit scheme 
    3535   USE domvvl         ! variable volume 
    36    USE bdy_oce   , ONLY: ln_bdy 
     36   USE bdy_oce , ONLY : ln_bdy 
    3737   USE bdydta         ! ocean open boundary conditions 
    3838   USE bdydyn         ! ocean open boundary conditions 
     
    4848   USE prtctl         ! Print control 
    4949   USE timing         ! Timing 
     50   USE zdfdrg ,  ONLY : ln_drgice_imp, rCdU_top 
    5051#if defined key_agrif 
    5152   USE agrif_oce_interp 
     
    99100      REAL(wp) ::   zve3a, zve3n, zve3b, zvf, z1_2dt   !   -      - 
    100101      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zue, zve 
     102      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zutau, zvtau 
    101103      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ze3u_f, ze3v_f, zua, zva  
    102104      !!---------------------------------------------------------------------- 
     
    354356      ENDIF 
    355357      ! 
     358      IF ( iom_use("utau") ) THEN 
     359         IF ( ln_drgice_imp.OR.ln_isfcav ) THEN 
     360            ALLOCATE(zutau(jpi,jpj))  
     361            DO jj = 2, jpjm1 
     362               DO ji = 2, jpim1 
     363                  jk = miku(ji,jj)  
     364                  zutau(ji,jj) = utau(ji,jj) &  
     365                  &  + 0.5_wp * rau0 * (rCdU_top(ji+1,jj)+rCdU_top(ji,jj)) * ua(ji,jj,jk)  
     366               END DO 
     367            END DO 
     368            CALL lbc_lnk( 'dynnxt' , zutau, 'U', -1.) 
     369            CALL iom_put(  "utau", zutau(:,:) ) 
     370            DEALLOCATE(zutau) 
     371         ELSE 
     372            CALL iom_put(  "utau", utau(:,:) ) 
     373         ENDIF 
     374      ENDIF 
     375      ! 
     376      IF ( iom_use("vtau") ) THEN 
     377         IF ( ln_drgice_imp.OR.ln_isfcav ) THEN 
     378            ALLOCATE(zvtau(jpi,jpj)) 
     379            DO jj = 2, jpjm1 
     380               DO ji = 2, jpim1 
     381                  jk = mikv(ji,jj) 
     382                  zvtau(ji,jj) = vtau(ji,jj) & 
     383                  &  + 0.5_wp * rau0 * (rCdU_top(ji,jj+1)+rCdU_top(ji,jj)) * va(ji,jj,jk) 
     384               END DO 
     385            END DO 
     386            CALL lbc_lnk( 'dynnxt' , zvtau, 'V', -1.) 
     387            CALL iom_put(  "vtau", zvtau(:,:) ) 
     388            DEALLOCATE(zvtau) 
     389         ELSE 
     390            CALL iom_put(  "vtau", vtau(:,:) ) 
     391         ENDIF 
     392      ENDIF 
     393      ! 
    356394      IF(ln_ctl)   CALL prt_ctl( tab3d_1=un, clinfo1=' nxt  - Un: ', mask1=umask,   & 
    357395         &                       tab3d_2=vn, clinfo2=' Vn: '       , mask2=vmask ) 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/DYN/dynspg_ts.F90

    r12816 r13249  
    14651465      !                    !==  Set the barotropic drag coef.  ==! 
    14661466      ! 
    1467       IF( ln_isfcav ) THEN          ! top+bottom friction (ocean cavities) 
     1467      IF( ln_isfcav.OR.ln_drgice_imp ) THEN          ! top+bottom friction (ocean cavities) 
    14681468          
    14691469         DO jj = 2, jpjm1 
     
    15281528      !                    !==  TOP stress contribution from baroclinic velocities  ==!   (no W/D case) 
    15291529      ! 
    1530       IF( ln_isfcav ) THEN 
     1530      IF( ln_isfcav.OR.ln_drgice_imp ) THEN 
    15311531         ! 
    15321532         IF( ln_bt_fw ) THEN                ! FORWARD integration: use NOW top baroclinic velocity 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/DYN/dynzdf.F90

    r12292 r13249  
    141141            END DO 
    142142         END DO 
    143          IF( ln_isfcav ) THEN    ! Ocean cavities (ISF) 
     143         IF( ln_isfcav.OR.ln_drgice_imp ) THEN    ! Ocean cavities (ISF) 
    144144            DO jj = 2, jpjm1         
    145145               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    258258            END DO 
    259259         END DO 
    260          IF ( ln_isfcav ) THEN   ! top friction (always implicit) 
     260         IF ( ln_isfcav.OR.ln_drgice_imp ) THEN   ! top friction (always implicit) 
    261261            DO jj = 2, jpjm1 
    262262               DO ji = 2, jpim1 
     
    423423            END DO 
    424424         END DO 
    425          IF ( ln_isfcav ) THEN 
     425         IF ( ln_isfcav.OR.ln_drgice_imp ) THEN 
    426426            DO jj = 2, jpjm1 
    427427               DO ji = 2, jpim1 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/SBC/sbc_ice.F90

    r12811 r13249  
    7070   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   wndm_ice       !: wind speed module at T-point                 [m/s] 
    7171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   sstfrz         !: sea surface freezing temperature            [degC] 
     72   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   rCdU_ice       !: ice-ocean drag at T-point (<0)               [m/s] 
    7273#endif 
    7374 
     
    132133         &      qemp_ice(jpi,jpj)     , qevap_ice(jpi,jpj,jpl) , qemp_oce   (jpi,jpj)     ,   & 
    133134         &      qns_oce (jpi,jpj)     , qsr_oce  (jpi,jpj)     , emp_oce    (jpi,jpj)     ,   & 
    134          &      emp_ice (jpi,jpj)     , sstfrz   (jpi,jpj)     , STAT= ierr(2) ) 
     135         &      emp_ice (jpi,jpj)     , sstfrz   (jpi,jpj)     , rCdU_ice   (jpi,jpj)     , STAT= ierr(2) ) 
    135136#endif 
    136137 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/SBC/sbcmod.F90

    r12276 r13249  
    564564      ENDIF 
    565565      ! 
    566       CALL iom_put( "utau", utau )   ! i-wind stress   (stress can be updated at each time step in sea-ice) 
    567       CALL iom_put( "vtau", vtau )   ! j-wind stress 
    568       ! 
    569566      IF(ln_ctl) THEN         ! print mean trends (used for debugging) 
    570567         CALL prt_ctl(tab2d_1=fr_i              , clinfo1=' fr_i    - : ', mask1=tmask ) 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/ZDF/zdfdrg.F90

    r11536 r13249  
    3232   USE lib_mpp        ! distributed memory computing 
    3333   USE prtctl         ! Print control 
     34   USE sbc_oce , ONLY : nn_ice  
    3435 
    3536   IMPLICIT NONE 
     
    4647   LOGICAL          ::   ln_loglayer  ! logarithmic drag: Cd = vkarmn/log(z/z0) 
    4748   LOGICAL , PUBLIC ::   ln_drgimp    ! implicit top/bottom friction flag 
    48  
     49   LOGICAL , PUBLIC ::   ln_drgice_imp ! implicit ice-ocean drag  
    4950   !                                 !!* Namelist namdrg_top & _bot: TOP or BOTTOM coefficient namelist * 
    5051   REAL(wp)         ::   rn_Cd0       !: drag coefficient                                           [ - ] 
     
    231232      INTEGER   ::   ios, ioptio   ! local integers 
    232233      !! 
    233       NAMELIST/namdrg/ ln_OFF, ln_lin, ln_non_lin, ln_loglayer, ln_drgimp 
     234      NAMELIST/namdrg/ ln_OFF, ln_lin, ln_non_lin, ln_loglayer, ln_drgimp, ln_drgice_imp 
    234235      !!---------------------------------------------------------------------- 
    235236      ! 
     
    254255         WRITE(numout,*) '      logarithmic drag: Cd = vkarmn/log(z/z0)   ln_loglayer = ', ln_loglayer 
    255256         WRITE(numout,*) '      implicit friction                         ln_drgimp   = ', ln_drgimp 
     257         WRITE(numout,*) '      implicit ice-ocean drag                   ln_drgice_imp  =', ln_drgice_imp 
    256258      ENDIF 
    257259      ! 
     
    264266      IF( ioptio /= 1 )   CALL ctl_stop( 'zdf_drg_init: Choose ONE type of drag coef in namdrg' ) 
    265267      ! 
     268      IF ( ln_drgice_imp.AND.(.NOT.ln_drgimp) ) &  
     269         &                CALL ctl_stop( 'zdf_drg_init: ln_drgice_imp=T requires ln_drgimp=T' ) 
     270      ! 
     271      IF ( ln_drgice_imp.AND.( nn_ice /=2 ) ) & 
     272         &  CALL ctl_stop( 'zdf_drg_init: ln_drgice_imp=T requires si3' ) 
    266273      ! 
    267274      !                     !==  BOTTOM drag setting  ==!   (applied at seafloor) 
     
    274281      !                     !==  TOP drag setting  ==!   (applied at the top of ocean cavities) 
    275282      ! 
    276       IF( ln_isfcav ) THEN              ! Ocean cavities: top friction setting 
    277          ALLOCATE( rCd0_top(jpi,jpj), rCdU_top(jpi,jpj) ) 
     283      IF( ln_isfcav.OR.ln_drgice_imp ) THEN              ! Ocean cavities: top friction setting 
     284         ALLOCATE( rCdU_top(jpi,jpj) ) 
     285      ENDIF 
     286      ! 
     287      IF( ln_isfcav ) THEN 
     288         ALLOCATE( rCd0_top(jpi,jpj)) 
    278289         CALL drg_init( 'TOP   '   , mikt       ,                                         &   ! <== in 
    279290            &           r_Cdmin_top, r_Cdmax_top, r_z0_top, r_ke0_top, rCd0_top, rCdU_top )   ! ==> out 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/ZDF/zdfgls.F90

    r11536 r13249  
    5353   INTEGER  ::   nn_bc_bot         ! bottom boundary condition (=0/1) 
    5454   INTEGER  ::   nn_z0_met         ! Method for surface roughness computation 
     55   INTEGER  ::   nn_z0_ice         ! Roughness accounting for sea ice 
    5556   INTEGER  ::   nn_stab_func      ! stability functions G88, KC or Canuto (=0/1/2) 
    5657   INTEGER  ::   nn_clos           ! closure 0/1/2/3 MY82/k-eps/k-w/gen 
     
    6162   REAL(wp) ::   rn_crban          ! Craig and Banner constant for surface breaking waves mixing 
    6263   REAL(wp) ::   rn_hsro           ! Minimum surface roughness 
     64   REAL(wp) ::   rn_hsri           ! Ice ocean roughness 
    6365   REAL(wp) ::   rn_frac_hs        ! Fraction of wave height as surface roughness (if nn_z0_met > 1)  
    6466 
     
    150152      REAL(wp), DIMENSION(jpi,jpj)     ::   zflxs       ! Turbulence fluxed induced by internal waves  
    151153      REAL(wp), DIMENSION(jpi,jpj)     ::   zhsro       ! Surface roughness (surface waves) 
     154      REAL(wp), DIMENSION(jpi,jpj)     ::   zice_fra    ! Tapering of wave breaking under sea ice 
    152155      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   eb          ! tke at time before 
    153156      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   hmxl_b      ! mixing length at time before 
     
    165168      ustar2_bot (:,:) = 0._wp 
    166169 
     170      SELECT CASE ( nn_z0_ice ) 
     171      CASE( 0 )   ;   zice_fra(:,:) = 0._wp 
     172      CASE( 1 )   ;   zice_fra(:,:) =        TANH( fr_i(:,:) * 10._wp ) 
     173      CASE( 2 )   ;   zice_fra(:,:) =              fr_i(:,:) 
     174      CASE( 3 )   ;   zice_fra(:,:) = MIN( 4._wp * fr_i(:,:) , 1._wp ) 
     175      END SELECT 
     176       
    167177      ! Compute surface, top and bottom friction at T-points 
    168178      DO jj = 2, jpjm1           
     
    206216      END SELECT 
    207217      ! 
     218      ! adapt roughness where there is sea ice 
     219      zhsro(:,:) = ( (1._wp-zice_fra(:,:)) * zhsro(:,:) + zice_fra(:,:) * rn_hsri )*tmask(:,:,1)  + (1._wp - tmask(:,:,1))*rn_hsro 
     220      ! 
    208221      DO jk = 2, jpkm1              !==  Compute dissipation rate  ==! 
    209222         DO jj = 1, jpjm1 
     
    300313      CASE ( 0 )             ! Dirichlet boundary condition (set e at k=1 & 2)  
    301314      ! First level 
    302       en   (:,:,1) = MAX(  rn_emin , rc02r * ustar2_surf(:,:) * (1._wp + rsbc_tke1)**r2_3  ) 
     315      en   (:,:,1) = MAX(  rn_emin , rc02r * ustar2_surf(:,:) * (1._wp + (1._wp-zice_fra(:,:))*rsbc_tke1)**r2_3  ) 
    303316      zd_lw(:,:,1) = en(:,:,1) 
    304317      zd_up(:,:,1) = 0._wp 
     
    306319      !  
    307320      ! One level below 
    308       en   (:,:,2) =  MAX(  rc02r * ustar2_surf(:,:) * (  1._wp + rsbc_tke1 * ((zhsro(:,:)+gdepw_n(:,:,2))  & 
    309          &                 / zhsro(:,:) )**(1.5_wp*ra_sf)  )**(2._wp/3._wp)                      , rn_emin   ) 
     321      en   (:,:,2) =  MAX(  rc02r * ustar2_surf(:,:) * (  1._wp + (1._wp-zice_fra(:,:))*rsbc_tke1 * ((zhsro(:,:)+gdepw_n(:,:,2)) & 
     322         &                 / zhsro(:,:) )**(1.5_wp*ra_sf)  )**(2._wp/3._wp) , rn_emin   ) 
    310323      zd_lw(:,:,2) = 0._wp  
    311324      zd_up(:,:,2) = 0._wp 
     
    316329      ! 
    317330      ! Dirichlet conditions at k=1 
    318       en   (:,:,1) = MAX(  rc02r * ustar2_surf(:,:) * (1._wp + rsbc_tke1)**r2_3 , rn_emin  ) 
     331      en   (:,:,1) = MAX(  rc02r * ustar2_surf(:,:) * (1._wp + (1._wp-zice_fra(:,:))*rsbc_tke1)**r2_3 , rn_emin  ) 
    319332      zd_lw(:,:,1) = en(:,:,1) 
    320333      zd_up(:,:,1) = 0._wp 
     
    326339      zd_lw(:,:,2) = 0._wp 
    327340      zkar (:,:)   = (rl_sf + (vkarmn-rl_sf)*(1.-EXP(-rtrans*gdept_n(:,:,1)/zhsro(:,:)) )) 
    328       zflxs(:,:)   = rsbc_tke2 * ustar2_surf(:,:)**1.5_wp * zkar(:,:) & 
     341      zflxs(:,:)   = rsbc_tke2 * (1._wp-zice_fra(:,:)) * ustar2_surf(:,:)**1.5_wp * zkar(:,:) & 
    329342          &                    * (  ( zhsro(:,:)+gdept_n(:,:,1) ) / zhsro(:,:)  )**(1.5_wp*ra_sf) 
    330343!!gm why not   :                        * ( 1._wp + gdept_n(:,:,1) / zhsro(:,:) )**(1.5_wp*ra_sf) 
     
    577590         zkar (:,:)   = rl_sf + (vkarmn-rl_sf)*(1._wp-EXP(-rtrans*gdept_n(:,:,1)/zhsro(:,:) )) ! Lengh scale slope 
    578591         zdep (:,:)   = ((zhsro(:,:) + gdept_n(:,:,1)) / zhsro(:,:))**(rmm*ra_sf) 
    579          zflxs(:,:)   = (rnn + rsbc_tke1 * (rnn + rmm*ra_sf) * zdep(:,:))*(1._wp + rsbc_tke1*zdep(:,:))**(2._wp*rmm/3._wp-1_wp) 
     592         zflxs(:,:)   = (rnn + (1._wp-zice_fra(:,:))*rsbc_tke1 * (rnn + rmm*ra_sf) * zdep(:,:)) & 
     593            &           *(1._wp + (1._wp-zice_fra(:,:))*rsbc_tke1*zdep(:,:))**(2._wp*rmm/3._wp-1_wp) 
    580594         zdep (:,:)   = rsbc_psi1 * (zwall_psi(:,:,1)*p_avm(:,:,1)+zwall_psi(:,:,2)*p_avm(:,:,2)) * & 
    581595            &           ustar2_surf(:,:)**rmm * zkar(:,:)**rnn * (zhsro(:,:) + gdept_n(:,:,1))**(rnn-1.) 
     
    850864      REAL(wp)::   zcr   ! local scalar 
    851865      !! 
    852       NAMELIST/namzdf_gls/rn_emin, rn_epsmin, ln_length_lim, & 
    853          &            rn_clim_galp, ln_sigpsi, rn_hsro,      & 
    854          &            rn_crban, rn_charn, rn_frac_hs,        & 
    855          &            nn_bc_surf, nn_bc_bot, nn_z0_met,     & 
     866      NAMELIST/namzdf_gls/rn_emin, rn_epsmin, ln_length_lim,       & 
     867         &            rn_clim_galp, ln_sigpsi, rn_hsro, rn_hsri,   & 
     868         &            rn_crban, rn_charn, rn_frac_hs,              & 
     869         &            nn_bc_surf, nn_bc_bot, nn_z0_met, nn_z0_ice, & 
    856870         &            nn_stab_func, nn_clos 
    857871      !!---------------------------------------------------------- 
     
    881895         WRITE(numout,*) '      Charnock coefficient                          rn_charn       = ', rn_charn 
    882896         WRITE(numout,*) '      Surface roughness formula                     nn_z0_met      = ', nn_z0_met 
     897         WRITE(numout,*) '      surface wave breaking under ice               nn_z0_ice      = ', nn_z0_ice 
     898         SELECT CASE( nn_z0_ice ) 
     899         CASE( 0 )   ;   WRITE(numout,*) '   ==>>>   no impact of ice cover on surface wave breaking' 
     900         CASE( 1 )   ;   WRITE(numout,*) '   ==>>>   roughness uses rn_hsri and is weigthed by 1-TANH( fr_i(:,:) * 10 )' 
     901         CASE( 2 )   ;   WRITE(numout,*) '   ==>>>   roughness uses rn_hsri and is weighted by 1-fr_i(:,:)' 
     902         CASE( 3 )   ;   WRITE(numout,*) '   ==>>>   roughness uses rn_hsri and is weighted by 1-MIN( 1, 4 * fr_i(:,:) )' 
     903         CASE DEFAULT 
     904            CALL ctl_stop( 'zdf_gls_init: wrong value for nn_z0_ice, should be 0,1,2, or 3') 
     905         END SELECT 
    883906         WRITE(numout,*) '      Wave height frac. (used if nn_z0_met=2)       rn_frac_hs     = ', rn_frac_hs 
    884907         WRITE(numout,*) '      Stability functions                           nn_stab_func   = ', nn_stab_func 
    885908         WRITE(numout,*) '      Type of closure                               nn_clos        = ', nn_clos 
    886909         WRITE(numout,*) '      Surface roughness (m)                         rn_hsro        = ', rn_hsro 
     910         WRITE(numout,*) '      Ice-ocean roughness (used if nn_z0_ice/=0)    rn_hsri        = ', rn_hsri 
    887911         WRITE(numout,*) 
    888912         WRITE(numout,*) '   Namelist namdrg_top/_bot:   used values:' 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/ZDF/zdfphy.F90

    r11536 r13249  
    2828   USE sbc_oce        ! surface module (only for nn_isf in the option compatibility test) 
    2929   USE sbcrnf         ! surface boundary condition: runoff variables 
     30   USE sbc_ice        ! sea ice drag 
    3031#if defined key_agrif 
    3132   USE agrif_oce_interp   ! interpavm 
     
    252253      ENDIF 
    253254      ! 
     255#if defined key_si3 
     256      IF ( ln_drgice_imp) THEN 
     257         IF ( ln_isfcav ) THEN 
     258            rCdU_top(:,:) = rCdU_top(:,:) + ssmask(:,:) * tmask(:,:,1) * rCdU_ice(:,:) 
     259         ELSE 
     260            rCdU_top(:,:) = rCdU_ice(:,:) 
     261         ENDIF 
     262      ENDIF 
     263#endif 
     264      !  
    254265      !                       !==  Kz from chosen turbulent closure  ==!   (avm_k, avt_k) 
    255266      ! 
  • NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/OCE/ZDF/zdftke.F90

    r13006 r13249  
    8383   INTEGER  ::      nn_htau   ! type of tke profile of penetration (=0/1) 
    8484   REAL(wp) ::      rn_efr    ! fraction of TKE surface value which penetrates in the ocean 
    85    REAL(wp) ::      rn_eice   ! =0 ON below sea-ice, =4 OFF when ice fraction > 1/4    
    8685   LOGICAL  ::   ln_lc     ! Langmuir cells (LC) as a source term of TKE or not 
    8786   REAL(wp) ::      rn_lc     ! coef to compute vertical velocity of Langmuir cells 
     87   INTEGER  ::   nn_eice   ! attenutaion of langmuir & surface wave breaking under ice (=0/1/2/3)    
    8888 
    8989   REAL(wp) ::   ri_cri    ! critic Richardson number (deduced from rn_ediff and rn_ediss values) 
     
    199199      REAL(wp), DIMENSION(:,:,:) , INTENT(in   ) ::   p_avm, p_avt   ! vertical eddy viscosity & diffusivity (w-points) 
    200200      ! 
    201       INTEGER ::   ji, jj, jk              ! dummy loop arguments 
     201      INTEGER ::   ji, jj, jk                  ! dummy loop arguments 
    202202      REAL(wp) ::   zetop, zebot, zmsku, zmskv ! local scalars 
    203203      REAL(wp) ::   zrhoa  = 1.22              ! Air density kg/m3 
    204204      REAL(wp) ::   zcdrag = 1.5e-3            ! drag coefficient 
    205       REAL(wp) ::   zbbrau, zri                ! local scalars 
    206       REAL(wp) ::   zfact1, zfact2, zfact3     !   -         - 
    207       REAL(wp) ::   ztx2  , zty2  , zcof       !   -         - 
    208       REAL(wp) ::   ztau  , zdif               !   -         - 
    209       REAL(wp) ::   zus   , zwlc  , zind       !   -         - 
    210       REAL(wp) ::   zzd_up, zzd_lw             !   -         - 
     205      REAL(wp) ::   zbbrau, zbbirau, zri       ! local scalars 
     206      REAL(wp) ::   zfact1, zfact2, zfact3     !   -      - 
     207      REAL(wp) ::   ztx2  , zty2  , zcof       !   -      - 
     208      REAL(wp) ::   ztau  , zdif               !   -      - 
     209      REAL(wp) ::   zus   , zwlc  , zind       !   -      - 
     210      REAL(wp) ::   zzd_up, zzd_lw             !   -      - 
    211211      INTEGER , DIMENSION(jpi,jpj)     ::   imlc 
    212       REAL(wp), DIMENSION(jpi,jpj)     ::   zhlc, zfr_i 
     212      REAL(wp), DIMENSION(jpi,jpj)     ::   zice_fra, zhlc, zus3 
    213213      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpelc, zdiag, zd_up, zd_lw 
    214214      !!-------------------------------------------------------------------- 
    215215      ! 
    216       zbbrau = rn_ebb / rau0       ! Local constant initialisation 
    217       zfact1 = -.5_wp * rdt  
    218       zfact2 = 1.5_wp * rdt * rn_ediss 
    219       zfact3 = 0.5_wp       * rn_ediss 
     216      zbbrau  =  rn_ebb / rau0       ! Local constant initialisation 
     217      zbbirau =  3.75_wp / rau0 
     218      zfact1  = -0.5_wp * rdt  
     219      zfact2  =  1.5_wp * rdt * rn_ediss 
     220      zfact3  =  0.5_wp       * rn_ediss 
     221      ! 
     222      ! ice fraction considered for attenuation of langmuir & wave breaking 
     223      SELECT CASE ( nn_eice ) 
     224      CASE( 0 )   ;   zice_fra(:,:) = 0._wp 
     225      CASE( 1 )   ;   zice_fra(:,:) =        TANH( fr_i(:,:) * 10._wp ) 
     226      CASE( 2 )   ;   zice_fra(:,:) =              fr_i(:,:) 
     227      CASE( 3 )   ;   zice_fra(:,:) = MIN( 4._wp * fr_i(:,:) , 1._wp ) 
     228      END SELECT 
    220229      ! 
    221230      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    222231      !                     !  Surface/top/bottom boundary condition on tke 
    223232      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    224        
     233      ! 
    225234      DO jj = 2, jpjm1            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
    226235         DO ji = fs_2, fs_jpim1   ! vector opt. 
    227             en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 
     236            en(ji,jj,1) = MAX( rn_emin0, ( ( 1._wp - fr_i(ji,jj) ) * zbbrau + & 
     237               &                                     fr_i(ji,jj)   * zbbirau ) * taum(ji,jj) ) * tmask(ji,jj,1) 
    228238         END DO 
    229239      END DO 
     
    257267                  zetop = - 0.001875_wp * rCdU_top(ji,jj) * SQRT(  ( zmsku*( ub(ji,jj,mikt(ji,jj))+ub(ji-1,jj,mikt(ji,jj)) ) )**2  & 
    258268                     &                                           + ( zmskv*( vb(ji,jj,mikt(ji,jj))+vb(ji,jj-1,mikt(ji,jj)) ) )**2  ) 
    259                   en(ji,jj,mikt(ji,jj)) = en(ji,jj,1)           * tmask(ji,jj,1) & 
     269                  en(ji,jj,mikt(ji,jj)) = en(ji,jj,1)           * tmask(ji,jj,1) &      
    260270                     &                  + MAX( zetop, rn_emin ) * (1._wp - tmask(ji,jj,1)) * ssmask(ji,jj) 
    261271               END DO 
     
    295305            DO ji = fs_2, fs_jpim1   ! vector opt. 
    296306               zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
    297                zfr_i(ji,jj) = ( 1._wp - 4._wp * fr_i(ji,jj) ) * zus * zus * zus * tmask(ji,jj,1) ! zus > 0. ok 
    298                IF (zfr_i(ji,jj) < 0. ) zfr_i(ji,jj) = 0. 
     307               zus3(ji,jj) = ( 1._wp - zice_fra(ji,jj) ) * zus * zus * zus * tmask(ji,jj,1) ! zus > 0. ok 
    299308            END DO 
    300309         END DO          
     
    302311            DO jj = 2, jpjm1 
    303312               DO ji = fs_2, fs_jpim1   ! vector opt. 
    304                   IF ( zfr_i(ji,jj) /= 0. ) THEN                
     313                  IF ( zus3(ji,jj) /= 0. ) THEN                
    305314                     ! vertical velocity due to LC    
    306315                     IF ( pdepw(ji,jj,jk) - zhlc(ji,jj) < 0 .AND. wmask(ji,jj,jk) /= 0. ) THEN 
    307316                        !                                           ! vertical velocity due to LC 
    308                         zwlc = rn_lc * SIN( rpi * pdepw(ji,jj,jk) / zhlc(ji,jj) )   ! warning: optimization: zus^3 is in zfr_i 
     317                        zwlc = rn_lc * SIN( rpi * pdepw(ji,jj,jk) / zhlc(ji,jj) ) 
    309318                        !                                           ! TKE Langmuir circulation source term 
    310                         en(ji,jj,jk) = en(ji,jj,jk) + rdt * zfr_i(ji,jj) * ( zwlc * zwlc * zwlc ) / zhlc(ji,jj) 
     319                        en(ji,jj,jk) = en(ji,jj,jk) + rdt * zus3(ji,jj) * ( zwlc * zwlc * zwlc ) / zhlc(ji,jj) 
    311320                     ENDIF 
    312321                  ENDIF 
     
    408417       
    409418      IF( nn_etau == 1 ) THEN           !* penetration below the mixed layer (rn_efr fraction) 
    410          DO jk = 2, jpkm1                       ! rn_eice =0 ON below sea-ice, =4 OFF when ice fraction > 0.25 
     419         DO jk = 2, jpkm1                       ! nn_eice=0 : ON below sea-ice ; nn_eice>0 : partly OFF 
    411420            DO jj = 2, jpjm1 
    412421               DO ji = fs_2, fs_jpim1   ! vector opt. 
    413422                  en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) )   & 
    414                      &                                 * MAX(0.,1._wp - rn_eice *fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
     423                     &                                 * ( 1._wp - zice_fra(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    415424               END DO 
    416425            END DO 
     
    421430               jk = nmln(ji,jj) 
    422431               en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) )   & 
    423                   &                                 * MAX(0.,1._wp - rn_eice *fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
     432                  &                                 * ( 1._wp - zice_fra(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    424433            END DO 
    425434         END DO 
     
    434443                  zdif = rhftau_scl * MAX( 0._wp, zdif + rhftau_add )  ! apply some modifications... 
    435444                  en(ji,jj,jk) = en(ji,jj,jk) + zbbrau * zdif * EXP( -pdepw(ji,jj,jk) / htau(ji,jj) )   & 
    436                      &                        * MAX(0.,1._wp - rn_eice *fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
     445                     &                                 * ( 1._wp - zice_fra(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    437446               END DO 
    438447            END DO 
     
    499508      zmxlm(:,:,:)  = rmxl_min     
    500509      zmxld(:,:,:)  = rmxl_min 
    501       ! 
    502      IF( ln_mxl0 ) THEN            ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rau0*g) 
     510      !  
     511      IF( ln_mxl0 ) THEN            ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rau0*g) 
    503512         ! 
    504513         zraug = vkarmn * 2.e5_wp / ( rau0 * grav ) 
    505514#if ! defined key_si3 && ! defined key_cice 
    506          DO jj = 2, jpjm1 
     515         DO jj = 2, jpjm1                     ! No sea-ice 
    507516            DO ji = fs_2, fs_jpim1 
    508517               zmxlm(ji,jj,1) =  zraug * taum(ji,jj) * tmask(ji,jj,1) 
     
    510519         END DO 
    511520#else 
     521 
    512522         SELECT CASE( nn_mxlice )             ! Type of scaling under sea-ice 
    513523         ! 
     
    519529            END DO 
    520530            ! 
    521          CASE( 1 )                           ! scaling with constant sea-ice thickness 
     531         CASE( 1 )                      ! scaling with constant sea-ice thickness 
    522532            DO jj = 2, jpjm1 
    523533               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) 
     534                  zmxlm(ji,jj,1) =  ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & 
     535                     &                          fr_i(ji,jj)   * rn_mxlice           ) * tmask(ji,jj,1) 
    525536               END DO 
    526537            END DO 
    527538            ! 
    528          CASE( 2 )                                 ! scaling with mean sea-ice thickness 
     539         CASE( 2 )                      ! scaling with mean sea-ice thickness 
    529540            DO jj = 2, jpjm1 
    530541               DO ji = fs_2, fs_jpim1 
    531542#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) 
     543                  zmxlm(ji,jj,1) = ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & 
     544                     &                         fr_i(ji,jj)   * hm_i(ji,jj) * 2._wp ) * tmask(ji,jj,1) 
    533545#elif defined key_cice 
    534546                  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) 
     547                  zmxlm(ji,jj,1) = ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & 
     548                     &                         fr_i(ji,jj)   * zmaxice             ) * tmask(ji,jj,1) 
    536549#endif 
    537550               END DO 
    538551            END DO 
    539552            ! 
    540          CASE( 3 )                                 ! scaling with max sea-ice thickness 
     553         CASE( 3 )                      ! scaling with max sea-ice thickness 
    541554            DO jj = 2, jpjm1 
    542555               DO ji = fs_2, fs_jpim1 
    543556                  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) 
     557                  zmxlm(ji,jj,1) = ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & 
     558                     &                         fr_i(ji,jj)   * zmaxice             ) * tmask(ji,jj,1) 
    545559               END DO 
    546560            END DO 
     
    704718         &                 rn_mxl0 , nn_mxlice, rn_mxlice,             & 
    705719         &                 nn_pdl  , ln_drg   , ln_lc    , rn_lc,      & 
    706          &                 nn_etau , nn_htau  , rn_efr   , rn_eice   
     720         &                 nn_etau , nn_htau  , rn_efr   , nn_eice   
    707721      !!---------------------------------------------------------------------- 
    708722      ! 
     
    737751            IF( nn_mxlice == 1 ) & 
    738752            WRITE(numout,*) '      ice thickness when scaling under sea-ice    rn_mxlice = ', rn_mxlice 
     753            SELECT CASE( nn_mxlice )             ! Type of scaling under sea-ice 
     754            CASE( 0 )   ;   WRITE(numout,*) '   ==>>>   No scaling under sea-ice' 
     755            CASE( 1 )   ;   WRITE(numout,*) '   ==>>>   scaling with constant sea-ice thickness' 
     756            CASE( 2 )   ;   WRITE(numout,*) '   ==>>>   scaling with mean sea-ice thickness' 
     757            CASE( 3 )   ;   WRITE(numout,*) '   ==>>>   scaling with max sea-ice thickness' 
     758            CASE DEFAULT 
     759               CALL ctl_stop( 'zdf_tke_init: wrong value for nn_mxlice, should be 0,1,2,3 or 4') 
     760            END SELECT 
    739761         ENDIF 
    740762         WRITE(numout,*) '      top/bottom friction forcing flag            ln_drg    = ', ln_drg 
     
    744766         WRITE(numout,*) '          type of tke penetration profile            nn_htau   = ', nn_htau 
    745767         WRITE(numout,*) '          fraction of TKE that penetrates            rn_efr    = ', rn_efr 
    746          WRITE(numout,*) '          below sea-ice:  =0 ON                      rn_eice   = ', rn_eice 
    747          WRITE(numout,*) '          =4 OFF when ice fraction > 1/4   ' 
     768         WRITE(numout,*) '      langmuir & surface wave breaking under ice  nn_eice = ', nn_eice 
     769         SELECT CASE( nn_eice )  
     770         CASE( 0 )   ;   WRITE(numout,*) '   ==>>>   no impact of ice cover on langmuir & surface wave breaking' 
     771         CASE( 1 )   ;   WRITE(numout,*) '   ==>>>   weigthed by 1-TANH( fr_i(:,:) * 10 )' 
     772         CASE( 2 )   ;   WRITE(numout,*) '   ==>>>   weighted by 1-fr_i(:,:)' 
     773         CASE( 3 )   ;   WRITE(numout,*) '   ==>>>   weighted by 1-MIN( 1, 4 * fr_i(:,:) )' 
     774         CASE DEFAULT 
     775            CALL ctl_stop( 'zdf_tke_init: wrong value for nn_eice, should be 0,1,2, or 3') 
     776         END SELECT       
    748777         IF( ln_drg ) THEN 
    749778            WRITE(numout,*) 
Note: See TracChangeset for help on using the changeset viewer.