- Timestamp:
- 2017-09-27T12:09:10+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
r8564 r8565 117 117 118 118 ! initialize layer thicknesses and enthalpies 119 h_i_old (1:n idx,0:nlay_i+1) = 0._wp120 eh_i_old(1:n idx,0:nlay_i+1) = 0._wp119 h_i_old (1:npti,0:nlay_i+1) = 0._wp 120 eh_i_old(1:npti,0:nlay_i+1) = 0._wp 121 121 DO jk = 1, nlay_i 122 DO ji = 1, n idx122 DO ji = 1, npti 123 123 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) … … 130 130 !------------------------------------------------------------------------------! 131 131 ! 132 DO ji = 1, n idx132 DO ji = 1, npti 133 133 zdum = qns_ice_1d(ji) + ( 1._wp - i0(ji) ) * qsr_ice_1d(ji) - fc_su(ji) 134 134 zf_tt(ji) = fc_bo_i(ji) + fhtur_1d(ji) + fhld_1d(ji) … … 142 142 ! (should not happen but sometimes it does) 143 143 !------------------------------------------------------------------------------! 144 DO ji = 1, n idx144 DO ji = 1, npti 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 … … 159 159 !------------------------------------------------------------! 160 160 DO jk = 1, nlay_i 161 DO ji = 1, n idx161 DO ji = 1, npti 162 162 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) … … 183 183 ! Martin Vancoppenolle, December 2006 184 184 185 CALL ice_thd_snwblow( 1. - at_i_1d(1:n idx), zsnw(1:nidx) ) ! snow distribution over ice after wind blowing186 187 zdeltah(1:n idx,:) = 0._wp188 DO ji = 1, n idx185 CALL ice_thd_snwblow( 1. - at_i_1d(1:npti), zsnw(1:npti) ) ! snow distribution over ice after wind blowing 186 187 zdeltah(1:npti,:) = 0._wp 188 DO ji = 1, npti 189 189 !----------- 190 190 ! Snow fall … … 220 220 221 221 ! If heat still available (zq_su > 0), then melt more snow 222 zdeltah(1:n idx,:) = 0._wp223 zdh_s_mel(1:n idx) = 0._wp222 zdeltah(1:npti,:) = 0._wp 223 zdh_s_mel(1:npti) = 0._wp 224 224 DO jk = 1, nlay_s 225 DO ji = 1, n idx225 DO ji = 1, npti 226 226 ! thickness change 227 227 rswitch = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h_s_1d(ji) ) ) … … 245 245 ! qla_ice is always >=0 (upwards), heat goes to the atmosphere, therefore snow sublimates 246 246 ! clem comment: not counted in mass/heat exchange in iceupdate.F90 since this is an exchange with atm. (not ocean) 247 zdeltah(1:n idx,:) = 0._wp248 DO ji = 1, n idx247 zdeltah(1:npti,:) = 0._wp 248 DO ji = 1, npti 249 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) … … 265 265 266 266 ! --- Update snow diags --- ! 267 DO ji = 1, n idx267 DO ji = 1, npti 268 268 dh_s_tot(ji) = zdh_s_mel(ji) + zdh_s_pre(ji) + zdh_s_sub(ji) 269 269 END DO … … 274 274 ! new temp and enthalpy of the snow (remaining snow precip + remaining pre-existing snow) 275 275 DO jk = 1, nlay_s 276 DO ji = 1,n idx276 DO ji = 1,npti 277 277 rswitch = MAX( 0._wp , SIGN( 1._wp, h_s_1d(ji) - epsi20 ) ) 278 278 e_s_1d(ji,jk) = rswitch / MAX( h_s_1d(ji), epsi20 ) * & … … 285 285 ! 3.4 Surface ice ablation 286 286 !-------------------------- 287 zdeltah(1:n idx,:) = 0._wp ! important287 zdeltah(1:npti,:) = 0._wp ! important 288 288 DO jk = 1, nlay_i 289 DO ji = 1, n idx289 DO ji = 1, npti 290 290 ztmelts = - tmut * sz_i_1d(ji,jk) ! Melting point of layer k [C] 291 291 … … 375 375 END DO 376 376 ! update ice thickness 377 DO ji = 1, n idx377 DO ji = 1, npti 378 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 381 381 ! remaining "potential" evap is sent to ocean 382 DO ji = 1, n idx382 DO ji = 1, npti 383 383 wfx_err_sub_1d(ji) = wfx_err_sub_1d(ji) - zevap_rema(ji) * a_i_1d(ji) * r1_rdtice ! <=0 (net evap for the ocean in kg.m-2.s-1) 384 384 END DO … … 407 407 408 408 ! Iterative procedure 409 DO ji = 1, n idx409 DO ji = 1, npti 410 410 IF( zf_tt(ji) < 0._wp ) THEN 411 411 DO iter = 1, num_iter_max … … 478 478 ! 4.2 Basal melt 479 479 !---------------- 480 zdeltah(1:n idx,:) = 0._wp ! important480 zdeltah(1:npti,:) = 0._wp ! important 481 481 DO jk = nlay_i, 1, -1 482 DO ji = 1, n idx482 DO ji = 1, npti 483 483 IF( zf_tt(ji) > 0._wp .AND. jk > icount(ji,jk) ) THEN ! do not calculate where layer has already disappeared by surface melting 484 484 … … 554 554 ! Update temperature, energy 555 555 !------------------------------------------- 556 DO ji = 1, n idx556 DO ji = 1, npti 557 557 h_i_1d(ji) = MAX( 0._wp , h_i_1d(ji) + dh_i_bott(ji) ) 558 558 END DO … … 563 563 ! If heat still available for melting and snow remains, then melt more snow 564 564 !------------------------------------------- 565 zdeltah(1:n idx,:) = 0._wp ! important566 DO ji = 1, n idx565 zdeltah(1:npti,:) = 0._wp ! important 566 DO ji = 1, npti 567 567 zq_rema(ji) = zq_su(ji) + zq_bo(ji) 568 568 rswitch = 1._wp - MAX( 0._wp, SIGN( 1._wp, - h_s_1d(ji) ) ) ! =1 if snow … … 592 592 ! flooding of seawater transforms snow into ice dh_snowice is positive for the ice 593 593 z1_rho = 1._wp / ( rhosn+rau0-rhoic ) 594 DO ji = 1, n idx594 DO ji = 1, npti 595 595 ! 596 596 dh_snowice(ji) = MAX( 0._wp , ( rhosn * h_s_1d(ji) + (rhoic-rau0) * h_i_1d(ji) ) * z1_rho ) … … 631 631 ! Update temperature, energy 632 632 !------------------------------------------- 633 DO ji = 1, n idx633 DO ji = 1, npti 634 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 … … 637 637 638 638 DO jk = 1, nlay_s 639 DO ji = 1,n idx639 DO ji = 1,npti 640 640 ! mask enthalpy 641 641 rswitch = 1._wp - MAX( 0._wp , SIGN( 1._wp, - h_s_1d(ji) ) ) … … 647 647 648 648 ! --- ensure that a_i = 0 where h_i = 0 --- 649 WHERE( h_i_1d(1:n idx) == 0._wp ) a_i_1d(1:nidx) = 0._wp649 WHERE( h_i_1d(1:npti) == 0._wp ) a_i_1d(1:npti) = 0._wp 650 650 ! 651 651 END SUBROUTINE ice_thd_dh
Note: See TracChangeset
for help on using the changeset viewer.