Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#916 closed upgrade (Done)

VERY IMPORTANT: Update WRF ESMF/NUOPC cap module — at Version 3

Reported by: arango Owned by:
Priority: major Milestone: Release ROMS/TOMS 4.1
Component: Nonlinear Version: 4.0
Keywords: Cc:

Description (last modified by arango)

We have carefully examined the DATA-WRF-ROMS coupling system with the ESMF/NUOPC library. We fixed esmf_atm_wrf.h NUOPC cap module after a detailed analysis of the heat flux balance equation. The documentation of WRF fluxes in the code is confusing about the direction (downward/upward) and the sign (positive/negative) of the latent and sensible heat fluxes. The net heat flux previously exported from WRF to ROMS was incorrect due to the confusing information.

  • There are several variables in WRF for the heat component fluxes:

-- There is downwelling shortwave flux (swdnb, downward) and upwelling shortwave flux (swupb, upward) at the atmosphere bottom. Both are positive and with W/m2 units. Therefore, the net shortwave radiation flux is swdnb minus swupb, stored in variable gsw, is positive and downward since swupb is around 8 percent of the magnitude of swdnb. Notice that the variable swdown is equivalent to swdnb. Both are positive and with W/m2 units.

-- Since the ocean needs net shortwave radiation flux, we decided to use the downward (swdnb) and upward (swupb) fluxes for clarity. Also, the time-averaged values swdnb_mean and swupb_mean are available when the RAMS diagnostics are activated for semi-implicit coupling.

-- Similarly, there is downwelling longwave flux (lwdnb, downward) and upwelling longwave flux (lwupb, upward) at the atmosphere bottom. The variable lwupb is basically StefBo * emiss * Tsur4. Tsur is the land and ocean temperature at the atmosphere bottom (Kelvin). Likewise, notice that the variable glw is equivalent to lwdnb. We will use glw because its equivalent time-averaged variable is glw_mean when the RAMS diagnostics are activated for semi-implicit coupling. The net longwave radiation flux, glw minus lwupb, can be positive or negative.

-- The variable hfx is the sensible heat flux (W/m2), and lh is the latent heat flux (W/m2). Both fluxes are positive and upward from the bottom of the atmosphere. Please ignore the conflicting documentation in the WRF source code for these fluxes. The time-averaged values are hfx_mean and lh_mean, respectively. Therefore, we need to flip the sign and use minus when computing the ocean surface net heat flux.

-- Therefore, if BULK_FLUXES is off, the surface net heat flux (W/m2) exported to the ocean in subroutine WRF_Export of cap module esmf_atm_wrf.h needs to be:

            CASE ('nflx', 'shflux')
              MyFmin(1)= MISSING_dp
              MyFmax(1)=-MISSING_dp
              DO j=Jstr,Jend
                DO i=Istr,Iend
# ifdef WRF_TIMEAVG
                  Fval=(grid%swdnb_mean(i,j)-grid%swupb_mean(i,j))+     &
     &                 (grid%glw_mean(i,j)-grid%lwupb_mean(i,j))-       &
     &                 grid%lh_mean (i,j)-                              &
     &                 grid%hfx_mean(i,j)
# else
                  Fval=(grid%swdnb(i,j)-grid%swupb(i,j))+               &
     &                 (grid%glw(i,j)-grid%lwupb(i,j))-                 &
     &                 grid%lh (i,j)-                                   &
     &                 grid%hfx(i,j)
# endif
                  MyFmin(1)=MIN(MyFmin(1),Fval)
                  MyFmax(1)=MAX(MyFmax(1),Fval)
                  ptr2d(i,j)=Fval
                END DO
              END DO

Here, the CPP option WRF_TIMEAVG is used to compute the flux with the RAMS time-averaged diagnostics for semi-implicit coupling (see RunSequence in wikiROMS).

  • Several routines in ROMS were updated to allow importing the components of the heat flux balance for debugging and output purposes when BULK_FLUXES is off.
  • The test case for Hurricane Irene has been revised accordingly in the test repository. Please check this application when configuring your coupling system.

Snapshots of WRF land and ocean surface temperature and heat flux components are shown below for the hurricane Irene application:

https://www.myroms.org/trac/wrf_irene_tsur.png

https://www.myroms.org/trac/wrf_irene_swflx.png

https://www.myroms.org/trac/wrf_irene_lwflx.png

https://www.myroms.org/trac/wrf_irene_lhflx.png

https://www.myroms.org/trac/wrf_irene_shflx.png

https://www.myroms.org/trac/wrf_irene_nhflx.png


Then, the atmospheric field imported by ROMS are:

https://www.myroms.org/trac/roms_irene_swflx.png

https://www.myroms.org/trac/roms_irene_lwflx.png

https://www.myroms.org/trac/roms_irene_lhflx.png

https://www.myroms.org/trac/roms_irene_shflx.png

https://www.myroms.org/trac/roms_irene_nhflx.png

https://www.myroms.org/trac/roms_irene_EminusP.png

https://www.myroms.org/trac/roms_irene_wstress.png

https://www.myroms.org/trac/roms_irene_pair.png


Many thanks to my colleagues at Rutgers, John Wilkin, Julia Levin, and Travis Miles, for the discussions about WRF-ROMS coupling.


The zero values in the latent heat flux in the Mid-Atlantic Bight (MAB) were corrected by commenting a limiter kluge in WRF modules module_sf_sfclay.F and module_sf_sfclayrev.F. But unfortunately, it has been there for years, and the WRF developers refuse to correct it. Specifically, we need to comment on these two lines:

!   line 898

    QFX(I)=AMAX1(QFX(I),0.)    
 
!   And line 916

    HFX(I)=AMAX1(HFX(I),-250.)

Furthermore, unlimited and limited latent heat flux and its difference (unlimited minus limited) values are shown below. Notice the effects of the removing the limiters along the US East Coast, MAB, and the Gulf of Maine.

https://www.myroms.org/trac/wrf_irene_lhfU.png

https://www.myroms.org/trac/wrf_irene_lhfL.png

https://www.myroms.org/trac/wrf_irene_lhf_diff.png

The resulting net heat flux difference between using unlimited and limited latent heat fluxes yields:

https://www.myroms.org/trac/wrf_irene_nhflx_diff.png

Therefore, users need to be aware of the latent heat flux limiters in the WRF modules mentioned above and experiment in their particular applications.

Change History (3)

comment:1 by arango, 2 years ago

Resolution: Done
Status: newclosed

comment:2 by arango, 2 years ago

Description: modified (diff)

comment:3 by arango, 2 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.