- Timestamp:
- 2020-02-18T16:21:31+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.1_add_pond_lids/src/ICE/icethd_pnd.F90
r11715 r12401 129 129 REAL(wp), PARAMETER :: zpnd_aspect = 0.8_wp ! pond aspect ratio 130 130 REAL(wp), PARAMETER :: zTp = -2._wp ! reference temperature 131 REAL(wp), PARAMETER :: freezing_t = 273.0_wp ! temperature below which refreezing occurs 131 132 ! 132 133 REAL(wp) :: zfr_mlt ! fraction of available meltwater retained for melt ponding 133 134 REAL(wp) :: zdv_mlt ! available meltwater for melt ponding 135 REAL(wp) :: actual_mlt ! actual melt water used to make melt ponds (per m2). 136 ! Need to multiply this by ice area to work on volumes. 134 137 REAL(wp) :: z1_Tp ! inverse reference temperature 135 138 REAL(wp) :: z1_rhow ! inverse freshwater density 136 139 REAL(wp) :: z1_zpnd_aspect ! inverse pond aspect ratio 137 140 REAL(wp) :: zfac, zdum 141 REAL(wp) :: t_grad ! Temperature deficit for refreezing 142 REAL(wp) :: omega_dt ! Time independent accumulated variables used for freezing 143 REAL(wp) :: lh_ip_end ! Lid thickness at end of timestep (temporary variable) 144 REAL(wp) :: actual_frz ! Amount of melt pond that freezes 138 145 ! 139 146 INTEGER :: ji ! loop indices … … 142 149 z1_zpnd_aspect = 1._wp / zpnd_aspect 143 150 z1_Tp = 1._wp / zTp 151 152 ! Define time-independent field for use in refreezing 153 omega_dt = 2.0_wp * rcnd_i * rdt_ice / (rLfus * rhow) 144 154 145 155 DO ji = 1, npti … … 151 161 a_ip_frac_1d(ji) = 0._wp 152 162 h_ip_1d(ji) = 0._wp 163 lh_ip_1d(ji) = 0._wp 164 165 actual_mlt = 0._wp 166 actual_frz = 0._wp 153 167 ! !--------------------------------! 154 168 ELSE ! Case ice thickness >= rn_himin ! … … 157 171 ! 158 172 ! available meltwater for melt ponding [m, >0] and fraction 159 zdv_mlt = -( dh_i_sum(ji)*rhoi + dh_s_mlt(ji)*rhos ) * z1_rhow * a_i_1d(ji)173 zdv_mlt = -( dh_i_sum(ji)*rhoi + dh_s_mlt(ji)*rhos ) * z1_rhow 160 174 zfr_mlt = zrmin + ( zrmax - zrmin ) * a_i_1d(ji) ! from CICE doc 161 175 !zfr_mlt = zrmin + zrmax * a_i_1d(ji) ! from Holland paper 176 actual_mlt = zfr_mlt * zdv_mlt 162 177 ! 163 178 !--- Pond gowth ---! 164 ! v_ip should never be negative, otherwise code crashes 165 v_ip_1d(ji) = MAX( 0._wp, v_ip_1d(ji) + zfr_mlt * zdv_mlt ) 166 ! 179 v_ip_1d(ji) = v_ip_1d(ji) + actual_mlt * a_i_1d(ji) 180 ! 181 !--- Lid shrinking ---! 182 lh_ip_1d(ji) = lh_ip_1d(ji) - actual_mlt 183 ! 184 ! 185 !--- Pond contraction (due to refreezing) ---! 186 IF ( t_su_1d(ji) < freezing_t .AND. v_ip_1d(ji) > 0._wp ) THEN 187 t_grad = freezing_t - t_su_1d(ji) 188 189 ! The following equation is a rearranged form of: 190 ! lid_thickness_end - lid_thickness_start = rcnd_i * t_grad * rdt_ice / (0.5*(lid_thickness_end + lid_thickness_start) * rLfus * rhow) 191 ! where: lid_thickness_start = lh_ip_1d(ji) 192 ! lid_thickness_end = lh_ip_end 193 ! omega_dt is a bunch of terms in the equation that do not change 194 ! note the use of rhow instead of rhoi as we are working with volumes and it is easier if the water and ice volumes (for the lid and the pond) are the same 195 ! (have the same density). The lid will eventually remelt anyway so it doesn't matter if we make this simplification. 196 197 lh_ip_end = SQRT(omega_dt * t_grad + lh_ip_1d(ji)**2) 198 actual_frz = lh_ip_end - lh_ip_1d(ji) 199 200 ! Pond shrinking 201 v_ip_1d(ji) = v_ip_1d(ji) - actual_frz * a_ip_1d(ji) 202 203 ! Lid growing 204 lh_ip_1d(ji) = lh_ip_1d(ji) + actual_frz 205 ELSE 206 actual_frz = 0._wp 207 END IF 208 167 209 ! melt pond mass flux (<0) 168 210 IF( zdv_mlt > 0._wp ) THEN 169 zfac = zfr_mlt * zdv_mlt* rhow * r1_rdtice211 zfac = actual_mlt * a_i_1d(ji) * rhow * r1_rdtice 170 212 wfx_pnd_1d(ji) = wfx_pnd_1d(ji) - zfac 171 213 ! … … 176 218 ENDIF 177 219 ! 178 !--- Pond contraction (due to refreezing) ---! 179 v_ip_1d(ji) = v_ip_1d(ji) * EXP( 0.01_wp * MAX( zTp+rt0 - t_su_1d(ji), 0._wp ) * z1_Tp ) 220 ! Make sure pond volume or lid thickness has not gone negative 221 IF ( v_ip_1d(ji) < 0._wp ) v_ip_1d(ji) = 0._wp 222 IF ( lh_ip_1d(ji) < 0._wp ) lh_ip_1d(ji) = 0._wp 180 223 ! 181 224 ! Set new pond area and depth assuming linear relation between h_ip and a_ip_frac … … 184 227 a_ip_frac_1d(ji) = a_ip_1d(ji) / a_i_1d(ji) 185 228 h_ip_1d(ji) = zpnd_aspect * a_ip_frac_1d(ji) 229 230 ! If lid thickness is ten times greater than pond thickness then remove pond 231 IF ( lh_ip_1d(ji) > h_ip_1d(ji) * 10._wp ) THEN 232 a_ip_1d(ji) = 0._wp 233 a_ip_frac_1d(ji) = 0._wp 234 h_ip_1d(ji) = 0._wp 235 lh_ip_1d(ji) = 0._wp 236 v_ip_1d(ji) = 0._wp 237 END IF 186 238 ! 187 239 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.