diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md
index 3ad5ef7c10..88dc9ef823 100644
--- a/BuildResidentialHPXML/README.md
+++ b/BuildResidentialHPXML/README.md
@@ -2315,6 +2315,19 @@ The heat load served fraction of the second heating system. Ignored if this heat
+**HVAC Distribution: Blower Fan Efficiency**
+
+The blower fan efficiency at maximum fan speed. Applies only to Furnace heating system, central air conditioner and mini-split cooling systems, and air-to-air, mini-split, and ground-to-air heat pumps. If not provided, the OS-HPXML default is used.
+
+- **Name:** ``hvac_distribution_fan_watts_per_cfm``
+- **Type:** ``Double``
+
+- **Units:** ``W/CFM``
+
+- **Required:** ``false``
+
+
+
**HVAC Control: Heating Weekday Setpoint Schedule**
Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.
diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb
index 327a8d2a68..1d32f0cdc3 100644
--- a/BuildResidentialHPXML/measure.rb
+++ b/BuildResidentialHPXML/measure.rb
@@ -1402,6 +1402,12 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument
arg.setDefaultValue(0.25)
args << arg
+ arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hvac_distribution_fan_watts_per_cfm', false)
+ arg.setDisplayName('HVAC Distribution: Blower Fan Efficiency')
+ arg.setDescription("The blower fan efficiency at maximum fan speed. Applies only to #{HPXML::HVACTypeFurnace} heating system, #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} cooling systems, and #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir} heat pumps. If not provided, the OS-HPXML default is used.")
+ arg.setUnits('W/CFM')
+ args << arg
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('hvac_control_heating_weekday_setpoint', false)
arg.setDisplayName('HVAC Control: Heating Weekday Setpoint Schedule')
arg.setDescription('Specify the constant or 24-hour comma-separated weekday heating setpoint schedule. Required unless a detailed CSV schedule is provided.')
@@ -4856,6 +4862,12 @@ def self.set_heating_systems(hpxml_bldg, args)
end
end
+ if args[:hvac_distribution_fan_watts_per_cfm].is_initialized
+ if [HPXML::HVACTypeFurnace].include?(heating_system_type)
+ fan_watts_per_cfm = args[:hvac_distribution_fan_watts_per_cfm].get
+ end
+ end
+
fraction_heat_load_served = args[:heating_system_fraction_heat_load_served]
if heating_system_type.include?('Shared')
@@ -4878,6 +4890,7 @@ def self.set_heating_systems(hpxml_bldg, args)
airflow_defect_ratio: airflow_defect_ratio,
pilot_light: pilot_light,
pilot_light_btuh: pilot_light_btuh,
+ fan_watts_per_cfm: fan_watts_per_cfm,
is_shared_system: is_shared_system,
number_of_units_served: number_of_units_served,
primary_system: true)
@@ -4934,6 +4947,12 @@ def self.set_cooling_systems(hpxml_bldg, args)
end
end
+ if args[:hvac_distribution_fan_watts_per_cfm].is_initialized
+ if [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type)
+ fan_watts_per_cfm = args[:hvac_distribution_fan_watts_per_cfm].get
+ end
+ end
+
if [HPXML::HVACTypePTAC, HPXML::HVACTypeRoomAirConditioner].include?(cooling_system_type)
if args[:cooling_system_integrated_heating_system_fuel].is_initialized
integrated_heating_system_fuel = args[:cooling_system_integrated_heating_system_fuel].get
@@ -4966,6 +4985,7 @@ def self.set_cooling_systems(hpxml_bldg, args)
airflow_defect_ratio: airflow_defect_ratio,
charge_defect_ratio: charge_defect_ratio,
crankcase_heater_watts: cooling_system_crankcase_heater_watts,
+ fan_watts_per_cfm: fan_watts_per_cfm,
primary_system: true,
integrated_heating_system_fuel: integrated_heating_system_fuel,
integrated_heating_system_capacity: integrated_heating_system_capacity,
@@ -5073,6 +5093,12 @@ def self.set_heat_pumps(hpxml_bldg, args)
end
end
+ if args[:hvac_distribution_fan_watts_per_cfm].is_initialized
+ if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpGroundToAir].include?(heat_pump_type)
+ fan_watts_per_cfm = args[:hvac_distribution_fan_watts_per_cfm].get
+ end
+ end
+
fraction_heat_load_served = args[:heat_pump_fraction_heat_load_served]
fraction_cool_load_served = args[:heat_pump_fraction_cool_load_served]
@@ -5113,6 +5139,7 @@ def self.set_heat_pumps(hpxml_bldg, args)
airflow_defect_ratio: airflow_defect_ratio,
charge_defect_ratio: charge_defect_ratio,
crankcase_heater_watts: heat_pump_crankcase_heater_watts,
+ fan_watts_per_cfm: fan_watts_per_cfm,
primary_heating_system: primary_heating_system,
primary_cooling_system: primary_cooling_system)
end
@@ -5147,13 +5174,20 @@ def self.set_secondary_heating_systems(hpxml_bldg, args)
fraction_heat_load_served = args[:heating_system_2_fraction_heat_load_served]
end
+ if args[:hvac_distribution_fan_watts_per_cfm].is_initialized
+ if [HPXML::HVACTypeFurnace].include?(heating_system_type)
+ fan_watts_per_cfm = args[:hvac_distribution_fan_watts_per_cfm].get
+ end
+ end
+
hpxml_bldg.heating_systems.add(id: "HeatingSystem#{hpxml_bldg.heating_systems.size + 1}",
heating_system_type: heating_system_type,
heating_system_fuel: heating_system_fuel,
heating_capacity: heating_capacity,
fraction_heat_load_served: fraction_heat_load_served,
heating_efficiency_afue: heating_efficiency_afue,
- heating_efficiency_percent: heating_efficiency_percent)
+ heating_efficiency_percent: heating_efficiency_percent,
+ fan_watts_per_cfm: fan_watts_per_cfm)
end
def self.set_hvac_distribution(hpxml_bldg, args)
diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml
index 895e9df698..563fd2447e 100644
--- a/BuildResidentialHPXML/measure.xml
+++ b/BuildResidentialHPXML/measure.xml
@@ -3,8 +3,8 @@
3.1
build_residential_hpxml
a13a8983-2b01-4930-8af2-42030b6e4233
- 73f05c97-2d2b-4e1e-8709-67b264ec605e
- 2023-11-13T20:11:04Z
+ 23e5a0b4-214a-420a-9750-871db7fadab8
+ 2023-11-20T16:25:16Z
2C38F48B
BuildResidentialHPXML
HPXML Builder
@@ -2902,6 +2902,15 @@
false
0.25
+
+ hvac_distribution_fan_watts_per_cfm
+ HVAC Distribution: Blower Fan Efficiency
+ The blower fan efficiency at maximum fan speed. Applies only to Furnace heating system, central air conditioner and mini-split cooling systems, and air-to-air, mini-split, and ground-to-air heat pumps. If not provided, the OS-HPXML default is used.
+ Double
+ W/CFM
+ false
+ false
+
hvac_control_heating_weekday_setpoint
HVAC Control: Heating Weekday Setpoint Schedule
@@ -6751,7 +6760,7 @@
README.md
md
readme
- 92C872C5
+ DB7A3C33
README.md.erb
@@ -6768,7 +6777,7 @@
measure.rb
rb
script
- DEA666BB
+ F6C9495A
geometry.rb
diff --git a/tasks.rb b/tasks.rb
index 8eaa184e60..7bbb39bee0 100644
--- a/tasks.rb
+++ b/tasks.rb
@@ -1629,11 +1629,7 @@ def apply_hpxml_modification(hpxml_file, hpxml)
end
end
end
- if hpxml_file.include? 'install-quality'
- hpxml_bldg.hvac_systems.each do |hvac_system|
- hvac_system.fan_watts_per_cfm = 0.365
- end
- elsif ['base-hvac-setpoints-daily-setbacks.xml'].include? hpxml_file
+ if ['base-hvac-setpoints-daily-setbacks.xml'].include? hpxml_file
hpxml_bldg.hvac_controls[0].heating_setback_temp = 66
hpxml_bldg.hvac_controls[0].heating_setback_hours_per_week = 7 * 7
hpxml_bldg.hvac_controls[0].heating_setback_start_hour = 23 # 11pm
diff --git a/workflow/hpxml_inputs.json b/workflow/hpxml_inputs.json
index 0aff071792..57e10ee051 100644
--- a/workflow/hpxml_inputs.json
+++ b/workflow/hpxml_inputs.json
@@ -2010,57 +2010,68 @@
"sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml": {
"parent_hpxml": "sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml",
"heat_pump_airflow_defect_ratio": -0.25,
- "heat_pump_charge_defect_ratio": -0.25
+ "heat_pump_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml": {
"parent_hpxml": "sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml",
"heat_pump_airflow_defect_ratio": -0.25,
- "heat_pump_charge_defect_ratio": -0.25
+ "heat_pump_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml": {
"parent_hpxml": "sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml",
"heat_pump_airflow_defect_ratio": -0.25,
- "heat_pump_charge_defect_ratio": -0.25
+ "heat_pump_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml": {
- "parent_hpxml": "sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml"
+ "parent_hpxml": "sample_files/base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml",
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml": {
"parent_hpxml": "sample_files/base.xml",
"heating_system_airflow_defect_ratio": -0.25,
"cooling_system_airflow_defect_ratio": -0.25,
- "cooling_system_charge_defect_ratio": -0.25
+ "cooling_system_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml": {
"parent_hpxml": "sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml",
"heating_system_airflow_defect_ratio": -0.25,
"cooling_system_airflow_defect_ratio": -0.25,
- "cooling_system_charge_defect_ratio": -0.25
+ "cooling_system_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml": {
"parent_hpxml": "sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml",
"heating_system_airflow_defect_ratio": -0.25,
"cooling_system_airflow_defect_ratio": -0.25,
- "cooling_system_charge_defect_ratio": -0.25
+ "cooling_system_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-furnace-gas-only.xml": {
"parent_hpxml": "sample_files/base-hvac-furnace-gas-only.xml",
- "heating_system_airflow_defect_ratio": -0.25
+ "heating_system_airflow_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml": {
"parent_hpxml": "sample_files/base-hvac-ground-to-air-heat-pump.xml",
"heat_pump_airflow_defect_ratio": -0.25,
- "heat_pump_charge_defect_ratio": -0.25
+ "heat_pump_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml": {
"parent_hpxml": "sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml",
"cooling_system_airflow_defect_ratio": -0.25,
- "cooling_system_charge_defect_ratio": -0.25
+ "cooling_system_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml": {
"parent_hpxml": "sample_files/base-hvac-mini-split-heat-pump-ducted.xml",
"heat_pump_airflow_defect_ratio": -0.25,
- "heat_pump_charge_defect_ratio": -0.25
+ "heat_pump_charge_defect_ratio": -0.25,
+ "hvac_distribution_fan_watts_per_cfm": 0.365
},
"sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml": {
"parent_hpxml": "sample_files/base.xml",