- Timestamp:
- 2017-12-05T18:24:20+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_CNRS_2017/NEMOGCM/NEMO/LIM_SRC_3/icethd_pnd.F90
r8882 r8906 125 125 !! pond contraction: Vp = Vp * exp(0.01*MAX(Tp-Tsu,0)/Tp) 126 126 !! with Tp = -2degC 127 !! 127 !! 128 128 !! ** Tunable parameters : (no real expertise yet, ideas?) 129 129 !! … … 136 136 !! 137 137 !!------------------------------------------------------------------- 138 REAL(wp), PARAMETER :: zrmin = 0.15_wp ! minimum fraction of available meltwater retained for melt ponding139 REAL(wp), PARAMETER :: zrmax = 0.70_wp ! maximum '' '' '' '' ''140 REAL(wp), PARAMETER :: zpnd_aspect = 0.8_wp ! pond aspect ratio141 REAL(wp), PARAMETER :: zTp = -2._wp !142 143 REAL(wp) :: zfr_mlt 138 REAL(wp), PARAMETER :: zrmin = 0.15_wp ! minimum fraction of available meltwater retained for melt ponding 139 REAL(wp), PARAMETER :: zrmax = 0.70_wp ! maximum '' '' '' '' '' 140 REAL(wp), PARAMETER :: zpnd_aspect = 0.8_wp ! pond aspect ratio 141 REAL(wp), PARAMETER :: zTp = -2._wp ! reference temperature 142 143 REAL(wp) :: zfr_mlt ! fraction of available meltwater retained for melt ponding 144 144 REAL(wp) :: zdv_mlt ! available meltwater for melt ponding 145 REAL(wp) :: z1_Tp ! reference temperature 146 REAL(wp) :: z1_rhofw ! inverse freshwater density 147 REAL(wp) :: z1_zpnd_aspect ! inverse pond aspect ratio 148 REAL(wp) :: zvpnd ! dummy pond volume 145 REAL(wp) :: z1_Tp ! inverse reference temperature 146 REAL(wp) :: z1_rhofw ! inverse freshwater density 147 REAL(wp) :: z1_zpnd_aspect ! inverse pond aspect ratio 149 148 REAL(wp) :: zfac, zdum 150 149 151 INTEGER :: ji 150 INTEGER :: ji ! loop indices 152 151 !!------------------------------------------------------------------- 153 152 z1_rhofw = 1. / rhofw … … 159 158 IF( h_i_1d(ji) < rn_himin) THEN ! Case ice thickness < rn_himin ! 160 159 ! !--------------------------------! 161 !--- Remove ponds on thin ice and send water into the ocean 162 IF( ln_pnd_fwb ) THEN 163 wfx_pnd_1d(ji) = wfx_pnd_1d(ji) + h_ip_1d(ji) * a_ip_1d(ji) * rhofw * r1_rdtice 164 ENDIF 160 !--- Remove ponds on thin ice 165 161 a_ip_1d(ji) = 0._wp 166 162 a_ip_frac_1d(ji) = 0._wp … … 170 166 ! !--------------------------------! 171 167 v_ip_1d(ji) = h_ip_1d(ji) * a_ip_1d(ji) ! record pond volume at previous time step 172 zvpnd = v_ip_1d(ji)173 168 174 169 ! available meltwater for melt ponding [m, >0] and fraction 175 170 zdv_mlt = -( dh_i_surf(ji)*rhoic + dh_s_mlt(ji)*rhosn ) * z1_rhofw * a_i_1d(ji) 176 zfr_mlt = zrmin + ( zrmax - zrmin ) * a_i_1d(ji) ! !clem CICE doc177 !!! zfr_mlt = zrmin + zrmax * a_i_1d(ji) !!clem Holland paper178 179 !--- Pond gowth 171 zfr_mlt = zrmin + ( zrmax - zrmin ) * a_i_1d(ji) ! from CICE doc 172 !zfr_mlt = zrmin + zrmax * a_i_1d(ji) ! from Holland paper 173 174 !--- Pond gowth ---! 180 175 ! v_ip should never be negative, otherwise code crashes 181 176 ! MV: as far as I saw, UM5 can create very small negative v_ip values (not Prather) 182 177 v_ip_1d(ji) = MAX( 0._wp, v_ip_1d(ji) + zfr_mlt * zdv_mlt ) 183 178 179 ! melt pond mass flux (<0) 184 180 IF( ln_pnd_fwb .AND. zdv_mlt > 0._wp ) THEN 185 ! melt ponds mass flux (<0)186 181 zfac = zfr_mlt * zdv_mlt * rhofw * r1_rdtice 187 182 wfx_pnd_1d(ji) = wfx_pnd_1d(ji) - zfac 188 183 189 ! adjust ice/snow melting (>0) to take into account ponding184 ! adjust ice/snow melting flux to balance melt pond flux (>0) 190 185 zdum = zfac / ( wfx_snw_sum_1d(ji) + wfx_sum_1d(ji) ) 191 186 wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) * (1._wp + zdum) … … 193 188 ENDIF 194 189 195 !--- Pond contraction (due to refreezing) 196 v_ip_1d(ji) 197 198 ! ---Set new pond area and depth assuming linear relation between h_ip and a_ip_frac199 ! 190 !--- Pond contraction (due to refreezing) ---! 191 v_ip_1d(ji) = v_ip_1d(ji) * EXP( 0.01_wp * MAX( zTp+rt0 - t_su_1d(ji), 0._wp ) * z1_Tp ) 192 193 ! Set new pond area and depth assuming linear relation between h_ip and a_ip_frac 194 ! h_ip = zpnd_aspect * a_ip_frac = zpnd_aspect * a_ip/a_i 200 195 a_ip_1d(ji) = SQRT( v_ip_1d(ji) * z1_zpnd_aspect * a_i_1d(ji) ) 201 !NB: the SQRT has been a recurring source of crash when v_ip or a_i tuns to be even only slightly negative202 196 a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 203 197 h_ip_1d(ji) = zpnd_aspect * a_ip_frac_1d(ji) 204 205 !! clem: there is no clever way to conserve mass here...206 207 ! IF( ln_pnd_fwb ) THEN208 ! ! melt ponds mass flux (>0 when ponds shrink)209 ! zfac = ( v_ip_1d(ji) - zvpnd ) * rhofw * r1_rdtice210 ! wfx_pnd_1d(ji) = wfx_pnd_1d(ji) - zfac!!211 !212 ! ! adjust ice/snow213 ! zfac = ( v_ip_1d(ji) - zvpnd ) * rhofw / ( a_i_1d(ji)*h_s_1d(ji)*rhosn + a_i_1d(ji)*h_i_1d(ji)*rhoic )!214 !215 ! wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + h_s_1d(ji) * zfac * a_i_1d(ji) * rhosn * r1_rdtice216 ! wfx_sum_1d(ji) = wfx_sum_1d(ji) + h_i_1d(ji) * zfac * a_i_1d(ji) * rhoic * r1_rdtice217 !218 ! !!h_s_1d(ji) = h_s_1d(ji) * ( 1._wp + zfac )219 ! !!h_i_1d(ji) = h_i_1d(ji) * ( 1._wp + zfac )!220 !221 ! ENDIF222 198 223 199 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.