- Timestamp:
- 2020-04-09T15:48:28+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icethd_pnd.F90
r12720 r12725 89 89 IF( a_i_1d(ji) > 0._wp .AND. t_su_1d(ji) >= rt0 ) THEN 90 90 a_ip_frac_1d(ji) = rn_apnd 91 a_ip_eff_1d(ji) = rn_apnd92 91 h_ip_1d(ji) = rn_hpnd 93 92 a_ip_1d(ji) = a_ip_frac_1d(ji) * a_i_1d(ji) … … 95 94 ELSE 96 95 a_ip_frac_1d(ji) = 0._wp 97 a_ip_eff_1d(ji) = 0._wp98 96 h_ip_1d(ji) = 0._wp 99 97 a_ip_1d(ji) = 0._wp … … 139 137 !! if no lids: Vp = Vp * exp(0.01*MAX(Tp-Tsu,0)/Tp) --- from Holland et al 2012 --- 140 138 !! 141 !! - Overflow: w = -perm/visc * rho_oce * grav * Hp / Hi --- from Flocco et al 2007 ---139 !! - Flushing: w = -perm/visc * rho_oce * grav * Hp / Hi --- from Flocco et al 2007 --- 142 140 !! perm = permability of sea-ice 143 141 !! visc = water viscosity … … 145 143 !! Hi = ice thickness thru which there is flushing 146 144 !! 147 !!148 145 !! - Corrections: remove melt ponds when lid thickness is 10 times the pond thickness 149 !!150 !! - effective pond area: to be used for albedo151 146 !! 152 147 !! - pond thickness and area is retrieved from pond volume assuming a linear relationship between h_ip and a_ip: … … 161 156 !! Holland et al (J. Clim, 2012) 162 157 !!------------------------------------------------------------------- 163 REAL(wp), DIMENSION(nlay_i) :: z perm ! Permeability of sea ice158 REAL(wp), DIMENSION(nlay_i) :: ztmp ! temporary array 164 159 !! 165 160 REAL(wp), PARAMETER :: zaspect = 0.8_wp ! pond aspect ratio 166 161 REAL(wp), PARAMETER :: zTp = -2._wp ! reference temperature 167 162 REAL(wp), PARAMETER :: zvisc = 1.79e-3_wp ! water viscosity 168 REAL(wp), PARAMETER :: zhl_max = 0.015_wp ! pond lid thickness above which the ponds disappear from the albedo calculation169 REAL(wp), PARAMETER :: zhl_min = 0.005_wp ! pond lid thickness below which the full pond area is used in the albedo calculation170 163 !! 171 164 REAL(wp) :: zfr_mlt, zdv_mlt ! fraction and volume of available meltwater retained for melt ponding 172 165 REAL(wp) :: zdv_frz, zdv_flush ! Amount of melt pond that freezes, flushes 173 166 REAL(wp) :: zhp ! heigh of top of pond lid wrt ssh 174 REAL(wp) :: v_ip_max! max pond volume allowed167 REAL(wp) :: zv_ip_max ! max pond volume allowed 175 168 REAL(wp) :: zdT ! zTp-t_su 176 169 REAL(wp) :: zsbr ! Brine salinity 170 REAL(wp) :: zperm ! permeability of sea ice 177 171 REAL(wp) :: zfac, zdum ! temporary arrays 178 172 REAL(wp) :: z1_rhow, z1_aspect, z1_Tp ! inverse … … 214 208 ! a_ip_max = zfr_mlt * a_i 215 209 ! => from zaspect = h_ip / (a_ip / a_i), set v_ip_max as: 216 v_ip_max = zfr_mlt**2 * a_i_1d(ji) * zaspect217 zdv_mlt = MAX( 0._wp, MIN( zdv_mlt, v_ip_max - v_ip_1d(ji) ) )210 zv_ip_max = zfr_mlt**2 * a_i_1d(ji) * zaspect 211 zdv_mlt = MAX( 0._wp, MIN( zdv_mlt, zv_ip_max - v_ip_1d(ji) ) ) 218 212 219 213 ! If pond depth exceeds half the ice thickness then reduce the pond volume 220 214 ! h_ip_max = 0.5 * h_i 221 215 ! => from zaspect = h_ip / (a_ip / a_i), set v_ip_max as: 222 v_ip_max = z1_aspect * a_i_1d(ji) * 0.25 * h_i_1d(ji) * h_i_1d(ji)223 zdv_mlt = MAX( 0._wp, MIN( zdv_mlt, v_ip_max - v_ip_1d(ji) ) )216 zv_ip_max = z1_aspect * a_i_1d(ji) * 0.25 * h_i_1d(ji) * h_i_1d(ji) 217 zdv_mlt = MAX( 0._wp, MIN( zdv_mlt, zv_ip_max - v_ip_1d(ji) ) ) 224 218 225 219 !--- Pond growing ---! … … 266 260 ! v_ip = h_ip * a_ip 267 261 ! a_ip/a_i = a_ip_frac = h_ip / zaspect (cf Holland 2012, fitting SHEBA so that knowing v_ip we can distribute it to a_ip and h_ip) 268 a_ip_1d(ji) = SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) )262 a_ip_1d(ji) = MIN( a_i_1d(ji), SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) ) ) ! make sure a_ip < a_i 269 263 a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 270 264 h_ip_1d(ji) = zaspect * a_ip_frac_1d(ji) … … 283 277 & - 0.919_wp * ( t_i_1d(ji,jk) - rt0 )**2 & 284 278 & - 0.0178_wp * ( t_i_1d(ji,jk) - rt0 )**3 ! clem: error here the factor was 0.01878 instead of 0.0178 (cf Flocco 2010) 285 z perm(jk) = MAX( 0._wp, 3.e-08_wp * (sz_i_1d(ji,jk) / zsbr)**3 )279 ztmp(jk) = sz_i_1d(ji,jk) / zsbr 286 280 END DO 281 zperm = MAX( 0._wp, 3.e-08_wp * MINVAL(ztmp)**3 ) 287 282 288 283 ! Do the drainage using Darcy's law 289 zdv_flush = - MINVAL(zperm(:))* rau0 * grav * zhp * rdt_ice / (zvisc * h_i_1d(ji)) * a_ip_1d(ji)284 zdv_flush = -zperm * rau0 * grav * zhp * rdt_ice / (zvisc * h_i_1d(ji)) * a_ip_1d(ji) 290 285 zdv_flush = MAX( zdv_flush, -v_ip_1d(ji) ) 291 286 v_ip_1d(ji) = v_ip_1d(ji) + zdv_flush 292 287 293 288 !--- Set new pond area and depth ---! assuming linear relation between h_ip and a_ip_frac 294 a_ip_1d(ji) = SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) )289 a_ip_1d(ji) = MIN( a_i_1d(ji), SQRT( v_ip_1d(ji) * z1_aspect * a_i_1d(ji) ) ) ! make sure a_ip < a_i 295 290 a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 296 291 h_ip_1d(ji) = zaspect * a_ip_frac_1d(ji) … … 300 295 !--- Corrections and lid thickness ---! 301 296 IF( ln_pnd_lids ) THEN 297 !--- retrieve lid thickness from volume ---! 298 IF( a_ip_1d(ji) > epsi10 ) THEN ; h_il_1d(ji) = v_il_1d(ji) / a_ip_1d(ji) 299 ELSE ; h_il_1d(ji) = 0._wp 300 ENDIF 302 301 !--- remove ponds if lids are much larger than ponds ---! 303 IF ( v_il_1d(ji) > v_ip_1d(ji) * 10._wp ) THEN302 IF ( h_il_1d(ji) > h_ip_1d(ji) * 10._wp ) THEN 304 303 a_ip_1d(ji) = 0._wp 305 304 a_ip_frac_1d(ji) = 0._wp 306 305 h_ip_1d(ji) = 0._wp 307 v_il_1d(ji) = 0._wp 308 ENDIF 309 !--- retrieve lid thickness from volume ---! 310 IF( a_ip_1d(ji) > epsi10 ) THEN ; h_il_1d(ji) = v_il_1d(ji) / a_ip_1d(ji) 311 ELSE ; h_il_1d(ji) = 0._wp ; 306 h_il_1d(ji) = 0._wp 312 307 ENDIF 313 308 ENDIF … … 316 311 317 312 END DO 318 319 !-------------------------------------------------!320 ! How much melt pond is exposed to the atmosphere !321 !-------------------------------------------------!322 ! Calculate the melt pond effective area (used for albedo)323 WHERE ( h_il_1d(1:npti) <= zhl_min ) ; a_ip_eff_1d(1:npti) = a_ip_frac_1d(1:npti) ! lid is very thin. Expose all the pond324 ELSEWHERE( h_il_1d(1:npti) >= zhl_max ) ; a_ip_eff_1d(1:npti) = 0._wp ! lid is very thick. Cover all the pond up with ice and snow325 ELSEWHERE ; a_ip_eff_1d(1:npti) = a_ip_frac_1d(1:npti) * & ! lid is in between. Expose part of the pond326 & ( h_il_1d(1:npti) - zhl_min ) / ( zhl_max - zhl_min )327 END WHERE328 313 ! 329 314 END SUBROUTINE pnd_H12
Note: See TracChangeset
for help on using the changeset viewer.