- Timestamp:
- 2010-05-04T10:39:48+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/LIM_SRC_2/limthd_zdf_2.F90
r1857 r1858 4 4 !! thermodynamic growth and decay of the ice 5 5 !!====================================================================== 6 !! History : 1.0 ! 01-04 (LIM) Original code 7 !! 2.0 ! 02-08 (C. Ethe, G. Madec) F90 6 !! History : LIM ! 2001-04 (UCL) Original code 7 !! 2.0 ! 2002-08 (C. Ethe, G. Madec) re-writing F90 8 !! 2.1 ! 2010-05 (Y. Aksenov, M. Vancoppenolle, G. Madec) add heat content exchanges 8 9 !!---------------------------------------------------------------------- 9 10 #if defined key_lim2 … … 158 159 , zdrfrl1, zdrfrl2 & ! tempory scalars 159 160 , zihsn, zidhb, zihic, zihe, zihq, ziexp, ziqf, zihnf, zibmlt, ziqr, zihgnew, zind 161 REAL(wp) :: ztmp ! temporary scalar 160 162 !!---------------------------------------------------------------------- 161 163 … … 168 170 169 171 DO ji = kideb , kiut 172 ! do nothing if the snow (ice) thickness falls below its minimum thickness 170 173 zihsn = MAX( zzero , SIGN( zone , hsndif - h_snow_1d(ji) ) ) 171 zihic = MAX( zzero , SIGN( zone , hicdif - h_ice_1d(ji) ) ) 172 !--computation of energy due to surface melting 173 zqcmlt(ji,1) = ( MAX ( zzero , & 174 & rcpsn * h_snow_1d(ji) * ( tbif_1d(ji,1) - rt0_snow ) ) ) * ( 1.0 - zihsn ) 175 !--computation of energy due to bottom melting 176 zqcmlt(ji,2) = ( MAX( zzero , & 177 & rcpic * ( tbif_1d(ji,2) - rt0_ice ) * ( h_ice_1d(ji) / 2. ) ) & 178 & + MAX( zzero , & 179 & rcpic * ( tbif_1d(ji,3) - rt0_ice ) * ( h_ice_1d(ji) / 2. ) ) & 174 zihic = MAX( zzero , SIGN( zone , hicdif - h_ice_1d (ji) ) ) 175 !--energy required to bring snow to its melting point (rt0_snow) 176 zqcmlt(ji,1) = ( MAX ( zzero , rcpsn * h_snow_1d(ji) * ( tbif_1d(ji,1) - rt0_snow ) ) ) * ( 1.0 - zihsn ) 177 !--energy required to bring ice to its melting point (rt0_ice) 178 zqcmlt(ji,2) = ( MAX( zzero , rcpic * ( tbif_1d(ji,2) - rt0_ice ) * ( h_ice_1d(ji) / 2. ) ) & 179 & + MAX( zzero , rcpic * ( tbif_1d(ji,3) - rt0_ice ) * ( h_ice_1d(ji) / 2. ) ) & 180 180 & ) * ( 1.0 - zihic ) 181 !--limitation of 181 !--limitation of snow/ice system internal temperature 182 182 tbif_1d(ji,1) = MIN( rt0_snow, tbif_1d(ji,1) ) 183 183 tbif_1d(ji,2) = MIN( rt0_ice , tbif_1d(ji,2) ) … … 478 478 dvsbq_1d(ji) = ( 1.0 - frld_1d(ji) ) * ( h_snow_1d(ji) - zhsnw_old(ji) - zsprecip(ji) ) 479 479 dvsbq_1d(ji) = MIN( zzero , dvsbq_1d(ji) ) 480 rdmsnif_1d(ji) = rhosn * dvsbq_1d(ji) 480 ztmp = rhosn * dvsbq_1d(ji) 481 rdm_snw_1d(ji) = ztmp 482 !--heat content of the water provided to the ocean (referenced to rt0) 483 rdq_snw_1d(ji) = cpic * ztmp * ( rt0_snow - rt0 ) 481 484 !-- If the snow is completely melted the remaining heat is used to melt ice 482 485 zqsn_mlt_rem = MAX( zzero , -zhsn ) * xlsn … … 621 624 !---updating new ice thickness and computing the newly formed ice mass 622 625 zhicnew = zihgnew * zhicnew 623 rdmicif_1d(ji) = rdmicif_1d(ji) + ( 1.0 - frld_1d(ji) ) * ( zhicnew - h_ice_1d(ji) ) * rhoic 626 ztmp = ( 1.0 - frld_1d(ji) ) * ( zhicnew - h_ice_1d(ji) ) * rhoic 627 rdm_ice_1d(ji) = rdm_ice_1d(ji) + ztmp 628 !---heat content of the water provided to the ocean (referenced to rt0) 629 ! use of rt0_ice is OK for melting ice, in case of freezing tfu_1d should be used. This is done in 9.5 section (see below) 630 rdq_ice_1d(ji) = cpic * ztmp * ( rt0_ice - rt0 ) 624 631 !---updating new snow thickness and computing the newly formed snow mass 625 632 zhsnfi = zhsn + zdhsnm 626 633 h_snow_1d(ji) = MAX( zzero , zhsnfi ) 627 rdmsnif_1d(ji) = rdmsnif_1d(ji) + ( 1.0 - frld_1d(ji) ) * ( h_snow_1d(ji) - zhsn ) * rhosn 634 ztmp = ( 1.0 - frld_1d(ji) ) * ( h_snow_1d(ji) - zhsn ) * rhosn 635 rdm_snw_1d(ji) = rdm_snw_1d(ji) + ztmp 636 !---updating the heat content of the water provided to the ocean (referenced to rt0) 637 rdq_snw_1d(ji) = rdq_snw_1d(ji) + cpic * ztmp * ( rt0_snow - rt0 ) 628 638 !--remaining energy in case of total ablation 629 639 zqocea(ji) = - ( zihsn * xlic * zdhicm + xlsn * ( zhsnfi - h_snow_1d(ji) ) ) * ( 1.0 - frld_1d(ji) ) … … 657 667 tbif_1d(ji,3) = zihgnew * ztb3 + ( 1.0 - zihgnew ) * tfu_1d(ji) 658 668 h_ice_1d(ji) = zhicnew 659 END DO 669 ! update the ice heat content given to the ocean in freezing case (part from rt0_ice to tfu_1d) 670 ztmp = ( 1. - zidhb ) * rhoic * dvbbq_1d(ji) 671 rdqicif_1d(ji) = rdqicif_1d(ji) + cpic * ztmp * ( tfu_1d(ji) - rt0_ice ) 672 END DO 660 673 661 674 … … 698 711 dmgwi_1d(ji) = dmgwi_1d(ji) + ( 1.0 -frld_1d(ji) ) * ( h_snow_1d(ji) - zhsnnew ) * rhosn 699 712 !--- volume change of ice and snow (used for ocean-ice freshwater flux computation) 700 rdmicif_1d(ji) = rdmicif_1d(ji) + ( 1.0 - frld_1d(ji) ) * ( zhicnew - h_ice_1d (ji) ) * rhoic 701 rdmsnif_1d(ji) = rdmsnif_1d(ji) + ( 1.0 - frld_1d(ji) ) * ( zhsnnew - h_snow_1d(ji) ) * rhosn 713 ztmp = ( 1.0 - frld_1d(ji) ) * ( zhicnew - h_ice_1d (ji) ) * rhoic 714 rdm_ice_1d(ji) = rdm_ice_1d(ji) + ztmp 715 rdq_ice_1d(ji) = rdq_ice_1d(ji) + cpic * ztmp * ( tfu_1d(ji) - rt0 ) 716 !!gm BUG ?? snow ==> only needed for nn_ice_embd == 0 (standard levitating sea-ice) 717 ztmp = ( 1.0 - frld_1d(ji) ) * ( zhsnnew - h_snow_1d(ji) ) * rhosn 718 rdm_snw_1d(ji) = rdm_snw_1d(ji) + ztmp 719 rdq_snw_1d(ji) = rdq_snw_1d(ji) + cpic * ztmp * ( rt0_snow - rt0 ) 702 720 703 721 !--- Actualize new snow and ice thickness. … … 746 764 !--variation of ice volume and ice mass 747 765 dvlbq_1d(ji) = zihic * ( zfrl_old(ji) - frld_1d(ji) ) * h_ice_1d(ji) 748 rdmicif_1d(ji) = rdmicif_1d(ji) + dvlbq_1d(ji) * rhoic 766 ztmp = dvlbq_1d(ji) * rhoic 767 rdm_ice_1d(ji) = rdm_ice_1d(ji) + ztmp 768 !!gm 769 !!gm This should be split in two parts: 770 !!gm 1- heat required to bring sea-ice at tfu : this part should be added to the heat flux taken from the ocean 771 !!gm cpic * ztmp * 0.5 * ( tbif_1d(ji,2) + tbif_1d(ji,3) - 2.* rt0_ice ) 772 !!gm 2- heat content of lateral ablation referenced to rt0 : this part only put in rdq_ice_1d 773 !!gm cpic * ztmp * ( rt0_ice - rt0 ) 774 !!gm Currently we put all the heat in rdq_ice_1d 775 rdq_ice_1d(ji) = rdq_ice_1d(ji) + cpic * ztmp * 0.5 * ( tbif_1d(ji,2) + tbif_1d(ji,3) - 2.* rt0 ) 776 ! 749 777 !--variation of snow volume and snow mass 750 zdvsnvol = zihsn * ( zfrl_old(ji) - frld_1d(ji) ) * h_snow_1d(ji) 751 rdmsnif_1d(ji) = rdmsnif_1d(ji) + zdvsnvol * rhosn 778 zdvsnvol = zihsn * ( zfrl_old(ji) - frld_1d(ji) ) * h_snow_1d(ji) 779 ztmp = zdvsnvol * rhosn 780 rdm_snw_1d(ji) = rdm_snw_1d(ji) + ztmp 781 !!gm 782 !!gm This should be split in two parts: 783 !!gm 1- heat required to bring snow at tfu : this part should be added to the heat flux taken from the ocean 784 !!gm cpic * ztmp * ( tbif_1d(ji,1) - rt0_snow ) 785 !!gm 2- heat content of lateral ablation referenced to rt0 : this part only put in rdqicif_1d 786 !!gm cpic * ztmp * ( rt0_snow - rt0 ) 787 !!gm Currently we put all the heat in rdqicif_1d 788 rdq_snw_1d(ji) = rdq_snw_1d(ji) + cpic * ztmp * ( tbif_1d(ji,1) - rt0 ) 789 752 790 h_snow_1d(ji) = ziqf * h_snow_1d(ji) 753 791
Note: See TracChangeset
for help on using the changeset viewer.