Skip to content
Closed
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
62 changes: 62 additions & 0 deletions Registry/Registry.EM_COMMON
Original file line number Diff line number Diff line change
Expand Up @@ -901,6 +901,56 @@ state real CHC_SFCDIF ij misc 1 - r "C
state real CMGR_SFCDIF ij misc 1 - r "CMGR_SFCDIF" "" ""
state real CHGR_SFCDIF ij misc 1 - r "CHGR_SFCDIF" "" ""

# Town Energy Balance (TEB)
state real TEB_TI_BLD ij misc 1 - r "TEB_TI_BLD" "inside building temp computed with its equation evolution" "K"
state real TEB_TI_BLD_EQ ij misc 1 - r "TEB_TI_BLD_EQ" "inside building temperature" "K"
state real TEB_TI_BLDWFR ij misc 1 - r "TEB_TI_BLDWFR" "inside building temperature without heating" "K"
state real TEB_T_CANYON ij misc 1 - r "TEB_T_CANYON" "outdoor temperature without heating" "K"
state real TEB_Q_CANYON ij misc 1 - r "TEB_Q_CANYON" "outdoor air specific humidity" "kg kg-1"
state real TEB_WS_ROOF ij misc 1 - rh "TEB_WS_ROOF" "roof water content" "(kg/m2)"
state real TEB_WS_ROAD ij misc 1 - rh "TEB_WS_ROAD" "road water content" "(kg/m2)"
state real TEB_WSNOW_ROOF i{teb_snly}j misc 1 Z r "TEB_WSNOW_ROOF" "roof snow layers reservoir" "kg m{-2}"
state real TEB_TSNOW_ROOF i{teb_snly}j misc 1 Z r "TEB_TSNOW_ROOF" "roof snow layers temperature" "K"
state real TEB_RSNOW_ROOF i{teb_snly}j misc 1 Z r "TEB_RSNOW_ROOF" "roof snow layers density" "kg m{-3}"
state real TEB_ASNOW_ROOF ij misc 1 - r "TEB_ASNOW_ROOF" "roof snow albedo" "dimensionless"
state real TEB_ESNOW_ROOF ij misc 1 - r "TEB_ESNOW_ROOF" "roof snow emissivity" "dimensionless"
state real TEB_TSSNOW_ROOF ij misc 1 - r "TEB_TSSNOW_ROOF" "roof snow surface temperature" "K"
state real TEB_WSNOW_ROAD i{teb_snly}j misc 1 Z r "TEB_WSNOW_ROAD" "road snow layers reservoir" "kg m{-2}"
state real TEB_TSNOW_ROAD i{teb_snly}j misc 1 Z r "TEB_TSNOW_ROAD" "road snow layers temperature" "K"
state real TEB_RSNOW_ROAD i{teb_snly}j misc 1 Z r "TEB_RSNOW_ROAD" "road snow layers density" "kg m{-3}"
state real TEB_ASNOW_ROAD ij misc 1 - r "TEB_ASNOW_ROAD" "road snow albedo" "dimensionless"
state real TEB_ESNOW_ROAD ij misc 1 - r "TEB_ESNOW_ROAD" "road snow emissivity" "dimensionless"
state real TEB_TSSNOW_ROAD ij misc 1 - r "TEB_TSSNOW_ROAD" "road snow surface temperature" "K"
state real TEB_T_WIN1 ij misc 1 - r "TEB_T_WIN1" "outdoor window temperature" "K"
state real TEB_T_WIN2 ij misc 1 - r "TEB_T_WIN2" "indoor window temperature" "K"
state real TEB_AUX_MAX ij misc 1 - r "TEB_AUX_MAX" "auxiliar variable for autosize calcs" "W m-2"
state real TEB_QI_BLD ij misc 1 - r "TEB_QI_BLD" "indoor air specific humidity" "kg kg-1"
state real TEB_THER_PRODC_DAY ij misc 1 - r "TEB_THER_PRODC_DAY" "present day integrated thermal production of energy" "J/m2"
state real TEB_T_FLOOR i{teb_flly}j misc 1 Z r "TEB_T_FLOOR" "floor layers temperatures" "K"
state real TEB_T_MASS i{teb_flly}j misc 1 Z r "TEB_T_MASS" "internal mass layers temperatures" "K"
state real TEB_T_ROAD i{teb_rdly}j misc 1 Z r "TEB_T_ROAD" "road layers temperatures" "K"
state real TEB_T_ROOF i{teb_roly}j misc 1 Z r "TEB_T_ROOF" "roof layers temperatures" "K"
state real TEB_T_WALL_A i{teb_waly}j misc 1 Z r "TEB_T_WALL_A" "wall layers temperatures (wall A)" "K"
state real TEB_T_WALL_B i{teb_waly}j misc 1 Z r "TEB_T_WALL_B" "wall layers temperatures (wall B)" "K"
state real TEB_HVAC_COOL ij misc 1 - h "TEB_HVAC_COOL" "energy consumption of the cooling system" "W m-2"
state real TEB_HVAC_HEAT ij misc 1 - h "TEB_HVAC_HEAT" "energy consumption of the heating system" "W m-2"
state real TEB_THER_PROD_PANEL ij misc 1 - h "TEB_THER_PROD_PANEL" "thermal energy production of solar panel on roofs" "W m-2"
state real TEB_PHOT_PROD_PANEL ij misc 1 - h "TEB_PHOT_PROD_PANEL" "photovoltaic energy production of solar panel on roofs" "W m-2"
state real TEB_TSK_RURAL ij misc 1 - r "TEB_TSK_RURAL" "TSK for rural fraction (TEB only)" "K"

# BEGIN: INPUT quantities used for evaluating WRF-TEB with TEB OFFLINE
state real TEB_INPUT_TA ij misc 1 - h "TEB_INPUT_TA" " " " "
state real TEB_INPUT_PS ij misc 1 - h "TEB_INPUT_PS" " " " "
state real TEB_INPUT_QA ij misc 1 - h "TEB_INPUT_QA" " " " "
state real TEB_INPUT_WIND ij misc 1 - h "TEB_INPUT_WIND" " " " "
state real TEB_INPUT_DIR ij misc 1 - h "TEB_INPUT_DIR" " " " "
state real TEB_INPUT_DIR_SW ij misc 1 - h "TEB_INPUT_DIR_SW" " " " "
state real TEB_INPUT_SCA_SW ij misc 1 - h "TEB_INPUT_SCA_SW" " " " "
state real TEB_INPUT_LW ij misc 1 - h "TEB_INPUT_LW" " " " "
state real TEB_INPUT_RAIN ij misc 1 - h "TEB_INPUT_RAIN" " " " "
state real TEB_INPUT_SNOW ij misc 1 - h "TEB_INPUT_SNOW" " " " "
state real TEB_INPUT_DIR_CO2 ij misc 1 - h "TEB_INPUT_DIR_CO2" " " " "
# END: INPUT quantities used for evaluating WRF-TEB with TEB OFFLINE

# solar location variables from radiation driver
state real COSZEN ij misc 1 - rh "COSZEN" "COS of SOLAR ZENITH ANGLE" "dimensionless"
Expand Down Expand Up @@ -2320,6 +2370,14 @@ rconfig integer maxpatch namelist,physics 1 10
rconfig integer num_snow_layers namelist,physics 1 3 irh "num_snow_layers" "" ""
rconfig integer num_snso_layers namelist,physics 1 7 irh "num_snso_layers" "" ""

# TEB
rconfig integer teb_num_floor_layers namelist,physics 1 5 irh "teb_num_floor_layers" "" ""
rconfig integer teb_num_road_layers namelist,physics 1 5 irh "teb_num_road_layers" "" ""
rconfig integer teb_num_roof_layers namelist,physics 1 5 irh "teb_num_roof_layers" "" ""
rconfig integer teb_num_wall_layers namelist,physics 1 5 irh "teb_num_wall_layers" "" ""
rconfig integer teb_num_snow_layers namelist,physics 1 1 irh "teb_num_snow_layers" "" ""
rconfig integer teb_test_integration namelist,physics 1 0 irh "teb_test_integration" "" ""

rconfig integer num_urban_ndm derived 1 1 irh "num_urban_ndm" "maximum number of street dimensions (ndm in BEP or BEM header)" ""
rconfig integer num_urban_ng derived 1 1 irh "num_urban_ng" "number of grid levels in the ground (ng_u in BEP or BEM header)" ""
rconfig integer num_urban_nwr derived 1 1 irh "num_urban_nwr" "number of grid levels in the walls or roof (nwr_u in BEP or BEM header)" ""
Expand Down Expand Up @@ -2900,6 +2958,10 @@ package sfclayscheme sf_sfclay_physics==91 - -
package noahucmscheme sf_urban_physics==1 - state:trb_urb4d,tw1_urb4d,tw2_urb4d,tgb_urb4d,sfw1_urb3d,sfw2_urb3d,sfr_urb3d,sfg_urb3d,a_u_bep,a_v_bep,a_t_bep,a_q_bep,a_e_bep,b_u_bep,b_v_bep,b_t_bep,b_q_bep,b_e_bep,dlg_bep,dl_u_bep,sf_bep,vl_bep,mh_urb2d,stdh_urb2d,lf_urb2d,lp_urb2d,hgt_urb2d,lb_urb2d,tgr_urb2d,cmcr_urb2d,drelr_urb2d,drelb_urb2d,drelg_urb2d,flxhumr_urb2d,flxhumb_urb2d,flxhumg_urb2d,tgrl_urb3d,smr_urb3d,cmgr_sfcdif,chgr_sfcdif,trl_urb3d,tgl_urb3d,tbl_urb3d
package bepscheme sf_urban_physics==2 - state:a_u_bep,a_v_bep,a_t_bep,a_q_bep,a_e_bep,b_u_bep,b_v_bep,b_t_bep,b_q_bep,b_e_bep,dlg_bep,dl_u_bep,sf_bep,vl_bep,trb_urb4d,tw1_urb4d,tw2_urb4d,tgb_urb4d,sfw1_urb3d,sfw2_urb3d,sfr_urb3d,sfg_urb3d,hi_urb2d,lp_urb2d,hgt_urb2d,lb_urb2d,trl_urb3d,tgl_urb3d,tbl_urb3d,tsk_rural
package bep_bemscheme sf_urban_physics==3 - state:a_u_bep,a_v_bep,a_t_bep,a_q_bep,a_e_bep,b_u_bep,b_v_bep,b_t_bep,b_q_bep,b_e_bep,dlg_bep,dl_u_bep,sf_bep,vl_bep,trb_urb4d,tw1_urb4d,tw2_urb4d,tgb_urb4d,tlev_urb3d,qlev_urb3d,tw1lev_urb3d,tw2lev_urb3d,tglev_urb3d,tflev_urb3d,sf_ac_urb3d,lf_ac_urb3d,cm_ac_urb3d,sfvent_urb3d,lfvent_urb3d,sfwin1_urb3d,sfwin2_urb3d,sfw1_urb3d,sfw2_urb3d,sfr_urb3d,sfg_urb3d,hi_urb2d,lp_urb2d,hgt_urb2d,lb_urb2d,trl_urb3d,tgl_urb3d,tbl_urb3d,tsk_rural
package tebscheme sf_urban_physics==4 - state:lp_urb2d,hgt_urb2d,lb_urb2d,trl_urb3d,tgl_urb3d,tbl_urb3d,TEB_TI_BLD,TEB_T_CANYON,TEB_Q_CANYON,TEB_TI_BLD_EQ,TEB_TI_BLDWFR,TEB_WS_ROOF,TEB_WS_ROAD,TEB_WSNOW_ROOF,TEB_TSNOW_ROOF,TEB_RSNOW_ROOF,TEB_ASNOW_ROOF,TEB_TSSNOW_ROOF,TEB_ESNOW_ROOF,TEB_WSNOW_ROAD,TEB_TSNOW_ROAD,TEB_RSNOW_ROAD,TEB_ASNOW_ROAD,TEB_TSSNOW_ROAD,TEB_ESNOW_ROAD,TEB_T_WIN1,TEB_T_WIN2,TEB_AUX_MAX,TEB_QI_BLD,TEB_THER_PRODC_DAY,TEB_T_FLOOR,TEB_T_MASS,TEB_T_ROAD,TEB_T_ROOF,TEB_T_WALL_A,TEB_T_WALL_B,TEB_HVAC_COOL,TEB_HVAC_HEAT,TEB_TSK_RURAL

package teb_notest teb_test_integration==0 - -
package teb_test teb_test_integration==1 - state:TEB_INPUT_TA,TEB_INPUT_PS,TEB_INPUT_QA,TEB_INPUT_WIND,TEB_INPUT_DIR,TEB_INPUT_DIR_SW,TEB_INPUT_SCA_SW,TEB_INPUT_LW,TEB_INPUT_RAIN,TEB_INPUT_SNOW,TEB_INPUT_DIR_CO2

package nolsmscheme sf_surface_physics==0 - -
package slabscheme sf_surface_physics==1 - -
Expand Down
6 changes: 6 additions & 0 deletions Registry/registry.dimspec
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ dimspec snly 2 namelist=num_snow_layers z snow_layers
dimspec l 2 namelist=num_soil_layers z soil_layers
dimspec snsl 2 namelist=num_snso_layers z snso_layers

dimspec teb_flly 2 namelist=teb_num_floor_layers z teb_floor_layers
dimspec teb_rdly 2 namelist=teb_num_road_layers z teb_road_layers
dimspec teb_roly 2 namelist=teb_num_roof_layers z teb_roof_layers
dimspec teb_waly 2 namelist=teb_num_wall_layers z teb_wall_layers
dimspec teb_snly 2 namelist=teb_num_snow_layers z teb_snow_layers

dimspec umap0 2 namelist=num_urban_ndm z num_urban_ndm
dimspec umap1 2 namelist=urban_map_zrd z urban_map_zrd
dimspec umap2 2 namelist=urban_map_zwd z urban_map_zwd
Expand Down
32 changes: 32 additions & 0 deletions arch/Config.pl
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
$sw_jasperinc_path="";
$sw_esmflib_path="";
$sw_esmfinc_path="";
$sw_teblib_path="";
$sw_tebinc_path="";
$sw_ldflags="";
$sw_compileflags="";
$sw_opt_level="";
Expand Down Expand Up @@ -321,6 +323,17 @@
$sw_esmf_ldflag = "yes" ;
}

# A separately-installed TEB library is required to build the WRF-TEB physics option.
# User must set environment variable TEB_PATH to the build folder of TEB
# to enable this feature prior to running configure.
if ( $ENV{WRF_TEB} eq "1" && $ENV{TEB_PATH} )
{
printf "Configuring to use TEB library for WRF-TEB support...\n" ;
printf(" \$TEB_PATH = %s\n",$ENV{TEB_PATH});
$sw_teblib_path = $ENV{TEB_PATH};
$sw_tebinc_path = "$ENV{TEB_PATH}/mod";
}

# parse the configure.wrf file

$validresponse = 0 ;
Expand Down Expand Up @@ -556,6 +569,16 @@
$_ =~ s:CONFIGURE_TERRAIN_AND_LANDUSE:-DLANDREAD_STUB=1:g;
}

if ( $sw_teblib_path && $sw_tebinc_path )
{
$_ =~ s:CONFIGURE_TEB_FLAG:-DWRF_TEB:g ;
$_ =~ s:CONFIGURE_TEB_INC:-I$sw_tebinc_path:g ;
}
else
{ $_ =~ s:CONFIGURE_TEB_FLAG::g ;
$_ =~ s:CONFIGURE_TEB_INC::g ;
}

# ESMF substitutions in configure.defaults
if ( $sw_esmflib_path && $sw_esmfinc_path )
{
Expand Down Expand Up @@ -869,6 +892,15 @@
$_ =~ s:CONFIGURE_GRIB2_LIB::g ;
}

if ( $sw_teblib_path && $sw_tebinc_path )
{
$_ =~ s:CONFIGURE_TEB_LIB:-L$sw_teblib_path -lteb:g ;
}
else
{
$_ =~ s:CONFIGURE_TEB_LIB::g ;
}

if ( $sw_gpfs_path ne "" )
{ if (/^GPFS.*=/)
{ $_ =~ s/\r|\n//g;
Expand Down
5 changes: 4 additions & 1 deletion arch/postamble
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ ARCHFLAGS = $(COREDEFS) -DIWORDSIZE=$(IWORDSIZE) -DDWORDSIZE=$(DWORDSIZ
CONFIGURE_4DVAR_FLAG \
CONFIGURE_TERRAIN_AND_LANDUSE \
CONFIGURE_WAVELET_FLAG \
CONFIGURE_TEB_FLAG \
CONFIGURE_NESTOPT \
-DUSE_ALLOCATABLES \
-Dwrfmodel \
Expand Down Expand Up @@ -53,7 +54,9 @@ INCLUDE_MODULES = $(MODULE_SRCH_FLAG) \
-I$(WRF_SRC_ROOT_DIR)/wrftladj \
-I$(WRF_SRC_ROOT_DIR)/chem -I$(WRF_SRC_ROOT_DIR)/inc \
-I$(NETCDFPATH)/include \
CONFIGURE_RTTOV_INC
CONFIGURE_RTTOV_INC \
CONFIGURE_TEB_INC

REGISTRY = Registry
CC_TOOLS_CFLAGS = CONFIGURE_NMM_CORE

Expand Down
2 changes: 1 addition & 1 deletion arch/preamble
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ LIBWRFLIB = libwrflib.a
#NOWIN $(WRF_SRC_ROOT_DIR)/frame/pack_utils.o

#NOWIN LIB_EXTERNAL = \
#NOWIN CONFIGURE_NETCDF_LIB_PATH CONFIGURE_PNETCDF_LIB_PATH CONFIGURE_GRIB2_LIB CONFIGURE_ATMOCN_LIB CONFIGURE_HDF5_LIB_PATH
#NOWIN CONFIGURE_NETCDF_LIB_PATH CONFIGURE_PNETCDF_LIB_PATH CONFIGURE_GRIB2_LIB CONFIGURE_ATMOCN_LIB CONFIGURE_HDF5_LIB_PATH CONFIGURE_TEB_LIB


#### Architecture specific settings ####
Expand Down
44 changes: 44 additions & 0 deletions dyn_em/module_first_rk_step_part1.F
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,50 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags &
& ,SF_BEP=grid%sf_bep,VL_BEP=grid%vl_bep &
& ,A_E_BEP=grid%a_e_bep,B_E_BEP=grid%b_e_bep,DLG_BEP=grid%dlg_bep &
& ,DL_U_BEP=grid%dl_u_bep &
!
! BEGIN: Optional urban for TEB
& ,teb_test_integration=grid%teb_test_integration &
& ,teb_num_snow_layers=grid%teb_num_snow_layers &
& ,teb_num_road_layers=grid%teb_num_road_layers &
& ,teb_num_roof_layers=grid%teb_num_roof_layers &
& ,teb_num_wall_layers=grid%teb_num_wall_layers &
& ,teb_num_floor_layers=grid%teb_num_floor_layers &
& ,TEB_TI_BLD=grid%TEB_TI_BLD &
& ,TEB_T_CANYON=grid%TEB_T_CANYON, TEB_Q_CANYON=grid%TEB_Q_CANYON &
& ,TEB_WS_ROOF=grid%TEB_WS_ROOF, TEB_WS_ROAD=grid%TEB_WS_ROAD &
& ,TEB_WSNOW_ROOF=grid%TEB_WSNOW_ROOF, TEB_TSNOW_ROOF=grid%TEB_TSNOW_ROOF &
& ,TEB_RSNOW_ROOF=grid%TEB_RSNOW_ROOF, TEB_ASNOW_ROOF=grid%TEB_ASNOW_ROOF &
& ,TEB_TSSNOW_ROOF=grid%TEB_TSSNOW_ROOF, TEB_ESNOW_ROOF=grid%TEB_ESNOW_ROOF &
& ,TEB_WSNOW_ROAD=grid%TEB_WSNOW_ROAD, TEB_TSNOW_ROAD=grid%TEB_TSNOW_ROAD &
& ,TEB_RSNOW_ROAD=grid%TEB_RSNOW_ROAD, TEB_ASNOW_ROAD=grid%TEB_ASNOW_ROAD &
& ,TEB_TSSNOW_ROAD=grid%TEB_TSSNOW_ROAD, TEB_ESNOW_ROAD=grid%TEB_ESNOW_ROAD &
& ,TEB_T_WIN1=grid%TEB_T_WIN1, TEB_T_WIN2=grid%TEB_T_WIN2 &
& ,TEB_AUX_MAX=grid%TEB_AUX_MAX, TEB_THER_PRODC_DAY=grid%TEB_THER_PRODC_DAY &
& ,TEB_QI_BLD=grid%TEB_QI_BLD &
& ,TEB_T_FLOOR=grid%TEB_T_FLOOR, TEB_T_MASS=grid%TEB_T_MASS &
& ,TEB_T_ROAD=grid%TEB_T_ROAD, TEB_T_ROOF=grid%TEB_T_ROOF &
& ,TEB_T_WALL_A=grid%TEB_T_WALL_A, TEB_T_WALL_B=grid%TEB_T_WALL_B &
& ,TEB_HVAC_COOL=grid%TEB_HVAC_COOL, TEB_HVAC_HEAT=grid%TEB_HVAC_HEAT &
& ,TEB_THER_PROD_PANEL=grid%TEB_THER_PROD_PANEL &
& ,TEB_PHOT_PROD_PANEL=grid%TEB_PHOT_PROD_PANEL &
& ,TEB_TSK_RURAL=grid%TEB_TSK_RURAL &
!
! BEGIN: INPUT quantities used for evaluating WRF-TEB with TEB OFFLINE
& ,TEB_INPUT_TA=grid%TEB_INPUT_TA &
& ,TEB_INPUT_PS=grid%TEB_INPUT_PS &
& ,TEB_INPUT_QA=grid%TEB_INPUT_QA &
& ,TEB_INPUT_WIND=grid%TEB_INPUT_WIND &
& ,TEB_INPUT_DIR=grid%TEB_INPUT_DIR &
& ,TEB_INPUT_DIR_SW=grid%TEB_INPUT_DIR_SW &
& ,TEB_INPUT_SCA_SW=grid%TEB_INPUT_SCA_SW &
& ,TEB_INPUT_LW=grid%TEB_INPUT_LW &
& ,TEB_INPUT_RAIN=grid%TEB_INPUT_RAIN &
& ,TEB_INPUT_SNOW=grid%TEB_INPUT_SNOW &
& ,TEB_INPUT_DIR_CO2=grid%TEB_INPUT_DIR_CO2 &
! END: INPUT quantities used for evaluating WRF-TEB with TEB OFFLINE
!
! END: Optional urban for TEB
!
& ,CMR_SFCDIF=grid%cmr_sfcdif, CHR_SFCDIF=grid%chr_sfcdif & !I/O urban
& ,CMC_SFCDIF=grid%cmc_sfcdif, CHC_SFCDIF=grid%chc_sfcdif & !I/O urban
& ,CMGR_SFCDIF=grid%cmgr_sfcdif, CHGR_SFCDIF=grid%chgr_sfcdif & !I/O urban
Expand Down
3 changes: 2 additions & 1 deletion dyn_em/module_initialize_real.F
Original file line number Diff line number Diff line change
Expand Up @@ -2957,7 +2957,8 @@ SUBROUTINE init_domain_rk ( grid &

! Split NUDAPT Urban Parameters

IF ( ( config_flags%sf_urban_physics == 1 ) .OR. ( config_flags%sf_urban_physics == 2 ) .OR. ( config_flags%sf_urban_physics == 3 ) ) THEN
IF ( ( config_flags%sf_urban_physics == 1 ) .OR. ( config_flags%sf_urban_physics == 2 ) .OR. ( config_flags%sf_urban_physics == 3 ) .OR. &
( config_flags%sf_urban_physics == 4 ) ) THEN
DO j = jts , MIN(jde-1,jte)
DO i = its , MIN(ide-1,ite)
IF ( MMINLU == 'NLCD40' .OR. MMINLU == 'MODIFIED_IGBP_MODIS_NOAH') THEN
Expand Down
Loading