Changeset 14585


Ignore:
Timestamp:
2021-03-04T13:19:57+01:00 (3 months ago)
Author:
dancopsey
Message:
  • Calculate the heat flux used up in lateral melting (hfx_lam). This initial incarnation is not quite right as it released all the enthalpy to the ocean and not just the enthalpy required to heat the ice to the SST.
  • Rearrange the calculation of qt_oce_ai in iceupdate.F90. This removes some of the heat fluxes caused by changes that are not accounted for elswhere in the energy balance such as snow precip and sublimation. It also replaces hfx_thd with hfx_lam. Most of the contributions to hfx_thd were for energy adjustments for all the heat flux terms to represent the temperature difference between the SST and 0oC. These are not needed. However hfx_thd also included a contribution for lateral melt which has now been calculated separately and will be included with all the other ocean to sea ice fluxes.
Location:
NEMO/branches/UKMO/NEMO_4.0.4_remade_heat_balance/src/ICE
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.4_remade_heat_balance/src/ICE/ice.F90

    r14075 r14585  
    287287   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   hfx_bog         !: total heat flux causing bottom ice growth           [W.m-2] 
    288288   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   hfx_bom         !: total heat flux causing bottom ice melt             [W.m-2] 
     289   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   hfx_lam         !: total heat flux causing lateral ice melt            [W.m-2] 
    289290   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   hfx_sum         !: total heat flux causing surface ice melt            [W.m-2] 
    290291   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   hfx_opw         !: total heat flux causing open water ice formation    [W.m-2] 
     
    450451         &      sfx_bog    (jpi,jpj) , sfx_bom   (jpi,jpj) , sfx_sum(jpi,jpj) , sfx_sni(jpi,jpj) , sfx_opw(jpi,jpj) ,  & 
    451452         &      hfx_res    (jpi,jpj) , hfx_snw   (jpi,jpj) , hfx_sub(jpi,jpj) ,                        &  
    452          &      qt_atm_oi  (jpi,jpj) , qt_oce_ai (jpi,jpj) , fhld   (jpi,jpj) ,                        & 
     453         &      qt_atm_oi  (jpi,jpj) , qt_oce_ai (jpi,jpj) , fhld   (jpi,jpj) , hfx_lam(jpi,jpj) ,     & 
    453454         &      hfx_sum    (jpi,jpj) , hfx_bom   (jpi,jpj) , hfx_bog(jpi,jpj) , hfx_dif(jpi,jpj) ,     & 
    454455         &      hfx_opw    (jpi,jpj) , hfx_thd   (jpi,jpj) , hfx_dyn(jpi,jpj) , hfx_spr(jpi,jpj) ,     & 
  • NEMO/branches/UKMO/NEMO_4.0.4_remade_heat_balance/src/ICE/ice1d.F90

    r14075 r14585  
    4646   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hfx_sum_1d 
    4747   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hfx_bom_1d 
     48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hfx_lam_1d 
    4849   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hfx_bog_1d 
    4950   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hfx_dif_1d 
     
    189190         &      qns_ice_1d(jpij) , qml_ice_1d    (jpij) , qcn_ice_1d(jpij) , qtr_ice_top_1d(jpij) , & 
    190191         &      cnd_ice_1d(jpij) , t1_ice_1d     (jpij) , t_bo_1d   (jpij) ,   & 
    191          &      hfx_sum_1d(jpij) , hfx_bom_1d    (jpij) , hfx_bog_1d(jpij) ,   &  
     192         &      hfx_sum_1d(jpij) , hfx_bom_1d    (jpij) , hfx_bog_1d(jpij) , hfx_lam_1d(jpij) ,  &  
    192193         &      hfx_dif_1d(jpij) , hfx_opw_1d    (jpij) , hfx_dyn_1d(jpij) ,   & 
    193194         &      rn_amax_1d(jpij) ,                                             & 
  • NEMO/branches/UKMO/NEMO_4.0.4_remade_heat_balance/src/ICE/icestp.F90

    r14075 r14585  
    418418            hfx_bog(ji,jj) = 0._wp   ;   hfx_dyn(ji,jj) = 0._wp 
    419419            hfx_bom(ji,jj) = 0._wp   ;   hfx_sum(ji,jj) = 0._wp 
     420            hfx_lam(ji,jj) = 0._wp 
    420421            hfx_res(ji,jj) = 0._wp   ;   hfx_sub(ji,jj) = 0._wp 
    421422            hfx_spr(ji,jj) = 0._wp   ;   hfx_dif(ji,jj) = 0._wp 
  • NEMO/branches/UKMO/NEMO_4.0.4_remade_heat_balance/src/ICE/icethd.F90

    r14075 r14585  
    432432         CALL tab_2d_1d( npti, nptidx(1:npti), hfx_bom_1d    (1:npti), hfx_bom       ) 
    433433         CALL tab_2d_1d( npti, nptidx(1:npti), hfx_bog_1d    (1:npti), hfx_bog       ) 
     434         CALL tab_2d_1d( npti, nptidx(1:npti), hfx_lam_1d    (1:npti), hfx_lam       ) 
    434435         CALL tab_2d_1d( npti, nptidx(1:npti), hfx_dif_1d    (1:npti), hfx_dif       ) 
    435436         CALL tab_2d_1d( npti, nptidx(1:npti), hfx_opw_1d    (1:npti), hfx_opw       ) 
     
    524525         CALL tab_1d_2d( npti, nptidx(1:npti), hfx_bom_1d    (1:npti), hfx_bom     ) 
    525526         CALL tab_1d_2d( npti, nptidx(1:npti), hfx_bog_1d    (1:npti), hfx_bog     ) 
     527         CALL tab_1d_2d( npti, nptidx(1:npti), hfx_lam_1d    (1:npti), hfx_lam     ) 
    526528         CALL tab_1d_2d( npti, nptidx(1:npti), hfx_dif_1d    (1:npti), hfx_dif     ) 
    527529         CALL tab_1d_2d( npti, nptidx(1:npti), hfx_opw_1d    (1:npti), hfx_opw     ) 
  • NEMO/branches/UKMO/NEMO_4.0.4_remade_heat_balance/src/ICE/icethd_da.F90

    r14075 r14585  
    142142            hfx_thd_1d(ji) = hfx_thd_1d(ji) - zda * r1_rdtice * ( h_i_1d(ji) * r1_nlay_i * SUM( e_i_1d(ji,1:nlay_i) )  & 
    143143                                                                + h_s_1d(ji) * r1_nlay_s * SUM( e_s_1d(ji,1:nlay_s) ) )  
     144 
     145            ! To do: calculate realistic heat flux to melt only to SST, and not 0oC 
     146            ! zEi             = h_i_1d(ji) * r1_nlay_i * SUM( e_i_1d(ji,1:nlay_i) )  & 
     147            !                 + h_s_1d(ji) * r1_nlay_s * SUM( e_s_1d(ji,1:nlay_s) ) 
     148            ! zEw             = rcp * ztmelts 
     149 
     150            ! For now we will just melt to 0oC [W.m-2], (>0)  
     151            hfx_lam_1d(ji) = hfx_lam_1d(ji) + zda * r1_rdtice * ( h_i_1d(ji) * r1_nlay_i * SUM( e_i_1d(ji,1:nlay_i) )  & 
     152                                                                + h_s_1d(ji) * r1_nlay_s * SUM( e_s_1d(ji,1:nlay_s) ) )  
    144153             
    145154            ! Contribution to mass flux 
  • NEMO/branches/UKMO/NEMO_4.0.4_remade_heat_balance/src/ICE/iceupdate.F90

    r14075 r14585  
    124124 
    125125            ! Total heat flux reaching the ocean = qt_oce_ai (W.m-2)  
     126            ! It is calculated using the total heat into the top of the ocean and ice (qt_atm_oi) minus energy taken up heating the ice interior (hfx_dif), 
     127            ! plus energy released by ice dynamics (hfx_dyn), 
     128            ! minus energy used up in top melt of snow and ice (hfx_snw & hfx_sum), 
     129            ! minus energy needed for melt/growth along the ocean/ice interface (hfx_bom, hfx_bog, hfx_lam, hfx_opw), 
     130            ! plus the residual (hfx_res) 
    126131            !--------------------------------------------------- 
    127             qt_oce_ai(ji,jj) = qt_atm_oi(ji,jj) - hfx_sum(ji,jj) - hfx_bom(ji,jj) - hfx_bog(ji,jj) & 
    128                &                                - hfx_dif(ji,jj) - hfx_opw(ji,jj) - hfx_snw(ji,jj) & 
    129                &                                + hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) & 
    130                &                                + hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) + hfx_spr(ji,jj)                  
     132            qt_oce_ai(ji,jj) = qt_atm_oi(ji,jj) - hfx_dif(ji,jj) + hfx_dyn(ji,jj)                                  & 
     133               &                                - hfx_snw(ji,jj) - hfx_sum(ji,jj)                                  & 
     134               &                                - hfx_bom(ji,jj) - hfx_bog(ji,jj) - hfx_lam(ji,jj) - hfx_opw(ji,jj) & 
     135               &                                + hfx_res(ji,jj)               
    131136             
    132137            ! New qsr and qns used to compute the oceanic heat flux at the next time step 
Note: See TracChangeset for help on using the changeset viewer.