Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/core_atmosphere/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2212,7 +2212,7 @@
<nml_option name="config_sfclayer_scheme" type="character" default_value="suite" in_defaults="false"
units="-"
description="configuration for surface layer-scheme"
possible_values="`suite',`sf_monin_obukhov',`sf_mynn',`off'"/>
possible_values="`suite',`sf_monin_obukhov',`sf_mynn',`sf_pxsfclay',`off'"/>

<nml_option name="config_gfconv_closure_deep" type="integer" default_value="0" in_defaults="false"
units="-"
Expand Down
11 changes: 7 additions & 4 deletions src/core_atmosphere/physics/mpas_atmphys_control.F
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ module mpas_atmphys_control
! Laura D. Fowler (laura@ucar.edu) / 2016-03-31.
! * added the options sf_mynn and bl_mynn and for the MYNN parameterization from WRF version 3.6.1.
! Laura D. Fowler (laura@ucar.edu) / 2016-04-11.
! * added Pleim surface layer scheme option sf_pxsfclay.
! Robert Gilliam (gilliam.robert@epa.gov) / 2016-09-19.
! * added the option cu_ntiedtke for the "new" Tiedtke parameterization of convection from WRF version 3.8.1.
! Laura D. Fowler (laura@ucar.edu) / 2016-09-19.
! * added the physics suite "convection_scale_aware" (see below for the physics options used in the suite).
Expand Down Expand Up @@ -267,10 +269,11 @@ subroutine physics_namelist_check(configs)
endif

!surface-layer scheme:
if(.not. (config_sfclayer_scheme .eq. 'off' .or. &
config_sfclayer_scheme .eq. 'sf_mynn' .or. &
config_sfclayer_scheme .eq. 'sf_monin_obukhov' .or. &
config_sfclayer_scheme .eq. 'sf_monin_obukhov_rev')) then
if(.not. (config_sfclayer_scheme .eq. 'off' .or. &
config_sfclayer_scheme .eq. 'sf_mynn' .or. &
config_sfclayer_scheme .eq. 'sf_monin_obukhov' .or. &
config_sfclayer_scheme .eq. 'sf_monin_obukhov_rev' .or. &
config_sfclayer_scheme .eq. 'sf_pxsfclay')) then

write(mpas_err_message,'(A,A20)') 'illegal value for surface layer scheme: ', &
trim(config_sfclayer_scheme)
Expand Down
63 changes: 62 additions & 1 deletion src/core_atmosphere/physics/mpas_atmphys_driver_sfclayer.F
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ module mpas_atmphys_driver_sfclayer
use mpas_atmphys_vars

use module_sf_mynn,only: sfclay_mynn
use module_sf_pxsfclay
use module_sf_sfclay
use module_sf_sfclayrev,only: sfclayrev
use sf_mynn,only: sf_mynn_init
Expand Down Expand Up @@ -48,7 +49,8 @@ module mpas_atmphys_driver_sfclayer
!
! WRF physics called from driver_sfclayer:
! ----------------------------------------
! * module_sf_sfclay: Monin-Obukhov surface layer scheme.
! * module_sf_sfclay : Monin-Obukhov surface layer scheme.
! * module_sf_pxsfclay : PX surface layer scheme.
!
! add-ons and modifications to sourcecode:
! ----------------------------------------
Expand All @@ -73,6 +75,8 @@ module mpas_atmphys_driver_sfclayer
! Laura D. Fowler (laura@ucar.edu) / 2016-03-25.
! * added the implementation of the MYNN surface layer scheme from WRF 3.6.1.
! Laura D. Fowler (laura@ucar.edu) / 2016-03-30.
! * added PX surface layer (pxsfclay) option.
! Jon Pleim (pleim.jon@epa.gov) and Hosein Foroutan (hosein@vt.edu) / 2016-05-04.
! * added the calculation of surface layer variables over seaice cells when config_frac_seaice is set to true.
! Laura D. Fowler (laura@ucar.edu) / 2016-10-03.
! * changed the definition of dx_p to match that used in other physics parameterizations.
Expand Down Expand Up @@ -829,6 +833,9 @@ subroutine init_sfclayer(configs)
case("sf_mynn")
call sf_mynn_init(errmsg,errflg)

case("sf_pxsfclay")
call pxsfclayinit(allowed_to_read)

case default

end select sfclayer_select
Expand Down Expand Up @@ -1076,6 +1083,60 @@ subroutine driver_sfclayer(itimestep,configs,mesh,diag_physics,sfc_input,its,ite
endif
call mpas_timer_stop('sf_mynn')

case("sf_pxsfclay")
call mpas_timer_start('sf_pxsfclay')
call pxsfclay( &
p3d = pres_hyd_p , psfc = psfc_p , t3d = t_p , &
u3d = u_p , v3d = v_p , qv3d = qv_p , &
dz8w = dz_p , cp = cp , g = gravity , &
rovcp = rcp , R = R_d , xlv = xlv , &
chs = chs_p , chs2 = chs2_p , cqs2 = cqs2_p , &
cpm = cpm_p , znt = znt_p , ust = ust_p , &
pblh = hpbl_p , mavail = mavail_p , zol = zol_p , &
mol = mol_p , regime = regime_p , psim = psim_p , &
psih = psih_p , th3d = th_p , xland = xland_p , &
hfx = hfx_p , qfx = qfx_p , lh = lh_p , &
tsk = tsk_p , flhc = flhc_p , ta2 = t2m_p , &
th2 = th2m_p , qa2 = q2_p , flqc = flqc_p , &
qgh = qgh_p , qsfc = qsfc_p , rmol = rmol_p , &
u10 = u10_p , v10 = v10_p , gz1oz0 = gz1oz0_p , &
wspd = wspd_p , br = br_p , isfflx = isfflx , &
dx = dx_p , svp1 = svp1 , svp2 = svp2 , &
svp3 = svp3 , svpt0 = svpt0 , ep1 = ep_1 , &
ep2 = ep_2 , karman = karman , &
ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , &
ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , &
its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte &
)

! Note that fractional sea-ice is currently not supported by PX.
! if(config_frac_seaice) then
! call pxsfclay( &
! p3d = pres_hyd_p , psfc = psfc_p , t3d = t_p , &
! u3d = u_p , v3d = v_p , qv3d = qv_p , &
! dz8w = dz_p , cp = cp , g = gravity , &
! rovcp = rcp , R = R_d , xlv = xlv , &
! chs = chs_sea , chs2 = chs2_sea , cqs2 = cqs2_sea , &
! cpm = cpm_sea , znt = znt_sea , ust = ust_sea , &
! pblh = hpbl_p , mavail = mavail_sea , zol = zol_sea , &
! mol = mol_sea , regime = regime_sea , psim = psim_sea , &
! psih = psih_sea , th3d = th_p , xland = xland_sea , &
! hfx = hfx_sea , qfx = qfx_sea , lh = lh_sea , &
! tsk = tsk_sea , flhc = flhc_sea , ta2 = t2m_sea , &
! th2 = th2m_sea , qa2 = q2_sea , flqc = flqc_sea , &
! qgh = qgh_sea , qsfc = qsfc_sea , rmol = rmol_sea , &
! u10 = u10_sea , v10 = v10_sea , gz1oz0 = gz1oz0_sea , &
! wspd = wspd_sea , br = br_sea , isfflx = isfflx , &
! dx = dx_p , svp1 = svp1 , svp2 = svp2 , &
! svp3 = svp3 , svpt0 = svpt0 , ep1 = ep_1 , &
! ep2 = ep_2 , karman = karman , &
! ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , &
! ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , &
! its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte &
! )
! endif
call mpas_timer_stop('sf_pxsfclay')

case default

end select sfclayer_select
Expand Down
1 change: 1 addition & 0 deletions src/core_atmosphere/physics/physics_wrf/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ OBJS = \
module_sf_noah_seaice.o \
module_sf_noah_seaice_drv.o \
module_sf_oml.o \
module_sf_pxsfclay.o \
module_sf_sfclay.o \
module_sf_sfclayrev.o \
module_sf_urban.o \
Expand Down
Loading