- Timestamp:
- 2017-11-20T13:54:32+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r8183_ICEMODEL_svn_removed/NEMOGCM/NEMO/LIM_SRC_3/icevar.F90
r8738 r8752 97 97 et_i(:,:) = SUM( SUM( e_i(:,:,:,:), dim=4 ), dim=3 ) 98 98 99 ! MV MP 2016 100 IF ( ln_pnd ) THEN ! Melt pond 101 at_ip(:,:) = SUM( a_ip(:,:,:), dim=3 ) 102 vt_ip(:,:) = SUM( v_ip(:,:,:), dim=3 ) 103 ENDIF 104 ! END MP 2016 99 at_ip(:,:) = SUM( a_ip(:,:,:), dim=3 ) ! melt ponds 100 vt_ip(:,:) = SUM( v_ip(:,:,:), dim=3 ) 105 101 106 102 ato_i(:,:) = 1._wp - at_i(:,:) ! open water fraction … … 167 163 !! a criteria for icy area (i.e. a_i > epsi20 and v_i > epsi20 ) 168 164 169 !------------------------------------------------------- 170 ! Ice thickness, snow thickness, ice salinity, ice age 171 !------------------------------------------------------- 165 !--------------------------------------------------------------- 166 ! Ice thickness, snow thickness, ice salinity, ice age and ponds 167 !--------------------------------------------------------------- 172 168 ! !--- inverse of the ice area 173 169 WHERE( a_i(:,:,:) > epsi20 ) ; z1_a_i(:,:,:) = 1._wp / a_i(:,:,:) … … 178 174 ELSEWHERE ; z1_v_i(:,:,:) = 0._wp 179 175 END WHERE 180 ! 181 h_i(:,:,:) = v_i (:,:,:) * z1_a_i(:,:,:) !--- ice thickness176 ! !--- ice thickness 177 h_i(:,:,:) = v_i (:,:,:) * z1_a_i(:,:,:) 182 178 183 179 zhmax = hi_max(jpl) 184 180 z1_zhmax = 1._wp / hi_max(jpl) 185 WHERE( h_i(:,:,jpl) > zhmax ) !---bound h_i by hi_max (i.e. 99 m) with associated update of ice area181 WHERE( h_i(:,:,jpl) > zhmax ) ! bound h_i by hi_max (i.e. 99 m) with associated update of ice area 186 182 h_i (:,:,jpl) = zhmax 187 183 a_i (:,:,jpl) = v_i(:,:,jpl) * z1_zhmax 188 z1_a_i(:,:,jpl) = zhmax * z1_v_i(:,:,jpl) ! NB: v_i always /=0 as h_i > hi_max184 z1_a_i(:,:,jpl) = zhmax * z1_v_i(:,:,jpl) 189 185 END WHERE 190 191 h_s(:,:,:) = v_s (:,:,:) * z1_a_i(:,:,:) !--- snow thickness 192 193 o_i(:,:,:) = oa_i(:,:,:) * z1_a_i(:,:,:) !--- ice age 194 195 IF( nn_icesal == 2 ) THEN !--- salinity (with a minimum value imposed everywhere) 186 ! !--- snow thickness 187 h_s(:,:,:) = v_s (:,:,:) * z1_a_i(:,:,:) 188 ! !--- ice age 189 o_i(:,:,:) = oa_i(:,:,:) * z1_a_i(:,:,:) 190 ! !--- pond fraction and thickness 191 a_ip_frac(:,:,:) = a_ip(:,:,:) * z1_a_i(:,:,:) 192 WHERE( a_ip_frac(:,:,:) > epsi20 ) ; h_ip(:,:,:) = v_ip(:,:,:) * z1_a_i(:,:,:) / a_ip_frac(:,:,:) 193 ELSEWHERE ; h_ip(:,:,:) = 0._wp 194 END WHERE 195 ! 196 ! !--- salinity (with a minimum value imposed everywhere) 197 IF( nn_icesal == 2 ) THEN 196 198 WHERE( v_i(:,:,:) > epsi20 ) ; s_i(:,:,:) = MAX( rn_simin , MIN( rn_simax, sv_i(:,:,:) * z1_v_i(:,:,:) ) ) 197 199 ELSEWHERE ; s_i(:,:,:) = rn_simin 198 200 END WHERE 199 201 ENDIF 200 201 CALL ice_var_salprof ! salinity profile 202 CALL ice_var_salprof ! salinity profile 202 203 203 204 !------------------- … … 242 243 vt_s (:,:) = SUM( v_s, dim=3 ) 243 244 at_i (:,:) = SUM( a_i, dim=3 ) 244 245 ! MV MP 2016246 ! probably should resum for melt ponds ???247 248 245 ! 249 246 END SUBROUTINE ice_var_glo2eqv … … 258 255 !!------------------------------------------------------------------- 259 256 ! 260 v_i (:,:,:) = h_i(:,:,:) * a_i(:,:,:) 261 v_s (:,:,:) = h_s(:,:,:) * a_i(:,:,:) 262 sv_i(:,:,:) = s_i(:,:,:) * v_i(:,:,:) 257 v_i (:,:,:) = h_i (:,:,:) * a_i (:,:,:) 258 v_s (:,:,:) = h_s (:,:,:) * a_i (:,:,:) 259 sv_i(:,:,:) = s_i (:,:,:) * v_i (:,:,:) 260 v_ip(:,:,:) = h_ip(:,:,:) * a_ip(:,:,:) 263 261 ! 264 262 END SUBROUTINE ice_var_eqv2glo … … 478 476 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_s (ji,jj,jl) * rhosn * r1_rdtice 479 477 hfx_res(ji,jj) = hfx_res(ji,jj) - (1._wp - zswitch(ji,jj) ) * e_s (ji,jj,1,jl) * r1_rdtice ! W.m-2 <0 478 IF( ln_pnd_fwb ) THEN 479 wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_ip(ji,jj,jl) * rhofw * r1_rdtice 480 ENDIF 480 481 !----------------------------------------------------------------- 481 482 ! Zap snow energy … … 498 499 h_s (ji,jj,jl) = h_s (ji,jj,jl) * zswitch(ji,jj) 499 500 500 END DO 501 END DO 502 503 IF( ln_pnd ) THEN 504 DO jj = 1 , jpj 505 DO ji = 1 , jpi 506 IF( ln_pnd_fw ) & 507 & wfx_res(ji,jj) = wfx_res(ji,jj) + (1._wp - zswitch(ji,jj) ) * v_ip(ji,jj,jl) * rhofw * r1_rdtice 508 a_ip (ji,jj,jl) = a_ip (ji,jj,jl) * zswitch(ji,jj) 509 v_ip (ji,jj,jl) = v_ip (ji,jj,jl) * zswitch(ji,jj) 510 END DO 511 END DO 512 ENDIF 513 501 a_ip (ji,jj,jl) = a_ip (ji,jj,jl) * zswitch(ji,jj) 502 v_ip (ji,jj,jl) = v_ip (ji,jj,jl) * zswitch(ji,jj) 503 504 END DO 505 END DO 506 514 507 END DO 515 508 … … 520 513 ! open water = 1 if at_i=0 521 514 WHERE( at_i(:,:) == 0._wp ) ato_i(:,:) = 1._wp 515 522 516 ! 523 517 END SUBROUTINE ice_var_zapsmall
Note: See TracChangeset
for help on using the changeset viewer.