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 20 and Version 21 of ticket/0665_mass_heat_salt_fluxes


Ignore:
Timestamp:
2010-05-06T10:37:30+02:00 (14 years ago)
Author:
gm
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ticket/0665_mass_heat_salt_fluxes

    v20 v21  
    227227      # evaporation are at the SST. Note that sst_m is used. This is thus different from the former implicit value assumed for both precip and evap (use of tn in trasbc.F90) 
    228228 
    229       The associated modified modules are : sbcmod.F90 ; sb 
     229 
     230      We therefore need to add the air temperature to the sea-ice, change the definition of emps (now a salt flux), and add the heat content of the mass flux (emp) to the non-solar heat flux. The associated modified modules are : sbcmod.F90 ; sb 
    230231 
    231232      • '''sbcmod.F90''' : initialize emps to zero. The following lines have been added 
     
    324325      pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:) 
    325326}}} 
    326  
     327      becomes 
    327328{{{ 
    328329      zcptn(:,:) = rcp * sst_m(:,:) 
     
    343344 
    344345 
     346 
     347 
     348 
    345349'''(3)''' Update ocean forcing  and ice foricng''' 
    346350 
    347    the 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) 
    348  
    349      • '''sbcice_if''' : no changes except style as there is no mass flux exchanges in ice-if case.  
    350  
    351  
    352 '''(3) introduction of a explicit a salt flux'''  
     351   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) 
     352 
     353   • 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. 
     354 
     355      '''trasbc.F90''' T and S forcing terms becomes symmetric. The following lines : 
     356{{{ 
     357      DO jj = 2, jpj 
     358         DO ji = fs_2, fs_jpim1   ! vector opt. 
     359#if ! defined key_zco 
     360            zse3t = 1. / fse3t(ji,jj,1) 
     361#endif 
     362            IF( lk_vvl) THEN 
     363               zta = ro0cpr * qns(ji,jj) * zse3t &                   ! temperature : heat flux 
     364                &    - emp(ji,jj) * zsrau * tn(ji,jj,1)  * zse3t     ! & cooling/heating effet of EMP flux 
     365               zsa = 0.e0                                            ! No salinity concent./dilut. effect 
     366            ELSE 
     367               zta = ro0cpr * qns(ji,jj) * zse3t     ! temperature : heat flux 
     368               zsa = emps(ji,jj) * zsrau * sn(ji,jj,1)   * zse3t     ! salinity :  concent./dilut. effect 
     369            ENDIF 
     370            ta(ji,jj,1) = ta(ji,jj,1) + zta                          ! add the trend to the general tracer trend 
     371            sa(ji,jj,1) = sa(ji,jj,1) + zsa 
     372         END DO 
     373      END DO 
     374}}} 
     375      becomes 
     376{{{ 
     377      IF( lk_vvl ) THEN          ! Variable Volume Layers case   ===>> heat content of mass flux in qns 
     378         DO jj = 2, jpj 
     379            DO ji = fs_2, fs_jpim1   ! vector opt. 
     380               z1_e3t_rau0 = 1./ ( fse3t(ji,jj,1) * rau0 ) 
     381               ta(ji,jj,1) = ta(ji,jj,1) + z1_e3t_rau0 * qns (ji,jj)  * r1_rcp             ! non solar heat flux 
     382               sa(ji,jj,1) = sa(ji,jj,1) + z1_e3t_rau0 * emps(ji,jj)                       ! salt flux (freezing/melting) 
     383            END DO 
     384         END DO 
     385         ! 
     386      ELSE                       ! Constant Volume layers case   ===>> Concentration dillution effect 
     387         DO jj = 2, jpj 
     388            DO ji = fs_2, fs_jpim1   ! vector opt. 
     389               z1_e3t_rau0 = 1./ ( fse3t(ji,jj,1) * rau0 ) 
     390               ta(ji,jj,1) = ta(ji,jj,1) + z1_e3t_rau0 * (  qns (ji,jj) * r1_rcp       &   ! non solar heat flux 
     391                  &                                       + emp (ji,jj) * tn(ji,jj,1)  )   ! concent./dilut. effect 
     392               sa(ji,jj,1) = sa(ji,jj,1) + z1_e3t_rau0 * (  emps(ji,jj)                &   ! salt flux (freezing/melting) 
     393                  &                                       + emp (ji,jj) * sn(ji,jj,1)  )   ! concent./dilut. effect 
     394            END DO 
     395         END DO 
     396      ENDIF 
     397}}} 
     398 
     399 
     400   • ocean-ice mass exchanges :   
     401 
     402      Ice-IF : '''sbcice_if.F90''' : no changes except style as there is no mass flux exchanges in ice-if case.  
     403 
     404      LIM-2 : '''limsbc_2.F90''' :   
     405{{{ 
     406.... lot of things.... 
     407}}} 
     408      becomes 
     409{{{ 
     410            ! 
     411            ! - computation the solar flux at ocean surface 
     412#if defined key_coupled  
     413            zqsr = qsr_tot(ji,jj) + ( fstric(ji,jj) - qsr_ice(ji,jj,1) ) * ( 1.0 - pfrld(ji,jj) ) 
     414#else 
     415            zqsr = pfrld(ji,jj) * qsr(ji,jj)  + ( 1.  - pfrld(ji,jj) ) * fstric(ji,jj) 
     416#endif             
     417            ! 
     418            ! - computation the non solar heat flux at ocean surface 
     419            zqns    =  - ( 1. - thcm(ji,jj) ) * zqsr   &   ! part of the solar energy used in leads 
     420               &       + iflt    * ( fscmbq(ji,jj) + ffltbif(ji,jj) )                                & 
     421               &       + ifral   * ( ial * qcmif(ji,jj) + (1 - ial) * qldif(ji,jj) ) * r1_rdt_ice    & 
     422               &       + ifrdv   * (       qfvbq(ji,jj) +             qdtcn(ji,jj) ) * r1_rdt_ice 
     423 
     424            ! - store residual heat flux (put in the ocean at the next time-step) 
     425            fsbbq(ji,jj) = ( 1.0 - ( ifvt + iflt ) ) * fscmbq(ji,jj)   ! ??? 
     426            ! 
     427            ! - heat content of mass exchanged between ocean and sea-ice 
     428            zqhc = ( rdq_snw(ji,jj) + rdq_ice(ji,jj) ) * r1_rdt_ice    ! heat flux due to sown & ice heat content exchanges 
     429            !             
     430            qsr(ji,jj) = zqsr                                          ! solar heat flux  
     431            qns(ji,jj) = zqns - fdtcn(ji,jj) + zqhc                    ! non solar heat flux 
     432   
     433            !                          !------------------------------------------! 
     434            !                          !      mass flux at the ocean surface      ! 
     435            !                          !------------------------------------------! 
     436            ! 
     437            ! mass flux at the ocean-atmosphere interface (open ocean fraction = leads area) 
     438#if defined key_coupled 
     439            !                                                       ! coupled mode:  
     440            zemp = + emp_tot(ji,jj)                              &       ! net mass flux over the grid cell (ice+ocean area) 
     441               &   - emp_ice(ji,jj) * ( 1. - pfrld(ji,jj) )              ! minus the mass flux intercepted by sea-ice 
     442#else 
     443            !                                                       ! forced  mode:  
     444            zemp = + emp(ji,jj)     *         frld(ji,jj)      &         ! mass flux over open ocean fraction  
     445               &   - tprecip(ji,jj) * ( 1. -  frld(ji,jj) )    &         ! liquid precip. over ice reaches directly the ocean 
     446               &   + sprecip(ji,jj) * ( 1. - pfrld(ji,jj) )    &         ! snow is intercepted by sea-ice (previous frld) 
     447#endif             
     448            ! 
     449            ! mass flux at the ocean/ice interface (sea ice fraction) 
     450            zemp_snw = rdm_snw(ji,jj) * r1_rdt_ice                  ! snow melting = pure water that enters the ocean 
     451            zfmm     = rdm_ice(ji,jj) * r1_rdt_ice                  ! Freezing minus Melting (F-M) 
     452 
     453            ! salt flux at the ice/ocean interface (sea ice fraction) [PSU*kg/m2/s] 
     454            zfsalt = - sice_r(ji,jj) * zfmm                         ! F-M salt exchange 
     455            zcd    =   soce_r(ji,jj) * zfmm                         ! concentration/dilution term due to F-M 
     456            ! 
     457            ! salt flux only       : add concentration dilution term in salt flux  and no  F-M term in volume flux 
     458            ! salt and mass fluxes : non concentartion dilution term in salt flux  and add F-M term in volume flux 
     459            emps(ji,jj) = zfsalt +                  zswitch  * zcd   ! salt flux (+ C/D if no ice/ocean mass exchange) 
     460            emp (ji,jj) = zemp   + zemp_snw + ( 1.- zswitch) * zfmm  ! mass flux (- F/M mass flux if no ice/ocean mass exchange) 
     461            ! 
     462}}} 
     463 
     464      LIM-3 : '''limsbc_2.F90''' :  ''' ==>>>  TO BE DONE'''.  
     465 
     466 
     467'''(4) change emp and emps names'''  
    353468 
    354469   The emps field is suppress by introducing '''fsalt''', the salt flux at the ocean surface (only non zero below sea-ice) 
     
    359474 
    360475 
    361  
    362  
    363 '''(4) Update ocean and ice forcing''' 
    364  
    365  
     476'''(5) update other parts of the system : C1D_SRC ; NST_SRC ; OFF_SRC ; TOP_SRC ...''  
     477 
     478 
     479'''CAUTION''' : limsbc_2 : Baltic sea ice salinity changed from 2 PSU to 0.5 PSU !!!!  change in limsbc.F90 to be done. Furthermore, only the orca2 case has been coded. All other orca configurations are missing.  This should be introduce by a lat/lon definition of the baltic area. 
    366480 
    367481'''N.B.''' 
     482   • LIM-3 needs the air temperature ...  This is related to the heat content change when Melting the fallen snow.  Think how to take this in a different way, so that in coupled mode it works ! 
     483 
    368484   • introduce (as was done for sea-ice embedment) the air temperature as an argument of both blk_ice_core and blk_ice_clio routines 
    369485