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 25 and Version 26 of ticket/0665_mass_heat_salt_fluxes


Ignore:
Timestamp:
2010-05-14T12:01:36+02:00 (14 years ago)
Author:
gm
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ticket/0665_mass_heat_salt_fluxes

    v25 v26  
    274274                        (2) make it availablein coupled mode (sbccpl.F90 will have to use it) 
    275275 
    276      • '''sbc_oce.F90,sbcmod.F90 ''' : in namelist namsbc, add the following variable: 
     276     • '''sbc_oce.F90,sbcmod.F90, ice.F90 ''' : in namelist namsbc, add the following variable: 
    277277{{{ 
    278278   REAL(wp), PUBLIC ::   rn_psnw     = 1.e0      !: coef. of lead/ice partition of snowfall (>0 and <=1) 
    279279}}} 
    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 !!! ''' 
     280      add the lecture of the new variable and its print in sbcmod.F90 and  remove the old variable (betas) from ice.F90 
     281 
     282       '''namelist  ==>  DON'T FORGET TO  add the new variable in the ocean ref namsbc namelists !!! ''' 
     283       '''namelist  ==>  DON'T FORGET TO  remove betas from the lim3 ref namicethd namelists !!! ''' 
     284 
     285     • '''limthd.F90 ''' : remove the lecture from namicethd namelist. Change the budget over lead from: 
     286{{{ 
     287            zfontn         = sprecip(ji,jj) * lfus              ! energy of melting 
     288            zfnsol         = qns(ji,jj)                         ! total non solar flux 
     289            qldif(ji,jj)   = tms(ji,jj) * ( qsr(ji,jj)                               & 
     290               &                               + zfnsol + fdtcn(ji,jj) - zfontn      & 
     291               &                               + ( 1.0 - zindb ) * fsbbq(ji,jj)  )   & 
     292               &                               * ( 1.0 - at_i(ji,jj) ) * rdt_ice     
     293}}} 
     294      to the following lines: (with za_i = at_i  ; and za_o = 1 - at_i = pfrld 
     295{{{ 
     296            ! snowfall is partitionned between leads and ice. If snow fall was uniform,  
     297            ! a fraction (1-at_i) would fall into leads but because of the winds,  
     298            ! more snow falls on leads than on sea ice. Therefore a greater fraction  
     299            ! (1-ai)**p (p=rn_psnw) of the total mass of snow (0< psnw < 1) falls in leads. 
     300            !                     !       leads         !        ice 
     301            !    NEW partition    !   (1-ai)**p = zzc   !   1-(1-ai)**p = 1-zzc 
     302            !    OLD partition    !   (1-ai)    = za_o  !        ai     = za_i 
     303            !    difference       !   zzc-za_o          !   1-zcc-za_i 
     304            !    NEW sprecp       !   sprecip*zzc/za_o  !   sprecip*(1-zzc)/za_i 
     305            ! new internal energy of snowfall over ice : qen_snw * (1-zzc)/za_i   (idem sprecip)   
     306            ! Since the snow internal energy over lead associated with the OLD snow partitioning 
     307            ! has already been put in qns (see limblk_c..), we will  update qns only with the  
     308            ! difference between new and old snowfall over lead :  qen_snw*(zzc-za_o) 
     309            ! NB: In reality, psnw depends on wind speed, and should decrease with  
     310            ! increasing wind speed but here, it is considered as a constant.  
     311            ! An average value is 0.66 is suggested (Martin Vancoppenolle, personal comm. 2006) 
     312 
     313            ! partitioning of snownfall : the snowfall over icy area is modified 
     314            zzc = za_o**betas 
     315            zzc_ice = sprecip(ji,jj) * ( 1.e0 - zzc ) / MAX( za_i, 1.e-20 ) *          zinda  
     316            zzc_oce = sprecip(ji,jj) *          zzc   / MAX( za_o, 1.e-20 ) * ( 1.e0 - zinda ) 
     317            ! 
     318            sprecip(ji,jj) = zzc_ice * sprecip(ji,jj)       ! update snowfall and its internal energy over icy area 
     319            qen_snw(ji,jj) = zzc_ice * qen_snw(ji,jj)       ! (used only after over icy area) 
     320 
     321            !  lead energy budget (qldif) except lateral accretion (done in limthd_lac) 
     322            qldif(ji,jj) =  tms(ji,jj) * rdt_ice                              &   ! over 1 time step 
     323               &         * (   ( qsr(ji,jj) + qns(ji,jj) ) *   za_o           &   ! total heat over lead 
     324               &         (-?)+ qen_snw(ji,jj)              * ( za_o - zcc )   &   ! heat due to snowfall change 
     325               &             + fdtcn(ji,jj)                *   za_o           &   ! turbulent ice-ocean heat 
     326!!gm ?         &             + fdtcn(ji,jj)                *   za_i           &   ! turbulent ice-ocean heat 
     327               &             + fsbbq(ji,jj) *( 1.- zindb ) *   za_o           )   ! residual heat from previous step 
     328!!gm end 
     329}}} 
     330      Notes : (1) we now update here the snow partition between ice and ocean. (2) both qen_snw and sprecip are modified: suppression of partitioning in other limthd_... modules. (3) the line starting with the comment '!!gm ?' is there to emphasise a potential '''BUG'''. Potential because I'm not completely sure. see just below.  (4) this include a bug correction, see just below: 
     331 
     332         '''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). 
     333 
     334         '''POTENTIAL BUG''' It seems to me that the among of heat exchange through turbulent fluxes between the ice and the ocean should be fdtcn(ji,jj) *   za_i, and not fdtcn(ji,jj) *   za_o. Indeed the ice-ocean surface of contact is proportional to at_i (=za_i), not za_o !    '''===>> TO BE CHECKED with Martin''' 
     335 
    283336 
    284337 
     
    289342   '''5- Add the coupled case in the interface ice-atmos and atmos-ocean''' 
    290343 
    291       The following routines are involved in the modifications: 
    292  
    293       • '''ice.F90''' : As for LIM-2, the mass flux array names change from rdmsnif and rdmicif  to more readable rdm_snw and rdm_ice  ; NO heat content arrays needed.  
    294  
    295       • '''thd_ice.F90''' : associated 1D array names (rdsnif_1d, rdmicif_1d) have been changed into (rdm_snw_1d, rdm_ice_1d). 
    296  
    297       • '''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 
    298  
    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). 
     344 
    300345 
    301346        '''BUG''' correction : limthd : use fse3t_m instead of fse3t