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",