New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
ticket/0665_mass_heat_salt_fluxes (diff) – NEMO

Changes between Version 24 and Version 25 of ticket/0665_mass_heat_salt_fluxes


Ignore:
Timestamp:
2010-05-13T16:03:51+02:00 (14 years ago)
Author:
gm
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ticket/0665_mass_heat_salt_fluxes

    v24 v25  
    3030The main modifications concern OPA, LIM2 and LIM3. They are: 
    3131 
    32 '''(0) stylistic modification''' 
     32==== (0) stylistic modification    ==== 
    3333 
    3434   style changes only  have been put in '''revision 1855'''.  
     
    3939 
    4040 
    41 '''(1) heat content of Freezing/Melting ice'''.  
    42  
    43    In both LIM2 and LIM3, the computation of the heat content of F/M ice is added. The changes exactly mirror the changes introduced at NOCS in NEMO v3.0 when implementing first the sea-ice embedment. The basic idea is to reference at rt0 all the mass exchanges between ice and ocean.  
     41====  (1) heat content of Freezing/Melting ice ====  
     42 
     43   In LIM2 only, the computation of the heat content of F/M ice is added (this is already done in LIM3 which is based on internal enrgy conservation, like CICE). The changes exactly mirror the changes introduced at NOCS in NEMO v3.0 when implementing first the sea-ice embedment. The basic idea is to reference at rt0 all the mass exchanges between ice and ocean.  
    4444 
    4545   NB: since emps becomes the salt flux, it is generally zero except with the salt exchange at the ocean-ice interface and when a SSS restoring in salinity is used (not when a equivalent freshwater flux formulation is used for the SSS restoring). Therefore emps done not appear anymore in all the sbc routine,. It is only set to zero in sbc_init, set to the ice-ocean salt flux in limsbc(_2), and modified in sbcssr if SSS retoring is used. 
     
    209209 
    210210 
    211    '''LIM3''' : the modules involved in the change are : (see also the '''revision -''') 
    212  
    213       In LIM3 case, the problem is somewhat different. Indeed, LIM3 is written in an energy conserving way (Bitz & Lipscomb 1999). Therefore the heat exchanged ith both atmosphere and ocean is the internal energy (i.e. the heat flux through the interface + the heat content of the mass flux referenced to rt0). There is no need to introduce rdq_ice and rdq_snw fields.   
    214  
    215       Five key elements have been changed : 
    216          1- Addition of internal energy of snowfall over the ice. Reason:  Tatm is used inside lim3 to compute the internal energy of snowfall. In coupled mode this will not be possible. Therefore, and in better agreement with SBC philosophy, we introduce qen_snw provided by sbcblk_c.. or sbccpl. 
    217  
    218          2- Change in the snowfall partition between leads and ice. Reason, in LIM3 part of the snow that fall over ice is transported by the wind and kept in lead area. The parameterisation in coded deeply in LIM3 routine, whereas in coupled mode we need to have the information in sbccpl. Furthermore, with the partitioning at sbc level, LIM2 can also benefite from it. 
    219  
    220          3- Modify the salt flux computation from an equivalent freshwater flux to a salt flux 
    221  
    222          4- update the ice-ocean interface to salt flux 
    223  
    224          5- Add the coupled case in the interface ice-atmos and atmos-ocean 
     211==== (2) LIM-3 specific changes  see '''revision XXXX''' ====  
     212 
     213   In LIM3 case, the problem is somewhat different. Indeed, LIM3 is written in an energy conserving way (Bitz & Lipscomb 1999). Therefore the heat exchanged ith both atmosphere and ocean is the internal energy (i.e. the heat flux through the interface + the heat content of the mass flux referenced to rt0). There is no need to introduce rdq_ice and rdq_snw fields.   
     214 
     215   Five key elements have been changed : 
     216 
     217   '''1- Addition of internal energy of snowfall over the ice'''.  
     218   Reason:  Tatm is used inside lim3 to compute the internal energy of snowfall. In coupled mode this will not be possible. Therefore, and in better agreement with SBC philosophy, we introduce qen_snw provided by sbcblk_c.. or sbccpl. 
     219 
     220      • '''sbc_ice.F90''' : add the internal energie of snow in both LIM2 and LIM3 cases (even if in lim3 it will not be used) : 
     221{{{ 
     222   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   qen_snw     !: internal energy of snowfall (heat content - Latent)   [W/m2] 
     223}}} 
     224         idem in thd_ice ( version _1d) 
     225 
     226      • '''sbcice_lim.F90, sbcblk_core.F90 and sbcblk_clio.F90''' : add qen_snw to the call argument of blk_ice_c..., and add its computation (p_qen_s) in the 2 bulk formulae module: 
     227{{{ 
     228      p_qen_s(:,:) = sf(jp_snow)%fnow(:,:) * ( cpic * ( sf(jp_tair)%fnow(:,:) - rtt - lfus ) 
     229}}} 
     230  
     231     • '''sbccpl.F90''' :  add the computation of qen_snw 
     232CAUTION : BUG correction snow CP is cpic not rcp....   correction made. 
     233 
     234      • '''limthd.F90, limthd_ent.F90 and limthd_dh''' :  pass qen_snw from 2D to 1D in limthd, replace the use of tatm by the use of qen_snw in limthd_dh : 
     235{{{ 
     236!!gm          p_qen_s(:,:) = sf(jp_snow)%fnow(:,:) * ( cpic * ( sf(jp_tair)%fnow(:,:) - rtt ) - lfus ) 
     237         zqprec          = - p_qen_s(:,:) * rhosn / MAX( sprecip_1d(ji), 1.e-20 ) 
     238!!gm instead of : 
     239!         zqprec          =  rhosn * ( cpic * ( rtt - tatm_ice_1d(ji) ) + lfus )   ! energy of fallen snow 
     240!!gm 
     241}}} 
     242      and in limthd_ent : 
     243{{{ 
     244!!gm          p_qen_s(:,:) = sf(jp_snow)%fnow(:,:) * ( cpic * ( sf(jp_tair)%fnow(:,:) - rtt ) - lfus ) 
     245!!gm  so      rhosn * ( cpic * ( tatm - rtt ) - lfus )  = - p_qen_s(:,:) * rhosn / MAX( sprecip_1d(ji), 1.e-20 ) 
     246!!gm therefore:           
     247         qm0(ji,1)   = - (  ( 1. - snswi(ji) ) * p_qen_s(:,:) / MAX( sprecip_1d(ji), 1.e-20 )  
     248            &          -           snswi(ji)   * (  cpic * ( t_s_b(ji,1) - rtt ) - lfus  )     ) * rhosn * zthick0(ji,1) 
     249!!gm instead of : 
     250!         qm0(ji,1)   =  rhosn * ( cpic * ( rtt - ( 1. - snswi(ji) ) * tatm_ice_1d(ji)         & 
     251!            &                                         - snswi(ji)   * t_s_b(ji,1)     ) + lfus  ) * zthick0(ji,1) 
     252!!gm 
     253}}} 
     254      as a consequence, the declaration of tatm in key_lim3 case is suppressed from sbc_ice, and its initialisation from both sbcblk_core and clio. 
     255 
     256      NB: in clio bulk, we replace the 2D ztatm array by a local scalar ztair 
     257 
     258 
     259QUESTION ==> Martin   Sublimation in coupled mode  !!!! ou comment??? 
     260mettre qen_snw à la valeur du bilan sublim - snow ???? 
     261est-ce que ça marche ou limitation ?? 
     262 
     263Coupled mode check the value of cpic used in the atmosphere as well as rcp !!! :-) 
     264 
     265 
     266 
     267   '''2- Change in the snowfall partition between leads and ice'''.  
     268   Reason: in LIM3 part of the snow that fall over ice is transported by the wind and kept in lead area. The parameterisation in coded deeply in LIM3 routine, whereas in coupled mode we need to have the information in sbccpl. Furthermore, with the partitioning at sbc level, LIM2 can also benefite from it. 
     269 
     270   Introduce betas in the SBC, no more in LIM-3 alone. 
     271 
     272        reason:         (1) make it also avalable in LIM-2 and ice-IF cases 
     273 
     274                        (2) make it availablein coupled mode (sbccpl.F90 will have to use it) 
     275 
     276     • '''sbc_oce.F90,sbcmod.F90 ''' : in namelist namsbc, add the following variable: 
     277{{{ 
     278   REAL(wp), PUBLIC ::   rn_psnw     = 1.e0      !: coef. of lead/ice partition of snowfall (>0 and <=1) 
     279}}} 
     280      add the lecture of the new variable and its print in sbcmod.F90. 
     281 
     282       '''namelist  ==>  DON'T FORGET TO  add the new variable in the ref namelists !!! ''' 
     283 
     284 
     285   '''3- Modify the salt flux computation from an equivalent freshwater flux to a salt flux''' 
     286 
     287   '''4- update the ice-ocean interface to salt flux''' 
     288 
     289   '''5- Add the coupled case in the interface ice-atmos and atmos-ocean''' 
    225290 
    226291      The following routines are involved in the modifications: 
     
    232297      • '''limthd.F90''' : introduce the new variable names, and pass the new variables (rdq_snw, rdq_ice) to the lim_thd_zdf and lim_thd_lac routines 
    233298 
    234          '''BUG''' correction : In LIM-3 a betas exponent has been introduced when computing the solid precipitation over the sea ice. Part of the snow that falls over sea-ice is put in the lead areas by the wind. Nevertheless, the latent heat flux due to snow melting is computed with sprecip *(1-at_i) whereas the actual solid precipitation over lead area is sprecip*(1-at_i**betas).  If betas /=1, some latent heat is missing (see #670). 
     299         '''BUG''' correction : In LIM-3 a betas exponent has been introduced when computing the solid precipitation over the sea ice. Part of the snow that falls over sea-ice is put in the lead areas by the wind. Nevertheless, the latent heat flux due to snow melting is computed with sprecip *(1-at_i) whereas the actual solid precipitation over lead area is sprecip*(1-at_i**betas).  If betas /=1, some latent heat is missing (see the ticket open on that purpose #670). 
    235300 
    236301        '''BUG''' correction : limthd : use fse3t_m instead of fse3t 
     
    238303      '''==>> ONGOING work''' 
    239304 
    240 '''(2) Non-solar flux including the heat content of mass exchanges'''   see '''revision 1859''' 
     305==== (3) Non-solar flux including the heat content of mass exchanges  (see '''revision 1859''') ====  
    241306 
    242307   the definition of qns is modified as follows: the non solar part of the surface heat flux takes now also into account the heat content changes due to the change in volume associated with evaporation, precipitation, ice freezing and ice melting. This heat content is evaluated using the temperature (expressed in Celcius) of the mass of water exchanged between the different media (ocean, atmosphere and ice).  
     
    372437 
    373438 
    374 '''(3) Update ocean forcing  and ice forcing'''   see '''revision 1859''' except for LIM-3 (limsbc.F90) updated in '''revision XXXX''' 
    375  
    376    Modification of trasbc and limsbc(_2) modules in order to take into account the above changes (heat content of water exchanges and explicit salt flux) 
     439==== (4) Update ocean forcing  and ice forcing ====  
     440 
     441   see '''revision 1859''' except for LIM-3 (limsbc.F90) updated in '''revision XXXX'''  
     442 
     443   Modification of trasbc and limsbc(_2) modules in order to take into account the above changes (heat content of water exchanges (LIM2) and explicit salt flux (LIM2 & 3) and coupled interface for LIM3) 
    377444 
    378445   • ocean-atmosphere mass exchanges :  In the un-approximated case (lk_vvl=T) the ocean receives at its surface (1) a salt flux associate with Freezing and Melting of sea-ice, and (2) a heat flux which includes the budget of the heat content of all mass exchanged with the atmosphere and sea-ice. In the linear free surface case (lk_vvl=F), the model volume of the ocean is assumed to be constant, therefore an extra term appears in both T and S forcing term, the concentration/dilution term : the volume (associated to mass flux) removed or add to the ocean is replaced by a same volume of ocean water at Tn and Sn, so that the model ocean volume remains constant.