- Timestamp:
- 2017-09-26T15:24:17+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_dh.F90
r8562 r8563 121 121 DO jk = 1, nlay_i 122 122 DO ji = 1, nidx 123 h_i_old (ji,jk) = h t_i_1d(ji) * r1_nlay_i123 h_i_old (ji,jk) = h_i_1d(ji) * r1_nlay_i 124 124 eh_i_old(ji,jk) = e_i_1d(ji,jk) * h_i_old(ji,jk) 125 125 END DO … … 145 145 IF( t_s_1d(ji,1) > rt0 ) THEN !!! Internal melting 146 146 ! Contribution to heat flux to the ocean [W.m-2], < 0 147 hfx_res_1d(ji) = hfx_res_1d(ji) + e_s_1d(ji,1) * h t_s_1d(ji) * a_i_1d(ji) * r1_rdtice147 hfx_res_1d(ji) = hfx_res_1d(ji) + e_s_1d(ji,1) * h_s_1d(ji) * a_i_1d(ji) * r1_rdtice 148 148 ! Contribution to mass flux 149 wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + rhosn * h t_s_1d(ji) * a_i_1d(ji) * r1_rdtice149 wfx_snw_sum_1d(ji) = wfx_snw_sum_1d(ji) + rhosn * h_s_1d(ji) * a_i_1d(ji) * r1_rdtice 150 150 ! updates 151 h t_s_1d(ji) = 0._wp151 h_s_1d(ji) = 0._wp 152 152 e_s_1d (ji,1) = 0._wp 153 153 t_s_1d (ji,1) = rt0 … … 160 160 DO jk = 1, nlay_i 161 161 DO ji = 1, nidx 162 zh_i(ji,jk) = h t_i_1d(ji) * r1_nlay_i162 zh_i(ji,jk) = h_i_1d(ji) * r1_nlay_i 163 163 zeh_i(ji) = zeh_i(ji) + e_i_1d(ji,jk) * zh_i(ji,jk) 164 164 END DO … … 216 216 217 217 ! update thickness 218 h t_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdh_s_pre(ji) )218 h_s_1d(ji) = MAX( 0._wp , h_s_1d(ji) + zdh_s_pre(ji) ) 219 219 END DO 220 220 … … 225 225 DO ji = 1, nidx 226 226 ! thickness change 227 rswitch = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h t_s_1d(ji) ) )227 rswitch = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h_s_1d(ji) ) ) 228 228 rswitch = rswitch * ( MAX( 0._wp, SIGN( 1._wp, e_s_1d(ji,jk) - epsi20 ) ) ) 229 229 zdeltah (ji,jk) = - rswitch * zq_su(ji) / MAX( e_s_1d(ji,jk), epsi20 ) 230 zdeltah (ji,jk) = MAX( zdeltah(ji,jk) , - h t_s_1d(ji) ) ! bound melting230 zdeltah (ji,jk) = MAX( zdeltah(ji,jk) , - h_s_1d(ji) ) ! bound melting 231 231 zdh_s_mel(ji) = zdh_s_mel(ji) + zdeltah(ji,jk) 232 232 ! heat used to melt snow(W.m-2, >0) … … 236 236 ! updates available heat + thickness 237 237 zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * e_s_1d(ji,jk) ) 238 h t_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdeltah(ji,jk) )238 h_s_1d(ji) = MAX( 0._wp , h_s_1d(ji) + zdeltah(ji,jk) ) 239 239 END DO 240 240 END DO … … 247 247 zdeltah(1:nidx,:) = 0._wp 248 248 DO ji = 1, nidx 249 zdh_s_sub(ji) = MAX( - h t_s_1d(ji) , - evap_ice_1d(ji) * r1_rhosn * rdt_ice )249 zdh_s_sub(ji) = MAX( - h_s_1d(ji) , - evap_ice_1d(ji) * r1_rhosn * rdt_ice ) 250 250 ! remaining evap in kg.m-2 (used for ice melting later on) 251 251 zevap_rema(ji) = evap_ice_1d(ji) * rdt_ice + zdh_s_sub(ji) * rhosn … … 258 258 259 259 ! new snow thickness 260 h t_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdh_s_sub(ji) )260 h_s_1d(ji) = MAX( 0._wp , h_s_1d(ji) + zdh_s_sub(ji) ) 261 261 ! update precipitations after sublimation and correct sublimation 262 262 zdh_s_pre(ji) = zdh_s_pre(ji) + zdeltah(ji,1) … … 275 275 DO jk = 1, nlay_s 276 276 DO ji = 1,nidx 277 rswitch = MAX( 0._wp , SIGN( 1._wp, h t_s_1d(ji) - epsi20 ) )278 e_s_1d(ji,jk) = rswitch / MAX( h t_s_1d(ji), epsi20 ) * &277 rswitch = MAX( 0._wp , SIGN( 1._wp, h_s_1d(ji) - epsi20 ) ) 278 e_s_1d(ji,jk) = rswitch / MAX( h_s_1d(ji), epsi20 ) * & 279 279 & ( ( zdh_s_pre(ji) ) * zqprec(ji) + & 280 & ( h t_s_1d(ji) - zdh_s_pre(ji) ) * rhosn * ( cpic * ( rt0 - t_s_1d(ji,jk) ) + lfus ) )280 & ( h_s_1d(ji) - zdh_s_pre(ji) ) * rhosn * ( cpic * ( rt0 - t_s_1d(ji,jk) ) + lfus ) ) 281 281 END DO 282 282 END DO … … 376 376 ! update ice thickness 377 377 DO ji = 1, nidx 378 h t_i_1d(ji) = MAX( 0._wp , ht_i_1d(ji) + dh_i_surf(ji) + dh_i_sub(ji) )378 h_i_1d(ji) = MAX( 0._wp , h_i_1d(ji) + dh_i_surf(ji) + dh_i_sub(ji) ) 379 379 END DO 380 380 … … 555 555 !------------------------------------------- 556 556 DO ji = 1, nidx 557 h t_i_1d(ji) = MAX( 0._wp , ht_i_1d(ji) + dh_i_bott(ji) )557 h_i_1d(ji) = MAX( 0._wp , h_i_1d(ji) + dh_i_bott(ji) ) 558 558 END DO 559 559 … … 566 566 DO ji = 1, nidx 567 567 zq_rema(ji) = zq_su(ji) + zq_bo(ji) 568 rswitch = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h t_s_1d(ji) ) ) ! =1 if snow568 rswitch = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h_s_1d(ji) ) ) ! =1 if snow 569 569 rswitch = rswitch * MAX( 0._wp, SIGN( 1._wp, e_s_1d(ji,1) - epsi20 ) ) 570 570 zdeltah (ji,1) = - rswitch * zq_rema(ji) / MAX( e_s_1d(ji,1), epsi20 ) 571 zdeltah (ji,1) = MIN( 0._wp , MAX( zdeltah(ji,1) , - h t_s_1d(ji) ) ) ! bound melting571 zdeltah (ji,1) = MIN( 0._wp , MAX( zdeltah(ji,1) , - h_s_1d(ji) ) ) ! bound melting 572 572 dh_s_tot (ji) = dh_s_tot(ji) + zdeltah(ji,1) 573 h t_s_1d (ji) = ht_s_1d(ji) + zdeltah(ji,1)573 h_s_1d (ji) = h_s_1d(ji) + zdeltah(ji,1) 574 574 575 575 zq_rema(ji) = zq_rema(ji) + zdeltah(ji,1) * e_s_1d(ji,1) ! update available heat (J.m-2) … … 594 594 DO ji = 1, nidx 595 595 ! 596 dh_snowice(ji) = MAX( 0._wp , ( rhosn * h t_s_1d(ji) + (rhoic-rau0) * ht_i_1d(ji) ) * z1_rho )597 598 h t_i_1d(ji) = ht_i_1d(ji) + dh_snowice(ji)599 h t_s_1d(ji) = ht_s_1d(ji) - dh_snowice(ji)596 dh_snowice(ji) = MAX( 0._wp , ( rhosn * h_s_1d(ji) + (rhoic-rau0) * h_i_1d(ji) ) * z1_rho ) 597 598 h_i_1d(ji) = h_i_1d(ji) + dh_snowice(ji) 599 h_s_1d(ji) = h_s_1d(ji) - dh_snowice(ji) 600 600 601 601 ! Contribution to energy flux to the ocean [J/m2], >0 (if sst<0) … … 632 632 !------------------------------------------- 633 633 DO ji = 1, nidx 634 rswitch = 1.0 - MAX( 0._wp , SIGN( 1._wp , - h t_i_1d(ji) ) )634 rswitch = 1.0 - MAX( 0._wp , SIGN( 1._wp , - h_i_1d(ji) ) ) 635 635 t_su_1d(ji) = rswitch * t_su_1d(ji) + ( 1.0 - rswitch ) * rt0 636 636 END DO … … 639 639 DO ji = 1,nidx 640 640 ! mask enthalpy 641 rswitch = 1._wp - MAX( 0._wp , SIGN( 1._wp, - h t_s_1d(ji) ) )641 rswitch = 1._wp - MAX( 0._wp , SIGN( 1._wp, - h_s_1d(ji) ) ) 642 642 e_s_1d(ji,jk) = rswitch * e_s_1d(ji,jk) 643 643 ! recalculate t_s_1d from e_s_1d … … 646 646 END DO 647 647 648 ! --- ensure that a_i = 0 where h t_i = 0 ---649 WHERE( h t_i_1d(1:nidx) == 0._wp ) a_i_1d(1:nidx) = 0._wp648 ! --- ensure that a_i = 0 where h_i = 0 --- 649 WHERE( h_i_1d(1:nidx) == 0._wp ) a_i_1d(1:nidx) = 0._wp 650 650 ! 651 651 END SUBROUTINE ice_thd_dh
Note: See TracChangeset
for help on using the changeset viewer.