Changeset 9916
- Timestamp:
- 2018-07-10T16:04:04+02:00 (6 years ago)
- Location:
- NEMO/trunk/src/ICE
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/ICE/ice.F90
r9913 r9916 360 360 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t_si !: Temperature at Snow-ice interface (K) 361 361 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_si !: mean temperature at the snow-ice interface (K) 362 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,: ):: qcn_ice_bot !: Bottom conduction flux (W/m2)363 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,: ):: qcn_ice_top !: Surface conduction flux (W/m2)362 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_bot !: Bottom conduction flux (W/m2) 363 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_top !: Surface conduction flux (W/m2) 364 364 365 365 ! … … 451 451 ! * SIMIP diagnostics 452 452 ii = ii + 1 453 ALLOCATE( t_si (jpi,jpj,jpl) , tm_si(jpi,jpj) , qcn_ice_bot(jpi,jpj) , qcn_ice_top(jpi,jpj) , STAT = ierr(ii) )453 ALLOCATE( t_si(jpi,jpj,jpl) , tm_si(jpi,jpj) , qcn_ice_bot(jpi,jpj,jpl) , qcn_ice_top(jpi,jpj,jpl) , STAT = ierr(ii) ) 454 454 455 455 ice_alloc = MAXVAL( ierr(:) ) -
NEMO/trunk/src/ICE/ice1d.F90
r9913 r9916 109 109 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: h_ib_1d 110 110 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: h_s_1d 111 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: fc_su !: Surface Conduction flux112 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: fc_bo_i !: Bottom Conduction flux113 111 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: dh_s_tot !: Snow accretion/ablation [m] 114 112 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: dh_i_sum !: Ice surface ablation [m] … … 206 204 ii = ii + 1 207 205 ALLOCATE( t_su_1d (jpij) , t_si_1d (jpij) , a_i_1d (jpij) , a_ib_1d (jpij) , & 208 & h_i_1d (jpij) , h_ib_1d (jpij) , h_s_1d (jpij) , fc_su (jpij) , fc_bo_i (jpij) ,&206 & h_i_1d (jpij) , h_ib_1d (jpij) , h_s_1d (jpij) , & 209 207 & dh_s_tot(jpij) , dh_i_sum(jpij) , dh_i_itm (jpij) , dh_i_bom(jpij) , dh_i_bog(jpij) , & 210 208 & dh_i_sub(jpij) , dh_s_mlt(jpij) , dh_snowice(jpij) , s_i_1d (jpij) , s_i_new (jpij) , & -
NEMO/trunk/src/ICE/icestp.F90
r9913 r9916 427 427 428 428 ! SIMIP diagnostics 429 qcn_ice_bot(:,: ) = 0._wp ; qcn_ice_top(:,:) = 0._wp430 t_si (:,:,:) = rt0! temp at the ice-snow interface429 qcn_ice_bot(:,:,:) = 0._wp ; qcn_ice_top(:,:,:) = 0._wp ! conductive fluxes 430 t_si (:,:,:) = rt0 ! temp at the ice-snow interface 431 431 432 432 tau_icebfr(:,:) = 0._wp ! landfast ice param only (clem: important to keep the init here) -
NEMO/trunk/src/ICE/icethd.F90
r9913 r9916 431 431 CALL tab_2d_1d( npti, nptidx(1:npti), qt_oce_ai_1d (1:npti), qt_oce_ai ) 432 432 ! 433 ! SIMIP diagnostics434 CALL tab_2d_1d( npti, nptidx(1:npti), qcn_ice_bot_1d(1:npti), qcn_ice_bot )435 CALL tab_2d_1d( npti, nptidx(1:npti), qcn_ice_top_1d(1:npti), qcn_ice_top )436 433 ! ocean surface fields 437 434 CALL tab_2d_1d( npti, nptidx(1:npti), sst_1d(1:npti), sst_m ) … … 527 524 CALL tab_1d_2d( npti, nptidx(1:npti), t1_ice_1d (1:npti), t1_ice (:,:,kl) ) 528 525 ! SIMIP diagnostics 529 CALL tab_1d_2d( npti, nptidx(1:npti), t_si_1d (1:npti), t_si (:,:,kl) )530 CALL tab_1d_2d( npti, nptidx(1:npti), qcn_ice_bot_1d(1:npti), qcn_ice_bot 531 CALL tab_1d_2d( npti, nptidx(1:npti), qcn_ice_top_1d(1:npti), qcn_ice_top 526 CALL tab_1d_2d( npti, nptidx(1:npti), t_si_1d (1:npti), t_si (:,:,kl) ) 527 CALL tab_1d_2d( npti, nptidx(1:npti), qcn_ice_bot_1d(1:npti), qcn_ice_bot(:,:,kl) ) 528 CALL tab_1d_2d( npti, nptidx(1:npti), qcn_ice_top_1d(1:npti), qcn_ice_top(:,:,kl) ) 532 529 ! extensive variables 533 530 CALL tab_1d_2d( npti, nptidx(1:npti), v_i_1d (1:npti), v_i (:,:,kl) ) -
NEMO/trunk/src/ICE/icethd_dh.F90
r9913 r9916 137 137 ! 138 138 DO ji = 1, npti 139 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - fc_su(ji)139 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - qcn_ice_top_1d(ji) 140 140 qml_ice_1d(ji) = zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) ) 141 141 zq_su(ji) = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) … … 145 145 ! 146 146 DO ji = 1, npti 147 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - fc_su(ji)147 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - qtr_ice_top_1d(ji) - qcn_ice_top_1d(ji) 148 148 qml_ice_1d(ji) = zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) ) 149 149 zq_su(ji) = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) … … 153 153 ! 154 154 DO ji = 1, npti 155 zf_tt(ji) = fc_bo_i(ji) + qsb_ice_bot_1d(ji) + fhld_1d(ji)155 zf_tt(ji) = qcn_ice_bot_1d(ji) + qsb_ice_bot_1d(ji) + fhld_1d(ji) 156 156 zq_bo(ji) = MAX( 0._wp, zf_tt(ji) * rdt_ice ) 157 157 END DO … … 416 416 !------------------ 417 417 ! Basal growth is driven by heat imbalance at the ice-ocean interface, 418 ! between the inner conductive flux ( fc_bo_i), from the open water heat flux418 ! between the inner conductive flux (qcn_ice_bot), from the open water heat flux 419 419 ! (fhld) and the sensible ice-ocean flux (qsb_ice_bot). 420 ! fc_bo_iis positive downwards. qsb_ice_bot and fhld are positive to the ice420 ! qcn_ice_bot is positive downwards. qsb_ice_bot and fhld are positive to the ice 421 421 422 422 ! If salinity varies in time, an iterative procedure is required, because -
NEMO/trunk/src/ICE/icethd_zdf_bl99.F90
r9913 r9916 728 728 !----------------------------- 729 729 ! 730 ! --- update conduction fluxes731 ! 730 ! --- calculate conduction fluxes (positive downward) 731 732 732 DO ji = 1, npti 733 733 ! ! surface ice conduction flux 734 fc_su(ji) = - isnow(ji) * zkappa_s(ji,0)* zg1s * ( t_s_1d(ji,1) - t_su_1d(ji) ) &735 & - ( 1._wp - isnow(ji) ) * zkappa_i(ji,0)* zg1 * ( t_i_1d(ji,1) - t_su_1d(ji) )734 qcn_ice_top_1d(ji) = - isnow(ji) * zkappa_s(ji,0) * zg1s * ( t_s_1d(ji,1) - t_su_1d(ji) ) & 735 & - ( 1._wp - isnow(ji) ) * zkappa_i(ji,0) * zg1 * ( t_i_1d(ji,1) - t_su_1d(ji) ) 736 736 ! ! bottom ice conduction flux 737 fc_bo_i(ji) = - zkappa_i(ji,nlay_i) * zg1 * ( t_bo_1d(ji) - t_i_1d(ji,nlay_i) )737 qcn_ice_bot_1d(ji) = - zkappa_i(ji,nlay_i) * zg1 * ( t_bo_1d(ji ) - t_i_1d (ji,nlay_i) ) 738 738 END DO 739 739 … … 750 750 ! 751 751 DO ji = 1, npti 752 hfx_err_dif_1d(ji) = hfx_err_dif_1d(ji) - ( fc_su(ji)- qcn_ice_1d(ji) ) * a_i_1d(ji)752 hfx_err_dif_1d(ji) = hfx_err_dif_1d(ji) - ( qcn_ice_top_1d(ji) - qcn_ice_1d(ji) ) * a_i_1d(ji) 753 753 END DO 754 754 ! … … 770 770 771 771 IF( t_su_1d(ji) < rt0 ) THEN ! case T_su < 0degC 772 zhfx_err = (qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice)*a_i_1d(ji) 772 zhfx_err = ( qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji) & 773 & + zdq * r1_rdtice ) * a_i_1d(ji) 773 774 ELSE ! case T_su = 0degC 774 zhfx_err = (fc_su(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice)*a_i_1d(ji) 775 zhfx_err = ( qcn_ice_top_1d(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji) & 776 & + zdq * r1_rdtice ) * a_i_1d(ji) 775 777 ENDIF 776 778 777 779 ELSEIF( k_jules == np_jules_ACTIVE ) THEN 778 780 779 zhfx_err = ( fc_su(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq * r1_rdtice ) * a_i_1d(ji) 781 zhfx_err = ( qcn_ice_top_1d(ji) + qtr_ice_top_1d(ji) - zradtr_i(ji,nlay_i) - qcn_ice_bot_1d(ji) & 782 & + zdq * r1_rdtice ) * a_i_1d(ji) 780 783 781 784 ENDIF … … 787 790 hfx_dif_1d(ji) = hfx_dif_1d(ji) - zdq * r1_rdtice * a_i_1d(ji) 788 791 ! 789 END DO790 !791 ! --- SIMIP diagnostics792 !793 DO ji = 1, npti794 !--- Conduction fluxes (positive downward)795 qcn_ice_bot_1d(ji) = qcn_ice_bot_1d(ji) + fc_bo_i(ji) * a_i_1d(ji) / at_i_1d(ji)796 qcn_ice_top_1d(ji) = qcn_ice_top_1d(ji) + fc_su (ji) * a_i_1d(ji) / at_i_1d(ji)797 798 !--- Snow-ice interfacial temperature (diagnostic SIMIP)799 zfac = rn_cnd_s * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji)800 IF( h_s_1d(ji) >= zhs_min ) THEN801 t_si_1d(ji) = ( rn_cnd_s * zh_i(ji) * t_s_1d(ji,1) + &802 & ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) / MAX( epsi10, zfac )803 ELSE804 t_si_1d(ji) = t_su_1d(ji)805 ENDIF806 792 END DO 807 793 ! … … 827 813 IF( k_jules == np_jules_EMULE ) THEN 828 814 ! Restore temperatures to their initial values 829 t_s_1d (1:npti,:) = ztsold (1:npti,:)830 t_i_1d (1:npti,:) = ztiold (1:npti,:)831 qcn_ice_1d(1:npti) = fc_su(1:npti)815 t_s_1d (1:npti,:) = ztsold (1:npti,:) 816 t_i_1d (1:npti,:) = ztiold (1:npti,:) 817 qcn_ice_1d(1:npti) = qcn_ice_top_1d(1:npti) 832 818 ENDIF 833 819 ! 820 ! --- SIMIP diagnostics 821 ! 822 DO ji = 1, npti 823 !--- Snow-ice interfacial temperature (diagnostic SIMIP) 824 zfac = rn_cnd_s * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) 825 IF( h_s_1d(ji) >= zhs_min ) THEN 826 t_si_1d(ji) = ( rn_cnd_s * zh_i(ji) * t_s_1d(ji,1) + & 827 & ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) / MAX( epsi10, zfac ) 828 ELSE 829 t_si_1d(ji) = t_su_1d(ji) 830 ENDIF 831 END DO 832 ! 834 833 END SUBROUTINE ice_thd_zdf_BL99 835 836 834 837 835 #else -
NEMO/trunk/src/ICE/iceupdate.F90
r9913 r9916 277 277 278 278 ! other heat fluxes 279 IF( iom_use('hfxsensib' ) ) CALL iom_put( "hfxsensib" , -qsb_ice_bot * at_i_b) ! Sensible oceanic heat flux280 IF( iom_use('hfxcndbot' ) ) CALL iom_put( "hfxcndbot" , qcn_ice_bot * at_i_b) ! Bottom conduction flux281 IF( iom_use('hfxcndtop' ) ) CALL iom_put( "hfxcndtop" , qcn_ice_top * at_i_b) ! Surface conduction flux279 IF( iom_use('hfxsensib' ) ) CALL iom_put( "hfxsensib" , -qsb_ice_bot * at_i_b ) ! Sensible oceanic heat flux 280 IF( iom_use('hfxcndbot' ) ) CALL iom_put( "hfxcndbot" , SUM( qcn_ice_bot * a_i_b, dim=3 ) ) ! Bottom conduction flux 281 IF( iom_use('hfxcndtop' ) ) CALL iom_put( "hfxcndtop" , SUM( qcn_ice_top * a_i_b, dim=3 ) ) ! Surface conduction flux 282 282 283 283 ! diags
Note: See TracChangeset
for help on using the changeset viewer.