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.
Changeset 1859 for branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/OPA_SRC/SBC/sbccpl.F90 – NEMO

Ignore:
Timestamp:
2010-05-06T10:40:07+02:00 (14 years ago)
Author:
gm
Message:

ticket:#665 step 2 & 3: heat content in qns & new forcing terms

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1837_mass_heat_salt_fluxes/NEMO/OPA_SRC/SBC/sbccpl.F90

    r1833 r1859  
    44   !! Surface Boundary Condition :  momentum, heat and freshwater fluxes in coupled mode 
    55   !!====================================================================== 
    6    !! History :  2.0  !  06-2007  (R. Redler, N. Keenlyside, W. Park) Original code split into flxmod & taumod 
    7    !!            3.0  !  02-2008  (G. Madec, C Talandier)  surface module 
    8    !!            3.1  !  02-2009  (G. Madec, S. Masson, E. Maisonave, A. Caubel) generic coupled interface 
     6   !! History :  2.0  !  2007-06  (R. Redler, N. Keenlyside, W. Park) Original code split into flxmod & taumod 
     7   !!            3.0  !  2008-02  (G. Madec, C Talandier)  surface module 
     8   !!            3.1  !  2009-02  (G. Madec, S. Masson, E. Maisonave, A. Caubel) generic coupled interface 
     9   !!            3.3  !  2010-05  (Y. Aksenov G. Madec) salt flux + heat associated with emp 
    910   !!---------------------------------------------------------------------- 
    1011#if defined key_oasis3 || defined key_oasis4 
     
    156157#  include "vectopt_loop_substitute.h90" 
    157158   !!---------------------------------------------------------------------- 
    158    !! NEMO/OPA 3.0 , LOCEAN-IPSL (2008)  
     159   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    159160   !! $Id$ 
    160161   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    562563      !! ** Action  :   update  utau, vtau   ocean stress at U,V grid  
    563564      !!                        taum, wndm   wind stres and wind speed module at T-point 
    564       !!                        qns , qsr    non solar and solar ocean heat fluxes   ('ocean only case) 
    565       !!                        emp = emps   evap. - precip. (- runoffs) (- calving) ('ocean only case) 
     565      !!                        qns          non solar heat fluxes including emp heat content    (ocean only case) 
     566      !!                                     and the latent heat flux of solid precip. melting 
     567      !!                        qsr          solar ocean heat fluxes   (ocean only case) 
     568      !!                        emp          upward mass flux [evap. - precip. (- runoffs) (- calving)] (ocean only case) 
    566569      !!---------------------------------------------------------------------- 
    567570      INTEGER, INTENT(in) ::   kt       ! ocean model time step index 
     
    697700      ENDIF 
    698701 
    699       ! u(v)tau and taum will be modified by ice model (wndm will be changed by PISCES) 
     702      ! u(v)tau and taum will be modified by ice model (and wndm will be changed by PISCES) 
    700703      ! -> need to be reset before each call of the ice/fsbc       
    701704      IF( MOD( kt-1, k_fsbc ) == 0 ) THEN 
     
    712715         !                                                   ! ========================= ! 
    713716         ! 
    714          !                                                       ! non solar heat flux over the ocean (qns) 
    715          IF( srcv(jpr_qnsoce)%laction )   qns(:,:) = frcv(:,:,jpr_qnsoce) 
    716          IF( srcv(jpr_qnsmix)%laction )   qns(:,:) = frcv(:,:,jpr_qnsmix)         
    717          !   energy for melting solid precipitation over free ocean 
    718          zcoef = xlsn / rhosn 
    719          qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * zcoef 
    720          !                                                       ! solar flux over the ocean          (qsr) 
    721          IF( srcv(jpr_qsroce)%laction )   qsr(:,:) = frcv(:,:,jpr_qsroce)  
    722          IF( srcv(jpr_qsrmix)%laction )   qsr(:,:) = frcv(:,:,jpr_qsrmix) 
    723          ! 
    724          !                                                       ! total freshwater fluxes over the ocean (emp, emps) 
     717         !                                                       ! total freshwater fluxes over the ocean (emp) 
    725718         SELECT CASE( TRIM( cn_rcv_emp ) )                                    ! evaporation - precipitation 
    726719         CASE( 'conservative' ) 
     
    752745!!         ENDIF 
    753746!!gm  end of internal cooking 
    754          ! 
    755          emps(:,:) = emp(:,:)                                        ! concentration/dilution = emp 
    756    
    757          !                                                           ! 10 m wind speed 
    758          IF( srcv(jpr_w10m)%laction )   wndm(:,:) = frcv(:,:,jpr_w10m) 
     747         !   
     748         !                                                       ! non solar heat flux over the ocean (qns) 
     749         IF( srcv(jpr_qnsoce)%laction )   qns(:,:) = frcv(:,:,jpr_qnsoce) 
     750         IF( srcv(jpr_qnsmix)%laction )   qns(:,:) = frcv(:,:,jpr_qnsmix) 
     751         ! 
     752         zcoef = xlsn / rhosn                                    ! qns update over free ocean with: 
     753         qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * zcoef            ! energy for melting solid precipitation over free ocean 
     754            &                - emp(:,:) * sst_m(:,:) * rcp           ! remove heat content due to mass flux (assumed to be at SST) 
     755         ! 
     756         !                                                       ! solar flux over the ocean          (qsr) 
     757         IF( srcv(jpr_qsroce)%laction )   qsr(:,:) = frcv(:,:,jpr_qsroce)  
     758         IF( srcv(jpr_qsrmix)%laction )   qsr(:,:) = frcv(:,:,jpr_qsrmix) 
    759759         ! 
    760760#if defined  key_cpl_carbon_cycle 
    761          !                                                              ! atmosph. CO2 (ppm) 
     761         !                                                       ! atmosph. CO2 (ppm) 
    762762         IF( srcv(jpr_co2)%laction )   atm_co2(:,:) = frcv(:,:,jpr_co2) 
    763763#endif 
    764  
     764         ! 
    765765      ENDIF 
    766766      ! 
     
    10461046      !!---------------------------------------------------------------------- 
    10471047      zicefr(:,:,1) = 1.- p_frld(:,:,1) 
    1048       IF( lk_diaar5 )   zcptn(:,:) = rcp * tn(:,:,1) 
     1048      zcptn(:,:) = rcp * sst_m(:,:) 
    10491049      ! 
    10501050      !                                                      ! ========================= ! 
     
    11181118            &                                                   +          pist(:,:,1)   * zicefr(:,:,1) ) ) 
    11191119      END SELECT 
    1120       !                                                           ! snow melting heat flux .... 
    1121       !   energy for melting solid precipitation over ice-free ocean 
    1122       zcoef = xlsn / rhosn 
     1120      ! 
     1121      zcoef = xlsn / rhosn                                        ! qns_tot update over free ocean with: 
    11231122      ztmp(:,:) = p_frld(:,:,1) * zsnow(:,:) * zcoef 
    1124       pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:) 
    1125       IF( lk_diaar5 )   CALL iom_put( 'hflx_snow_cea', ztmp + zsnow(:,:) * zcptn(:,:) )   ! heat flux from snow (cell average) 
    1126 !!gm 
    1127 !!    currently it is taken into account in leads budget but not in the qns_tot, and thus not in  
    1128 !!    the flux that enter the ocean.... 
    1129 !!    moreover 1 - it is not diagnose anywhere....  
    1130 !!             2 - it is unclear for me whether this heat lost is taken into account in the atmosphere or not... 
    1131 !! 
    1132 !! similar job should be done for snow and precipitation temperature 
    1133       !                                                           ! Iceberg melting heat flux .... 
    1134       !   energy for iceberg melting  
    1135       IF( srcv(jpr_cal)%laction ) THEN  
     1123      pqns_tot(:,:) = pqns_tot(:,:)                       & 
     1124         &          - ztmp(:,:)                           &            ! remove the latent heat flux of solid precip. melting 
     1125         &          + (  pemp_tot(:,:)                    &            ! remove the heat content of mass flux (assumed to be at SST) 
     1126         &             - pemp_ice(:,:) * p_frld(:,:,1)  ) * zcptn(:,:)  
     1127         ! 
     1128      IF( lk_diaar5 )   CALL iom_put( 'hflx_snow_cea', ztmp(:,:) + zsnow(:,:) * zcptn(:,:) )   ! heat flux from snow (cell average) 
     1129 
     1130!!gm BUG ???   just above the right value should be : ztmp + zsnow*p_frld*zcptn 
     1131 
     1132      !                                
     1133      IF( srcv(jpr_cal)%laction ) THEN                                 ! remove the latent heat flux of iceberg melting 
    11361134         zcoef = xlic / rhoic 
    11371135         ztmp(:,:) = frcv(:,:,jpr_cal) * zcoef 
    11381136         pqns_tot(:,:) = pqns_tot(:,:) - ztmp(:,:) 
     1137         ! 
    11391138         IF( lk_diaar5 )   CALL iom_put( 'hflx_cal_cea', ztmp + frcv(:,:,jpr_cal) * zcptn(:,:) )   ! heat flux from calving 
    11401139      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.