Changeset 12832
- Timestamp:
- 2020-04-29T17:15:15+02:00 (3 years ago)
- Location:
- NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/cfgs/SHARED/namelist_ice_ref
r12743 r12832 178 178 &namthd_pnd ! Melt ponds 179 179 !------------------------------------------------------------------------------ 180 ln_pnd = .false. ! activate melt ponds or not 181 ln_pnd_H12 = .false. ! activate evolutive melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) 182 ln_pnd_lids = .true. ! ponds with frozen lids 183 ln_pnd_flush = .true. ! ponds flushing trhu the ice 184 rn_apnd_min = 0.15 ! minimum ice fraction that contributes to melt pond. range: 0.0 -- 0.15 ?? 185 rn_apnd_max = 0.85 ! maximum ice fraction that contributes to melt pond. range: 0.7 -- 0.85 ?? 186 ln_pnd_CST = .false. ! activate constant melt ponds 187 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 degC 188 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 degC 189 ln_pnd_alb = .false. ! melt ponds affect albedo or not 180 ln_pnd = .false. ! activate melt ponds or not 181 ln_pnd_LEV = .false. ! level ice melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) 182 rn_apnd_min = 0.15 ! minimum ice fraction that contributes to melt pond. range: 0.0 -- 0.15 ?? 183 rn_apnd_max = 0.85 ! maximum ice fraction that contributes to melt pond. range: 0.7 -- 0.85 ?? 184 ln_pnd_CST = .false. ! constant melt ponds 185 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 degC 186 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 degC 187 ln_pnd_lids = .true. ! frozen lids on top of the ponds (only for ln_pnd_LEV) 188 ln_pnd_alb = .true. ! effect of melt ponds on ice albedo 190 189 / 191 190 !------------------------------------------------------------------------------ -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/doc/namelists/namthd_pnd
r12720 r12832 2 2 &namthd_pnd ! Melt ponds 3 3 !------------------------------------------------------------------------------ 4 ln_pnd = .false. ! activate melt ponds or not 5 ln_pnd_H12 = .false. ! activate evolutive melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) 6 ln_pnd_lids = .true. ! ponds with frozen lids 7 ln_pnd_flush = .true. ! ponds flushing trhu the ice 8 rn_apnd_min = 0.15 ! minimum ice fraction that contributes to melt pond. range: 0.0 -- 0.15 ?? 9 rn_apnd_max = 0.85 ! maximum ice fraction that contributes to melt pond. range: 0.7 -- 0.85 ?? 10 ln_pnd_CST = .false. ! activate constant melt ponds 11 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 degC 12 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 degC 13 ln_pnd_alb = .false. ! melt ponds affect albedo or not 4 ln_pnd = .false. ! activate melt ponds or not 5 ln_pnd_LEV = .false. ! level ice melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) 6 rn_apnd_min = 0.15 ! minimum ice fraction that contributes to melt pond. range: 0.0 -- 0.15 ?? 7 rn_apnd_max = 0.85 ! maximum ice fraction that contributes to melt pond. range: 0.7 -- 0.85 ?? 8 ln_pnd_CST = .false. ! constant melt ponds 9 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 degC 10 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 degC 11 ln_pnd_lids = .true. ! frozen lids on top of the ponds (only for ln_pnd_LEV) 12 ln_pnd_alb = .true. ! effect of melt ponds on ice albedo 14 13 / -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/ice.F90
r12741 r12832 195 195 ! !!** ice-ponds namelist (namthd_pnd) 196 196 LOGICAL , PUBLIC :: ln_pnd !: Melt ponds (T) or not (F) 197 LOGICAL , PUBLIC :: ln_pnd_H12 !: Melt ponds scheme from Holland et al (2012), Flocco et al (2007, 2010) 198 LOGICAL, PUBLIC :: ln_pnd_lids !: Allow ponds to have frozen lids 199 LOGICAL, PUBLIC :: ln_pnd_flush !: Allow ponds to flush thru the ice 197 LOGICAL , PUBLIC :: ln_pnd_LEV !: Melt ponds scheme from Holland et al (2012), Flocco et al (2007, 2010) 200 198 REAL(wp), PUBLIC :: rn_apnd_min !: Minimum ice fraction that contributes to melt ponds 201 199 REAL(wp), PUBLIC :: rn_apnd_max !: Maximum ice fraction that contributes to melt ponds … … 203 201 REAL(wp), PUBLIC :: rn_apnd !: prescribed pond fraction (0<rn_apnd<1) 204 202 REAL(wp), PUBLIC :: rn_hpnd !: prescribed pond depth (0<rn_hpnd<1) 203 LOGICAL, PUBLIC :: ln_pnd_lids !: Allow ponds to have frozen lids 205 204 LOGICAL , PUBLIC :: ln_pnd_alb !: melt ponds affect albedo 206 205 -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icealb.F90
r12785 r12832 107 107 REAL(wp) :: zalb_snw, zafrac_snw ! snow-covered sea ice albedo & relative snow fraction 108 108 REAL(wp) :: zalb_cs, zalb_os ! albedo of ice under clear/overcast sky 109 REAL(wp) :: zhs_min = 0.1_wp ! minimum snow thickness to fully shade melt ponds and ice 110 REAL(wp) :: z1_hsmin 109 111 !!--------------------------------------------------------------------- 110 112 ! … … 120 122 DO jj = 1, jpj 121 123 DO ji = 1, jpi 124 ! 122 125 !---------------------------------------------! 123 126 !--- Specific snow, ice and pond fractions ---! 124 127 !---------------------------------------------! 125 IF( ph_snw(ji,jj,jl) == 0._wp ) THEN !--- no snow : we prevent melt ponds and snow at the same time (for now) 126 zafrac_snw = 0._wp 127 IF( ld_pnd_alb ) THEN 128 zafrac_pnd = pafrac_pnd(ji,jj,jl) 129 ELSE 130 zafrac_pnd = 0._wp 131 ENDIF 132 zafrac_ice = 1._wp - zafrac_pnd 128 IF( ph_snw(ji,jj,jl) < zhs_min ) THEN !--- thin snow partially shades melt ponds and ice 129 IF( ld_pnd_alb ) THEN ; zafrac_pnd = pafrac_pnd(ji,jj,jl) 130 ELSE ; zafrac_pnd = 0._wp ; ENDIF 131 zafrac_snw = MAX( 0._wp, ( ph_snw(ji,jj,jl) * z1_hsmin ) * ( 1._wp - zafrac_pnd ) ) ! max for roundoff errors 132 zafrac_ice = MAX( 0._wp, 1._wp - zafrac_pnd - zafrac_snw ) ! max for roundoff errors 133 133 ELSE 134 zafrac_snw = 1._wp !--- snow : fully "shades"melt ponds and ice134 zafrac_snw = 1._wp !--- thick snow fully shades melt ponds and ice 135 135 zafrac_pnd = 0._wp 136 136 zafrac_ice = 0._wp … … 144 144 zalb_ice = rn_alb_idry 145 145 ELSE 146 IF( ph_snw(ji,jj,jl) == 0._wp .AND. pt_su(ji,jj,jl) >= rt0 ) THEN ; zalb_ice = rn_alb_imlt147 ELSE ; zalb_ice = rn_alb_idry ; ENDIF146 IF( ph_snw(ji,jj,jl) == 0._wp .AND. pt_su(ji,jj,jl) >= rt0 ) THEN ; zalb_ice = rn_alb_imlt 147 ELSE ; zalb_ice = rn_alb_idry ; ENDIF 148 148 ENDIF 149 149 ! !--- Bare ice albedo (for hi < 150cm) … … 161 161 ENDIF 162 162 ! !--- Ponded ice albedo 163 IF( ld_pnd_alb ) THEN 164 zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd ) 165 ELSE 166 zalb_pnd = rn_alb_dpnd 167 ENDIF 163 zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd ) 164 ! 168 165 ! !--- Surface albedo is weighted mean of snow, ponds and bare ice contributions 169 166 zalb_os = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icedyn_adv_pra.F90
r12816 r12832 160 160 z0ei(:,:,jk,jl) = pe_i(:,:,jk,jl) * e1e2t(:,:) ! Ice heat content 161 161 END DO 162 IF ( ln_pnd_ H12) THEN162 IF ( ln_pnd_LEV ) THEN 163 163 z0ap(:,:,jl) = pa_ip(:,:,jl) * e1e2t(:,:) ! Melt pond fraction 164 164 z0vp(:,:,jl) = pv_ip(:,:,jl) * e1e2t(:,:) ! Melt pond volume … … 196 196 END DO 197 197 ! 198 IF ( ln_pnd_ H12) THEN198 IF ( ln_pnd_LEV ) THEN 199 199 CALL adv_x( zdt , zudy , 1._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap ) !--- melt pond fraction 200 200 CALL adv_y( zdt , zvdx , 0._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap ) … … 231 231 & sxxe(:,:,jk,:), sye(:,:,jk,:), syye(:,:,jk,:), sxye(:,:,jk,:) ) 232 232 END DO 233 IF ( ln_pnd_ H12) THEN233 IF ( ln_pnd_LEV ) THEN 234 234 CALL adv_y( zdt , zvdx , 1._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap ) !--- melt pond fraction 235 235 CALL adv_x( zdt , zudy , 0._wp , zarea , z0ap , sxap , sxxap , syap , syyap , sxyap ) … … 257 257 pe_i(:,:,jk,jl) = z0ei(:,:,jk,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 258 258 END DO 259 IF ( ln_pnd_ H12) THEN259 IF ( ln_pnd_LEV ) THEN 260 260 pa_ip(:,:,jl) = z0ap(:,:,jl) * r1_e1e2t(:,:) * tmask(:,:,1) 261 261 pv_ip(:,:,jl) = z0vp(:,:,jl) * r1_e1e2t(:,:) * tmask(:,:,1) … … 668 668 ! ! -- check h_ip -- ! 669 669 ! if h_ip is larger than the surrounding 9 pts => reduce h_ip and increase a_ip 670 IF( ln_pnd_ H12.AND. pv_ip(ji,jj,jl) > 0._wp ) THEN670 IF( ln_pnd_LEV .AND. pv_ip(ji,jj,jl) > 0._wp ) THEN 671 671 zhip = pv_ip(ji,jj,jl) / MAX( epsi20, pa_ip(ji,jj,jl) ) 672 672 IF( zhip > phip_max(ji,jj,jl) .AND. pa_ip(ji,jj,jl) < 0.15 ) THEN … … 869 869 END DO 870 870 ! 871 IF( ln_pnd_ H12) THEN ! melt pond fraction871 IF( ln_pnd_LEV ) THEN ! melt pond fraction 872 872 IF( iom_varid( numror, 'sxap', ldstop = .FALSE. ) > 0 ) THEN 873 873 CALL iom_get( numrir, jpdom_autoglo, 'sxap' , sxap ) … … 911 911 sxc0 = 0._wp ; syc0 = 0._wp ; sxxc0 = 0._wp ; syyc0 = 0._wp ; sxyc0 = 0._wp ! snow layers heat content 912 912 sxe = 0._wp ; sye = 0._wp ; sxxe = 0._wp ; syye = 0._wp ; sxye = 0._wp ! ice layers heat content 913 IF( ln_pnd_ H12) THEN913 IF( ln_pnd_LEV ) THEN 914 914 sxap = 0._wp ; syap = 0._wp ; sxxap = 0._wp ; syyap = 0._wp ; sxyap = 0._wp ! melt pond fraction 915 915 sxvp = 0._wp ; syvp = 0._wp ; sxxvp = 0._wp ; syyvp = 0._wp ; sxyvp = 0._wp ! melt pond volume … … 979 979 END DO 980 980 ! 981 IF( ln_pnd_ H12) THEN ! melt pond fraction981 IF( ln_pnd_LEV ) THEN ! melt pond fraction 982 982 CALL iom_rstput( iter, nitrst, numriw, 'sxap' , sxap ) 983 983 CALL iom_rstput( iter, nitrst, numriw, 'syap' , syap ) -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icedyn_adv_umx.F90
r12744 r12832 325 325 ! 326 326 !== melt ponds ==! 327 IF ( ln_pnd_ H12) THEN327 IF ( ln_pnd_LEV ) THEN 328 328 ! concentration 329 329 zamsk = 1._wp … … 1558 1558 ! ! -- check h_ip -- ! 1559 1559 ! if h_ip is larger than the surrounding 9 pts => reduce h_ip and increase a_ip 1560 IF( ln_pnd_ H12.AND. pv_ip(ji,jj,jl) > 0._wp ) THEN1560 IF( ln_pnd_LEV .AND. pv_ip(ji,jj,jl) > 0._wp ) THEN 1561 1561 zhip = pv_ip(ji,jj,jl) / MAX( epsi20, pa_ip(ji,jj,jl) ) 1562 1562 IF( zhip > phip_max(ji,jj,jl) .AND. pa_ip(ji,jj,jl) < 0.15 ) THEN -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icedyn_rdgrft.F90
r12744 r12832 565 565 oirft2(ji) = oa_i_2d(ji,jl1) * afrft * hi_hrft 566 566 567 IF ( ln_pnd_ H12) THEN567 IF ( ln_pnd_LEV ) THEN 568 568 aprdg1 = a_ip_2d(ji,jl1) * afrdg 569 569 aprdg2(ji) = a_ip_2d(ji,jl1) * afrdg * hi_hrdg(ji,jl1) … … 602 602 sv_i_2d(ji,jl1) = sv_i_2d(ji,jl1) - sirdg1 - sirft(ji) 603 603 oa_i_2d(ji,jl1) = oa_i_2d(ji,jl1) - oirdg1 - oirft1 604 IF ( ln_pnd_ H12) THEN604 IF ( ln_pnd_LEV ) THEN 605 605 a_ip_2d(ji,jl1) = a_ip_2d(ji,jl1) - aprdg1 - aprft1 606 606 v_ip_2d(ji,jl1) = v_ip_2d(ji,jl1) - vprdg(ji) - vprft(ji) … … 699 699 v_s_2d (ji,jl2) = v_s_2d (ji,jl2) + ( vsrdg (ji) * rn_fsnwrdg * fvol(ji) + & 700 700 & vsrft (ji) * rn_fsnwrft * zswitch(ji) ) 701 IF ( ln_pnd_ H12) THEN701 IF ( ln_pnd_LEV ) THEN 702 702 v_ip_2d (ji,jl2) = v_ip_2d(ji,jl2) + ( vprdg (ji) * rn_fpndrdg * fvol (ji) & 703 703 & + vprft (ji) * rn_fpndrft * zswitch(ji) ) … … 705 705 & + aprft2(ji) * rn_fpndrft * zswitch(ji) ) 706 706 IF ( ln_pnd_lids ) THEN 707 v_il_2d (ji,jl2) = v_il_2d(ji,jl2) + ( vlrdg (ji) * rn_fpndrdg * fvol (ji)&708 & + vlrft (ji) * rn_fpndrft * zswitch(ji))707 v_il_2d (ji,jl2) = v_il_2d(ji,jl2) + ( vlrdg(ji) * rn_fpndrdg * fvol (ji) & 708 & + vlrft(ji) * rn_fpndrft * zswitch(ji) ) 709 709 ENDIF 710 710 ENDIF -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/iceitd.F90
r12744 r12832 304 304 IF ( a_i_1d(ji) > epsi10 .AND. h_i_1d(ji) < rn_himin ) THEN 305 305 a_i_1d(ji) = a_i_1d(ji) * h_i_1d(ji) / rn_himin 306 IF( ln_pnd_ H12) a_ip_1d(ji) = a_ip_1d(ji) * h_i_1d(ji) / rn_himin306 IF( ln_pnd_LEV ) a_ip_1d(ji) = a_ip_1d(ji) * h_i_1d(ji) / rn_himin 307 307 h_i_1d(ji) = rn_himin 308 308 ENDIF … … 475 475 zaTsfn(ji,jl2) = zaTsfn(ji,jl2) + ztrans 476 476 ! 477 IF ( ln_pnd_ H12) THEN477 IF ( ln_pnd_LEV ) THEN 478 478 ztrans = a_ip_2d(ji,jl1) * zworka(ji) ! Pond fraction 479 479 a_ip_2d(ji,jl1) = a_ip_2d(ji,jl1) - ztrans -
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icevar.F90
r12744 r12832 680 680 WHERE( pe_i (1:npti,:,:) < 0._wp .AND. pe_i (1:npti,:,:) > -epsi06 ) pe_i (1:npti,:,:) = 0._wp ! e_i must be >= 0 681 681 WHERE( pe_s (1:npti,:,:) < 0._wp .AND. pe_s (1:npti,:,:) > -epsi06 ) pe_s (1:npti,:,:) = 0._wp ! e_s must be >= 0 682 IF( ln_pnd_ H12) THEN682 IF( ln_pnd_LEV ) THEN 683 683 WHERE( pa_ip(1:npti,:) < 0._wp .AND. pa_ip(1:npti,:) > -epsi10 ) pa_ip(1:npti,:) = 0._wp ! a_ip must be >= 0 684 684 WHERE( pv_ip(1:npti,:) < 0._wp .AND. pv_ip(1:npti,:) > -epsi10 ) pv_ip(1:npti,:) = 0._wp ! v_ip must be >= 0
Note: See TracChangeset
for help on using the changeset viewer.