- Timestamp:
- 2012-10-26T12:13:21+02:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90
r3419 r3517 190 190 191 191 ! is there any ice left ? 192 zindic = MAX( rzero, SIGN( rone, v_i(ji,jj,jl) - epsi10 ) )192 zindic = MAX( rzero , SIGN( rone, v_i(ji,jj,jl) - epsi10 ) ) 193 193 !=1 if hi > 1e-3 and 0 if not 194 zdvres = MAX(0.0,-v_i(ji,jj,jl)) !residual volume if too much ice was molten194 zdvres = MAX( 0.0 , -v_i(ji,jj,jl) ) !residual volume if too much ice was molten 195 195 !this quantity is positive 196 v_i(ji,jj,jl) = zindic *v_i(ji,jj,jl) !ice volume cannot be negative196 v_i(ji,jj,jl) = zindic * v_i(ji,jj,jl) !ice volume cannot be negative 197 197 !correct thermodynamic ablation 198 d_v_i_thd(ji,jj,jl) 198 d_v_i_thd(ji,jj,jl) = zindic * d_v_i_thd(ji,jj,jl) + (1.0-zindic) * (-zviold - d_v_i_trp(ji,jj,jl)) 199 199 ! THIS IS NEW 200 d_a_i_thd(ji,jj,jl) = zindic * d_a_i_thd(ji,jj,jl) + & 201 (1.0-zindic) * (-old_a_i(ji,jj,jl)) 200 d_a_i_thd(ji,jj,jl) = zindic * d_a_i_thd(ji,jj,jl) + (1.0-zindic) * (-old_a_i(ji,jj,jl)) 202 201 203 202 !residual salt flux if ice is over-molten 204 fsalt_res(ji,jj) = fsalt_res(ji,jj) + ( sss_m(ji,jj) - sm_i(ji,jj,jl) ) * & 205 ( rhoic * zdvres / rdt_ice ) 206 ! fheat_res(ji,jj) = fheat_res(ji,jj) + rhoic * lfus * zdvres / rdt_ice 203 fsalt_res(ji,jj) = fsalt_res(ji,jj) - sm_i(ji,jj,jl) * ( rhoic * zdvres * r1_rdtice ) 204 ! fheat_res(ji,jj) = fheat_res(ji,jj) + rhoic * lfus * zdvres * r1_rdtice 207 205 208 206 ! is there any snow left ? 209 zindsn = MAX( rzero, SIGN( rone, v_s(ji,jj,jl) - epsi10 ))210 zvsold 211 zdvres = MAX(0.0,-v_s(ji,jj,jl))!residual volume if too much ice was molten207 zindsn = MAX( rzero, SIGN( rone , v_s(ji,jj,jl) - epsi10 ) ) 208 zvsold = v_s(ji,jj,jl) 209 zdvres = MAX( 0.0 , -v_s(ji,jj,jl) ) !residual volume if too much ice was molten 212 210 !this quantity is positive 213 211 v_s(ji,jj,jl) = zindsn*v_s(ji,jj,jl) !snow volume cannot be negative … … 215 213 d_v_s_thd(ji,jj,jl) = zindsn * d_v_s_thd(ji,jj,jl) + & 216 214 (1.0-zindsn) * (-zvsold - d_v_s_trp(ji,jj,jl)) 217 !unsure correction on salt flux.... maybe future will tell it was not that right 218 219 !residual salt flux if snow is over-molten 220 fsalt_res(ji,jj) = fsalt_res(ji,jj) + sss_m(ji,jj) * ( rhosn * zdvres / rdt_ice ) 221 !this flux will be positive if snow was over-molten 222 ! fheat_res(ji,jj) = fheat_res(ji,jj) + rhosn * lfus * zdvres / rdt_ice 215 216 !no salt flux when snow is over-molten 217 ! fheat_res(ji,jj) = fheat_res(ji,jj) + rhosn * lfus * zdvres * r1_rdtice 223 218 ENDIF 224 219 END DO !ji … … 306 301 !-------------- 307 302 308 IF( num_sal == 2 .OR. num_sal == 4 ) THEN ! general case303 IF( num_sal == 2 ) THEN ! Prognostic salinity [Sice=F(z,t)] 309 304 ! 310 305 IF( ln_nicep ) THEN … … 317 312 WRITE(numout,*) ' v_s : ', v_s(jiindx, jjindx, 1:jpl) 318 313 ENDIF 319 314 ! 320 315 smv_i(:,:,:) = smv_i(:,:,:) + d_smv_i_thd(:,:,:) + d_smv_i_trp(:,:,:) 321 316 ! … … 616 611 DO ji = 1, jpi 617 612 IF ( internal_melt(ji,jj,jl) == 1 ) THEN 618 v_s(ji,jj,jl) = 0. 0619 e_s(ji,jj,1,jl) = 0. 0613 v_s(ji,jj,jl) = 0._wp 614 e_s(ji,jj,1,jl) = 0._wp 620 615 ! ! release heat 621 fheat_res(ji,jj) = fheat_res(ji,jj) & 622 + ze_s * v_s(ji,jj,jl) / rdt_ice 616 fheat_res(ji,jj) = fheat_res(ji,jj) + ze_s * v_s(ji,jj,jl) * r1_rdtice 623 617 ! release mass 624 rdm_snw (ji,jj) = rdm_snw(ji,jj) + rhosn * v_s(ji,jj,jl)618 rdm_snw (ji,jj) = rdm_snw (ji,jj) + rhosn * v_s(ji,jj,jl) 625 619 ENDIF 626 620 END DO … … 648 642 ! ENDIF 649 643 IF ((oa_i(ji,jj,jl)-1.0)*86400.0.gt.(rdt_ice*numit*a_i(ji,jj,jl))) THEN 650 oa_i(ji,jj,jl) = rdt_ice *numit/86400.0*a_i(ji,jj,jl)644 oa_i(ji,jj,jl) = rdt_ice * numit / 86400.0 * a_i(ji,jj,jl) 651 645 ENDIF 652 646 oa_i(ji,jj,jl) = zindb*zindic*oa_i(ji,jj,jl) … … 657 651 ! v_s(ji,jj,jl) = MAX( zindb * v_s(ji,jj,jl), 0.0) 658 652 ! snow thickness cannot be smaller than 1e-6 659 v_s(ji,jj,jl) = zindsn *v_s(ji,jj,jl)*zindb653 v_s(ji,jj,jl) = zindsn * v_s(ji,jj,jl) * zindb 660 654 v_s(ji,jj,jl) = v_s(ji,jj,jl) * MAX( 0.0 , SIGN( 1.0 , v_s(ji,jj,jl) - epsi06 ) ) 661 655 … … 737 731 !--------------------- 738 732 739 IF ( ( num_sal .EQ. 2 ) .OR. ( num_sal .EQ. 4 ) ) THEN ! general case740 733 IF( num_sal == 2 ) THEN ! Prognostic salinity [Sice=F(z,t)] 734 ! 741 735 DO jl = 1, jpl 742 736 DO jk = 1, nlay_i 743 737 DO jj = 1, jpj 744 DO ji = 1, jpi 745 ! salinity stays in bounds 746 smv_i(ji,jj,jl) = MAX(MIN((rhoic-rhosn)/rhoic*sss_m(ji,jj),smv_i(ji,jj,jl)), & 747 0.1 * v_i(ji,jj,jl) ) 738 DO ji = 1, jpi ! salinity stays in bounds 739 smv_i(ji,jj,jl) = MAX(MIN((rhoic-rhosn)/rhoic*sss_m(ji,jj),smv_i(ji,jj,jl)), 0.1 * v_i(ji,jj,jl) ) 748 740 i_ice_switch = 1.0-MAX(0.0,SIGN(1.0,-v_i(ji,jj,jl))) 749 smv_i(ji,jj,jl) = i_ice_switch*smv_i(ji,jj,jl) + & 750 0.1*(1.0-i_ice_switch)*v_i(ji,jj,jl) 741 smv_i(ji,jj,jl) = i_ice_switch*smv_i(ji,jj,jl) + 0.1*(1.0-i_ice_switch)*v_i(ji,jj,jl) 751 742 END DO ! ji 752 743 END DO ! jj 753 744 END DO !jk 754 745 END DO !jl 755 746 ! 756 747 ENDIF 757 748 … … 819 810 ! 1) Count the number of existing categories 820 811 DO jl = 1, jpl 812 !!cr : comment the second line of zindb definition, and use epsi04 in the 1st one 821 813 zindb = MAX( rzero, SIGN( rone, v_i(ji,jj,jl) - epsi03 ) ) 822 814 zindb = MAX( rzero, SIGN( rone, v_i(ji,jj,jl) ) )
Note: See TracChangeset
for help on using the changeset viewer.