Changeset 10900


Ignore:
Timestamp:
2019-04-26T13:51:00+02:00 (18 months 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
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_FOAMv14_output_heat_fluxes/NEMOGCM/CONFIG/SHARED/field_def.xml

    r10302 r10900  
    249249         <field id="qemp_oce"     long_name="Downward Heat Flux from E-P over open ocean"                                                       unit="W/m2"  /> 
    250250         <field id="taum_oce"     long_name="wind stress module over open ocean"           standard_name="magnitude_of_surface_downward_stress" unit="N/m2"  /> 
     251 
     252         <!-- * qns individual terms to check the total qns_oce along with qlw_oce, qsb_oce and qla_oce output, with ln_blk_core --> 
     253         <field id="qlasprecip"   long_name="latent melting heat for solid precip non solar"                 unit="W/m2"         /> 
     254         <field id="qevapsst"     long_name="evap heat content at SST non solar"                             unit="W/m2"         /> 
     255         <field id="qlprecip"     long_name="liquid precip heat content at Tair non solar"                   unit="W/m2"         /> 
     256         <field id="qsprecip"     long_name="solid precip heat content at min(Tait,Tsnow) non solar"         unit="W/m2"         /> 
    251257 
    252258         <!-- available key_oasis3 --> 
     
    670676      <field_group id="icbvar" grid_ref="grid_T_2D"  >  
    671677        <field id="berg_total_melt"    long_name="icb melt rate 2 of icebergs"                     unit="kg/m2/s"                    /> 
    672         <field id="berg_total_heat_flux"  long_name="icb latent heat of melting of icebergs"          unit="kg/m2/s"                    /> 
     678        <field id="berg_total_heat_flux"  long_name="icb latent heat of melting of icebergs"       unit="kg/m2/s"                    /> 
    673679        <field id="berg_melt"          long_name="icb melt rate of icebergs"                       unit="kg/m2/s"                    /> 
    674680        <field id="berg_buoy_melt"     long_name="icb buoyancy component of iceberg melt rate"     unit="kg/m2/s"                    /> 
  • 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.