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 10900 for branches/UKMO/dev_r5518_FOAMv14_output_heat_fluxes/NEMOGCM/NEMO – NEMO

Ignore:
Timestamp:
2019-04-26T13:51:00+02:00 (5 years ago)
Author:
anaguiar
Message:

Changes to allow checking qns balance and if all terms are correctly evaluated - Test 4 described in https://code.metoffice.gov.uk/trac/gmed/ticket/454#comment:2

Location:
branches/UKMO/dev_r5518_FOAMv14_output_heat_fluxes/NEMOGCM/NEMO/OPA_SRC/SBC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_FOAMv14_output_heat_fluxes/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r10879 r10900  
    108108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsb               !: downward sensible heat flux over sea non solar [W/m2] 
    109109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qla               !: downward latent heat flux over sea non solar   [W/m2] 
     110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qlasprecip        !: latent melting heat for solid precip non solar [W/m2] 
     111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qevapsst          !: evap heat content at SST non solar             [W/m2] 
     112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qlprecip          !: liquid precip heat content at Tair non solar   [W/m2] 
     113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsprecip          !: solid precip heat content at min(Tait,Tsnow) non solar [W/m2] 
    110114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qsr_tot           !: total     solar heat flux (over sea and ice)   [W/m2] 
    111115   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qns_tot           !: total non solar heat flux (over sea and ice)   [W/m2] 
     
    192196      ALLOCATE( qns_tot(jpi,jpj) , qns  (jpi,jpj) , qns_b(jpi,jpj),        & 
    193197         &      qlw    (jpi,jpj) , qsb  (jpi,jpj) , qla  (jpi,jpj),        & 
     198         &      qlasprecip(jpi,jpj), qevapsst(jpi,jpj),                    & 
     199         &      qlprecip(jpi,jpj), qsprecip(jpi,jpj),                      &  
    194200         &      qsr_tot(jpi,jpj) , qsr  (jpi,jpj) ,                        & 
    195201         &      emp    (jpi,jpj) , emp_b(jpi,jpj) ,                        & 
  • branches/UKMO/dev_r5518_FOAMv14_output_heat_fluxes/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r10879 r10900  
    392392         &     + sf(jp_snow)%fnow(:,:,1) * rn_pfac                                &   ! add solid  precip heat content at min(Tair,Tsnow) 
    393393         &     * ( MIN( sf(jp_tair)%fnow(:,:,1), rt0_snow ) - rt0 ) * cpic * tmask(:,:,1) 
     394      ! Compute and output the individual terms of non solar heat content 
     395      ! in order to check if qlw, qla, qsb are correctly evaluated  
     396      qlasprecip(:,:) = sf(jp_snow)%fnow(:,:,1) * rn_pfac * lfus                          ! latent melting heat for solid precip  
     397      qevapsst(:,:)   = zevap(:,:) * pst(:,:) * rcp                                       ! evap heat content at SST  
     398      qlprecip(:,:)   = ( sf(jp_prec)%fnow(:,:,1) - sf(jp_snow)%fnow(:,:,1) ) * rn_pfac & ! liquid precip heat content at Tair 
     399         &     * ( sf(jp_tair)%fnow(:,:,1) - rt0 ) * rcp 
     400      qsprecip(:,:)   = sf(jp_snow)%fnow(:,:,1) * rn_pfac                               & ! solid precip heat content at min(Tair,Tsnow) 
     401         &     * ( MIN( sf(jp_tair)%fnow(:,:,1), rt0_snow ) - rt0 ) * cpic * tmask(:,:,1) 
    394402      ! 
    395403#if defined key_lim3 
  • branches/UKMO/dev_r5518_FOAMv14_output_heat_fluxes/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r10879 r10900  
    683683      ELSE 
    684684         qns(:,:)= qns(:,:)-sprecip(:,:)*Lfresh*(1.0-fr_i(:,:)) 
    685          qla(:,:)= qla(:,:)+sprecip(:,:)*Lfresh*(1.0-fr_i(:,:)) 
     685         ! Add latent heat due to melting of solid precip, see sbcblk_core.F90 
     686         qla(:,:)= qla(:,:)+sprecip(:,:)*Lfresh*(1.0-fr_i(:,:))  
    686687      ENDIF 
    687688 
  • branches/UKMO/dev_r5518_FOAMv14_output_heat_fluxes/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r10879 r10900  
    474474         CALL iom_put( "fmmflx", fmmflx  )                      ! Freezing-melting water flux 
    475475         CALL iom_put( "qt"    , qns  + qsr )                   ! total heat flux  
    476          CALL iom_put( "qns"   , qns        )                   ! solar heat flux 
     476         CALL iom_put( "qns"   , qns        )                   ! non solar heat flux 
    477477         CALL iom_put( "qsr"   ,       qsr  )                   ! solar heat flux 
    478478         IF( nn_ice > 0 .OR. nn_components == jp_iam_opa )   CALL iom_put( "ice_cover", fr_i )   ! ice fraction  
     
    483483            CALL iom_put( "qsb_oce"  , - qsb   )                ! output surface_downward_sensible_heat_flux 
    484484            CALL iom_put( "qla_oce"  , - qla   )                ! output surface_downward_latent_heat_flux 
     485            !Output individual terms to check if their sum matches qns_oce 
     486            !To be consistent with qns in sbcice_cice.F90, evaluate over ocean only *(1.0-fr_i)  
     487            CALL iom_put( "qlasprecip" , - qlasprecip*(1.0-fr_i) )  ! latent heat due to melting of solid precip non solar 
     488            CALL iom_put( "qevapsst"   , - qevapsst  *(1.0-fr_i) )    ! evap heat content at SST non solar 
     489            CALL iom_put( "qlprecip"   ,   qlprecip  *(1.0-fr_i) )    ! liquid precip heat content at Tair non solar 
     490            CALL iom_put( "qsprecip"   ,   qsprecip  *(1.0-fr_i) )    ! solid precip heat content at min(Tair,Tsnow) non solar 
    485491         ENDIF 
    486492      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.