diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index 0ecadbc631..4a6978f14c 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -2596,6 +2596,71 @@ 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 (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used. + +- **Name:** ``hvac_distribution_fan_watts_per_cfm`` +- **Type:** ``Double`` + +- **Units:** ``W/CFM`` + +- **Required:** ``false`` + +
+ +**HVAC Distribution: Heating Airflow Rate** + +The heating airflow rate. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used. + +- **Name:** ``hvac_distribution_heating_airflow_cfm`` +- **Type:** ``Double`` + +- **Units:** ``CFM`` + +- **Required:** ``false`` + +
+ +**HVAC Distribution: Cooling Airflow Rate** + +The cooling airflow rate. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used. + +- **Name:** ``hvac_distribution_cooling_airflow_cfm`` +- **Type:** ``Double`` + +- **Units:** ``CFM`` + +- **Required:** ``false`` + +
+ +**HVAC Distribution: Maximum Heating Airflow Rate** + +The heating airflow rate used to (a) set the maximum allowed heating airflow rate and (b) adjust blower fan efficiency. + +- **Name:** ``hvac_distribution_max_heating_airflow_cfm`` +- **Type:** ``Double`` + +- **Units:** ``CFM`` + +- **Required:** ``false`` + +
+ +**HVAC Distribution: Maximum Cooling Airflow Rate** + +The cooling airflow rate used to (a) set the maximum allowed cooling airflow rate and (b) adjust blower fan efficiency. + +- **Name:** ``hvac_distribution_max_cooling_airflow_cfm`` +- **Type:** ``Double`` + +- **Units:** ``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. @@ -2855,7 +2920,7 @@ The type of the mechanical ventilation. Use 'none' if there is no mechanical ven **Mechanical Ventilation: Flow Rate** -The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see Whole Ventilation Fan) is used. +The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_flow_rate`` - **Type:** ``Double`` @@ -2868,7 +2933,7 @@ The flow rate of the mechanical ventilation. If not provided, the OS-HPXML defau **Mechanical Ventilation: Hours In Operation** -The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see Whole Ventilation Fan) is used. +The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_hours_in_operation`` - **Type:** ``Double`` @@ -2920,7 +2985,7 @@ The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventil **Mechanical Ventilation: Fan Power** -The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see Whole Ventilation Fan) is used. +The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used. - **Name:** ``mech_vent_fan_power`` - **Type:** ``Double`` @@ -3128,7 +3193,7 @@ The fan power of the second mechanical ventilation. **Kitchen Fans: Quantity** -The quantity of the kitchen fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The quantity of the kitchen fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_quantity`` - **Type:** ``Integer`` @@ -3141,7 +3206,7 @@ The quantity of the kitchen fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_flow_rate`` - **Type:** ``Double`` @@ -3154,7 +3219,7 @@ The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_hours_in_operation`` - **Type:** ``Double`` @@ -3167,7 +3232,7 @@ The hours in operation of the kitchen fan. If not provided, the OS-HPXML default **Kitchen Fans: Fan Power** -The fan power of the kitchen fan. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The fan power of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_power`` - **Type:** ``Double`` @@ -3180,7 +3245,7 @@ The fan power of the kitchen fan. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The start hour of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``kitchen_fans_start_hour`` - **Type:** ``Integer`` @@ -3193,7 +3258,7 @@ The start hour of the kitchen fan. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The quantity of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_quantity`` - **Type:** ``Integer`` @@ -3206,7 +3271,7 @@ The quantity of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_flow_rate`` - **Type:** ``Double`` @@ -3219,7 +3284,7 @@ The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see < **Bathroom Fans: Hours In Operation** -The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_hours_in_operation`` - **Type:** ``Double`` @@ -3232,7 +3297,7 @@ The hours in operation of the bathroom fans. If not provided, the OS-HPXML defau **Bathroom Fans: Fan Power** -The fan power of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The fan power of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_power`` - **Type:** ``Double`` @@ -3245,7 +3310,7 @@ The fan power of the bathroom fans. If not provided, the OS-HPXML default (see < **Bathroom Fans: Start Hour** -The start hour of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used. +The start hour of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used. - **Name:** ``bathroom_fans_start_hour`` - **Type:** ``Integer`` @@ -3269,7 +3334,7 @@ Whether there is a whole house fan. **Whole House Fan: Flow Rate** -The flow rate of the whole house fan. If not provided, the OS-HPXML default (see Whole House Fan) is used. +The flow rate of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. - **Name:** ``whole_house_fan_flow_rate`` - **Type:** ``Double`` @@ -3282,7 +3347,7 @@ The flow rate of the whole house fan. If not provided, the OS-HPXML default (see **Whole House Fan: Fan Power** -The fan power of the whole house fan. If not provided, the OS-HPXML default (see Whole House Fan) is used. +The fan power of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used. - **Name:** ``whole_house_fan_power`` - **Type:** ``Double`` @@ -3538,7 +3603,7 @@ If the distribution system is Recirculation, the type of hot water recirculation **Hot Water Distribution: Recirculation Piping Length** -If the distribution system is Recirculation, the length of the recirculation piping. If not provided, the OS-HPXML default (see Recirculation) is used. +If the distribution system is Recirculation, the length of the recirculation piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. - **Name:** ``hot_water_distribution_recirc_piping_length`` - **Type:** ``Double`` @@ -3551,7 +3616,7 @@ If the distribution system is Recirculation, the length of the recirculation pip **Hot Water Distribution: Recirculation Branch Piping Length** -If the distribution system is Recirculation, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see Recirculation) is used. +If the distribution system is Recirculation, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. - **Name:** ``hot_water_distribution_recirc_branch_piping_length`` - **Type:** ``Double`` @@ -3564,7 +3629,7 @@ If the distribution system is Recirculation, the length of the recirculation bra **Hot Water Distribution: Recirculation Pump Power** -If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation) is used. +If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. - **Name:** ``hot_water_distribution_recirc_pump_power`` - **Type:** ``Double`` diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 061616a56a..4e56ee231f 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -1573,6 +1573,36 @@ 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 (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used.") + arg.setUnits('W/CFM') + args << arg + + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hvac_distribution_heating_airflow_cfm', false) + arg.setDisplayName('HVAC Distribution: Heating Airflow Rate') + arg.setDescription("The heating airflow rate. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used.") + arg.setUnits('CFM') + args << arg + + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hvac_distribution_cooling_airflow_cfm', false) + arg.setDisplayName('HVAC Distribution: Cooling Airflow Rate') + arg.setDescription("The cooling airflow rate. If not provided, the OS-HPXML autosized default (see HPXML Heating Systems, HPXML Cooling Systems, HPXML Heat Pumps) is used.") + arg.setUnits('CFM') + args << arg + + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hvac_distribution_max_heating_airflow_cfm', false) + arg.setDisplayName('HVAC Distribution: Maximum Heating Airflow Rate') + arg.setDescription('The heating airflow rate used to (a) set the maximum allowed heating airflow rate and (b) adjust blower fan efficiency.') + arg.setUnits('CFM') + args << arg + + arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hvac_distribution_max_cooling_airflow_cfm', false) + arg.setDisplayName('HVAC Distribution: Maximum Cooling Airflow Rate') + arg.setDescription('The cooling airflow rate used to (a) set the maximum allowed cooling airflow rate and (b) adjust blower fan efficiency.') + arg.setUnits('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.') @@ -1743,13 +1773,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_flow_rate', false) arg.setDisplayName('Mechanical Ventilation: Flow Rate') - arg.setDescription("The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see Whole Ventilation Fan) is used.") + arg.setDescription("The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") arg.setUnits('CFM') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_hours_in_operation', false) arg.setDisplayName('Mechanical Ventilation: Hours In Operation') - arg.setDescription("The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see Whole Ventilation Fan) is used.") + arg.setDescription("The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") arg.setUnits('hrs/day') args << arg @@ -1775,7 +1805,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_fan_power', false) arg.setDisplayName('Mechanical Ventilation: Fan Power') - arg.setDescription("The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see Whole Ventilation Fan) is used.") + arg.setDescription("The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see HPXML Mechanical Ventilation Fans) is used.") arg.setUnits('W') args << arg @@ -1886,61 +1916,61 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('kitchen_fans_quantity', false) arg.setDisplayName('Kitchen Fans: Quantity') - arg.setDescription("The quantity of the kitchen fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The quantity of the kitchen fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('#') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('kitchen_fans_flow_rate', false) arg.setDisplayName('Kitchen Fans: Flow Rate') - arg.setDescription("The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('CFM') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('kitchen_fans_hours_in_operation', false) arg.setDisplayName('Kitchen Fans: Hours In Operation') - arg.setDescription("The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('hrs/day') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('kitchen_fans_power', false) arg.setDisplayName('Kitchen Fans: Fan Power') - arg.setDescription("The fan power of the kitchen fan. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The fan power of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('W') args << arg arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('kitchen_fans_start_hour', false) arg.setDisplayName('Kitchen Fans: Start Hour') - arg.setDescription("The start hour of the kitchen fan. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The start hour of the kitchen fan. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('hr') args << arg arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('bathroom_fans_quantity', false) arg.setDisplayName('Bathroom Fans: Quantity') - arg.setDescription("The quantity of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The quantity of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('#') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('bathroom_fans_flow_rate', false) arg.setDisplayName('Bathroom Fans: Flow Rate') - arg.setDescription("The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('CFM') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('bathroom_fans_hours_in_operation', false) arg.setDisplayName('Bathroom Fans: Hours In Operation') - arg.setDescription("The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('hrs/day') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('bathroom_fans_power', false) arg.setDisplayName('Bathroom Fans: Fan Power') - arg.setDescription("The fan power of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The fan power of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('W') args << arg arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('bathroom_fans_start_hour', false) arg.setDisplayName('Bathroom Fans: Start Hour') - arg.setDescription("The start hour of the bathroom fans. If not provided, the OS-HPXML default (see Local Ventilation Fan) is used.") + arg.setDescription("The start hour of the bathroom fans. If not provided, the OS-HPXML default (see HPXML Local Ventilation Fans) is used.") arg.setUnits('hr') args << arg @@ -1952,13 +1982,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('whole_house_fan_flow_rate', false) arg.setDisplayName('Whole House Fan: Flow Rate') - arg.setDescription("The flow rate of the whole house fan. If not provided, the OS-HPXML default (see Whole House Fan) is used.") + arg.setDescription("The flow rate of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used.") arg.setUnits('CFM') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('whole_house_fan_power', false) arg.setDisplayName('Whole House Fan: Fan Power') - arg.setDescription("The fan power of the whole house fan. If not provided, the OS-HPXML default (see Whole House Fan) is used.") + arg.setDescription("The fan power of the whole house fan. If not provided, the OS-HPXML default (see HPXML Whole House Fans) is used.") arg.setUnits('W') args << arg @@ -2138,19 +2168,19 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_recirc_piping_length', false) arg.setDisplayName('Hot Water Distribution: Recirculation Piping Length') arg.setUnits('ft') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation piping. If not provided, the OS-HPXML default (see Recirculation) is used.") + arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_recirc_branch_piping_length', false) arg.setDisplayName('Hot Water Distribution: Recirculation Branch Piping Length') arg.setUnits('ft') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see Recirculation) is used.") + arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_recirc_pump_power', false) arg.setDisplayName('Hot Water Distribution: Recirculation Pump Power') arg.setUnits('W') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation) is used.") + arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_pipe_r', false) @@ -5099,6 +5129,24 @@ 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 + + if args[:hvac_distribution_heating_airflow_cfm].is_initialized + if [HPXML::HVACTypeFurnace].include?(heating_system_type) + heating_airflow_cfm = args[:hvac_distribution_heating_airflow_cfm].get + end + end + + if args[:hvac_distribution_max_heating_airflow_cfm].is_initialized + if [HPXML::HVACTypeFurnace].include?(heating_system_type) + max_heating_airflow_cfm = args[:hvac_distribution_max_heating_airflow_cfm].get + end + end + fraction_heat_load_served = args[:heating_system_fraction_heat_load_served] if heating_system_type.include?('Shared') @@ -5121,6 +5169,9 @@ 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, + heating_airflow_cfm: heating_airflow_cfm, + max_heating_airflow_cfm: max_heating_airflow_cfm, is_shared_system: is_shared_system, number_of_units_served: number_of_units_served, primary_system: true) @@ -5177,6 +5228,24 @@ 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 args[:hvac_distribution_cooling_airflow_cfm].is_initialized + if [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type) + cooling_airflow_cfm = args[:hvac_distribution_cooling_airflow_cfm].get + end + end + + if args[:hvac_distribution_max_cooling_airflow_cfm].is_initialized + if [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type) + max_cooling_airflow_cfm = args[:hvac_distribution_max_cooling_airflow_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 @@ -5209,6 +5278,9 @@ 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, + cooling_airflow_cfm: cooling_airflow_cfm, + max_cooling_airflow_cfm: max_cooling_airflow_cfm, primary_system: true, integrated_heating_system_fuel: integrated_heating_system_fuel, integrated_heating_system_capacity: integrated_heating_system_capacity, @@ -5353,6 +5425,36 @@ 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 + + if args[:hvac_distribution_heating_airflow_cfm].is_initialized + if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpGroundToAir].include?(heat_pump_type) + heating_airflow_cfm = args[:hvac_distribution_heating_airflow_cfm].get + end + end + + if args[:hvac_distribution_cooling_airflow_cfm].is_initialized + if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpGroundToAir].include?(heat_pump_type) + cooling_airflow_cfm = args[:hvac_distribution_cooling_airflow_cfm].get + end + end + + if args[:hvac_distribution_max_heating_airflow_cfm].is_initialized + if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpGroundToAir].include?(heat_pump_type) + max_heating_airflow_cfm = args[:hvac_distribution_max_heating_airflow_cfm].get + end + end + + if args[:hvac_distribution_max_cooling_airflow_cfm].is_initialized + if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpGroundToAir].include?(heat_pump_type) + max_cooling_airflow_cfm = args[:hvac_distribution_max_cooling_airflow_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] @@ -5393,6 +5495,11 @@ 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, + heating_airflow_cfm: heating_airflow_cfm, + cooling_airflow_cfm: cooling_airflow_cfm, + max_heating_airflow_cfm: max_heating_airflow_cfm, + max_cooling_airflow_cfm: max_cooling_airflow_cfm, primary_heating_system: primary_heating_system, primary_cooling_system: primary_cooling_system) @@ -5562,13 +5669,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 280328054b..d860c8d76c 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - c0828364-87b4-4438-b777-8ea38159895f - 2024-01-09T19:53:30Z + 79c5c6cc-05bc-4b5f-8541-7e1282b9f7fa + 2024-01-18T19:17:29Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -3261,6 +3261,51 @@ 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 (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-cooling-systems'>HPXML Cooling Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-heat-pumps'>HPXML Heat Pumps</a>) is used. + Double + W/CFM + false + false + + + hvac_distribution_heating_airflow_cfm + HVAC Distribution: Heating Airflow Rate + The heating airflow rate. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-cooling-systems'>HPXML Cooling Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-heat-pumps'>HPXML Heat Pumps</a>) is used. + Double + CFM + false + false + + + hvac_distribution_cooling_airflow_cfm + HVAC Distribution: Cooling Airflow Rate + The cooling airflow rate. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-heating-systems'>HPXML Heating Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-cooling-systems'>HPXML Cooling Systems</a>, <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-heat-pumps'>HPXML Heat Pumps</a>) is used. + Double + CFM + false + false + + + hvac_distribution_max_heating_airflow_cfm + HVAC Distribution: Maximum Heating Airflow Rate + The heating airflow rate used to (a) set the maximum allowed heating airflow rate and (b) adjust blower fan efficiency. + Double + CFM + false + false + + + hvac_distribution_max_cooling_airflow_cfm + HVAC Distribution: Maximum Cooling Airflow Rate + The cooling airflow rate used to (a) set the maximum allowed cooling airflow rate and (b) adjust blower fan efficiency. + Double + CFM + false + false + hvac_control_heating_weekday_setpoint HVAC Control: Heating Weekday Setpoint Schedule @@ -3693,7 +3738,7 @@ mech_vent_flow_rate Mechanical Ventilation: Flow Rate - The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#whole-ventilation-fan'>Whole Ventilation Fan</a>) is used. + The flow rate of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. Double CFM false @@ -3702,7 +3747,7 @@ mech_vent_hours_in_operation Mechanical Ventilation: Hours In Operation - The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#whole-ventilation-fan'>Whole Ventilation Fan</a>) is used. + The hours in operation of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. Double hrs/day false @@ -3750,7 +3795,7 @@ mech_vent_fan_power Mechanical Ventilation: Fan Power - The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#whole-ventilation-fan'>Whole Ventilation Fan</a>) is used. + The fan power of the mechanical ventilation. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-mechanical-ventilation-fans'>HPXML Mechanical Ventilation Fans</a>) is used. Double W false @@ -3970,7 +4015,7 @@ kitchen_fans_quantity Kitchen Fans: Quantity - The quantity of the kitchen fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The quantity of the kitchen fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Integer # false @@ -3979,7 +4024,7 @@ kitchen_fans_flow_rate Kitchen Fans: Flow Rate - The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The flow rate of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Double CFM false @@ -3988,7 +4033,7 @@ kitchen_fans_hours_in_operation Kitchen Fans: Hours In Operation - The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The hours in operation of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Double hrs/day false @@ -3997,7 +4042,7 @@ kitchen_fans_power Kitchen Fans: Fan Power - The fan power of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The fan power of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Double W false @@ -4006,7 +4051,7 @@ kitchen_fans_start_hour Kitchen Fans: Start Hour - The start hour of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The start hour of the kitchen fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Integer hr false @@ -4015,7 +4060,7 @@ bathroom_fans_quantity Bathroom Fans: Quantity - The quantity of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The quantity of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Integer # false @@ -4024,7 +4069,7 @@ bathroom_fans_flow_rate Bathroom Fans: Flow Rate - The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The flow rate of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Double CFM false @@ -4033,7 +4078,7 @@ bathroom_fans_hours_in_operation Bathroom Fans: Hours In Operation - The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The hours in operation of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Double hrs/day false @@ -4042,7 +4087,7 @@ bathroom_fans_power Bathroom Fans: Fan Power - The fan power of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The fan power of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Double W false @@ -4051,7 +4096,7 @@ bathroom_fans_start_hour Bathroom Fans: Start Hour - The start hour of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#local-ventilation-fan'>Local Ventilation Fan</a>) is used. + The start hour of the bathroom fans. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-local-ventilation-fans'>HPXML Local Ventilation Fans</a>) is used. Integer hr false @@ -4079,7 +4124,7 @@ whole_house_fan_flow_rate Whole House Fan: Flow Rate - The flow rate of the whole house fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#whole-house-fan'>Whole House Fan</a>) is used. + The flow rate of the whole house fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. Double CFM false @@ -4088,7 +4133,7 @@ whole_house_fan_power Whole House Fan: Fan Power - The fan power of the whole house fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#whole-house-fan'>Whole House Fan</a>) is used. + The fan power of the whole house fan. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-whole-house-fans'>HPXML Whole House Fans</a>) is used. Double W false @@ -4472,7 +4517,7 @@ hot_water_distribution_recirc_piping_length Hot Water Distribution: Recirculation Piping Length - If the distribution system is Recirculation, the length of the recirculation piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#recirculation'>Recirculation</a>) is used. + If the distribution system is Recirculation, the length of the recirculation piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. Double ft false @@ -4481,7 +4526,7 @@ hot_water_distribution_recirc_branch_piping_length Hot Water Distribution: Recirculation Branch Piping Length - If the distribution system is Recirculation, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#recirculation'>Recirculation</a>) is used. + If the distribution system is Recirculation, the length of the recirculation branch piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. Double ft false @@ -4490,7 +4535,7 @@ hot_water_distribution_recirc_pump_power Hot Water Distribution: Recirculation Pump Power - If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#recirculation'>Recirculation</a>) is used. + If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. Double W false @@ -7110,7 +7155,7 @@ README.md md readme - 16CCA5F0 + 4790BA1F README.md.erb @@ -7127,7 +7172,7 @@ measure.rb rb script - 3ACB24A4 + A4586853 geometry.rb diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index 5e60c54d20..ffb63a6823 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - 63e6bf7b-325c-4241-baab-97825cbd9bcd - 2024-01-05T21:39:53Z + 6628c098-2183-42f5-aeb9-bc6d84df951e + 2024-01-18T21:37:04Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -304,13 +304,13 @@ hpxml.rb rb resource - 44987E3C + D63E27A8 hpxml_defaults.rb rb resource - 916525C3 + BC8BDD8A hpxml_schema/HPXML.xsd @@ -328,7 +328,7 @@ hpxml_schematron/EPvalidator.xml xml resource - 07465552 + AFD4CA72 hpxml_schematron/iso-schematron.xsd @@ -346,7 +346,7 @@ hvac_sizing.rb rb resource - 94E05F98 + 28BF691C lighting.rb @@ -370,7 +370,7 @@ meta_measure.rb rb resource - 17DD9336 + 3FCE13DD minitest_helper.rb @@ -574,7 +574,7 @@ xmlvalidator.rb rb resource - 84D0E4E1 + 87937B84 test_airflow.rb @@ -592,7 +592,7 @@ test_defaults.rb rb test - EF0F0416 + 9DC87682 test_enclosure.rb @@ -622,7 +622,7 @@ test_hvac_sizing.rb rb test - EC19A8C1 + 451EBA33 test_lighting.rb @@ -664,7 +664,7 @@ test_validation.rb rb test - 5E426D14 + 3B854F22 test_water_heater.rb diff --git a/HPXMLtoOpenStudio/resources/hpxml.rb b/HPXMLtoOpenStudio/resources/hpxml.rb index efcbd19e97..233ff4cce0 100644 --- a/HPXMLtoOpenStudio/resources/hpxml.rb +++ b/HPXMLtoOpenStudio/resources/hpxml.rb @@ -4054,7 +4054,7 @@ def initialize(hpxml_object, *args) :heating_efficiency_percent, :fraction_heat_load_served, :electric_auxiliary_energy, :third_party_certification, :htg_seed_id, :is_shared_system, :number_of_units_served, :shared_loop_watts, :shared_loop_motor_efficiency, :fan_coil_watts, :fan_watts_per_cfm, - :airflow_defect_ratio, :fan_watts, :heating_airflow_cfm, :location, :primary_system, + :airflow_defect_ratio, :fan_watts, :heating_airflow_cfm, :max_heating_airflow_cfm, :location, :primary_system, :pilot_light, :pilot_light_btuh] attr_accessor(*ATTRS) attr_reader(:heating_detailed_performance_data) @@ -4177,6 +4177,7 @@ def to_doc(building) XMLHelper.add_extension(heating_system, 'FanPowerWatts', @fan_watts, :float, @fan_watts_isdefaulted) unless @fan_watts.nil? XMLHelper.add_extension(heating_system, 'AirflowDefectRatio', @airflow_defect_ratio, :float, @airflow_defect_ratio_isdefaulted) unless @airflow_defect_ratio.nil? XMLHelper.add_extension(heating_system, 'HeatingAirflowCFM', @heating_airflow_cfm, :float, @heating_airflow_cfm_isdefaulted) unless @heating_airflow_cfm.nil? + XMLHelper.add_extension(heating_system, 'MaxHeatingAirflowCFM', @max_heating_airflow_cfm, :float, @max_heating_airflow_cfm_isdefaulted) unless @max_heating_airflow_cfm.nil? XMLHelper.add_extension(heating_system, 'HeatingSeedId', @htg_seed_id, :string) unless @htg_seed_id.nil? if @primary_system primary_heating_system = XMLHelper.insert_element(primary_systems, 'PrimaryHeatingSystem') @@ -4213,6 +4214,7 @@ def from_doc(heating_system) @fan_watts = XMLHelper.get_value(heating_system, 'extension/FanPowerWatts', :float) @airflow_defect_ratio = XMLHelper.get_value(heating_system, 'extension/AirflowDefectRatio', :float) @heating_airflow_cfm = XMLHelper.get_value(heating_system, 'extension/HeatingAirflowCFM', :float) + @max_heating_airflow_cfm = XMLHelper.get_value(heating_system, 'extension/MaxHeatingAirflowCFM', :float) @htg_seed_id = XMLHelper.get_value(heating_system, 'extension/HeatingSeedId', :string) primary_heating_system = HPXML::get_idref(XMLHelper.get_element(heating_system, '../PrimarySystems/PrimaryHeatingSystem')) if primary_heating_system == @id @@ -4255,7 +4257,7 @@ def initialize(hpxml_object, *args) :cooling_efficiency_seer2, :cooling_efficiency_eer, :cooling_efficiency_ceer, :cooling_efficiency_kw_per_ton, :cooling_shr, :third_party_certification, :clg_seed_id, :is_shared_system, :number_of_units_served, :shared_loop_watts, :shared_loop_motor_efficiency, :fan_coil_watts, :airflow_defect_ratio, - :fan_watts_per_cfm, :charge_defect_ratio, :cooling_airflow_cfm, :location, :primary_system, + :fan_watts_per_cfm, :charge_defect_ratio, :cooling_airflow_cfm, :max_cooling_airflow_cfm, :location, :primary_system, :integrated_heating_system_fuel, :integrated_heating_system_capacity, :integrated_heating_system_efficiency_percent, :integrated_heating_system_fraction_heat_load_served, :integrated_heating_system_airflow_cfm, :htg_seed_id, :crankcase_heater_watts] attr_accessor(*ATTRS) @@ -4369,6 +4371,7 @@ def to_doc(building) XMLHelper.add_extension(cooling_system, 'FanPowerWattsPerCFM', @fan_watts_per_cfm, :float, @fan_watts_per_cfm_isdefaulted) unless @fan_watts_per_cfm.nil? XMLHelper.add_extension(cooling_system, 'CoolingAirflowCFM', @cooling_airflow_cfm, :float, @cooling_airflow_cfm_isdefaulted) unless @cooling_airflow_cfm.nil? XMLHelper.add_extension(cooling_system, 'HeatingAirflowCFM', @integrated_heating_system_airflow_cfm, :float, @integrated_heating_system_airflow_cfm_isdefaulted) unless @integrated_heating_system_airflow_cfm.nil? + XMLHelper.add_extension(cooling_system, 'MaxCoolingAirflowCFM', @max_cooling_airflow_cfm, :float, @max_cooling_airflow_cfm_isdefaulted) unless @max_cooling_airflow_cfm.nil? XMLHelper.add_extension(cooling_system, 'SharedLoopWatts', @shared_loop_watts, :float) unless @shared_loop_watts.nil? XMLHelper.add_extension(cooling_system, 'SharedLoopMotorEfficiency', @shared_loop_motor_efficiency, :float) unless @shared_loop_motor_efficiency.nil? XMLHelper.add_extension(cooling_system, 'FanCoilWatts', @fan_coil_watts, :float) unless @fan_coil_watts.nil? @@ -4412,6 +4415,7 @@ def from_doc(cooling_system) @fan_watts_per_cfm = XMLHelper.get_value(cooling_system, 'extension/FanPowerWattsPerCFM', :float) @cooling_airflow_cfm = XMLHelper.get_value(cooling_system, 'extension/CoolingAirflowCFM', :float) @integrated_heating_system_airflow_cfm = XMLHelper.get_value(cooling_system, 'extension/HeatingAirflowCFM', :float) + @max_cooling_airflow_cfm = XMLHelper.get_value(cooling_system, 'extension/MaxCoolingAirflowCFM', :float) @shared_loop_watts = XMLHelper.get_value(cooling_system, 'extension/SharedLoopWatts', :float) @shared_loop_motor_efficiency = XMLHelper.get_value(cooling_system, 'extension/SharedLoopMotorEfficiency', :float) @fan_coil_watts = XMLHelper.get_value(cooling_system, 'extension/FanCoilWatts', :float) @@ -4569,7 +4573,7 @@ def initialize(hpxml_object, *args) :heating_efficiency_hspf2, :heating_efficiency_cop, :third_party_certification, :htg_seed_id, :clg_seed_id, :pump_watts_per_ton, :fan_watts_per_cfm, :is_shared_system, :number_of_units_served, :shared_loop_watts, :shared_loop_motor_efficiency, :airflow_defect_ratio, :charge_defect_ratio, - :heating_airflow_cfm, :cooling_airflow_cfm, :location, :primary_heating_system, :primary_cooling_system, + :heating_airflow_cfm, :cooling_airflow_cfm, :max_heating_airflow_cfm, :max_cooling_airflow_cfm, :location, :primary_heating_system, :primary_cooling_system, :heating_capacity_retention_fraction, :heating_capacity_retention_temp, :crankcase_heater_watts, :geothermal_loop_idref] attr_accessor(*ATTRS) @@ -4741,6 +4745,8 @@ def to_doc(building) XMLHelper.add_extension(heat_pump, 'FanPowerWattsPerCFM', @fan_watts_per_cfm, :float, @fan_watts_per_cfm_isdefaulted) unless @fan_watts_per_cfm.nil? XMLHelper.add_extension(heat_pump, 'HeatingAirflowCFM', @heating_airflow_cfm, :float, @heating_airflow_cfm_isdefaulted) unless @heating_airflow_cfm.nil? XMLHelper.add_extension(heat_pump, 'CoolingAirflowCFM', @cooling_airflow_cfm, :float, @cooling_airflow_cfm_isdefaulted) unless @cooling_airflow_cfm.nil? + XMLHelper.add_extension(heat_pump, 'MaxHeatingAirflowCFM', @max_heating_airflow_cfm, :float, @max_heating_airflow_cfm_isdefaulted) unless @max_heating_airflow_cfm.nil? + XMLHelper.add_extension(heat_pump, 'MaxCoolingAirflowCFM', @max_cooling_airflow_cfm, :float, @max_cooling_airflow_cfm_isdefaulted) unless @max_cooling_airflow_cfm.nil? XMLHelper.add_extension(heat_pump, 'PumpPowerWattsPerTon', @pump_watts_per_ton, :float, @pump_watts_per_ton_isdefaulted) unless @pump_watts_per_ton.nil? XMLHelper.add_extension(heat_pump, 'SharedLoopWatts', @shared_loop_watts, :float) unless @shared_loop_watts.nil? XMLHelper.add_extension(heat_pump, 'SharedLoopMotorEfficiency', @shared_loop_motor_efficiency, :float) unless @shared_loop_motor_efficiency.nil? @@ -4805,6 +4811,8 @@ def from_doc(heat_pump) @fan_watts_per_cfm = XMLHelper.get_value(heat_pump, 'extension/FanPowerWattsPerCFM', :float) @heating_airflow_cfm = XMLHelper.get_value(heat_pump, 'extension/HeatingAirflowCFM', :float) @cooling_airflow_cfm = XMLHelper.get_value(heat_pump, 'extension/CoolingAirflowCFM', :float) + @max_heating_airflow_cfm = XMLHelper.get_value(heat_pump, 'extension/MaxHeatingAirflowCFM', :float) + @max_cooling_airflow_cfm = XMLHelper.get_value(heat_pump, 'extension/MaxCoolingAirflowCFM', :float) @pump_watts_per_ton = XMLHelper.get_value(heat_pump, 'extension/PumpPowerWattsPerTon', :float) @shared_loop_watts = XMLHelper.get_value(heat_pump, 'extension/SharedLoopWatts', :float) @shared_loop_motor_efficiency = XMLHelper.get_value(heat_pump, 'extension/SharedLoopMotorEfficiency', :float) diff --git a/HPXMLtoOpenStudio/resources/hpxml_defaults.rb b/HPXMLtoOpenStudio/resources/hpxml_defaults.rb index 2fa9b96826..140edee483 100644 --- a/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +++ b/HPXMLtoOpenStudio/resources/hpxml_defaults.rb @@ -3097,7 +3097,13 @@ def self.apply_hvac_sizing(runner, hpxml_bldg, weather, cfa) [HPXML::HVACTypeBoiler, HPXML::HVACTypeElectricResistance].include?(htg_sys.heating_system_type)) htg_sys.heating_airflow_cfm = Float(hvac_sizing_values.Heat_Airflow.round) - htg_sys.heating_airflow_cfm_isdefaulted = true + htg_sys.heating_airflow_cfm_isdefaulted = hvac_sizing_values.Heat_Airflow_isdefaulted + + # Blower fan adjustment + if not hvac_sizing_values.Adjusted_Fan_Watts_Per_CFM.nil? + htg_sys.fan_watts_per_cfm = hvac_sizing_values.Adjusted_Fan_Watts_Per_CFM.round(3) + htg_sys.fan_watts_per_cfm_isdefaulted = true + end end # Heating GSHP loop @@ -3158,7 +3164,13 @@ def self.apply_hvac_sizing(runner, hpxml_bldg, weather, cfa) # Cooling airflow clg_sys.cooling_airflow_cfm = Float(hvac_sizing_values.Cool_Airflow.round) - clg_sys.cooling_airflow_cfm_isdefaulted = true + clg_sys.cooling_airflow_cfm_isdefaulted = hvac_sizing_values.Cool_Airflow_isdefaulted + + # Blower fan adjustment + if not hvac_sizing_values.Adjusted_Fan_Watts_Per_CFM.nil? + clg_sys.fan_watts_per_cfm = hvac_sizing_values.Adjusted_Fan_Watts_Per_CFM.round(3) + clg_sys.fan_watts_per_cfm_isdefaulted = true + end end end diff --git a/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml b/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml index da1fbcf0ce..b430751ade 100644 --- a/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +++ b/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml @@ -782,10 +782,7 @@ [HeatingSystem] Expected 1 element(s) for xpath: ../../HVACControl - Expected 0 or 1 element(s) for xpath: UnitLocation - Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' - Expected 1 element(s) for xpath: HeatingSystemType[ElectricResistance | Furnace | WallFurnace | FloorFurnace | Boiler | Stove | SpaceHeater | Fireplace] - Expected 1 element(s) for xpath: FractionHeatLoadServed + Expected 1 element(s) for xpath: HeatingSystemType[ElectricResistance | Furnace | WallFurnace | FloorFurnace | Boiler | Stove | SpaceHeater | Fireplace] @@ -798,6 +795,7 @@ Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="Percent"]/Value Expected AnnualHeatingEfficiency[Units="Percent"]/Value to be less than or equal to 1 + Expected 1 element(s) for xpath: FractionHeatLoadServed Percent efficiency should typically be greater than or equal to 0.95. Heating capacity should typically be greater than or equal to 1000 Btu/hr. @@ -808,6 +806,8 @@ [HeatingSystemType=Furnace] Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity" or text()="gravity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 1 element(s) for xpath: DistributionSystem Expected 0 or 1 element(s) for xpath: HeatingSystemType/Furnace/PilotLight Expected 1 element(s) for xpath: HeatingSystemFuel @@ -815,8 +815,12 @@ Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="AFUE"]/Value Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1 + Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/HeatingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio Expected extension/AirflowDefectRatio to be greater than or equal to -0.9 Expected extension/AirflowDefectRatio to be less than or equal to 9 @@ -836,8 +840,12 @@ Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="AFUE"]/Value Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1 + Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts Expected extension/FanPowerWatts to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/HeatingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 AFUE should typically be greater than or equal to 0.5. Heating capacity should typically be greater than or equal to 1000 Btu/hr. @@ -854,8 +862,12 @@ Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="AFUE"]/Value Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1 + Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts Expected extension/FanPowerWatts to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/HeatingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 AFUE should typically be greater than or equal to 0.5. Heating capacity should typically be greater than or equal to 1000 Btu/hr. @@ -863,28 +875,23 @@ - [HeatingSystemType=Boiler] - - Expected 0 or 1 element(s) for xpath: IsSharedSystem + [HeatingSystemType=InUnitBoiler] + + Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/HydronicDistribution/HydronicDistributionType[text()="radiator" or text()="baseboard" or text()="radiant floor" or text()="radiant ceiling"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 1 element(s) for xpath: DistributionSystem Expected 0 or 1 element(s) for xpath: HeatingSystemType/Boiler/PilotLight Expected 1 element(s) for xpath: HeatingSystemFuel Expected HeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets' + Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="AFUE"]/Value Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1 - - AFUE should typically be greater than or equal to 0.5. - - - - - [HeatingSystemType=InUnitBoiler] - - Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/HydronicDistribution/HydronicDistributionType[text()="radiator" or text()="baseboard" or text()="radiant floor" or text()="radiant ceiling"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] - Expected 0 or 1 element(s) for xpath: HeatingCapacity + Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 0 or 1 element(s) for xpath: ElectricAuxiliaryEnergy Heating capacity should typically be greater than or equal to 1000 Btu/hr. + AFUE should typically be greater than or equal to 0.5. @@ -893,10 +900,21 @@ Expected 1 element(s) for xpath: ../../../../BuildingSummary/BuildingConstruction[ResidentialFacilityType[text()="single-family attached" or text()="apartment unit"]] Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/HydronicDistribution/HydronicDistributionType[text()="radiator" or text()="baseboard" or text()="radiant floor" or text()="radiant ceiling" or text()="water loop"] | ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="fan coil"] + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' + Expected 1 element(s) for xpath: DistributionSystem Expected 1 element(s) for xpath: NumberofUnitsServed Expected NumberofUnitsServed to be greater than 1 + Expected 0 or 1 element(s) for xpath: HeatingSystemType/Boiler/PilotLight + Expected 1 element(s) for xpath: HeatingSystemFuel + Expected HeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets' + Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="AFUE"]/Value + Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1 + Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 0 or 1 element(s) for xpath: ElectricAuxiliaryEnergy | extension/SharedLoopWatts Expected extension/SharedLoopWatts to be greater than or equal to 0 + + AFUE should typically be greater than or equal to 0.5. @@ -926,8 +944,12 @@ Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="Percent"]/Value Expected AnnualHeatingEfficiency[Units="Percent"]/Value to be less than or equal to 1 + Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts Expected extension/FanPowerWatts to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/HeatingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 Percent efficiency should typically be greater than or equal to 0.5. Heating capacity should typically be greater than or equal to 1000 Btu/hr. @@ -943,8 +965,12 @@ Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="Percent"]/Value Expected AnnualHeatingEfficiency[Units="Percent"]/Value to be less than or equal to 1 + Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts Expected extension/FanPowerWatts to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/HeatingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 Percent efficiency should typically be greater than or equal to 0.5. Heating capacity should typically be greater than or equal to 1000 Btu/hr. @@ -961,8 +987,12 @@ Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="Percent"]/Value Expected AnnualHeatingEfficiency[Units="Percent"]/Value to be less than or equal to 1 + Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts Expected extension/FanPowerWatts to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/HeatingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 Heating capacity should typically be greater than or equal to 1000 Btu/hr. @@ -979,13 +1009,8 @@ [CoolingSystem] Expected 1 element(s) for xpath: ../../HVACControl - Expected 0 or 1 element(s) for xpath: UnitLocation - Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 1 element(s) for xpath: CoolingSystemType Expected CoolingSystemType to be 'central air conditioner' or 'room air conditioner' or 'evaporative cooler' or 'mini-split' or 'chiller' or 'cooling tower' or 'packaged terminal air conditioner' - Expected 1 element(s) for xpath: CoolingSystemFuel - Expected CoolingSystemFuel to be 'electricity' - Expected 1 element(s) for xpath: FractionCoolLoadServed @@ -993,10 +1018,15 @@ [CoolingSystemType=CentralAC] Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 1 element(s) for xpath: DistributionSystem + Expected 1 element(s) for xpath: CoolingSystemFuel + Expected CoolingSystemFuel to be 'electricity' Expected 0 or 1 element(s) for xpath: CoolingCapacity Expected 0 or 1 element(s) for xpath: CompressorType Expected CompressorType to be 'single stage' or 'two stage' or 'variable speed' + Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value Expected 0 or 1 element(s) for xpath: SensibleHeatFraction Expected SensibleHeatFraction to be greater than 0.5 @@ -1004,6 +1034,9 @@ Expected 0 element(s) for xpath: IntegratedHeatingSystemFuel Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/CoolingAirflowCFM | extension/MaxCoolingAirflowCFM + Expected extension/CoolingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxCoolingAirflowCFM to be greater than or equal to 0 Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio Expected extension/AirflowDefectRatio to be greater than or equal to -0.9 Expected extension/AirflowDefectRatio to be less than or equal to 9 @@ -1023,7 +1056,10 @@ [CoolingSystemType=PTACorRoomAC] Expected 0 element(s) for xpath: DistributionSystem + Expected 1 element(s) for xpath: CoolingSystemFuel + Expected CoolingSystemFuel to be 'electricity' Expected 0 or 1 element(s) for xpath: CoolingCapacity + Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value Expected 0 or 1 element(s) for xpath: SensibleHeatFraction Expected SensibleHeatFraction to be greater than 0.5 @@ -1038,25 +1074,15 @@ - - [CoolingSystemType=HasIntegratedHeatingSystem] - - Expected 1 element(s) for xpath: IntegratedHeatingSystemFractionHeatLoadServed - Expected 0 or 1 element(s) for xpath: IntegratedHeatingSystemCapacity - Expected 1 element(s) for xpath: IntegratedHeatingSystemAnnualEfficiency[Units="Percent"] - Expected IntegratedHeatingSystemAnnualEfficiency[Units="Percent"]/Value to be less than or equal to 1 - - Percent efficiency should typically be greater than or equal to 0.5. - Integrated Heating capacity should typically be greater than or equal to 1000 Btu/hr. - - - [CoolingSystemType=EvapCooler] Expected 0 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] Expected 0 or 1 element(s) for xpath: DistributionSystem + Expected 1 element(s) for xpath: CoolingSystemFuel + Expected CoolingSystemFuel to be 'electricity' Expected 0 or 1 element(s) for xpath: CoolingCapacity + Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 0 element(s) for xpath: IntegratedHeatingSystemFuel Cooling capacity should typically be greater than or equal to 1000 Btu/hr. @@ -1067,10 +1093,15 @@ [CoolingSystemType=MiniSplitAC] Expected 0 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 0 or 1 element(s) for xpath: DistributionSystem + Expected 1 element(s) for xpath: CoolingSystemFuel + Expected CoolingSystemFuel to be 'electricity' Expected 0 or 1 element(s) for xpath: CoolingCapacity Expected 0 or 1 element(s) for xpath: CompressorType Expected CompressorType to be 'variable speed' + Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value Expected 0 or 1 element(s) for xpath: SensibleHeatFraction Expected SensibleHeatFraction to be greater than 0.5 @@ -1078,6 +1109,9 @@ Expected 0 element(s) for xpath: IntegratedHeatingSystemFuel Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/CoolingAirflowCFM | extension/MaxCoolingAirflowCFM + Expected extension/CoolingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxCoolingAirflowCFM to be greater than or equal to 0 Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio Expected extension/AirflowDefectRatio to be greater than or equal to -0.9 Expected extension/AirflowDefectRatio to be less than or equal to 9 @@ -1102,7 +1136,10 @@ Expected 1 element(s) for xpath: IsSharedSystem[text()="true"] Expected 1 element(s) for xpath: NumberofUnitsServed Expected NumberofUnitsServed to be greater than 1 + Expected 1 element(s) for xpath: CoolingSystemFuel + Expected CoolingSystemFuel to be 'electricity' Expected 1 element(s) for xpath: CoolingCapacity + Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="kW/ton"]/Value Expected 0 element(s) for xpath: IntegratedHeatingSystemFuel Expected 1 element(s) for xpath: extension/SharedLoopWatts @@ -1137,6 +1174,9 @@ Expected 1 element(s) for xpath: IsSharedSystem[text()="true"] Expected 1 element(s) for xpath: NumberofUnitsServed Expected NumberofUnitsServed to be greater than 1 + Expected 1 element(s) for xpath: CoolingSystemFuel + Expected CoolingSystemFuel to be 'electricity' + Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 0 element(s) for xpath: IntegratedHeatingSystemFuel Expected 1 element(s) for xpath: extension/SharedLoopWatts Expected extension/SharedLoopWatts to be greater than or equal to 0 @@ -1145,18 +1185,25 @@ + + [CoolingSystem=HasIntegratedHeatingSystem] + + Expected 1 element(s) for xpath: IntegratedHeatingSystemFractionHeatLoadServed + Expected 0 or 1 element(s) for xpath: IntegratedHeatingSystemCapacity + Expected 1 element(s) for xpath: IntegratedHeatingSystemAnnualEfficiency[Units="Percent"] + Expected IntegratedHeatingSystemAnnualEfficiency[Units="Percent"]/Value to be less than or equal to 1 + + Percent efficiency should typically be greater than or equal to 0.5. + Integrated Heating capacity should typically be greater than or equal to 1000 Btu/hr. + + + [HeatPump] Expected 1 element(s) for xpath: ../../HVACControl - Expected 0 or 1 element(s) for xpath: UnitLocation - Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 1 element(s) for xpath: HeatPumpType Expected HeatPumpType to be 'air-to-air' or 'mini-split' or 'ground-to-air' or 'water-loop-to-air' or 'packaged terminal heat pump' or 'room air conditioner with reverse cycle' - Expected 1 element(s) for xpath: HeatPumpFuel - Expected HeatPumpFuel to be 'electricity' - Expected 0 or 1 element(s) for xpath: BackupType - Expected BackupType to be 'integrated' or 'separate' @@ -1164,7 +1211,11 @@ [HeatPumpType=AirSource] Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 1 element(s) for xpath: DistributionSystem + Expected 1 element(s) for xpath: HeatPumpFuel + Expected HeatPumpFuel to be 'electricity' Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 0 or 1 element(s) for xpath: extension/HeatingCapacityRetention | HeatingCapacity17F Expected HeatingCapacity17F to be less than or equal to HeatingCapacity @@ -1174,13 +1225,21 @@ Expected 0 or 1 element(s) for xpath: CompressorLockoutTemperature Expected 0 or 1 element(s) for xpath: CoolingSensibleHeatFraction Expected CoolingSensibleHeatFraction to be greater than 0.5 + Expected 0 or 1 element(s) for xpath: BackupType + Expected BackupType to be 'integrated' or 'separate' Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="HSPF" or Units="HSPF2"]/Value Expected 0 or 2 element(s) for xpath: HeatingDetailedPerformanceData | CoolingDetailedPerformanceData Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM - Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0 + Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/CoolingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/CoolingAirflowCFM | extension/MaxCoolingAirflowCFM + Expected extension/CoolingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxCoolingAirflowCFM to be greater than or equal to 0 Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio Expected extension/AirflowDefectRatio to be greater than or equal to -0.9 Expected extension/AirflowDefectRatio to be less than or equal to 9 @@ -1203,7 +1262,11 @@ [HeatPumpType=MiniSplit] Expected 0 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 0 or 1 element(s) for xpath: DistributionSystem + Expected 1 element(s) for xpath: HeatPumpFuel + Expected HeatPumpFuel to be 'electricity' Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 0 or 1 element(s) for xpath: extension/HeatingCapacityRetention | HeatingCapacity17F Expected HeatingCapacity17F to be less than or equal to HeatingCapacity @@ -1213,6 +1276,8 @@ Expected 0 or 1 element(s) for xpath: CompressorLockoutTemperature Expected 0 or 1 element(s) for xpath: CoolingSensibleHeatFraction Expected CoolingSensibleHeatFraction to be greater than 0.5 + Expected 0 or 1 element(s) for xpath: BackupType + Expected BackupType to be 'integrated' or 'separate' Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value @@ -1220,6 +1285,12 @@ Expected 0 or 2 element(s) for xpath: HeatingDetailedPerformanceData | CoolingDetailedPerformanceData Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/CoolingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 + Expected 0 or 1 element(s) for xpath: extension/CoolingAirflowCFM | extension/MaxCoolingAirflowCFM + Expected extension/CoolingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxCoolingAirflowCFM to be greater than or equal to 0 Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio Expected extension/AirflowDefectRatio to be greater than or equal to -0.9 Expected extension/AirflowDefectRatio to be less than or equal to 9 @@ -1242,13 +1313,19 @@ [HeatPumpType=GroundSource] Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] - Expected 0 or 1 element(s) for xpath: IsSharedSystem + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' Expected 1 element(s) for xpath: DistributionSystem - Expected 0 element(s) for xpath: BackupHeatingSwitchoverTemperature + Expected 0 or 1 element(s) for xpath: IsSharedSystem + Expected 1 element(s) for xpath: HeatPumpFuel + Expected HeatPumpFuel to be 'electricity' Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 0 or 1 element(s) for xpath: CoolingCapacity Expected 0 or 1 element(s) for xpath: CoolingSensibleHeatFraction Expected CoolingSensibleHeatFraction to be greater than 0.5 + Expected 0 or 1 element(s) for xpath: BackupType + Expected BackupType to be 'integrated' or 'separate' + Expected 0 element(s) for xpath: BackupHeatingSwitchoverTemperature Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="EER"]/Value @@ -1258,6 +1335,12 @@ Expected extension/PumpPowerWattsPerTon to be greater than or equal to 0 Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0 + Expected 0 or more element(s) for xpath: extension/HeatingAirflowCFM | extension/MaxHeatingAirflowCFM + Expected extension/CoolingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxHeatingAirflowCFM to be greater than or equal to 0 + Expected 0 or 1 element(s) for xpath: extension/CoolingAirflowCFM | extension/MaxCoolingAirflowCFM + Expected extension/CoolingAirflowCFM to be greater than or equal to 0 + Expected extension/MaxCoolingAirflowCFM to be greater than or equal to 0 Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio Expected extension/AirflowDefectRatio to be greater than or equal to -0.9 Expected extension/AirflowDefectRatio to be less than or equal to 9 @@ -1289,6 +1372,12 @@ Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"] Expected 1 or more element(s) for xpath: ../HeatingSystem[HeatingSystemType/Boiler and IsSharedSystem="true"] | ../CoolingSystem[(CoolingSystemType="chiller" or CoolingSystemType="cooling tower") and IsSharedSystem="true"] Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/HydronicDistribution[HydronicDistributionType="water loop"] + Expected 0 or 1 element(s) for xpath: UnitLocation + Expected UnitLocation to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space' or 'manufactured home belly' + Expected 1 element(s) for xpath: HeatPumpFuel + Expected HeatPumpFuel to be 'electricity' + Expected 0 or 1 element(s) for xpath: BackupType + Expected BackupType to be 'integrated' or 'separate' @@ -1296,6 +1385,8 @@ [HeatPumpType=PTHPorRoomACwithReverseCycle] Expected 0 element(s) for xpath: DistributionSystem + Expected 1 element(s) for xpath: HeatPumpFuel + Expected HeatPumpFuel to be 'electricity' Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 0 or 1 element(s) for xpath: extension/HeatingCapacityRetention | HeatingCapacity17F Expected HeatingCapacity17F to be less than or equal to HeatingCapacity @@ -1305,6 +1396,8 @@ Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="COP"]/Value Expected 0 or 1 element(s) for xpath: CoolingSensibleHeatFraction Expected CoolingSensibleHeatFraction to be greater than 0.5 + Expected 0 or 1 element(s) for xpath: BackupType + Expected BackupType to be 'integrated' or 'separate' Expected 1 element(s) for xpath: FractionHeatLoadServed Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 0 or 1 element(s) for xpath: extension/CrankcaseHeaterPowerWatts @@ -1326,6 +1419,18 @@ + + [HeatPumpBackup] + + Expected 0 or 1 element(s) for xpath: BackupHeatingSwitchoverTemperature | CompressorLockoutTemperature + Expected 0 or 1 element(s) for xpath: BackupHeatingSwitchoverTemperature | BackupHeatingLockoutTemperature + Expected CompressorLockoutTemperature to be less than or equal to BackupHeatingLockoutTemperature + + BackupHeatingSwitchoverTemperature is below 30 deg-F; this may result in significant unmet hours if the heat pump does not have sufficient capacity. + BackupHeatingLockoutTemperature is below 30 deg-F; this may result in significant unmet hours if the heat pump does not have sufficient capacity. + + + [HeatPumpBackup=Integrated] @@ -1351,18 +1456,6 @@ - - [HeatPumpBackup] - - Expected 0 or 1 element(s) for xpath: BackupHeatingSwitchoverTemperature | CompressorLockoutTemperature - Expected 0 or 1 element(s) for xpath: BackupHeatingSwitchoverTemperature | BackupHeatingLockoutTemperature - Expected CompressorLockoutTemperature to be less than or equal to BackupHeatingLockoutTemperature - - BackupHeatingSwitchoverTemperature is below 30 deg-F; this may result in significant unmet hours if the heat pump does not have sufficient capacity. - BackupHeatingLockoutTemperature is below 30 deg-F; this may result in significant unmet hours if the heat pump does not have sufficient capacity. - - - [HeatingDetailedPerformanceData] @@ -1618,18 +1711,42 @@ [MechanicalVentilation] - Expected 0 or 1 element(s) for xpath: IsSharedSystem - Expected 1 element(s) for xpath: FanType + Expected 1 element(s) for xpath: FanType Expected FanType to be 'energy recovery ventilator' or 'heat recovery ventilator' or 'exhaust only' or 'supply only' or 'balanced' or 'central fan integrated supply' + + + + + [MechanicalVentilationType=ExhaustOnly] + + Expected 0 or 1 element(s) for xpath: IsSharedSystem + Expected 0 or more element(s) for xpath: RatedFlowRate | CalculatedFlowRate | TestedFlowRate | DeliveredVentilation + Expected 0 or 1 element(s) for xpath: HoursInOperation + Expected 0 or 1 element(s) for xpath: FanPower + Expected 0 element(s) for xpath: TotalRecoveryEfficiency | AdjustedTotalRecoveryEfficiency + Expected 0 element(s) for xpath: SensibleRecoveryEfficiency | AdjustedSensibleRecoveryEfficiency + + + + + [MechanicalVentilationType=SupplyOnly] + + Expected 0 or 1 element(s) for xpath: IsSharedSystem Expected 0 or more element(s) for xpath: RatedFlowRate | CalculatedFlowRate | TestedFlowRate | DeliveredVentilation Expected 0 or 1 element(s) for xpath: HoursInOperation Expected 0 or 1 element(s) for xpath: FanPower + Expected 0 element(s) for xpath: TotalRecoveryEfficiency | AdjustedTotalRecoveryEfficiency + Expected 0 element(s) for xpath: SensibleRecoveryEfficiency | AdjustedSensibleRecoveryEfficiency - [MechanicalVentilationType=ExhaustSupplyBalanced] - + [MechanicalVentilationType=Balanced] + + Expected 0 or 1 element(s) for xpath: IsSharedSystem + Expected 0 or more element(s) for xpath: RatedFlowRate | CalculatedFlowRate | TestedFlowRate | DeliveredVentilation + Expected 0 or 1 element(s) for xpath: HoursInOperation + Expected 0 or 1 element(s) for xpath: FanPower Expected 0 element(s) for xpath: TotalRecoveryEfficiency | AdjustedTotalRecoveryEfficiency Expected 0 element(s) for xpath: SensibleRecoveryEfficiency | AdjustedSensibleRecoveryEfficiency @@ -1638,16 +1755,24 @@ [MechanicalVentilationType=HRV] + Expected 0 or 1 element(s) for xpath: IsSharedSystem + Expected 0 or more element(s) for xpath: RatedFlowRate | CalculatedFlowRate | TestedFlowRate | DeliveredVentilation + Expected 0 or 1 element(s) for xpath: HoursInOperation Expected 0 element(s) for xpath: AdjustedTotalRecoveryEfficiency | TotalRecoveryEfficiency Expected 1 element(s) for xpath: AdjustedSensibleRecoveryEfficiency | SensibleRecoveryEfficiency + Expected 0 or 1 element(s) for xpath: FanPower [MechanicalVentilationType=ERV] + Expected 0 or 1 element(s) for xpath: IsSharedSystem + Expected 0 or more element(s) for xpath: RatedFlowRate | CalculatedFlowRate | TestedFlowRate | DeliveredVentilation + Expected 0 or 1 element(s) for xpath: HoursInOperation Expected 1 element(s) for xpath: AdjustedTotalRecoveryEfficiency | TotalRecoveryEfficiency Expected 1 element(s) for xpath: AdjustedSensibleRecoveryEfficiency | SensibleRecoveryEfficiency + Expected 0 or 1 element(s) for xpath: FanPower Adjusted total recovery efficiency should typically be at least half of the adjusted sensible recovery efficiency. Total recovery efficiency should typically be at least half of the sensible recovery efficiency. @@ -1657,12 +1782,15 @@ [MechanicalVentilationType=CFIS] - Expected 0 element(s) for xpath: TotalRecoveryEfficiency | AdjustedTotalRecoveryEfficiency - Expected 0 element(s) for xpath: SensibleRecoveryEfficiency | AdjustedSensibleRecoveryEfficiency + Expected 0 element(s) for xpath: IsSharedSystem[text()="true"] Expected 0 or 1 element(s) for xpath: CFISControls/AdditionalRuntimeOperatingMode Expected CFISControls/AdditionalRuntimeOperatingMode to be 'air handler fan' or 'supplemental fan' + Expected 0 or more element(s) for xpath: RatedFlowRate | CalculatedFlowRate | TestedFlowRate | DeliveredVentilation + Expected 0 or 1 element(s) for xpath: HoursInOperation + Expected 0 element(s) for xpath: TotalRecoveryEfficiency | AdjustedTotalRecoveryEfficiency + Expected 0 element(s) for xpath: SensibleRecoveryEfficiency | AdjustedSensibleRecoveryEfficiency + Expected 0 or 1 element(s) for xpath: FanPower Expected 1 element(s) for xpath: AttachedToHVACDistributionSystem - Expected 0 element(s) for xpath: IsSharedSystem[text()="true"] Expected 0 or 1 element(s) for xpath: extension/VentilationOnlyModeAirflowFraction Expected extension/VentilationOnlyModeAirflowFraction to be greater than or equal to 0 Expected extension/VentilationOnlyModeAirflowFraction to be less than or equal to 1 @@ -1752,25 +1880,8 @@ Expected 1 element(s) for xpath: ../HotWaterDistribution Expected 1 or more element(s) for xpath: ../WaterFixture - Expected 0 or 1 element(s) for xpath: IsSharedSystem Expected 1 element(s) for xpath: WaterHeaterType Expected WaterHeaterType to be 'storage water heater' or 'instantaneous water heater' or 'heat pump water heater' or 'space-heating boiler with storage tank' or 'space-heating boiler with tankless coil' - Expected 0 or 1 element(s) for xpath: Location - Expected Location to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' - Expected 1 element(s) for xpath: FractionDHWLoadServed - Expected 0 or 1 element(s) for xpath: HotWaterTemperature - Expected 0 or 1 element(s) for xpath: UsesDesuperheater - - Hot water setpoint should typically be greater than or equal to 110 deg-F. - - - - - [WaterHeatingSystemType=Shared] - - Expected 1 element(s) for xpath: ../../../BuildingSummary/BuildingConstruction[ResidentialFacilityType[text()="single-family attached" or text()="apartment unit"]] - Expected 1 element(s) for xpath: NumberofUnitsServed - Expected NumberofUnitsServed to be greater than 1 @@ -1779,7 +1890,11 @@ Expected 1 element(s) for xpath: FuelType Expected FuelType to be 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'anthracite coal' or 'electricity' or 'wood' or 'wood pellets' + Expected 0 or 1 element(s) for xpath: Location + Expected Location to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' + Expected 0 or 1 element(s) for xpath: IsSharedSystem Expected 0 or 1 element(s) for xpath: TankVolume + Expected 1 element(s) for xpath: FractionDHWLoadServed Expected 0 or 1 element(s) for xpath: HeatingCapacity Expected 1 element(s) for xpath: UniformEnergyFactor | EnergyFactor Expected UniformEnergyFactor to be less than 1 @@ -1789,12 +1904,15 @@ Expected RecoveryEfficiency to be greater than EnergyFactor Expected RecoveryEfficiency to be greater than UniformEnergyFactor Expected 0 or 1 element(s) for xpath: WaterHeaterInsulation/Jacket/JacketRValue + Expected 0 or 1 element(s) for xpath: HotWaterTemperature + Expected 0 or 1 element(s) for xpath: UsesDesuperheater Expected 0 or 1 element(s) for xpath: extension/TankModelType Expected extension/TankModelType to be 'mixed' or 'stratified' UniformEnergyFactor should typically be greater than or equal to 0.45. EnergyFactor should typically be greater than or equal to 0.45. Heating capacity should typically be greater than or equal to 1000 Btu/hr. + Hot water setpoint should typically be greater than or equal to 110 deg-F. @@ -1803,13 +1921,20 @@ Expected 1 element(s) for xpath: FuelType Expected FuelType to be 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'anthracite coal' or 'electricity' or 'wood' or 'wood pellets' + Expected 0 or 1 element(s) for xpath: Location + Expected Location to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' + Expected 0 or 1 element(s) for xpath: IsSharedSystem Expected 0 or 1 element(s) for xpath: PerformanceAdjustment + Expected 1 element(s) for xpath: FractionDHWLoadServed Expected 1 element(s) for xpath: UniformEnergyFactor | EnergyFactor Expected UniformEnergyFactor to be less than 1 Expected EnergyFactor to be less than 1 + Expected 0 or 1 element(s) for xpath: HotWaterTemperature + Expected 0 or 1 element(s) for xpath: UsesDesuperheater UniformEnergyFactor should typically be greater than or equal to 0.45. EnergyFactor should typically be greater than or equal to 0.45. + Hot water setpoint should typically be greater than or equal to 110 deg-F. @@ -1817,33 +1942,64 @@ [WaterHeatingSystemType=HeatPump] Expected 1 element(s) for xpath: FuelType[text()="electricity"] + Expected 0 or 1 element(s) for xpath: Location + Expected Location to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' + Expected 0 or 1 element(s) for xpath: IsSharedSystem Expected 1 element(s) for xpath: TankVolume + Expected 1 element(s) for xpath: FractionDHWLoadServed Expected 1 element(s) for xpath: UniformEnergyFactor | EnergyFactor + Expected UniformEnergyFactor to be greater than 1 + Expected EnergyFactor to be greater than 1 Expected 0 or 1 element(s) for xpath: HPWHOperatingMode Expected HPWHOperatingMode to be 'hybrid/auto' or 'heat pump only' Expected 0 or more element(s) for xpath: UsageBin | FirstHourRating - Expected UniformEnergyFactor to be greater than 1 - Expected EnergyFactor to be greater than 1 Expected 0 or 1 element(s) for xpath: WaterHeaterInsulation/Jacket/JacketRValue + Expected 0 or 1 element(s) for xpath: HotWaterTemperature + Expected 0 or 1 element(s) for xpath: UsesDesuperheater extension/OperatingMode has been replaced by HPWHOperatingMode + + Hot water setpoint should typically be greater than or equal to 110 deg-F. [WaterHeatingSystemType=CombiIndirect] - Expected 1 element(s) for xpath: RelatedHVACSystem + Expected 0 or 1 element(s) for xpath: Location + Expected Location to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' + Expected 0 or 1 element(s) for xpath: IsSharedSystem Expected 1 element(s) for xpath: TankVolume + Expected 1 element(s) for xpath: FractionDHWLoadServed Expected 0 or 1 element(s) for xpath: WaterHeaterInsulation/Jacket/JacketRValue Expected 0 or 1 element(s) for xpath: StandbyLoss[Units="F/hr"]/Value + Expected 0 or 1 element(s) for xpath: HotWaterTemperature + Expected 1 element(s) for xpath: RelatedHVACSystem + + Hot water setpoint should typically be greater than or equal to 110 deg-F. [WaterHeatingSystemType=CombiTanklessCoil] + Expected 0 or 1 element(s) for xpath: Location + Expected Location to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' + Expected 0 or 1 element(s) for xpath: IsSharedSystem + Expected 1 element(s) for xpath: FractionDHWLoadServed + Expected 0 or 1 element(s) for xpath: HotWaterTemperature Expected 1 element(s) for xpath: RelatedHVACSystem + + Hot water setpoint should typically be greater than or equal to 110 deg-F. + + + + + [WaterHeatingSystem=Shared] + + Expected 1 element(s) for xpath: ../../../BuildingSummary/BuildingConstruction[ResidentialFacilityType[text()="single-family attached" or text()="apartment unit"]] + Expected 1 element(s) for xpath: NumberofUnitsServed + Expected NumberofUnitsServed to be greater than 1 @@ -1923,16 +2079,15 @@ [SolarThermalSystem] - Expected 1 element(s) for xpath: SystemType - Expected SystemType to be 'hot water' Expected 1 element(s) for xpath: CollectorArea | SolarFraction - Expected SolarFraction to be less than 1 [SolarThermalSystemType=Detailed] + Expected 1 element(s) for xpath: SystemType + Expected SystemType to be 'hot water' Expected 1 element(s) for xpath: CollectorLoopType Expected CollectorLoopType to be 'liquid indirect' or 'liquid direct' or 'passive thermosyphon' Expected 1 element(s) for xpath: CollectorType @@ -1949,6 +2104,9 @@ [SolarThermalSystemType=Simple] + Expected 1 element(s) for xpath: SystemType + Expected SystemType to be 'hot water' + Expected SolarFraction to be less than 1 Expected 0 or 1 element(s) for xpath: ConnectedTo diff --git a/HPXMLtoOpenStudio/resources/hvac_sizing.rb b/HPXMLtoOpenStudio/resources/hvac_sizing.rb index 58438f7e7c..d66f1e3f01 100644 --- a/HPXMLtoOpenStudio/resources/hvac_sizing.rb +++ b/HPXMLtoOpenStudio/resources/hvac_sizing.rb @@ -48,9 +48,10 @@ def self.calculate(runner, weather, hpxml_bldg, cfa, hvac_systems) apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, hvac_heating, hvac_cooling, hvac_system) apply_hvac_installation_quality(hvac_sizing_values, hvac_heating, hvac_cooling) apply_hvac_fixed_capacities(hvac_sizing_values, hvac_heating, hvac_cooling) + apply_hvac_fixed_airflows(hvac_sizing_values, hvac_heating, hvac_cooling) + apply_hvac_airflow_adjustments(hvac_sizing_values, hvac_heating, hvac_cooling) apply_hvac_ground_loop(runner, hvac_sizing_values, weather, hvac_cooling) apply_hvac_finalize_airflows(hvac_sizing_values, hvac_heating, hvac_cooling) - all_hvac_sizing_values[hvac_system] = hvac_sizing_values end @@ -1363,8 +1364,8 @@ def self.apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, h cool_cap_rated = hvac_sizing_values.Cool_Load_Tot / total_cap_curve_value - hvac_cooling_shr = hvac_cooling_ap.cool_rated_shrs_gross[hvac_cooling_speed] - sens_cap_rated = cool_cap_rated * hvac_cooling_shr + @hvac_cooling_shr = hvac_cooling_ap.cool_rated_shrs_gross[hvac_cooling_speed] + sens_cap_rated = cool_cap_rated * @hvac_cooling_shr # Calculate the air flow rate required for design conditions hvac_sizing_values.Cool_Airflow = calc_airflow_rate_manual_s(hvac_sizing_values.Cool_Load_Sens, (@cool_setpoint - @leaving_air_temp), cool_cap_rated) @@ -1382,7 +1383,7 @@ def self.apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, h # Adjust Sizing if hvac_cooling.is_a?(HPXML::HeatPump) && (@hpxml_bldg.header.heat_pump_sizing_methodology == HPXML::HeatPumpSizingHERS) hvac_sizing_values.Cool_Capacity = hvac_sizing_values.Cool_Load_Tot - hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * hvac_cooling_shr + hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * @hvac_cooling_shr cool_load_sens_cap_design = hvac_sizing_values.Cool_Capacity_Sens * sensible_cap_curve_value @@ -1394,7 +1395,7 @@ def self.apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, h # solve the following for cool_cap_design: sens_cap_design = SHRRated * cool_cap_design / total_cap_curve_value * function(CFM/cool_cap_design, ODB) # substituting in CFM = cool_load_sens_cap_design / (1.1 * ACF * (cool_setpoint - LAT)) - cool_load_sens_cap_design = hvac_sizing_values.Cool_Load_Lat / ((total_cap_curve_value / hvac_cooling_shr - \ + cool_load_sens_cap_design = hvac_sizing_values.Cool_Load_Lat / ((total_cap_curve_value / @hvac_cooling_shr - \ (b_sens + d_sens * entering_temp) / \ (1.1 * @acf * (@cool_setpoint - @leaving_air_temp))) / \ (a_sens + c_sens * entering_temp) - 1.0) @@ -1418,7 +1419,7 @@ def self.apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, h # Determine rated capacities hvac_sizing_values.Cool_Capacity = cool_cap_design / total_cap_curve_value - hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * hvac_cooling_shr + hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * @hvac_cooling_shr # Determine the final sensible capacity at design using the SHR cool_load_sens_cap_design = shr_design * cool_cap_design @@ -1434,7 +1435,7 @@ def self.apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, h # = SHRRated * cool_cap_design / total_cap_curve_value * sensible_cap_curve_value # = SHRRated * cool_cap_design / total_cap_curve_value * function(CFM/cool_cap_design, ODB) - cool_cap_design = (sens_cap_design / (hvac_cooling_shr / total_cap_curve_value) - \ + cool_cap_design = (sens_cap_design / (@hvac_cooling_shr / total_cap_curve_value) - \ (b_sens * UnitConversions.convert(hvac_sizing_values.Cool_Airflow, 'ton', 'Btu/hr') + \ d_sens * UnitConversions.convert(hvac_sizing_values.Cool_Airflow, 'ton', 'Btu/hr') * entering_temp)) / \ (a_sens + c_sens * entering_temp) @@ -1443,14 +1444,14 @@ def self.apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, h cool_cap_design = [cool_cap_design, @oversize_limit * hvac_sizing_values.Cool_Load_Tot].min hvac_sizing_values.Cool_Capacity = cool_cap_design / total_cap_curve_value - hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * hvac_cooling_shr + hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * @hvac_cooling_shr # Recalculate the air flow rate in case the oversizing limit has been used cool_load_sens_cap_design = hvac_sizing_values.Cool_Capacity_Sens * sensible_cap_curve_value else hvac_sizing_values.Cool_Capacity = hvac_sizing_values.Cool_Load_Tot / total_cap_curve_value - hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * hvac_cooling_shr + hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * @hvac_cooling_shr cool_load_sens_cap_design = hvac_sizing_values.Cool_Capacity_Sens * sensible_cap_curve_value end @@ -1922,6 +1923,121 @@ def self.apply_hvac_fixed_capacities(hvac_sizing_values, hvac_heating, hvac_cool end end + def self.apply_hvac_fixed_airflows(hvac_sizing_values, hvac_heating, hvac_cooling) + hvac_sizing_values.Heat_Airflow_isdefaulted = true + hvac_sizing_values.Cool_Airflow_isdefaulted = true + + if not hvac_cooling.nil? + fixed_cooling_airflow = hvac_cooling.cooling_airflow_cfm + max_cooling_airflow = hvac_cooling.max_cooling_airflow_cfm + end + if (not fixed_cooling_airflow.nil?) && (hvac_sizing_values.Cool_Airflow > 0) && max_cooling_airflow.nil? + hvac_sizing_values.Cool_Airflow = fixed_cooling_airflow + hvac_sizing_values.Cool_Airflow_isdefaulted = false + end + if not hvac_heating.nil? + fixed_heating_airflow = hvac_heating.heating_airflow_cfm + max_heating_airflow = hvac_heating.max_heating_airflow_cfm + end + if (not fixed_heating_airflow.nil?) && (hvac_sizing_values.Heat_Airflow > 0) && max_heating_airflow.nil? + hvac_sizing_values.Heat_Airflow = fixed_heating_airflow + hvac_sizing_values.Heat_Airflow_isdefaulted = false + end + end + + def self.apply_hvac_airflow_adjustments(hvac_sizing_values, hvac_heating, hvac_cooling) + ''' + Airflow Adjustments + ''' + + # Maximum airflow rate allowed for the duct system + max_airflow_allowed = get_max_airflow(hvac_heating, hvac_cooling) + return if max_airflow_allowed.nil? + + # W/cfm of the blower fan + fan_watts_per_cfm = get_fan_watts_per_cfm(hvac_heating, hvac_cooling) + return if fan_watts_per_cfm.nil? + + # Maximum autosized airflow + max_airflow = [hvac_sizing_values.Heat_Airflow, hvac_sizing_values.Cool_Airflow].max + + # If maximum autosized airflow is not limited, do nothing + return if max_airflow <= max_airflow_allowed + + # Adjust heating or cooling system size for the upgraded buildings based on max allowed airflow rate + if hvac_sizing_values.Cool_Airflow > hvac_sizing_values.Heat_Airflow + # Design cooling airflow rate exceeds max allowed, adjust cooling capacity + prev_airflow = hvac_sizing_values.Cool_Airflow + hvac_sizing_values.Cool_Airflow = max_airflow_allowed + hvac_sizing_values.Cool_Capacity *= hvac_sizing_values.Cool_Airflow / prev_airflow + hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * @hvac_cooling_shr + hvac_sizing_values.Cool_Airflow_isdefaulted = false + if hvac_sizing_values.Heat_Capacity > 0 + hvac_sizing_values.Heat_Capacity = hvac_sizing_values.Cool_Capacity + hvac_sizing_values.Heat_Airflow = calc_airflow_rate_manual_s(hvac_sizing_values.Heat_Capacity, (@supply_air_temp - @heat_setpoint), hvac_sizing_values.Heat_Capacity) + hvac_sizing_values.Heat_Airflow_isdefaulted = false + end + else # hvac_sizing_values.Heat_Airflow > hvac_sizing_values.Cool_Airflow + # Design heating airflow rate exceeds max allowed, adjust heating capacity + prev_airflow = hvac_sizing_values.Heat_Airflow + hvac_sizing_values.Heat_Airflow = max_airflow_allowed + hvac_sizing_values.Heat_Capacity *= hvac_sizing_values.Heat_Airflow / prev_airflow + hvac_sizing_values.Heat_Airflow_isdefaulted = false + if hvac_sizing_values.Cool_Capacity > 0 + hvac_sizing_values.Cool_Capacity = hvac_sizing_values.Heat_Capacity + hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * @hvac_cooling_shr + hvac_sizing_values.Cool_Airflow = calc_airflow_rate_manual_s(hvac_sizing_values.Cool_Capacity_Sens, (@cool_setpoint - @leaving_air_temp), hvac_sizing_values.Cool_Capacity) + hvac_sizing_values.Cool_Airflow_isdefaulted = false + end + end + + hvac_sizing_values.Adjusted_Fan_Watts_Per_CFM = get_adjusted_fan_watts_per_cfm(hvac_sizing_values, max_airflow, fan_watts_per_cfm) + end + + def self.get_max_airflow(htg_sys, clg_sys) + if !htg_sys.nil? && !clg_sys.nil? + if !htg_sys.max_heating_airflow_cfm.nil? && !clg_sys.max_cooling_airflow_cfm.nil? + return [htg_sys.max_heating_airflow_cfm, clg_sys.max_cooling_airflow_cfm].max + elsif !htg_sys.max_heating_airflow_cfm.nil? + return htg_sys.max_heating_airflow_cfm + elsif !clg_sys.max_cooling_airflow_cfm.nil? + return clg_sys.max_cooling_airflow_cfm + end + elsif !htg_sys.nil? + if !htg_sys.max_heating_airflow_cfm.nil? + return htg_sys.max_heating_airflow_cfm + end + elsif !clg_sys.nil? + if !clg_sys.max_cooling_airflow_cfm.nil? + return clg_sys.max_cooling_airflow_cfm + end + end + return + end + + def self.get_fan_watts_per_cfm(htg_sys, clg_sys) + if !htg_sys.nil? && !clg_sys.nil? && !htg_sys.fan_watts_per_cfm.nil? && !clg_sys.fan_watts_per_cfm.nil? + return if htg_sys.fan_watts_per_cfm != clg_sys.fan_watts_per_cfm + + return htg_sys.fan_watts_per_cfm + elsif !htg_sys.nil? && !htg_sys.fan_watts_per_cfm.nil? + return htg_sys.fan_watts_per_cfm + elsif !clg_sys.nil? && !clg_sys.fan_watts_per_cfm.nil? + return clg_sys.fan_watts_per_cfm + end + return + end + + def self.get_adjusted_fan_watts_per_cfm(hvac_sizing_values, max_airflow, fan_watts_per_cfm) + v_baseline = max_airflow + v_upgrade = [hvac_sizing_values.Heat_Airflow, hvac_sizing_values.Cool_Airflow].max + + p_int = v_baseline * fan_watts_per_cfm + p_upgrade = p_int * (v_upgrade / v_baseline)**3 + adjusted_fan_watts_per_cfm = p_upgrade / v_upgrade + return adjusted_fan_watts_per_cfm + end + def self.apply_hvac_ground_loop(runner, hvac_sizing_values, weather, hvac_cooling) ''' GSHP Ground Loop Sizing Calculations @@ -3062,9 +3178,10 @@ def initialize class HVACSizingValues def initialize end - attr_accessor(:Cool_Load_Sens, :Cool_Load_Lat, :Cool_Load_Tot, :Cool_Capacity, :Cool_Capacity_Sens, :Cool_Airflow, - :Heat_Load, :Heat_Load_Supp, :Heat_Capacity, :Heat_Capacity_Supp, :Heat_Airflow, - :GSHP_Loop_flow, :GSHP_Bore_Holes, :GSHP_Bore_Depth, :GSHP_G_Functions, :GSHP_Bore_Config) + attr_accessor(:Cool_Load_Sens, :Cool_Load_Lat, :Cool_Load_Tot, :Cool_Capacity, :Cool_Capacity_Sens, :Cool_Airflow, :Cool_Airflow_isdefaulted, + :Heat_Load, :Heat_Load_Supp, :Heat_Capacity, :Heat_Capacity_Supp, :Heat_Airflow, :Heat_Airflow_isdefaulted, + :GSHP_Loop_flow, :GSHP_Bore_Holes, :GSHP_Bore_Depth, :GSHP_G_Functions, :GSHP_Bore_Config, + :Adjusted_Fan_Watts_Per_CFM) end class Numeric diff --git a/HPXMLtoOpenStudio/resources/meta_measure.rb b/HPXMLtoOpenStudio/resources/meta_measure.rb index 772eb03c43..8d92e5a0ad 100644 --- a/HPXMLtoOpenStudio/resources/meta_measure.rb +++ b/HPXMLtoOpenStudio/resources/meta_measure.rb @@ -510,6 +510,7 @@ def report_os_warnings(os_log, rundir) next if s.logMessage.include? 'xsdValidate' next if s.logMessage.include? 'xsltValidate' next if s.logLevel == 0 && s.logMessage.include?('not within the expected limits') # Ignore EpwFile warnings + next if s.logMessage.include? 'Error removing temporary directory at /tmp/xmlvalidation' f << "OS Message: #{s.logMessage}\n" end diff --git a/HPXMLtoOpenStudio/resources/xmlvalidator.rb b/HPXMLtoOpenStudio/resources/xmlvalidator.rb index 2a20985c0d..d338709818 100644 --- a/HPXMLtoOpenStudio/resources/xmlvalidator.rb +++ b/HPXMLtoOpenStudio/resources/xmlvalidator.rb @@ -21,13 +21,7 @@ def self.validate_against_schema(hpxml_path, validator, errors = [], warnings = end def self.get_schematron_validator(schematron_path) - # First create XSLT at our specified output path to avoid possible errors due - # to https://github.com/NREL/OpenStudio/issues/4824. - xslt_dir = Dir.mktmpdir('xmlvalidation-') - OpenStudio::XMLValidator::schematronToXslt(schematron_path, xslt_dir) - xslt_path = File.join(xslt_dir, File.basename(schematron_path, '.xml') + '_stylesheet.xslt') - - return OpenStudio::XMLValidator.new(xslt_path) + return OpenStudio::XMLValidator.new(schematron_path) end def self.validate_against_schematron(hpxml_path, validator, hpxml_doc, errors = [], warnings = []) diff --git a/HPXMLtoOpenStudio/tests/test_defaults.rb b/HPXMLtoOpenStudio/tests/test_defaults.rb index bcfeeedfb8..4b7fdf3d0d 100644 --- a/HPXMLtoOpenStudio/tests/test_defaults.rb +++ b/HPXMLtoOpenStudio/tests/test_defaults.rb @@ -1154,6 +1154,7 @@ def test_central_air_conditioners hpxml_bldg.cooling_systems[0].cooling_shr = 0.88 hpxml_bldg.cooling_systems[0].compressor_type = HPXML::HVACCompressorTypeVariableSpeed hpxml_bldg.cooling_systems[0].fan_watts_per_cfm = 0.66 + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = 1000 hpxml_bldg.cooling_systems[0].charge_defect_ratio = -0.11 hpxml_bldg.cooling_systems[0].airflow_defect_ratio = -0.22 hpxml_bldg.cooling_systems[0].cooling_capacity = 12345 @@ -1161,60 +1162,85 @@ def test_central_air_conditioners hpxml_bldg.cooling_systems[0].crankcase_heater_watts = 40.0 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0, 40.0) + _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 780, -0.11, -0.22, 12345, 12.0, 40.0) # Test defaults - SEER2 hpxml_bldg.cooling_systems[0].cooling_efficiency_seer = nil hpxml_bldg.cooling_systems[0].cooling_efficiency_seer2 = 11.4 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0, 40.0) + _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 780, -0.11, -0.22, 12345, 12.0, 40.0) + + # Test defaults - ductwork restriction + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = nil + hpxml_bldg.cooling_systems[0].max_cooling_airflow_cfm = 1000 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 400, -0.11, -0.22, 12345, 12.0, 40.0) + + # Test defaults - ductwork restriction 2 + hpxml_bldg.cooling_systems[0].max_cooling_airflow_cfm = 100 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.025, 78, -0.11, -0.22, 2405, 12.0, 40.0) + + # Test defaults - ductwork restriction 3 + hpxml_bldg.cooling_systems[0].cooling_capacity = nil + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.008, 78, -0.11, -0.22, 2405, 12.0, 40.0) # Test defaults hpxml_bldg.cooling_systems[0].cooling_shr = nil hpxml_bldg.cooling_systems[0].compressor_type = nil hpxml_bldg.cooling_systems[0].fan_watts_per_cfm = nil + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = nil + hpxml_bldg.cooling_systems[0].max_cooling_airflow_cfm = nil hpxml_bldg.cooling_systems[0].charge_defect_ratio = nil hpxml_bldg.cooling_systems[0].airflow_defect_ratio = nil hpxml_bldg.cooling_systems[0].cooling_capacity = nil hpxml_bldg.cooling_systems[0].crankcase_heater_watts = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, 12.0, 50.0) + _test_default_central_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 886, 0, 0, nil, 12.0, 50.0) end def test_room_air_conditioners # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-room-ac-only.xml') hpxml_bldg.cooling_systems[0].cooling_shr = 0.88 + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = 1000 hpxml_bldg.cooling_systems[0].cooling_capacity = 12345 hpxml_bldg.cooling_systems[0].crankcase_heater_watts = 40.0 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_room_air_conditioner_ptac_values(default_hpxml_bldg.cooling_systems[0], 0.88, 12345, 40.0) + _test_default_room_air_conditioner_ptac_values(default_hpxml_bldg.cooling_systems[0], 0.88, 1000, 12345, 40.0) # Test defaults hpxml_bldg.cooling_systems[0].cooling_shr = nil + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = nil hpxml_bldg.cooling_systems[0].cooling_capacity = nil hpxml_bldg.cooling_systems[0].crankcase_heater_watts = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_room_air_conditioner_ptac_values(default_hpxml_bldg.cooling_systems[0], 0.65, nil, 0.0) + _test_default_room_air_conditioner_ptac_values(default_hpxml_bldg.cooling_systems[0], 0.65, 371, nil, 0.0) end def test_evaporative_coolers # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-evap-cooler-only.xml') + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = 1000 hpxml_bldg.cooling_systems[0].cooling_capacity = 12345 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_evap_cooler_values(default_hpxml_bldg.cooling_systems[0], 12345) + _test_default_evap_cooler_values(default_hpxml_bldg.cooling_systems[0], 1000, 12345) # Test defaults + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = nil hpxml_bldg.cooling_systems[0].cooling_capacity = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_evap_cooler_values(default_hpxml_bldg.cooling_systems[0], nil) + _test_default_evap_cooler_values(default_hpxml_bldg.cooling_systems[0], 2456, nil) end def test_mini_split_air_conditioners @@ -1222,6 +1248,7 @@ def test_mini_split_air_conditioners hpxml, hpxml_bldg = _create_hpxml('base-hvac-mini-split-air-conditioner-only-ducted.xml') hpxml_bldg.cooling_systems[0].cooling_shr = 0.78 hpxml_bldg.cooling_systems[0].fan_watts_per_cfm = 0.66 + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = 1000 hpxml_bldg.cooling_systems[0].charge_defect_ratio = -0.11 hpxml_bldg.cooling_systems[0].airflow_defect_ratio = -0.22 hpxml_bldg.cooling_systems[0].cooling_capacity = 12345 @@ -1229,11 +1256,12 @@ def test_mini_split_air_conditioners hpxml_bldg.cooling_systems[0].compressor_type = HPXML::HVACCompressorTypeVariableSpeed XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.78, 0.66, -0.11, -0.22, 12345, 19.0, 40.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.78, 0.66, 780, -0.11, -0.22, 12345, 19.0, 40.0, HPXML::HVACCompressorTypeVariableSpeed) # Test defaults hpxml_bldg.cooling_systems[0].cooling_shr = nil hpxml_bldg.cooling_systems[0].fan_watts_per_cfm = nil + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = nil hpxml_bldg.cooling_systems[0].charge_defect_ratio = nil hpxml_bldg.cooling_systems[0].airflow_defect_ratio = nil hpxml_bldg.cooling_systems[0].cooling_capacity = nil @@ -1241,67 +1269,91 @@ def test_mini_split_air_conditioners hpxml_bldg.cooling_systems[0].compressor_type = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.73, 0.18, 0, 0, nil, 19.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.73, 0.18, 722, 0, 0, nil, 19.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) # Test defaults w/ ductless hpxml_bldg.cooling_systems[0].distribution_system.delete XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.73, 0.07, 0, 0, nil, 19.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.73, 0.07, 476, 0, 0, nil, 19.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) # Test defaults w/ ductless - SEER2 hpxml_bldg.cooling_systems[0].cooling_efficiency_seer = nil hpxml_bldg.cooling_systems[0].cooling_efficiency_seer2 = 13.3 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.73, 0.07, 0, 0, nil, 13.3, 50.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_air_conditioner_values(default_hpxml_bldg.cooling_systems[0], 0.73, 0.07, 476, 0, 0, nil, 13.3, 50.0, HPXML::HVACCompressorTypeVariableSpeed) end def test_ptac # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-ptac-with-heating-electricity.xml') hpxml_bldg.cooling_systems[0].cooling_shr = 0.75 + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = 1000 hpxml_bldg.cooling_systems[0].cooling_capacity = 12345 hpxml_bldg.cooling_systems[0].crankcase_heater_watts = 40.0 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_room_air_conditioner_ptac_values(default_hpxml_bldg.cooling_systems[0], 0.75, 12345, 40.0) + _test_default_room_air_conditioner_ptac_values(default_hpxml_bldg.cooling_systems[0], 0.75, 1000, 12345, 40.0) # Test defaults hpxml_bldg.cooling_systems[0].cooling_shr = nil + hpxml_bldg.cooling_systems[0].cooling_airflow_cfm = nil hpxml_bldg.cooling_systems[0].cooling_capacity = nil hpxml_bldg.cooling_systems[0].crankcase_heater_watts = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_room_air_conditioner_ptac_values(default_hpxml_bldg.cooling_systems[0], 0.65, nil, 0.0) + _test_default_room_air_conditioner_ptac_values(default_hpxml_bldg.cooling_systems[0], 0.65, 371, nil, 0.0) end def test_furnaces # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base.xml') hpxml_bldg.heating_systems[0].fan_watts_per_cfm = 0.66 + hpxml_bldg.heating_systems[0].heating_airflow_cfm = 1000 hpxml_bldg.heating_systems[0].airflow_defect_ratio = -0.22 hpxml_bldg.heating_systems[0].heating_capacity = 12345 hpxml_bldg.heating_systems[0].pilot_light = true hpxml_bldg.heating_systems[0].pilot_light_btuh = 999 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.66, -0.22, 12345, true, 999) + _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.66, 780, -0.22, 12345, true, 999) + + # Test defaults - ductwork restriction + hpxml_bldg.heating_systems[0].heating_airflow_cfm = nil + hpxml_bldg.heating_systems[0].max_heating_airflow_cfm = 1000 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.66, 213, -0.22, 12345, true, 999) + + # Test defaults - ductwork restriction 2 + hpxml_bldg.heating_systems[0].max_heating_airflow_cfm = 100 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.007, 41, -0.22, 2405, true, 999) + + # Test defaults - ductwork restriction 3 + hpxml_bldg.heating_systems[0].heating_capacity = nil + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.007, 41, -0.22, 2405, true, 999) # Test defaults hpxml_bldg.heating_systems[0].fan_watts_per_cfm = nil + hpxml_bldg.heating_systems[0].heating_airflow_cfm = nil + hpxml_bldg.heating_systems[0].max_heating_airflow_cfm = nil hpxml_bldg.heating_systems[0].airflow_defect_ratio = nil hpxml_bldg.heating_systems[0].heating_capacity = nil hpxml_bldg.heating_systems[0].pilot_light_btuh = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.375, 0, nil, true, 500) + _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.375, 712, 0, nil, true, 500) # Test defaults w/o pilot hpxml_bldg.heating_systems[0].pilot_light = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.375, 0, nil, false, nil) + _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.375, 712, 0, nil, false, nil) # Test defaults w/ gravity distribution system hpxml, hpxml_bldg = _create_hpxml('base-hvac-furnace-gas-only.xml') @@ -1311,54 +1363,59 @@ def test_furnaces hpxml_bldg.heating_systems[0].heating_capacity = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.0, 0, nil, false, nil) + _test_default_furnace_values(default_hpxml_bldg.heating_systems[0], 0.0, 712, 0, nil, false, nil) end def test_wall_furnaces # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-wall-furnace-elec-only.xml') hpxml_bldg.heating_systems[0].fan_watts = 22 + hpxml_bldg.heating_systems[0].heating_airflow_cfm = 1000 hpxml_bldg.heating_systems[0].heating_capacity = 12345 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_wall_furnace_values(default_hpxml_bldg.heating_systems[0], 22, 12345) + _test_default_wall_furnace_values(default_hpxml_bldg.heating_systems[0], 22, 1000, 12345) # Test defaults hpxml_bldg.heating_systems[0].fan_watts = nil + hpxml_bldg.heating_systems[0].heating_airflow_cfm = nil hpxml_bldg.heating_systems[0].heating_capacity = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_wall_furnace_values(default_hpxml_bldg.heating_systems[0], 0, nil) + _test_default_wall_furnace_values(default_hpxml_bldg.heating_systems[0], 0, 689, nil) # Test defaults w/o pilot + hpxml_bldg.heating_systems[0].pilot_light = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_wall_furnace_values(default_hpxml_bldg.heating_systems[0], 0, nil) + _test_default_wall_furnace_values(default_hpxml_bldg.heating_systems[0], 0, 689, nil) end def test_floor_furnaces # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-floor-furnace-propane-only.xml') hpxml_bldg.heating_systems[0].fan_watts = 22 + hpxml_bldg.heating_systems[0].heating_airflow_cfm = 1000 hpxml_bldg.heating_systems[0].heating_capacity = 12345 hpxml_bldg.heating_systems[0].pilot_light = true hpxml_bldg.heating_systems[0].pilot_light_btuh = 999 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_floor_furnace_values(default_hpxml_bldg.heating_systems[0], 22, 12345, true, 999) + _test_default_floor_furnace_values(default_hpxml_bldg.heating_systems[0], 22, 1000, 12345, true, 999) # Test defaults hpxml_bldg.heating_systems[0].fan_watts = nil + hpxml_bldg.heating_systems[0].heating_airflow_cfm = nil hpxml_bldg.heating_systems[0].pilot_light_btuh = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_floor_furnace_values(default_hpxml_bldg.heating_systems[0], 0, nil, true, 500) + _test_default_floor_furnace_values(default_hpxml_bldg.heating_systems[0], 0, 360, nil, true, 500) # Test defaults w/o pilot hpxml_bldg.heating_systems[0].pilot_light = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_floor_furnace_values(default_hpxml_bldg.heating_systems[0], 0, nil, false, nil) + _test_default_floor_furnace_values(default_hpxml_bldg.heating_systems[0], 0, 360, nil, false, nil) end def test_boilers @@ -1393,69 +1450,75 @@ def test_stoves # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-stove-oil-only.xml') hpxml_bldg.heating_systems[0].fan_watts = 22 + hpxml_bldg.heating_systems[0].heating_airflow_cfm = 1000 hpxml_bldg.heating_systems[0].heating_capacity = 12345 hpxml_bldg.heating_systems[0].pilot_light = true hpxml_bldg.heating_systems[0].pilot_light_btuh = 999 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_stove_values(default_hpxml_bldg.heating_systems[0], 22, 12345, true, 999) + _test_default_stove_values(default_hpxml_bldg.heating_systems[0], 22, 1000, 12345, true, 999) # Test defaults hpxml_bldg.heating_systems[0].fan_watts = nil + hpxml_bldg.heating_systems[0].heating_airflow_cfm = nil hpxml_bldg.heating_systems[0].heating_capacity = nil hpxml_bldg.heating_systems[0].pilot_light_btuh = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_stove_values(default_hpxml_bldg.heating_systems[0], 40, nil, true, 500) + _test_default_stove_values(default_hpxml_bldg.heating_systems[0], 40, 689, nil, true, 500) # Test defaults w/o pilot hpxml_bldg.heating_systems[0].pilot_light = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_stove_values(default_hpxml_bldg.heating_systems[0], 40, nil, false, nil) + _test_default_stove_values(default_hpxml_bldg.heating_systems[0], 40, 689, nil, false, nil) end def test_space_heaters # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-space-heater-gas-only.xml') hpxml_bldg.heating_systems[0].fan_watts = 22 + hpxml_bldg.heating_systems[0].heating_airflow_cfm = 1000 hpxml_bldg.heating_systems[0].heating_capacity = 12345 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_portable_heater_values(default_hpxml_bldg.heating_systems[0], 22, 12345) + _test_default_portable_heater_values(default_hpxml_bldg.heating_systems[0], 22, 1000, 12345) # Test defaults hpxml_bldg.heating_systems[0].fan_watts = nil + hpxml_bldg.heating_systems[0].heating_airflow_cfm = nil hpxml_bldg.heating_systems[0].heating_capacity = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_portable_heater_values(default_hpxml_bldg.heating_systems[0], 0, nil) + _test_default_portable_heater_values(default_hpxml_bldg.heating_systems[0], 0, 689, nil) end def test_fireplaces # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-fireplace-wood-only.xml') hpxml_bldg.heating_systems[0].fan_watts = 22 + hpxml_bldg.heating_systems[0].heating_airflow_cfm = 1000 hpxml_bldg.heating_systems[0].heating_capacity = 12345 hpxml_bldg.heating_systems[0].pilot_light = true hpxml_bldg.heating_systems[0].pilot_light_btuh = 999 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_fireplace_values(default_hpxml_bldg.heating_systems[0], 22, 12345, true, 999) + _test_default_fireplace_values(default_hpxml_bldg.heating_systems[0], 22, 1000, 12345, true, 999) # Test defaults hpxml_bldg.heating_systems[0].fan_watts = nil + hpxml_bldg.heating_systems[0].heating_airflow_cfm = nil hpxml_bldg.heating_systems[0].heating_capacity = nil hpxml_bldg.heating_systems[0].pilot_light_btuh = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_fireplace_values(default_hpxml_bldg.heating_systems[0], 0, nil, true, 500) + _test_default_fireplace_values(default_hpxml_bldg.heating_systems[0], 0, 689, nil, true, 500) # Test defaults w/o pilot hpxml_bldg.heating_systems[0].pilot_light = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_fireplace_values(default_hpxml_bldg.heating_systems[0], 0, nil, false, nil) + _test_default_fireplace_values(default_hpxml_bldg.heating_systems[0], 0, 689, nil, false, nil) end def test_air_source_heat_pumps @@ -1464,6 +1527,8 @@ def test_air_source_heat_pumps hpxml_bldg.heat_pumps[0].cooling_shr = 0.88 hpxml_bldg.heat_pumps[0].compressor_type = HPXML::HVACCompressorTypeVariableSpeed hpxml_bldg.heat_pumps[0].fan_watts_per_cfm = 0.66 + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = 1000 + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = 1200 hpxml_bldg.heat_pumps[0].charge_defect_ratio = -0.11 hpxml_bldg.heat_pumps[0].airflow_defect_ratio = -0.22 hpxml_bldg.heat_pumps[0].cooling_capacity = 12345 @@ -1476,7 +1541,7 @@ def test_air_source_heat_pumps hpxml_bldg.heat_pumps[0].crankcase_heater_watts = 40.0 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, nil, 34567, 14.0, 8.0, 0.1, 2.0, 40.0) + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 780, 936, -0.11, -0.22, 12345, 23456, nil, 34567, 14.0, 8.0, 0.1, 2.0, 40.0) # Test w/ heating capacity 17F hpxml_bldg.heat_pumps[0].heating_capacity_17F = 9876 @@ -1484,7 +1549,7 @@ def test_air_source_heat_pumps hpxml_bldg.heat_pumps[0].heating_capacity_retention_temp = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, nil, nil, 40.0) + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 780, 936, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, nil, nil, 40.0) # Test defaults - SEER2/HSPF2 hpxml_bldg.heat_pumps[0].cooling_efficiency_seer = nil @@ -1493,12 +1558,40 @@ def test_air_source_heat_pumps hpxml_bldg.heat_pumps[0].heating_efficiency_hspf2 = 6.8 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, nil, nil, 40.0) + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 780, 936, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, nil, nil, 40.0) + + # Test defaults - ductwork restriction + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = nil + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = nil + hpxml_bldg.heat_pumps[0].max_heating_airflow_cfm = 1000 + hpxml_bldg.heat_pumps[0].max_cooling_airflow_cfm = 1200 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 577, 400, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, nil, nil, 40.0) + + # Test defaults - ductwork restriction 2 + hpxml_bldg.heat_pumps[0].max_heating_airflow_cfm = 100 + hpxml_bldg.heat_pumps[0].max_cooling_airflow_cfm = 120 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.03, 94, 123, -0.11, -0.22, 3804, 3804, 1602, 34567, 14.0, 8.0, nil, nil, 40.0) + + # Test defaults - ductwork restriction 3 + hpxml_bldg.heat_pumps[0].heating_capacity = nil + hpxml_bldg.heat_pumps[0].cooling_capacity = nil + hpxml_bldg.heat_pumps[0].heating_capacity_17F = nil + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.005, 71, 94, -0.11, -0.22, 2886, 2886, nil, 34567, 14.0, 8.0, 0.5282, 5.0, 40.0) # Test defaults hpxml_bldg.heat_pumps[0].cooling_shr = nil hpxml_bldg.heat_pumps[0].compressor_type = nil hpxml_bldg.heat_pumps[0].fan_watts_per_cfm = nil + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = nil + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = nil + hpxml_bldg.heat_pumps[0].max_heating_airflow_cfm = nil + hpxml_bldg.heat_pumps[0].max_cooling_airflow_cfm = nil hpxml_bldg.heat_pumps[0].charge_defect_ratio = nil hpxml_bldg.heat_pumps[0].airflow_defect_ratio = nil hpxml_bldg.heat_pumps[0].cooling_capacity = nil @@ -1508,12 +1601,14 @@ def test_air_source_heat_pumps hpxml_bldg.heat_pumps[0].crankcase_heater_watts = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, nil, nil, nil, 14.0, 8.0, 0.425, 5.0, 50.0) + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 982, 1295, 0, 0, nil, nil, nil, nil, 14.0, 8.0, 0.425, 5.0, 50.0) # Test w/ detailed performance data hpxml, hpxml_bldg = _create_hpxml('base-hvac-air-to-air-heat-pump-var-speed-detailed-performance.xml') hpxml_bldg.heat_pumps[0].cooling_shr = 0.88 hpxml_bldg.heat_pumps[0].fan_watts_per_cfm = 0.66 + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = 1000 + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = 1200 hpxml_bldg.heat_pumps[0].charge_defect_ratio = -0.11 hpxml_bldg.heat_pumps[0].airflow_defect_ratio = -0.22 hpxml_bldg.heat_pumps[0].cooling_efficiency_seer = 14.0 @@ -1523,7 +1618,7 @@ def test_air_source_heat_pumps hpxml_bldg.heat_pumps[0].crankcase_heater_watts = 40.0 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, nil, nil, nil, nil, 14.0, 8.0, 0.1, 2.0, 40.0) + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 780, 936, -0.11, -0.22, nil, nil, nil, nil, 14.0, 8.0, 0.1, 2.0, 40.0) hpxml_bldg.heat_pumps[0].heating_capacity_retention_fraction = nil hpxml_bldg.heat_pumps[0].heating_capacity_retention_temp = nil @@ -1531,18 +1626,20 @@ def test_air_source_heat_pumps max_cap_at_47f = hpxml_bldg.heat_pumps[0].heating_detailed_performance_data.find { |dp| dp.outdoor_temperature == 47.0 && dp.capacity_description == HPXML::CapacityDescriptionMaximum }.capacity XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, nil, nil, nil, nil, 14.0, 8.0, (max_cap_at_5f / max_cap_at_47f).round(5), 5.0, 40.0) + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 780, 936, -0.11, -0.22, nil, nil, nil, nil, 14.0, 8.0, (max_cap_at_5f / max_cap_at_47f).round(5), 5.0, 40.0) hpxml_bldg.heat_pumps[0].heating_capacity_17F = 9876 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, nil, nil, 9876, nil, 14.0, 8.0, nil, nil, 40.0) + _test_default_air_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, 780, 936, -0.11, -0.22, nil, nil, 9876, nil, 14.0, 8.0, nil, nil, 40.0) end def test_pthp # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-hvac-pthp.xml') hpxml_bldg.heat_pumps[0].cooling_shr = 0.88 + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = 1000 + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = 1200 hpxml_bldg.heat_pumps[0].cooling_capacity = 12345 hpxml_bldg.heat_pumps[0].heating_capacity = 23456 hpxml_bldg.heat_pumps[0].heating_capacity_retention_fraction = 0.1 @@ -1550,7 +1647,7 @@ def test_pthp hpxml_bldg.heat_pumps[0].crankcase_heater_watts = 40.0 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_pthp_values(default_hpxml_bldg.heat_pumps[0], 0.88, 12345, 23456, nil, 0.1, 2.0, 40.0) + _test_default_pthp_values(default_hpxml_bldg.heat_pumps[0], 0.88, 1000, 1200, 12345, 23456, nil, 0.1, 2.0, 40.0) # Test w/ heating capacity 17F hpxml_bldg.heat_pumps[0].heating_capacity_17F = 9876 @@ -1558,10 +1655,12 @@ def test_pthp hpxml_bldg.heat_pumps[0].heating_capacity_retention_temp = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_pthp_values(default_hpxml_bldg.heat_pumps[0], 0.88, 12345, 23456, 9876, nil, nil, 40.0) + _test_default_pthp_values(default_hpxml_bldg.heat_pumps[0], 0.88, 1000, 1200, 12345, 23456, 9876, nil, nil, 40.0) # Test defaults hpxml_bldg.heat_pumps[0].cooling_shr = nil + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = nil + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = nil hpxml_bldg.heat_pumps[0].cooling_capacity = nil hpxml_bldg.heat_pumps[0].heating_capacity = nil hpxml_bldg.heat_pumps[0].backup_heating_capacity = nil @@ -1569,7 +1668,7 @@ def test_pthp hpxml_bldg.heat_pumps[0].crankcase_heater_watts = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_pthp_values(default_hpxml_bldg.heat_pumps[0], 0.65, nil, nil, nil, 0.425, 5.0, 0.0) + _test_default_pthp_values(default_hpxml_bldg.heat_pumps[0], 0.65, 689, 615, nil, nil, nil, 0.425, 5.0, 0.0) end def test_mini_split_heat_pumps @@ -1577,6 +1676,8 @@ def test_mini_split_heat_pumps hpxml, hpxml_bldg = _create_hpxml('base-hvac-mini-split-heat-pump-ducted.xml') hpxml_bldg.heat_pumps[0].cooling_shr = 0.78 hpxml_bldg.heat_pumps[0].fan_watts_per_cfm = 0.66 + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = 1000 + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = 1200 hpxml_bldg.heat_pumps[0].charge_defect_ratio = -0.11 hpxml_bldg.heat_pumps[0].airflow_defect_ratio = -0.22 hpxml_bldg.heat_pumps[0].cooling_capacity = 12345 @@ -1588,7 +1689,7 @@ def test_mini_split_heat_pumps hpxml_bldg.heat_pumps[0].compressor_type = HPXML::HVACCompressorTypeVariableSpeed XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.78, 0.66, -0.11, -0.22, 12345, 23456, nil, 34567, 19.0, 10.0, 0.1, 2.0, 40.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.78, 0.66, 780, 936, -0.11, -0.22, 12345, 23456, nil, 34567, 19.0, 10.0, 0.1, 2.0, 40.0, HPXML::HVACCompressorTypeVariableSpeed) # Test w/ heating capacity 17F hpxml_bldg.heat_pumps[0].heating_capacity_17F = 9876 @@ -1596,11 +1697,13 @@ def test_mini_split_heat_pumps hpxml_bldg.heat_pumps[0].heating_capacity_retention_temp = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.78, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 19.0, 10.0, nil, nil, 40.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.78, 0.66, 780, 936, -0.11, -0.22, 12345, 23456, 9876, 34567, 19.0, 10.0, nil, nil, 40.0, HPXML::HVACCompressorTypeVariableSpeed) # Test defaults hpxml_bldg.heat_pumps[0].cooling_shr = nil hpxml_bldg.heat_pumps[0].fan_watts_per_cfm = nil + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = nil + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = nil hpxml_bldg.heat_pumps[0].charge_defect_ratio = nil hpxml_bldg.heat_pumps[0].airflow_defect_ratio = nil hpxml_bldg.heat_pumps[0].cooling_capacity = nil @@ -1611,13 +1714,13 @@ def test_mini_split_heat_pumps hpxml_bldg.heat_pumps[0].compressor_type = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.73, 0.18, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 0.62, 5.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.73, 0.18, 826, 1089, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 0.62, 5.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) # Test defaults w/ ductless and no backup hpxml_bldg.heat_pumps[0].distribution_system.delete XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 0.62, 5.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.73, 0.07, 788, 788, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 0.62, 5.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) # Test defaults w/ ductless - SEER2/HSPF2 hpxml_bldg.heat_pumps[0].cooling_efficiency_seer = nil @@ -1626,7 +1729,7 @@ def test_mini_split_heat_pumps hpxml_bldg.heat_pumps[0].heating_efficiency_hspf2 = 6.8 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 13.3, 7.56, 0.51, 5.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) + _test_default_mini_split_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 0.73, 0.07, 788, 788, 0, 0, nil, nil, nil, nil, 13.3, 7.56, 0.51, 5.0, 50.0, HPXML::HVACCompressorTypeVariableSpeed) end def test_heat_pump_temperatures @@ -1705,24 +1808,28 @@ def test_ground_source_heat_pumps hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml') hpxml_bldg.heat_pumps[0].pump_watts_per_ton = 9.9 hpxml_bldg.heat_pumps[0].fan_watts_per_cfm = 0.66 + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = 1000 + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = 1200 hpxml_bldg.heat_pumps[0].airflow_defect_ratio = -0.22 hpxml_bldg.heat_pumps[0].cooling_capacity = 12345 hpxml_bldg.heat_pumps[0].heating_capacity = 23456 hpxml_bldg.heat_pumps[0].backup_heating_capacity = 34567 XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_ground_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 9.9, 0.66, -0.22, 12345, 23456, 34567) + _test_default_ground_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 9.9, 0.66, 780, 936, -0.22, 12345, 23456, 34567) # Test defaults hpxml_bldg.heat_pumps[0].pump_watts_per_ton = nil hpxml_bldg.heat_pumps[0].fan_watts_per_cfm = nil + hpxml_bldg.heat_pumps[0].heating_airflow_cfm = nil + hpxml_bldg.heat_pumps[0].cooling_airflow_cfm = nil hpxml_bldg.heat_pumps[0].airflow_defect_ratio = nil hpxml_bldg.heat_pumps[0].cooling_capacity = nil hpxml_bldg.heat_pumps[0].heating_capacity = nil hpxml_bldg.heat_pumps[0].backup_heating_capacity = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_ground_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 30.0, 0.375, 0, nil, nil, nil) + _test_default_ground_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 30.0, 0.375, 982, 1295, 0, nil, nil, nil) end def test_geothermal_loops @@ -4060,11 +4167,16 @@ def _test_default_furniture_mass_values(furniture_mass, area_fraction, type) assert_equal(type, furniture_mass.type) end - def _test_default_central_air_conditioner_values(cooling_system, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio, + def _test_default_central_air_conditioner_values(cooling_system, shr, compressor_type, fan_watts_per_cfm, cooling_airflow_cfm, charge_defect_ratio, airflow_defect_ratio, cooling_capacity, cooling_efficiency_seer, crankcase_heater_watts) assert_equal(shr, cooling_system.cooling_shr) assert_equal(compressor_type, cooling_system.compressor_type) assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm) + if cooling_airflow_cfm.nil? # nil implies an autosized value + assert(cooling_system.cooling_airflow_cfm > 0) + else + assert_equal(cooling_airflow_cfm, cooling_system.cooling_airflow_cfm) + end assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio) assert_equal(airflow_defect_ratio, cooling_system.airflow_defect_ratio) assert_equal(crankcase_heater_watts, cooling_system.crankcase_heater_watts) @@ -4080,8 +4192,13 @@ def _test_default_central_air_conditioner_values(cooling_system, shr, compressor end end - def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_capacity, crankcase_heater_watts) + def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_airflow_cfm, cooling_capacity, crankcase_heater_watts) assert_equal(shr, cooling_system.cooling_shr) + if cooling_airflow_cfm.nil? # nil implies an autosized value + assert(cooling_system.cooling_airflow_cfm > 0) + else + assert_equal(cooling_airflow_cfm, cooling_system.cooling_airflow_cfm) + end assert_equal(crankcase_heater_watts, cooling_system.crankcase_heater_watts) if cooling_capacity.nil? assert(cooling_system.cooling_capacity > 0) @@ -4090,7 +4207,12 @@ def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_ end end - def _test_default_evap_cooler_values(cooling_system, cooling_capacity) + def _test_default_evap_cooler_values(cooling_system, cooling_airflow_cfm, cooling_capacity) + if cooling_airflow_cfm.nil? # nil implies an autosized value + assert(cooling_system.cooling_airflow_cfm > 0) + else + assert_equal(cooling_airflow_cfm, cooling_system.cooling_airflow_cfm) + end if cooling_capacity.nil? assert(cooling_system.cooling_capacity > 0) else @@ -4098,10 +4220,15 @@ def _test_default_evap_cooler_values(cooling_system, cooling_capacity) end end - def _test_default_mini_split_air_conditioner_values(cooling_system, shr, fan_watts_per_cfm, charge_defect_ratio, airflow_defect_ratio, + def _test_default_mini_split_air_conditioner_values(cooling_system, shr, fan_watts_per_cfm, cooling_airflow_cfm, charge_defect_ratio, airflow_defect_ratio, cooling_capacity, cooling_efficiency_seer, crankcase_heater_watts, compressor_type) assert_equal(shr, cooling_system.cooling_shr) assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm) + if cooling_airflow_cfm.nil? # nil implies an autosized value + assert(cooling_system.cooling_airflow_cfm > 0) + else + assert_equal(cooling_airflow_cfm, cooling_system.cooling_airflow_cfm) + end assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio) assert_equal(airflow_defect_ratio, cooling_system.airflow_defect_ratio) assert_equal(crankcase_heater_watts, cooling_system.crankcase_heater_watts) @@ -4118,9 +4245,14 @@ def _test_default_mini_split_air_conditioner_values(cooling_system, shr, fan_wat assert_equal(compressor_type, cooling_system.compressor_type) end - def _test_default_furnace_values(heating_system, fan_watts_per_cfm, airflow_defect_ratio, heating_capacity, + def _test_default_furnace_values(heating_system, fan_watts_per_cfm, heating_airflow_cfm, airflow_defect_ratio, heating_capacity, pilot_light, pilot_light_btuh) assert_equal(fan_watts_per_cfm, heating_system.fan_watts_per_cfm) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heating_system.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heating_system.heating_airflow_cfm) + end assert_equal(airflow_defect_ratio, heating_system.airflow_defect_ratio) if heating_capacity.nil? assert(heating_system.heating_capacity > 0) @@ -4135,8 +4267,13 @@ def _test_default_furnace_values(heating_system, fan_watts_per_cfm, airflow_defe end end - def _test_default_wall_furnace_values(heating_system, fan_watts, heating_capacity) + def _test_default_wall_furnace_values(heating_system, fan_watts, heating_airflow_cfm, heating_capacity) assert_equal(fan_watts, heating_system.fan_watts) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heating_system.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heating_system.heating_airflow_cfm) + end if heating_capacity.nil? assert(heating_system.heating_capacity > 0) else @@ -4144,8 +4281,13 @@ def _test_default_wall_furnace_values(heating_system, fan_watts, heating_capacit end end - def _test_default_floor_furnace_values(heating_system, fan_watts, heating_capacity, pilot_light, pilot_light_btuh) + def _test_default_floor_furnace_values(heating_system, fan_watts, heating_airflow_cfm, heating_capacity, pilot_light, pilot_light_btuh) assert_equal(fan_watts, heating_system.fan_watts) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heating_system.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heating_system.heating_airflow_cfm) + end if heating_capacity.nil? assert(heating_system.heating_capacity > 0) else @@ -4174,8 +4316,13 @@ def _test_default_boiler_values(heating_system, eae, heating_capacity, pilot_lig end end - def _test_default_stove_values(heating_system, fan_watts, heating_capacity, pilot_light, pilot_light_btuh) + def _test_default_stove_values(heating_system, fan_watts, heating_airflow_cfm, heating_capacity, pilot_light, pilot_light_btuh) assert_equal(fan_watts, heating_system.fan_watts) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heating_system.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heating_system.heating_airflow_cfm) + end if heating_capacity.nil? assert(heating_system.heating_capacity > 0) else @@ -4189,8 +4336,13 @@ def _test_default_stove_values(heating_system, fan_watts, heating_capacity, pilo end end - def _test_default_portable_heater_values(heating_system, fan_watts, heating_capacity) + def _test_default_portable_heater_values(heating_system, fan_watts, heating_airflow_cfm, heating_capacity) assert_equal(fan_watts, heating_system.fan_watts) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heating_system.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heating_system.heating_airflow_cfm) + end if heating_capacity.nil? assert(heating_system.heating_capacity > 0) else @@ -4198,8 +4350,13 @@ def _test_default_portable_heater_values(heating_system, fan_watts, heating_capa end end - def _test_default_fixed_heater_values(heating_system, fan_watts, heating_capacity) + def _test_default_fixed_heater_values(heating_system, fan_watts, heating_airflow_cfm, heating_capacity) assert_equal(fan_watts, heating_system.fan_watts) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heating_system.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heating_system.heating_airflow_cfm) + end if heating_capacity.nil? assert(heating_system.heating_capacity > 0) else @@ -4207,8 +4364,13 @@ def _test_default_fixed_heater_values(heating_system, fan_watts, heating_capacit end end - def _test_default_fireplace_values(heating_system, fan_watts, heating_capacity, pilot_light, pilot_light_btuh) + def _test_default_fireplace_values(heating_system, fan_watts, heating_airflow_cfm, heating_capacity, pilot_light, pilot_light_btuh) assert_equal(fan_watts, heating_system.fan_watts) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heating_system.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heating_system.heating_airflow_cfm) + end if heating_capacity.nil? assert(heating_system.heating_capacity > 0) else @@ -4222,7 +4384,7 @@ def _test_default_fireplace_values(heating_system, fan_watts, heating_capacity, end end - def _test_default_air_to_air_heat_pump_values(heat_pump, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio, + def _test_default_air_to_air_heat_pump_values(heat_pump, shr, compressor_type, fan_watts_per_cfm, heating_airflow_cfm, cooling_airflow_cfm, charge_defect_ratio, airflow_defect_ratio, cooling_capacity, heating_capacity, heating_capacity_17F, backup_heating_capacity, cooling_efficiency_seer, heating_efficiency_hspf, @@ -4231,6 +4393,16 @@ def _test_default_air_to_air_heat_pump_values(heat_pump, shr, compressor_type, f assert_equal(shr, heat_pump.cooling_shr) assert_equal(compressor_type, heat_pump.compressor_type) assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heat_pump.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heat_pump.heating_airflow_cfm) + end + if cooling_airflow_cfm.nil? # nil implies an autosized value + assert(heat_pump.cooling_airflow_cfm > 0) + else + assert_equal(cooling_airflow_cfm, heat_pump.cooling_airflow_cfm) + end assert_equal(charge_defect_ratio, heat_pump.charge_defect_ratio) assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio) assert_equal(crankcase_heater_watts, heat_pump.crankcase_heater_watts) @@ -4276,10 +4448,20 @@ def _test_default_air_to_air_heat_pump_values(heat_pump, shr, compressor_type, f end end - def _test_default_pthp_values(heat_pump, shr, cooling_capacity, heating_capacity, heating_capacity_17F, + def _test_default_pthp_values(heat_pump, shr, heating_airflow_cfm, cooling_airflow_cfm, cooling_capacity, heating_capacity, heating_capacity_17F, heating_capacity_retention_fraction, heating_capacity_retention_temp, crankcase_heater_watts) assert_equal(shr, heat_pump.cooling_shr) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heat_pump.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heat_pump.heating_airflow_cfm) + end + if cooling_airflow_cfm.nil? # nil implies an autosized value + assert(heat_pump.cooling_airflow_cfm > 0) + else + assert_equal(cooling_airflow_cfm, heat_pump.cooling_airflow_cfm) + end assert_equal(crankcase_heater_watts, heat_pump.crankcase_heater_watts) if cooling_capacity.nil? assert(heat_pump.cooling_capacity > 0) @@ -4308,7 +4490,7 @@ def _test_default_pthp_values(heat_pump, shr, cooling_capacity, heating_capacity end end - def _test_default_mini_split_heat_pump_values(heat_pump, shr, fan_watts_per_cfm, charge_defect_ratio, + def _test_default_mini_split_heat_pump_values(heat_pump, shr, fan_watts_per_cfm, heating_airflow_cfm, cooling_airflow_cfm, charge_defect_ratio, airflow_defect_ratio, cooling_capacity, heating_capacity, heating_capacity_17F, backup_heating_capacity, cooling_efficiency_seer, heating_efficiency_hspf, @@ -4316,6 +4498,16 @@ def _test_default_mini_split_heat_pump_values(heat_pump, shr, fan_watts_per_cfm, crankcase_heater_watts, compressor_type) assert_equal(shr, heat_pump.cooling_shr) assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heat_pump.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heat_pump.heating_airflow_cfm) + end + if cooling_airflow_cfm.nil? # nil implies an autosized value + assert(heat_pump.cooling_airflow_cfm > 0) + else + assert_equal(cooling_airflow_cfm, heat_pump.cooling_airflow_cfm) + end assert_equal(charge_defect_ratio, heat_pump.charge_defect_ratio) assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio) assert_equal(crankcase_heater_watts, heat_pump.crankcase_heater_watts) @@ -4381,11 +4573,21 @@ def _test_default_heat_pump_temperature_values(heat_pump, compressor_lockout_tem end end - def _test_default_ground_to_air_heat_pump_values(heat_pump, pump_watts_per_ton, fan_watts_per_cfm, + def _test_default_ground_to_air_heat_pump_values(heat_pump, pump_watts_per_ton, fan_watts_per_cfm, heating_airflow_cfm, cooling_airflow_cfm, airflow_defect_ratio, cooling_capacity, heating_capacity, backup_heating_capacity) assert_equal(pump_watts_per_ton, heat_pump.pump_watts_per_ton) assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm) + if heating_airflow_cfm.nil? # nil implies an autosized value + assert(heat_pump.heating_airflow_cfm > 0) + else + assert_equal(heating_airflow_cfm, heat_pump.heating_airflow_cfm) + end + if cooling_airflow_cfm.nil? # nil implies an autosized value + assert(heat_pump.cooling_airflow_cfm > 0) + else + assert_equal(cooling_airflow_cfm, heat_pump.cooling_airflow_cfm) + end assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio) if cooling_capacity.nil? assert(heat_pump.cooling_capacity > 0) diff --git a/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb b/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb index b8193e629c..e915971d19 100644 --- a/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +++ b/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb @@ -32,6 +32,7 @@ def test_hvac_configurations Dir["#{@sample_files_path}/base-hvac*.xml"].each do |hvac_hpxml| next if hvac_hpxml.include? 'autosize' next if hvac_hpxml.include? 'detailed-performance' # Autosizing not allowed + next if hvac_hpxml.include? 'restriction' # FIXME { 'USA_CO_Denver.Intl.AP.725650_TMY3.epw' => 'denver', 'USA_TX_Houston-Bush.Intercontinental.AP.722430_TMY3.epw' => 'houston' }.each do |epw_path, location| diff --git a/HPXMLtoOpenStudio/tests/test_validation.rb b/HPXMLtoOpenStudio/tests/test_validation.rb index 74a0b5c93d..a6f8472337 100644 --- a/HPXMLtoOpenStudio/tests/test_validation.rb +++ b/HPXMLtoOpenStudio/tests/test_validation.rb @@ -218,7 +218,7 @@ def test_schema_schematron_error_messages 'multifamily-reference-surface' => ['There are references to "other heated space" but ResidentialFacilityType is not "single-family attached" or "apartment unit".'], 'multifamily-reference-water-heater' => ['There are references to "other non-freezing space" but ResidentialFacilityType is not "single-family attached" or "apartment unit".'], 'refrigerator-location' => ['A location is specified as "garage" but no surfaces were found adjacent to this space type.'], - 'solar-fraction-one' => ['Expected SolarFraction to be less than 1 [context: /HPXML/Building/BuildingDetails/Systems/SolarThermal/SolarThermalSystem, id: "SolarThermalSystem1"]'], + 'solar-fraction-one' => ['Expected SolarFraction to be less than 1 [context: /HPXML/Building/BuildingDetails/Systems/SolarThermal/SolarThermalSystem[SolarFraction], id: "SolarThermalSystem1"]'], 'water-heater-location' => ['A location is specified as "crawlspace - vented" but no surfaces were found adjacent to this space type.'], 'water-heater-location-other' => ["Expected Location to be 'conditioned space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space'"], 'water-heater-recovery-efficiency' => ['Expected RecoveryEfficiency to be greater than EnergyFactor'] } @@ -400,7 +400,6 @@ def test_schema_schematron_error_messages elsif ['hvac-gshp-autosized-count-not-rectangle'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') hpxml_bldg.geothermal_loops[0].num_bore_holes = nil - puts hpxml_bldg.geothermal_loops elsif ['hvac-location-heating-system'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-hvac-boiler-oil-only.xml') hpxml_bldg.heating_systems[0].location = HPXML::LocationBasementUnconditioned diff --git a/docs/source/workflow_inputs.rst b/docs/source/workflow_inputs.rst index f2ecc9cfd7..e60e2e01f9 100644 --- a/docs/source/workflow_inputs.rst +++ b/docs/source/workflow_inputs.rst @@ -539,8 +539,8 @@ Building occupancy is entered in ``/HPXML/Building/BuildingDetails/BuildingSumma \- **single-family attached or apartment unit**: NumberofBedrooms = -0.68 + 1.09 * NumberofResidents - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figures 25 of the `2010 BAHSP `_ are used: "0.061, 0.061, 0.061, 0.061, 0.061, 0.061, 0.061, 0.053, 0.025, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.018, 0.033, 0.054, 0.054, 0.054, 0.061, 0.061, 0.061". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values are used: "1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figures 25 of the `2010 BAHSP `_ are used: "0.061, 0.061, 0.061, 0.061, 0.061, 0.061, 0.061, 0.053, 0.025, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.018, 0.033, 0.054, 0.054, 0.054, 0.061, 0.061, 0.061". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values are used: "1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0". HPXML Building Construction *************************** @@ -571,8 +571,15 @@ Building construction is entered in ``/HPXML/Building/BuildingDetails/BuildingSu HPXML Schedules *************** -Schedules for a variety of building features can be 1) specified via simple inputs, 2) specified via detailed inputs, or 3) defaulted. -It is allowed to use simple, detailed, and defaulted values in the same HPXML run. +Schedules for a variety of building features can be defined using: + +- :ref:`schedules_simple` +- :ref:`schedules_detailed` +- :ref:`schedules_default` + +It is allowed to use simple, detailed, and defaulted values in the same HPXML file. + +.. _schedules_simple: Simple Schedule Inputs ~~~~~~~~~~~~~~~~~~~~~~ @@ -580,7 +587,7 @@ Simple Schedule Inputs Simple schedule inputs are available as weekday/weekend fractions and monthly multipliers for a variety of building characteristics. For example, see the ``WeekdayScheduleFractions``, ``WeekendScheduleFractions``, and ``MonthlyScheduleMultipliers`` inputs for :ref:`buildingoccupancy`. -.. _detailedschedules: +.. _schedules_detailed: Detailed Schedule Inputs ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -646,6 +653,8 @@ See :ref:`buildingoccupancy` and :ref:`buildingsite` for more information. For simulations with daylight saving enabled (which is the default), EnergyPlus will skip forward an hour in the CSV on the "spring forward" day and repeat an hour on the "fall back" day. +.. _schedules_default: + Default Schedules ~~~~~~~~~~~~~~~~~ @@ -660,12 +669,12 @@ HPXML HVAC Sizing Control HVAC equipment sizing controls are entered in ``/HPXML/Building/BuildingDetails/BuildingSummary/extension/HVACSizingControl``. - ================================= ======== ===== =========== ======== ======== ============================================ + ================================= ======== ===== =========== ======== ======== =========================================================== Element Type Units Constraints Required Default Description - ================================= ======== ===== =========== ======== ======== ============================================ + ================================= ======== ===== =========== ======== ======== =========================================================== ``AllowIncreasedFixedCapacities`` boolean No false Logic for fixed capacity HVAC equipment [#]_ ``HeatPumpSizingMethodology`` string See [#]_ No HERS Logic for autosized heat pumps [#]_ - ================================= ======== ===== =========== ======== ======== ============================================ + ================================= ======== ===== =========== ======== ======== =========================================================== .. [#] If AllowIncreasedFixedCapacities is true, the larger of user-specified fixed capacity and design load will be used (to reduce potential for unmet loads); otherwise user-specified fixed capacity is used. .. [#] HeatPumpSizingMethodology choices are 'ACCA', 'HERS', or 'MaxLoad'. @@ -923,7 +932,7 @@ the floors above that foundation do not have exposure to the wind. HPXML Roofs *********** -Each pitched or flat roof surface that is exposed to ambient conditions is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/Roofs/Roof``. +Each pitched or flat roof surface that is exposed to ambient conditions is entered as a ``/HPXML/Building/BuildingDetails/Enclosure/Roofs/Roof``. For a multifamily building where the dwelling unit has another dwelling unit above it, the surface between the two dwelling units should be considered a ``Floor`` and not a ``Roof``. @@ -981,7 +990,7 @@ For a multifamily building where the dwelling unit has another dwelling unit abo HPXML Rim Joists **************** -Each rim joist surface (i.e., the perimeter of floor joists typically found between stories of a building or on top of a foundation wall) is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/RimJoists/RimJoist``. +Each rim joist surface (i.e., the perimeter of floor joists typically found between stories of a building or on top of a foundation wall) is entered as a ``/HPXML/Building/BuildingDetails/Enclosure/RimJoists/RimJoist``. ====================================== ================= ================ ======================== ======== =========== ============================== Element Type Units Constraints Required Default Notes @@ -1024,7 +1033,7 @@ Each rim joist surface (i.e., the perimeter of floor joists typically found betw HPXML Walls *********** -Each wall surface is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/Walls/Wall``. +Each wall surface is entered as a ``/HPXML/Building/BuildingDetails/Enclosure/Walls/Wall``. ====================================== ================= ================ ======================== ============= =========== ==================================== Element Type Units Constraints Required Default Notes @@ -1076,7 +1085,7 @@ Each wall surface is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/W HPXML Foundation Walls ********************** -Each foundation wall surface is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/FoundationWalls/FoundationWall``. +Each foundation wall surface is entered as a ``/HPXML/Building/BuildingDetails/Enclosure/FoundationWalls/FoundationWall``. Any wall surface in contact with the ground is considered a foundation wall. ============================================================== ================= ================ ======================== ========= ============== ==================================== @@ -1135,7 +1144,7 @@ If insulation layers are provided, additional information is entered in each ``F HPXML Floors ************ -Each floor/ceiling surface that is not in contact with the ground (Slab) nor adjacent to ambient conditions above (Roof) is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/Floors/Floor``. +Each floor/ceiling surface that is not in contact with the ground (Slab) nor adjacent to ambient conditions above (Roof) is entered as a ``/HPXML/Building/BuildingDetails/Enclosure/Floors/Floor``. ====================================== ======== ============ =========== ======== ======== ============================ Element Type Units Constraints Required Default Notes @@ -1217,7 +1226,7 @@ Each space type that borders the ground (i.e., basement, crawlspace, garage, and HPXML Windows ************* -Each window or glass door area is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/Windows/Window``. +Each window or glass door area is entered as a ``/HPXML/Building/BuildingDetails/Enclosure/Windows/Window``. ============================================ ================= ================ ======================== ======== ========= ============================================================= Element Type Units Constraints Required Default Notes @@ -1329,7 +1338,7 @@ If overhangs are specified, additional information is entered in ``Overhangs``. HPXML Skylights *************** -Each skylight is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/Skylights/Skylight``. +Each skylight is entered as a ``/HPXML/Building/BuildingDetails/Enclosure/Skylights/Skylight``. ============================================ ================= ================ ======================== ======== ========= ============================================================= Element Type Units Constraints Required Default Notes @@ -1411,7 +1420,7 @@ If UFactor and SHGC are not provided, they are defaulted as follows: HPXML Doors *********** -Each opaque door is entered as an ``/HPXML/Building/BuildingDetails/Enclosure/Doors/Door``. +Each opaque door is entered as a ``/HPXML/Building/BuildingDetails/Enclosure/Doors/Door``. ============================================ ================= ============ ======================== ======== ========= ============================== Element Type Units Constraints Required Default Notes @@ -1470,149 +1479,225 @@ The dwelling unit's systems are entered in ``/HPXML/Building/BuildingDetails/Sys HPXML Heating Systems ********************* -Each heating system (other than a heat pump) is entered as an ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. +The following heating system types can be modeled: - ================================= ======== ====== =============== ======== ============== =============================== - Element Type Units Constraints Required Default Notes - ================================= ======== ====== =============== ======== ============== =============================== - ``SystemIdentifier`` id Yes Unique identifier - ``UnitLocation`` string See [#]_ No See [#]_ Location of heating system (e.g., air handler) - ``HeatingSystemType`` element See [#]_ Yes Type of heating system - ``HeatingSystemFuel`` string See [#]_ Yes Fuel type - ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity - ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served - ================================= ======== ====== =============== ======== ============== =============================== +- :ref:`hvac_heating_elec_resistance` +- :ref:`hvac_heating_furnace` +- :ref:`hvac_heating_wall_furnace` +- :ref:`hvac_heating_floor_furnace` +- :ref:`hvac_heating_boiler` +- :ref:`hvac_heating_shared_boiler` +- :ref:`hvac_heating_stove` +- :ref:`hvac_heating_space_heater` +- :ref:`hvac_heating_fireplace` - .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". - .. [#] If UnitLocation not provided, defaults based on the distribution system: - - \- **none**: "conditioned space" - - \- **air**: supply duct location with the largest area, otherwise "conditioned space" - - \- **hydronic**: same default logic as :ref:`waterheatingsystems` - - \- **dse**: "conditioned space" if ``FractionHeatLoadServed`` is 1, otherwise "unconditioned space" - - .. [#] HeatingSystemType child element choices are ``ElectricResistance``, ``Furnace``, ``WallFurnace``, ``FloorFurnace``, ``Boiler``, ``Stove``, ``SpaceHeater``, or ``Fireplace``. - .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". - For ``ElectricResistance``, "electricity" is required. - .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. - .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. - .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. - Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. +.. _hvac_heating_elec_resistance: Electric Resistance ~~~~~~~~~~~~~~~~~~~ -If electric resistance heating is specified, additional information is entered in ``HeatingSystem``. +Each electric resistance heating system is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. - ================================================== ====== ===== =========== ======== ======= ========== - Element Type Units Constraints Required Default Notes - ================================================== ====== ===== =========== ======== ======= ========== - ``AnnualHeatingEfficiency[Units="Percent"]/Value`` double frac > 0, <= 1 Yes Efficiency - ================================================== ====== ===== =========== ======== ======= ========== + ================================================== ======= ====== ================== ======== ============== ========== + Element Type Units Constraints Required Default Notes + ================================================== ======= ====== ================== ======== ============== ========== + ``SystemIdentifier`` id Yes Unique identifier + ``HeatingSystemType/ElectricResistance`` element Yes Type of heating system + ``HeatingSystemFuel`` string electricity Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity + ``AnnualHeatingEfficiency[Units="Percent"]/Value`` double frac > 0, <= 1 Yes Efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ================================================== ======= ====== ================== ======== ============== ========== + + .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + +.. _hvac_heating_furnace: Furnace ~~~~~~~ -If a furnace is specified, additional information is entered in ``HeatingSystem``. +Each central furnace is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. + + ====================================================== ======= ========= =============== ======== ============== ================================================ + Element Type Units Constraints Required Default Notes + ====================================================== ======= ========= =============== ======== ============== ================================================ + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string See [#]_ No See [#]_ Location of air handler + ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``HeatingSystemType/Furnace`` element Yes Type of heating system + ``HeatingSystemType/Furnace/PilotLight`` boolean No false Presence of standing pilot light (older systems) + ``HeatingSystemType/Furnace/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate + ``HeatingSystemFuel`` string See [#]_ Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity + ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed [#]_ + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ + ====================================================== ======= ========= =============== ======== ============== ================================================ - ====================================================== ======= ========= ============= ======== ======== ================================================ - Element Type Units Constraints Required Default Notes - ====================================================== ======= ========= ============= ======== ======== ================================================ - ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system - ``HeatingSystemType/Furnace/PilotLight`` boolean No false Presence of standing pilot light (older systems) - ``HeatingSystemType/Furnace/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate - ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency - ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed [#]_ - ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ - ====================================================== ======= ========= ============= ======== ======== ================================================ + .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". + .. [#] If UnitLocation not provided, defaults based on the distribution system: + + \- **Air**: supply duct location with the largest area, otherwise "conditioned space" + + \- **DSE**: "conditioned space" if ``FractionHeatLoadServed`` is 1, otherwise "unconditioned space" - .. [#] HVACDistribution type must be AirDistribution (type: "regular velocity" or "gravity") or DSE. + .. [#] HVACDistribution type must be :ref:`hvac_distribution_air` (type: "regular velocity" or "gravity") or :ref:`hvac_distribution_dse`. + .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". + .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. .. [#] If FanPowerWattsPerCFM not provided, defaulted to 0 W/cfm if gravity distribution system, else 0.5 W/cfm if AFUE <= 0.9, else 0.375 W/cfm. .. [#] If there is a cooling system attached to the DistributionSystem, the heating and cooling systems cannot have different values for FanPowerWattsPerCFM. .. [#] AirflowDefectRatio is defined as (InstalledAirflow - DesignAirflow) / DesignAirflow; a value of zero means no airflow defect. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. + +.. _hvac_heating_wall_furnace: Wall Furnace ~~~~~~~~~~~~ -If a wall furnace is specified, additional information is entered in ``HeatingSystem``. +Each wall furnace is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. + + ========================================================== ======= ====== =============== ======== ============== ================ + Element Type Units Constraints Required Default Notes + ========================================================== ======= ====== =============== ======== ============== ================ + ``SystemIdentifier`` id Yes Unique identifier + ``HeatingSystemType/WallFurnace`` element Yes Type of heating system + ``HeatingSystemType/WallFurnace/PilotLight`` boolean No false Presence of standing pilot light (older systems) + ``HeatingSystemType/WallFurnace/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate + ``HeatingSystemFuel`` string See [#]_ Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity + ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ``extension/FanPowerWatts`` double W >= 0 No 0 Fan power + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + ========================================================== ======= ====== =============== ======== ============== ================ - ========================================================== ======= ====== =========== ======== ======== ================ - Element Type Units Constraints Required Default Notes - ========================================================== ======= ====== =========== ======== ======== ================ - ``HeatingSystemType/WallFurnace/PilotLight`` boolean No false Presence of standing pilot light (older systems) - ``HeatingSystemType/WallFurnace/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate - ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency - ``extension/FanPowerWatts`` double W >= 0 No 0 Fan power - ========================================================== ======= ====== =========== ======== ======== ================ + .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". + .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + +.. _hvac_heating_floor_furnace: Floor Furnace ~~~~~~~~~~~~~ -If a floor furnace is specified, additional information is entered in ``HeatingSystem``. +Each floor furnace is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. + + =========================================================== ======= ====== =============== ======== ============== ================ + Element Type Units Constraints Required Default Notes + =========================================================== ======= ====== =============== ======== ============== ================ + ``SystemIdentifier`` id Yes Unique identifier + ``HeatingSystemType/FloorFurnace`` element Yes Type of heating system + ``HeatingSystemType/FloorFurnace/PilotLight`` boolean No false Presence of standing pilot light (older systems) + ``HeatingSystemType/FloorFurnace/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate + ``HeatingSystemFuel`` string See [#]_ Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity + ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ``extension/FanPowerWatts`` double W >= 0 No 0 Fan power + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + =========================================================== ======= ====== =============== ======== ============== ================ - =========================================================== ======= ====== =========== ======== ======== ================ - Element Type Units Constraints Required Default Notes - =========================================================== ======= ====== =========== ======== ======== ================ - ``HeatingSystemType/FloorFurnace/PilotLight`` boolean No false Presence of standing pilot light (older systems) - ``HeatingSystemType/FloorFurnace/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate - ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency - ``extension/FanPowerWatts`` double W >= 0 No 0 Fan power - =========================================================== ======= ====== =========== ======== ======== ================ + .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". + .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. .. _hvac_heating_boiler: -Boiler -~~~~~~ - -If a boiler is specified, additional information is entered in ``HeatingSystem``. - - ===================================================== ======= ========= =========== ======== ======== ========================================= - Element Type Units Constraints Required Default Notes - ===================================================== ======= ========= =========== ======== ======== ========================================= - ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units - ``HeatingSystemType/Boiler/PilotLight`` boolean No false Presence of standing pilot light (older systems) - ``HeatingSystemType/Boiler/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate - ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system - ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency - ===================================================== ======= ========= =========== ======== ======== ========================================= - - .. [#] For in-unit boilers, HVACDistribution type must be HydronicDistribution (type: "radiator", "baseboard", "radiant floor", or "radiant ceiling") or DSE. - For shared boilers, HVACDistribution type must be HydronicDistribution (type: "radiator", "baseboard", "radiant floor", "radiant ceiling", or "water loop") or AirDistribution (type: "fan coil"). - If the shared boiler has "water loop" distribution, a :ref:`hvac_heatpump_wlhp` must also be specified. - - .. note:: - - The choice of hydronic distribution type (radiator vs baseboard vs radiant panels) does not affect simulation results; - it is currently only used to know if there's an attached water loop heat pump or not. - -If an in-unit boiler if specified, additional information is entered in ``HeatingSystem``. +Boiler (In-Unit) +~~~~~~~~~~~~~~~~ - =========================== ======== ====== =========== ======== ======== ========================= - Element Type Units Constraints Required Default Notes - =========================== ======== ====== =========== ======== ======== ========================= - ``ElectricAuxiliaryEnergy`` double kWh/yr >= 0 No See [#]_ Electric auxiliary energy - =========================== ======== ====== =========== ======== ======== ========================= +Each in-unit boiler is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. + + ===================================================== ======= ========= =============== ======== ============== ========================================= + Element Type Units Constraints Required Default Notes + ===================================================== ======= ========= =============== ======== ============== ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string See [#]_ No See [#]_ Location of boiler + ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``HeatingSystemType/Boiler`` element Yes Type of heating system + ``HeatingSystemType/Boiler/PilotLight`` boolean No false Presence of standing pilot light (older systems) + ``HeatingSystemType/Boiler/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate + ``HeatingSystemFuel`` string See [#]_ Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity + ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ``ElectricAuxiliaryEnergy`` double kWh/yr >= 0 No See [#]_ Electric auxiliary energy + ===================================================== ======= ========= =============== ======== ============== ========================================= + .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". + .. [#] If UnitLocation not provided, defaults based on the distribution system: + + \- **Hydronic**: same default logic as :ref:`waterheatingsystems` + + \- **DSE**: "conditioned space" if ``FractionHeatLoadServed`` is 1, otherwise "unconditioned space" + + .. [#] HVACDistribution type must be :ref:`hvac_distribution_hydronic` (type: "radiator", "baseboard", "radiant floor", or "radiant ceiling") or :ref:`hvac_distribution_dse`. + Note: The choice of hydronic distribution type does not currently affect simulation results. + .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". + .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. .. [#] If ElectricAuxiliaryEnergy not provided, defaults as follows: \- **Oil boiler**: 330 kWh/yr \- **Gas boiler**: 170 kWh/yr -If instead a shared boiler is specified, additional information is entered in ``HeatingSystem``. +.. _hvac_heating_shared_boiler: + +Boiler (Shared) +~~~~~~~~~~~~~~~ - ============================================================ ======== =========== =========== ======== ======== ========================= - Element Type Units Constraints Required Default Notes - ============================================================ ======== =========== =========== ======== ======== ========================= - ``NumberofUnitsServed`` integer > 1 Yes Number of dwelling units served - ``ElectricAuxiliaryEnergy`` or ``extension/SharedLoopWatts`` double kWh/yr or W >= 0 No See [#]_ Electric auxiliary energy or shared loop power - ``ElectricAuxiliaryEnergy`` or ``extension/FanCoilWatts`` double kWh/yr or W >= 0 No [#]_ Electric auxiliary energy or fan coil power - ============================================================ ======== =========== =========== ======== ======== ========================= +Each shared boiler (serving multiple dwelling units) is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. + + ============================================================ ======= =========== =============== ======== ============== ========================================= + Element Type Units Constraints Required Default Notes + ============================================================ ======= =========== =============== ======== ============== ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string See [#]_ No See [#]_ Location of boiler + ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``IsSharedSystem`` boolean true Yes Whether it serves multiple dwelling units + ``NumberofUnitsServed`` integer > 1 Yes Number of dwelling units served + ``HeatingSystemType/Boiler`` element Yes Type of heating system + ``HeatingSystemType/Boiler/PilotLight`` boolean No false Presence of standing pilot light (older systems) + ``HeatingSystemType/Boiler/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate + ``HeatingSystemFuel`` string See [#]_ Yes Fuel type + ``AnnualHeatingEfficiency[Units="AFUE"]/Value`` double frac > 0, <= 1 Yes Rated efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ``ElectricAuxiliaryEnergy`` or ``extension/SharedLoopWatts`` double kWh/yr or W >= 0 No See [#]_ Electric auxiliary energy or shared loop power + ``ElectricAuxiliaryEnergy`` or ``extension/FanCoilWatts`` double kWh/yr or W >= 0 No [#]_ Electric auxiliary energy or fan coil power + ============================================================ ======= =========== =============== ======== ============== ========================================= + .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". + .. [#] If UnitLocation not provided, defaults based on the distribution system: + + \- **Hydronic**: same default logic as :ref:`waterheatingsystems` + + \- **DSE**: "conditioned space" if ``FractionHeatLoadServed`` is 1, otherwise "unconditioned space" + + .. [#] HVACDistribution type must be :ref:`hvac_distribution_hydronic` (type: "radiator", "baseboard", "radiant floor", "radiant ceiling", or "water loop") or :ref:`hvac_distribution_air` (type: "fan coil"). + If the shared boiler has "water loop" distribution, a :ref:`hvac_hp_water_loop` must also be specified. + Note: The choice of hydronic distribution type does not currently affect simulation results; it is currently only used to know if there's an attached water loop heat pump or not. + .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. .. [#] If ElectricAuxiliaryEnergy nor SharedLoopWatts provided, defaults as follows: \- **Shared boiler w/ baseboard**: 220 kWh/yr @@ -1623,131 +1708,186 @@ If instead a shared boiler is specified, additional information is entered in `` .. [#] FanCoilWatts only used if boiler connected to fan coil and SharedLoopWatts provided. +.. _hvac_heating_stove: + Stove ~~~~~ -If a stove is specified, additional information is entered in ``HeatingSystem``. +Each stove is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. + + ==================================================== ======= ====== =============== ======== ============== =================== + Element Type Units Constraints Required Default Notes + ==================================================== ======= ====== =============== ======== ============== =================== + ``SystemIdentifier`` id Yes Unique identifier + ``HeatingSystemType/Stove`` element Yes Type of heating system + ``HeatingSystemType/Stove/PilotLight`` boolean No false Presence of standing pilot light (older systems) + ``HeatingSystemType/Stove/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate + ``HeatingSystemFuel`` string See [#]_ Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity + ``AnnualHeatingEfficiency[Units="Percent"]/Value`` double frac > 0, <= 1 Yes Efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ``extension/FanPowerWatts`` double W >= 0 No 40 Fan power + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + ==================================================== ======= ====== =============== ======== ============== =================== + + .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". + .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. - ==================================================== ======= ====== =========== ======== ========= =================== - Element Type Units Constraints Required Default Notes - ==================================================== ======= ====== =========== ======== ========= =================== - ``HeatingSystemType/Stove/PilotLight`` boolean No false Presence of standing pilot light (older systems) - ``HeatingSystemType/Stove/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate - ``AnnualHeatingEfficiency[Units="Percent"]/Value`` double frac > 0, <= 1 Yes Efficiency - ``extension/FanPowerWatts`` double W >= 0 No 40 Fan power - ==================================================== ======= ====== =========== ======== ========= =================== +.. _hvac_heating_space_heater: Space Heater ~~~~~~~~~~~~ -If a space heater (portable or fixed) is specified, additional information is entered in ``HeatingSystem``. +Each space heater is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. + + ================================================== ======= ====== =============== ======== ============== =================== + Element Type Units Constraints Required Default Notes + ================================================== ======= ====== =============== ======== ============== =================== + ``SystemIdentifier`` id Yes Unique identifier + ``HeatingSystemType/SpaceHeater`` element Yes Type of heating system + ``HeatingSystemFuel`` string See [#]_ Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity + ``AnnualHeatingEfficiency[Units="Percent"]/Value`` double frac > 0, <= 1 Yes Efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ``extension/FanPowerWatts`` double W >= 0 No 0 Fan power + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + ================================================== ======= ====== =============== ======== ============== =================== - ================================================== ====== ===== =========== ======== ========= =================== - Element Type Units Constraints Required Default Notes - ================================================== ====== ===== =========== ======== ========= =================== - ``AnnualHeatingEfficiency[Units="Percent"]/Value`` double frac > 0, <= 1 Yes Efficiency - ``extension/FanPowerWatts`` double W >= 0 No 0 Fan power - ================================================== ====== ===== =========== ======== ========= =================== + .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". + .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + +.. _hvac_heating_fireplace: Fireplace ~~~~~~~~~ -If a fireplace is specified, additional information is entered in ``HeatingSystem``. +Each fireplace is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatingSystem``. +Instead of modeling fireplaces as serving a fraction of the heating load, fireplaces can be assigned a therm/year usage using :ref:`fuel_loads`. + + ======================================================== ======= ====== =============== ======== ============== =================== + Element Type Units Constraints Required Default Notes + ======================================================== ======= ====== =============== ======== ============== =================== + ``SystemIdentifier`` id Yes Unique identifier + ``HeatingSystemType/Fireplace`` element Yes Type of heating system + ``HeatingSystemType/Fireplace/PilotLight`` boolean No false Presence of standing pilot light (older systems) + ``HeatingSystemType/Fireplace/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate + ``HeatingSystemFuel`` string See [#]_ Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity + ``AnnualHeatingEfficiency[Units="Percent"]/Value`` double frac > 0, <= 1 Yes Efficiency + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ See [#]_ Fraction of heating load served + ``extension/FanPowerWatts`` double W >= 0 No 0 Fan power + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + ======================================================== ======= ====== =============== ======== ============== =================== - ======================================================== ======= ====== =========== ======== ========= =================== - Element Type Units Constraints Required Default Notes - ======================================================== ======= ====== =========== ======== ========= =================== - ``HeatingSystemType/Fireplace/PilotLight`` boolean No false Presence of standing pilot light (older systems) - ``HeatingSystemType/Fireplace/extension/PilotLightBtuh`` double Btu/hr >= 0 No 500 Pilot light burn rate - ``AnnualHeatingEfficiency[Units="Percent"]/Value`` double frac > 0, <= 1 Yes Efficiency - ``extension/FanPowerWatts`` double W >= 0 No 0 Fan power - ======================================================== ======= ====== =========== ======== ========= =================== + .. [#] HeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". + .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. + .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. + .. [#] FractionHeatLoadServed is required unless the heating system is a heat pump backup system (i.e., referenced by a ``HeatPump[BackupType="separate"]/BackupSystem``; see :ref:`hvac_heatpump`), in which case FractionHeatLoadServed is not allowed. + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. .. _hvac_cooling: HPXML Cooling Systems ********************* -Each cooling system (other than a heat pump) is entered as an ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem``. +The following cooling system types can be modeled: + +- :ref:`hvac_cooling_central_ac` +- :ref:`hvac_cooling_room_ac` +- :ref:`hvac_cooling_ptac` +- :ref:`hvac_cooling_evap_cooler` +- :ref:`hvac_cooling_minisplit_ac` +- :ref:`hvac_cooling_shared_chiller` +- :ref:`hvac_cooling_shared_tower` + +.. _hvac_cooling_central_ac: + +Central Air Conditioner +~~~~~~~~~~~~~~~~~~~~~~~ - ========================== ======== ====== =============== ======== ======== =============================== - Element Type Units Constraints Required Default Notes - ========================== ======== ====== =============== ======== ======== =============================== - ``SystemIdentifier`` id Yes Unique identifier - ``UnitLocation`` string See [#]_ No See [#]_ Location of cooling system (e.g., air handler) - ``CoolingSystemType`` string See [#]_ Yes Type of cooling system - ``CoolingSystemFuel`` string See [#]_ Yes Fuel type - ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served - ========================== ======== ====== =============== ======== ======== =============================== +Each central air conditioner is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem``. + + ================================================================ ======= =========== ======================= ======== ============== =========================================================== + Element Type Units Constraints Required Default Notes + ================================================================ ======= =========== ======================= ======== ============== =========================================================== + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string See [#]_ No See [#]_ Location of air handler + ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``CoolingSystemType`` string central air conditioner Yes Type of cooling system + ``CoolingSystemFuel`` string electricity Yes Fuel type + ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity + ``CompressorType`` string See [#]_ No See [#]_ Type of compressor + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh or # > 0 Yes Rated efficiency [#]_ + ``SensibleHeatFraction`` double frac > 0.5, <= 1 No See [#]_ Sensible heat fraction + ``CoolingDetailedPerformanceData`` element No Cooling detailed performance data [#]_ + ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed [#]_ + ``extension/CoolingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxCoolingAirflowCFM`` double cfm >= 0 No + ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ + ``extension/ChargeDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed refrigerant charges [#]_ + ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 50.0 Crankcase heater power + ================================================================ ======= =========== ======================= ======== ============== =========================================================== .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". .. [#] If UnitLocation not provided, defaults based on the distribution system: - \- **none**: "conditioned space" - - \- **air**: supply duct location with the largest area, otherwise "conditioned space" + \- **Air**: supply duct location with the largest area, otherwise "conditioned space" - \- **dse**: "conditioned space" if ``FractionCoolLoadServed`` is 1, otherwise "unconditioned space" + \- **DSE**: "conditioned space" if ``FractionCoolLoadServed`` is 1, otherwise "unconditioned space" - .. [#] CoolingSystemType choices are "central air conditioner", "room air conditioner", "evaporative cooler", "mini-split", "chiller", "cooling tower", or "packaged terminal air conditioner". - .. [#] CoolingSystemFuel only choice is "electricity". - .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. - -Central Air Conditioner -~~~~~~~~~~~~~~~~~~~~~~~ - -If a central air conditioner is specified, additional information is entered in ``CoolingSystem``. - - ================================================================ ======= =========== ============= ======== ============== =========================================================== - Element Type Units Constraints Required Default Notes - ================================================================ ======= =========== ============= ======== ============== =========================================================== - ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system - ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity - ``CompressorType`` string See [#]_ No See [#]_ Type of compressor - ``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh or # > 0 Yes Rated efficiency [#]_ - ``SensibleHeatFraction`` double frac > 0.5, <= 1 No See [#]_ Sensible heat fraction - ``CoolingDetailedPerformanceData`` element No Cooling detailed performance data [#]_ - ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed [#]_ - ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ - ``extension/ChargeDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed refrigerant charges [#]_ - ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 50.0 Crankcase heater power - ================================================================ ======= =========== ============= ======== ============== =========================================================== - - .. [#] HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE. + .. [#] HVACDistribution type must be :ref:`hvac_distribution_air` (type: "regular velocity") or :ref:`hvac_distribution_dse`. .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load. .. [#] CompressorType choices are "single stage", "two stage", or "variable speed". .. [#] If CompressorType not provided, defaults to "single stage" if SEER <= 15, else "two stage" if SEER <= 21, else "variable speed". + .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] If SEER2 provided, converted to SEER using ANSI/RESNET/ICC 301-2022 Addendum C, where SEER = SEER2 / 0.95 (assumed to be a split system). .. [#] If SensibleHeatFraction not provided, defaults to 0.73 for single/two stage and 0.78 for variable speed. .. [#] If CoolingDetailedPerformanceData is provided, see :ref:`clg_detailed_perf_data`. .. [#] If FanPowerWattsPerCFM not provided, defaults to using attached furnace W/cfm if available, else 0.5 W/cfm if SEER <= 13.5, else 0.375 W/cfm. .. [#] If there is a heating system attached to the DistributionSystem, the heating and cooling systems cannot have different values for FanPowerWattsPerCFM. .. [#] AirflowDefectRatio is defined as (InstalledAirflow - DesignAirflow) / DesignAirflow; a value of zero means no airflow defect. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. .. [#] ChargeDefectRatio is defined as (InstalledCharge - DesignCharge) / DesignCharge; a value of zero means no refrigerant charge defect. A non-zero charge defect should typically only be applied for systems that are charged on site, not for systems that have pre-charged line sets. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. + +.. _hvac_cooling_room_ac: Room Air Conditioner ~~~~~~~~~~~~~~~~~~~~ -If a room air conditioner is specified, additional information is entered in ``CoolingSystem``. - - ================================================================== ====== ====== =========== ======== ============== ============================================ - Element Type Units Constraints Required Default Notes - ================================================================== ====== ====== =========== ======== ============== ============================================ - ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity - ``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated efficiency - ``SensibleHeatFraction`` double frac > 0.5, <= 1 No 0.65 Sensible heat fraction - ``IntegratedHeatingSystemFuel`` string See [#]_ No Fuel type of integrated heater - ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 0.0 Crankcase heater power - ================================================================== ====== ====== =========== ======== ============== ============================================ +Each room air conditioner is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem``. + + ============================================================== ====== ====== ==================== ======== ============== ============================================ + Element Type Units Constraints Required Default Notes + ============================================================== ====== ====== ==================== ======== ============== ============================================ + ``SystemIdentifier`` id Yes Unique identifier + ``CoolingSystemType`` string room air conditioner Yes Type of cooling system + ``CoolingSystemFuel`` string electricity Yes Fuel type + ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated efficiency + ``SensibleHeatFraction`` double frac > 0.5, <= 1 No 0.65 Sensible heat fraction + ``IntegratedHeatingSystemFuel`` string See [#]_ No Fuel type of integrated heater + ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 0.0 Crankcase heater power + ============================================================== ====== ====== ==================== ======== ============== ============================================ .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load. + .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] IntegratedHeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". If the room air conditioner has integrated heating, additional information is entered in ``CoolingSystem``. -Note that a room air conditioner with reverse cycle heating should be entered as a heat pump; see :ref:`room_ac_reverse_cycle`. +Note that a room air conditioner with reverse cycle heating should be entered as a heat pump; see :ref:`hvac_hp_room_ac_reverse_cycle`. ================================================================== ====== ====== =============== ======== ============== ============================================ Element Type Units Constraints Required Default Notes @@ -1760,26 +1900,33 @@ Note that a room air conditioner with reverse cycle heating should be entered as .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. +.. _hvac_cooling_ptac: + Packaged Terminal Air Conditioner ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If a PTAC is specified, additional information is entered in ``CoolingSystem``. - - ================================================================== ====== ====== =========== ======== ============== ========================================== - Element Type Units Constraints Required Default Notes - ================================================================== ====== ====== =========== ======== ============== ========================================== - ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity - ``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated efficiency - ``SensibleHeatFraction`` double frac > 0.5, <= 1 No 0.65 Sensible heat fraction - ``IntegratedHeatingSystemFuel`` string See [#]_ No Fuel type of integrated heater - ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 0.0 Crankcase heater power - ================================================================== ====== ====== =========== ======== ============== ========================================== +Each packaged terminal air conditioner (PTAC) is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem``. + + ============================================================== ====== ====== ================================= ======== ============== ========================================== + Element Type Units Constraints Required Default Notes + ============================================================== ====== ====== ================================= ======== ============== ========================================== + ``SystemIdentifier`` id Yes Unique identifier + ``CoolingSystemType`` string packaged terminal air conditioner Yes Type of cooling system + ``CoolingSystemFuel`` string electricity Yes Fuel type + ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated efficiency + ``SensibleHeatFraction`` double frac > 0.5, <= 1 No 0.65 Sensible heat fraction + ``IntegratedHeatingSystemFuel`` string See [#]_ No Fuel type of integrated heater + ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 0.0 Crankcase heater power + ============================================================== ====== ====== ================================= ======== ============== ========================================== .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load. + .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] IntegratedHeatingSystemFuel choices are "electricity", "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "wood", or "wood pellets". If the PTAC has integrated heating, additional information is entered in ``CoolingSystem``. -Note that a packaged terminal heat pump should be entered as a heat pump; see :ref:`pthp`. +Note that a packaged terminal heat pump should be entered as a heat pump; see :ref:`hvac_hp_pthp`. ================================================================== ====== ====== =============== ======== ============== ============================================ Element Type Units Constraints Required Default Notes @@ -1792,99 +1939,133 @@ Note that a packaged terminal heat pump should be entered as a heat pump; see :r .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. +.. _hvac_cooling_evap_cooler: + Evaporative Cooler ~~~~~~~~~~~~~~~~~~ -If an evaporative cooler is specified, additional information is entered in ``CoolingSystem``. +Each evaporative cooler is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem``. - ================================= ======== ====== =========== ======== ============== ================================== - Element Type Units Constraints Required Default Notes - ================================= ======== ====== =========== ======== ============== ================================== - ``DistributionSystem`` idref See [#]_ No ID of attached distribution system - ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity - ================================= ======== ====== =========== ======== ============== ================================== + ========================== ======== ====== ================== ======== ============== ================================== + Element Type Units Constraints Required Default Notes + ========================== ======== ====== ================== ======== ============== ================================== + ``SystemIdentifier`` id Yes Unique identifier + ``DistributionSystem`` idref See [#]_ No ID of attached distribution system + ``CoolingSystemType`` string evaporative cooler Yes Type of cooling system + ``CoolingSystemFuel`` string electricity Yes Fuel type + ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ========================== ======== ====== ================== ======== ============== ================================== - .. [#] If DistributionSystem provided, HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE. + .. [#] If DistributionSystem provided, HVACDistribution type must be :ref:`hvac_distribution_air` (type: "regular velocity") or :ref:`hvac_distribution_dse`. .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load. + .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. + +.. _hvac_cooling_minisplit_ac: Mini-Split Air Conditioner ~~~~~~~~~~~~~~~~~~~~~~~~~~ -If a mini-split air conditioner is specified, additional information is entered in ``CoolingSystem``. Each ``CoolingSystem`` is expected to represent a single outdoor unit, whether connected to one indoor head or multiple indoor heads. - - ================================================================ ======== ====== ============= ======== ============== =========================================================== - Element Type Units Constraints Required Default Notes - ================================================================ ======== ====== ============= ======== ============== =========================================================== - ``DistributionSystem`` idref See [#]_ No ID of attached distribution system - ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity - ``CompressorType`` string See [#]_ No variable speed Type of compressor - ``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency [#]_ - ``SensibleHeatFraction`` double frac > 0.5, <= 1 No 0.73 Sensible heat fraction - ``CoolingDetailedPerformanceData`` element No Cooling detailed performance data [#]_ - ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed - ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ - ``extension/ChargeDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed refrigerant charges [#]_ - ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 50.0 Crankcase heater power - ================================================================ ======== ====== ============= ======== ============== =========================================================== - - .. [#] If DistributionSystem provided, HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE. +Each mini-split air conditioner is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem``. + + ================================================================ ======== ====== =============== ======== ============== =========================================================== + Element Type Units Constraints Required Default Notes + ================================================================ ======== ====== =============== ======== ============== =========================================================== + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string See [#]_ No See [#]_ Location of air handler + ``DistributionSystem`` idref See [#]_ No ID of attached distribution system + ``CoolingSystemType`` string mini-split Yes Type of cooling system + ``CoolingSystemFuel`` string electricity Yes Fuel type + ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity + ``CompressorType`` string See [#]_ No variable speed Type of compressor + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency [#]_ + ``SensibleHeatFraction`` double frac > 0.5, <= 1 No 0.73 Sensible heat fraction + ``CoolingDetailedPerformanceData`` element No Cooling detailed performance data [#]_ + ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed + ``extension/CoolingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxCoolingAirflowCFM`` double cfm >= 0 No + ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ + ``extension/ChargeDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed refrigerant charges [#]_ + ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 50.0 Crankcase heater power + ================================================================ ======== ====== =============== ======== ============== =========================================================== + + .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". + .. [#] If UnitLocation not provided, defaults based on the distribution system: + + \- **Air**: supply duct location with the largest area, otherwise "conditioned space" + + \- **DSE**: "conditioned space" if ``FractionCoolLoadServed`` is 1, otherwise "unconditioned space" + + .. [#] If DistributionSystem provided, HVACDistribution type must be :ref:`hvac_distribution_air` (type: "regular velocity") or :ref:`hvac_distribution_dse`. .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load. .. [#] CompressorType only choices is "variable speed" (i.e., they are assumed to be inverter driven). + .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] If SEER2 provided, converted to SEER using ANSI/RESNET/ICC 301-2022 Addendum C, where SEER = SEER2 / 0.95 if ducted and SEER = SEER2 if ductless. .. [#] If CoolingDetailedPerformanceData is provided, see :ref:`clg_detailed_perf_data`. .. [#] FanPowerWattsPerCFM defaults to 0.07 W/cfm for ductless systems and 0.18 W/cfm for ducted systems. .. [#] AirflowDefectRatio is defined as (InstalledAirflow - DesignAirflow) / DesignAirflow; a value of zero means no airflow defect. A non-zero airflow defect can only be applied for systems attached to a distribution system. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. .. [#] ChargeDefectRatio is defined as (InstalledCharge - DesignCharge) / DesignCharge; a value of zero means no refrigerant charge defect. A non-zero charge defect should typically only be applied for systems that are charged on site, not for systems that have pre-charged line sets. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. -.. _hvac_cooling_chiller: +.. _hvac_cooling_shared_chiller: -Chiller -~~~~~~~ +Chiller (Shared) +~~~~~~~~~~~~~~~~ -If a chiller is specified, additional information is entered in ``CoolingSystem``. - - ========================================================================== ======== ====== =========== ======== ========= ========================================= - Element Type Units Constraints Required Default Notes - ========================================================================== ======== ====== =========== ======== ========= ========================================= - ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system - ``IsSharedSystem`` boolean true Yes Whether it serves multiple dwelling units - ``NumberofUnitsServed`` integer > 1 Yes Number of dwelling units served - ``CoolingCapacity`` double Btu/hr >= 0 Yes Total cooling output capacity - ``AnnualCoolingEfficiency[Units="kW/ton"]/Value`` double kW/ton > 0 Yes Rated efficiency - ``extension/SharedLoopWatts`` double W >= 0 Yes Pumping and fan power serving the system - ``extension/FanCoilWatts`` double W >= 0 See [#]_ Fan coil power - ========================================================================== ======== ====== =========== ======== ========= ========================================= - - .. [#] HVACDistribution type must be HydronicDistribution (type: "radiator", "baseboard", "radiant floor", "radiant ceiling", or "water loop") or AirDistribution (type: "fan coil"). - If the chiller has "water loop" distribution, a :ref:`hvac_heatpump_wlhp` must also be specified. +Each shared chiller (serving multiple dwelling units) is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem``. + + ================================================= ======== ====== =============== ======== ========= ========================================= + Element Type Units Constraints Required Default Notes + ================================================= ======== ====== =============== ======== ========= ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``IsSharedSystem`` boolean true Yes Whether it serves multiple dwelling units + ``NumberofUnitsServed`` integer > 1 Yes Number of dwelling units served + ``CoolingSystemType`` string chiller Yes Type of cooling system + ``CoolingSystemFuel`` string electricity Yes Fuel type + ``CoolingCapacity`` double Btu/hr >= 0 Yes Total cooling output capacity + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ``AnnualCoolingEfficiency[Units="kW/ton"]/Value`` double kW/ton > 0 Yes Rated efficiency + ``extension/SharedLoopWatts`` double W >= 0 Yes Pumping and fan power serving the system + ``extension/FanCoilWatts`` double W >= 0 See [#]_ Fan coil power + ================================================= ======== ====== =============== ======== ========= ========================================= + + .. [#] HVACDistribution type must be :ref:`hvac_distribution_hydronic` (type: "radiator", "baseboard", "radiant floor", "radiant ceiling", or "water loop") or :ref:`hvac_distribution_air` (type: "fan coil"). + If the chiller has "water loop" distribution, a :ref:`hvac_hp_water_loop` must also be specified. + .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] FanCoilWatts only required if chiller connected to fan coil. .. note:: Chillers are modeled as central air conditioners with a SEER equivalent using the equation from `ANSI/RESNET/ICC 301-2019 `_. -.. _hvac_cooling_tower: - -Cooling Tower -~~~~~~~~~~~~~ - -If a cooling tower is specified, additional information is entered in ``CoolingSystem``. +.. _hvac_cooling_shared_tower: - ========================================================================== ======== ====== =========== ======== ========= ========================================= - Element Type Units Constraints Required Default Notes - ========================================================================== ======== ====== =========== ======== ========= ========================================= - ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system - ``IsSharedSystem`` boolean true Yes Whether it serves multiple dwelling units - ``NumberofUnitsServed`` integer > 1 Yes Number of dwelling units served - ``extension/SharedLoopWatts`` double W >= 0 Yes Pumping and fan power serving the system - ========================================================================== ======== ====== =========== ======== ========= ========================================= +Cooling Tower (Shared) +~~~~~~~~~~~~~~~~~~~~~~ - .. [#] HVACDistribution type must be HydronicDistribution (type: "water loop"). - A :ref:`hvac_heatpump_wlhp` must also be specified. +Each shared cooling tower (serving multiple dwelling units) is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/CoolingSystem``. + + ============================= ======== ====== =============== ======== ========= ========================================= + Element Type Units Constraints Required Default Notes + ============================= ======== ====== =============== ======== ========= ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``IsSharedSystem`` boolean true Yes Whether it serves multiple dwelling units + ``NumberofUnitsServed`` integer > 1 Yes Number of dwelling units served + ``CoolingSystemType`` string cooling tower Yes Type of cooling system + ``CoolingSystemFuel`` string electricity Yes Fuel type + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ``extension/SharedLoopWatts`` double W >= 0 Yes Pumping and fan power serving the system + ============================= ======== ====== =============== ======== ========= ========================================= + + .. [#] HVACDistribution type must be :ref:`hvac_distribution_hydronic` (type: "water loop"). + A :ref:`hvac_hp_water_loop` must also be specified. + .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. note:: @@ -1895,51 +2076,37 @@ If a cooling tower is specified, additional information is entered in ``CoolingS HPXML Heat Pumps **************** -Each heat pump is entered as an ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatPump``. +The following heat pump types can be modeled: - ================================= ======== ====== =========== ======== ========= =============================================== - Element Type Units Constraints Required Default Notes - ================================= ======== ====== =========== ======== ========= =============================================== - ``SystemIdentifier`` id Yes Unique identifier - ``UnitLocation`` string See [#]_ No See [#]_ Location of heat pump (e.g., air handler) - ``HeatPumpType`` string See [#]_ Yes Type of heat pump - ``HeatPumpFuel`` string See [#]_ Yes Fuel type - ``BackupType`` string See [#]_ No Type of backup heating - ================================= ======== ====== =========== ======== ========= =============================================== +- :ref:`hvac_hp_air_to_air` +- :ref:`hvac_hp_mini_split` +- :ref:`hvac_hp_pthp` +- :ref:`hvac_hp_room_ac_reverse_cycle` +- :ref:`hvac_hp_ground_to_air` +- :ref:`hvac_hp_water_loop` - .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". - .. [#] If UnitLocation not provided, defaults based on the distribution system: - - \- **none**: "conditioned space" - - \- **air**: supply duct location with the largest area, otherwise "conditioned space" - - \- **hydronic**: same default logic as :ref:`waterheatingsystems` - - \- **dse**: "conditioned space" if ``FractionHeatLoadServed``/``FractionCoolLoadServed`` are 1, otherwise "unconditioned space" - - .. [#] HeatPumpType choices are "air-to-air", "mini-split", "ground-to-air", "water-loop-to-air", "packaged terminal heat pump", or "room air conditioner with reverse cycle". - .. [#] HeatPumpFuel only choice is "electricity". - .. [#] BackupType choices are "integrated" or "separate". - Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. - Use "integrated" if the heat pump's distribution system and blower fan power applies to the backup heating (e.g., built-in electric strip heat or an integrated backup furnace, i.e., a dual-fuel heat pump). - Use "separate" if the backup system has its own distribution system (e.g., electric baseboard or a boiler). +.. _hvac_hp_air_to_air: Air-to-Air Heat Pump ~~~~~~~~~~~~~~~~~~~~ -If an air-to-air heat pump is specified, additional information is entered in ``HeatPump``. +Each air-to-air heat pump is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatPump``. ================================================================ ======= ======== ======================== ======== ============== ================================================= Element Type Units Constraints Required Default Notes ================================================================ ======= ======== ======================== ======== ============== ================================================= + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string See [#]_ No See [#]_ Location of air handler ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``HeatPumpType`` string air-to-air Yes Type of heat pump + ``HeatPumpFuel`` string electricity Yes Fuel type ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity (excluding any backup heating) ``HeatingCapacity17F`` double Btu/hr >= 0, <= HeatingCapacity No Heating output capacity at 17F, if available ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity ``CompressorType`` string See [#]_ No See [#]_ Type of compressor ``CompressorLockoutTemperature`` double F No See [#]_ Minimum outdoor temperature for compressor operation ``CoolingSensibleHeatFraction`` double frac > 0.5, <= 1 No See [#]_ Sensible heat fraction + ``BackupType`` string See [#]_ No Type of backup heating ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of heating load served ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served ``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency [#]_ @@ -1948,18 +2115,34 @@ If an air-to-air heat pump is specified, additional information is entered in `` ``HeatingDetailedPerformanceData`` element No Heating detailed performance data [#]_ ``extension/HeatingCapacityRetention[Fraction | Temperature]`` double frac | F >= 0, < 1 | <= 17 No See [#]_ Heating output capacity retention at cold temperature [#]_ ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/CoolingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + ``extension/MaxCoolingAirflowCFM`` double cfm >= 0 No ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ ``extension/ChargeDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed refrigerant charges [#]_ ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 50.0 Crankcase heater power ================================================================ ======= ======== ======================== ======== ============== ================================================= - .. [#] HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE. + .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". + .. [#] If UnitLocation not provided, defaults based on the distribution system: + + \- **Air**: supply duct location with the largest area, otherwise "conditioned space" + + \- **DSE**: "conditioned space" if ``FractionHeatLoadServed``/``FractionCoolLoadServed`` are 1, otherwise "unconditioned space" + + .. [#] HVACDistribution type must be :ref:`hvac_distribution_air` (type: "regular velocity") or :ref:`hvac_distribution_dse`. .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load (unless a different HeatPumpSizingMethodology was selected in :ref:`hvac_sizing_control`). .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load (unless a different HeatPumpSizingMethodology was selected in :ref:`hvac_sizing_control`). .. [#] CompressorType choices are "single stage", "two stage", or "variable speed". .. [#] If CompressorType not provided, defaults to "single stage" if SEER <= 15, else "two stage" if SEER <= 21, else "variable speed". .. [#] If neither CompressorLockoutTemperature nor BackupHeatingSwitchoverTemperature provided, CompressorLockoutTemperature defaults to 25F if fossil fuel backup otherwise 0F. .. [#] If SensibleHeatFraction not provided, defaults to 0.73 for single/two stage and 0.78 for variable speed. + .. [#] BackupType choices are "integrated" or "separate". + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + Use "integrated" if the heat pump's distribution system and blower fan power applies to the backup heating (e.g., built-in electric strip heat or an integrated backup furnace, i.e., a dual-fuel heat pump). + Use "separate" if the backup system has its own distribution system (e.g., electric baseboard or a boiler). + Additional backup inputs are described in :ref:`hvac_hp_backup`. .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] If SEER2 provided, converted to SEER using ANSI/RESNET/ICC 301-2022 Addendum C, where SEER = SEER2 / 0.95 (assumed to be a split system). @@ -1978,26 +2161,34 @@ If an air-to-air heat pump is specified, additional information is entered in `` Either input approach can be used, but not both. .. [#] If FanPowerWattsPerCFM not provided, defaulted to 0.5 W/cfm if HSPF <= 8.75, else 0.375 W/cfm. .. [#] AirflowDefectRatio is defined as (InstalledAirflow - DesignAirflow) / DesignAirflow; a value of zero means no airflow defect. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. .. [#] ChargeDefectRatio is defined as (InstalledCharge - DesignCharge) / DesignCharge; a value of zero means no refrigerant charge defect. A non-zero charge defect should typically only be applied for systems that are charged on site, not for systems that have pre-charged line sets. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. + +.. _hvac_hp_mini_split: Mini-Split Heat Pump ~~~~~~~~~~~~~~~~~~~~ -If a mini-split heat pump is specified, additional information is entered in ``HeatPump``. Each ``HeatPump`` is expected to represent a single outdoor unit, whether connected to one indoor head or multiple indoor heads. +Each mini-split heat pump is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatPump``. +Each ``HeatPump`` is expected to represent a single outdoor unit, whether connected to one indoor head or multiple indoor heads. ================================================================ ======== ======== ======================== ======== ============== ============================================== Element Type Units Constraints Required Default Notes ================================================================ ======== ======== ======================== ======== ============== ============================================== + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string See [#]_ No See [#]_ Location of air handler ``DistributionSystem`` idref See [#]_ No ID of attached distribution system, if present + ``HeatPumpType`` string mini-split Yes Type of heat pump + ``HeatPumpFuel`` string electricity Yes Fuel type ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity (excluding any backup heating) ``HeatingCapacity17F`` double Btu/hr >= 0, <= HeatingCapacity No Heating output capacity at 17F, if available ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity ``CompressorType`` string See [#]_ No variable speed Type of compressor ``CompressorLockoutTemperature`` double F No See [#]_ Minimum outdoor temperature for compressor operation ``CoolingSensibleHeatFraction`` double frac > 0.5, <= 1 No 0.73 Sensible heat fraction + ``BackupType`` string See [#]_ No Type of backup heating ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of heating load served ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served ``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency [#]_ @@ -2006,16 +2197,32 @@ If a mini-split heat pump is specified, additional information is entered in ``H ``HeatingDetailedPerformanceData`` element No Heating detailed performance data [#]_ ``extension/HeatingCapacityRetention[Fraction | Temperature]`` double frac | F >= 0, < 1 | <= 17 No See [#]_ Heating output capacity retention at cold temperature [#]_ ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/CoolingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + ``extension/MaxCoolingAirflowCFM`` double cfm >= 0 No ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ ``extension/ChargeDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed refrigerant charges [#]_ ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 50.0 Crankcase heater power ================================================================ ======== ======== ======================== ======== ============== ============================================== - .. [#] If DistributionSystem provided, HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE. + .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". + .. [#] If UnitLocation not provided, defaults based on the distribution system: + + \- **Air**: supply duct location with the largest area, otherwise "conditioned space" + + \- **DSE**: "conditioned space" if ``FractionHeatLoadServed``/``FractionCoolLoadServed`` are 1, otherwise "unconditioned space" + + .. [#] If DistributionSystem provided, HVACDistribution type must be :ref:`hvac_distribution_air` (type: "regular velocity") or :ref:`hvac_distribution_dse`. .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load (unless a different HeatPumpSizingMethodology was selected in :ref:`hvac_sizing_control`). .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load (unless a different HeatPumpSizingMethodology was selected in :ref:`hvac_sizing_control`). .. [#] CompressorType only choice is "variable speed" (i.e., they are assumed to be inverter driven). .. [#] If neither CompressorLockoutTemperature nor BackupHeatingSwitchoverTemperature provided, CompressorLockoutTemperature defaults to 25F if fossil fuel backup otherwise -20F. + .. [#] BackupType choices are "integrated" or "separate". + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + Use "integrated" if the heat pump's distribution system and blower fan power applies to the backup heating (e.g., built-in electric strip heat or an integrated backup furnace, i.e., a dual-fuel heat pump). + Use "separate" if the backup system has its own distribution system (e.g., electric baseboard or a boiler). + Additional backup inputs are described in :ref:`hvac_hp_backup`. .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] If SEER2 provided, converted to SEER using ANSI/RESNET/ICC 301-2022 Addendum C, where SEER = SEER2 / 0.95 if ducted and SEER = SEER2 if ductless. @@ -2026,8 +2233,6 @@ If a mini-split heat pump is specified, additional information is entered in ``H CoolingDetailedPerformanceData must also be provided. .. [#] If neither extension/HeatingCapacityRetention nor HeatingCapacity17F nor HeatingDetailedPerformanceData provided, heating capacity retention defaults based on CompressorType: - \- **single/two stage**: 0.425 (at 5F) - \- **variable speed**: 0.0461 * HSPF + 0.1594 (at 5F) .. [#] The extension/HeatingCapacityRetention input is a more flexible alternative to HeatingCapacity17F, as it can apply to autosized systems and allows the heating capacity retention to be defined at a user-specified temperature (instead of 17F). @@ -2035,86 +2240,111 @@ If a mini-split heat pump is specified, additional information is entered in ``H .. [#] FanPowerWattsPerCFM defaults to 0.07 W/cfm for ductless systems and 0.18 W/cfm for ducted systems. .. [#] AirflowDefectRatio is defined as (InstalledAirflow - DesignAirflow) / DesignAirflow; a value of zero means no airflow defect. A non-zero airflow defect can only be applied for systems attached to a distribution system. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. .. [#] ChargeDefectRatio is defined as (InstalledCharge - DesignCharge) / DesignCharge; a value of zero means no refrigerant charge defect. A non-zero charge defect should typically only be applied for systems that are charged on site, not for systems that have pre-charged line sets. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. -.. _pthp: +.. _hvac_hp_pthp: Packaged Terminal Heat Pump ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If a packaged terminal heat pump is specified, additional information is entered in ``HeatPump``. - - =============================================================== ======== ======== ======================== ======== ============== ============================================== - Element Type Units Constraints Required Default Notes - =============================================================== ======== ======== ======================== ======== ============== ============================================== - ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity (excluding any backup heating) - ``HeatingCapacity17F`` double Btu/hr >= 0, <= HeatingCapacity No Heating output capacity at 17F, if available - ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity - ``CompressorLockoutTemperature`` double F No See [#]_ Minimum outdoor temperature for compressor operation - ``CoolingSensibleHeatFraction`` double frac > 0.5, <= 1 No 0.65 Sensible heat fraction - ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of heating load served - ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served - ``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency - ``AnnualHeatingEfficiency[Units="COP"]/Value`` double W/W > 0 Yes Rated heating efficiency - ``extension/HeatingCapacityRetention[Fraction | Temperature]`` double frac | F >= 0, < 1 | <= 17 No 0.425 | 5 Heating output capacity retention at cold temperature [#]_ - ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 0.0 Crankcase heater power - =============================================================== ======== ======== ======================== ======== ============== ============================================== +Each packaged terminal heat pump is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatPump``. + + =============================================================== ======== ======== =========================== ======== ============== ============================================== + Element Type Units Constraints Required Default Notes + =============================================================== ======== ======== =========================== ======== ============== ============================================== + ``SystemIdentifier`` id Yes Unique identifier + ``HeatPumpType`` string packaged terminal heat pump Yes Type of heat pump + ``HeatPumpFuel`` string electricity Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity (excluding any backup heating) + ``HeatingCapacity17F`` double Btu/hr >= 0, <= HeatingCapacity No Heating output capacity at 17F, if available + ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity + ``CompressorLockoutTemperature`` double F No See [#]_ Minimum outdoor temperature for compressor operation + ``CoolingSensibleHeatFraction`` double frac > 0.5, <= 1 No 0.65 Sensible heat fraction + ``BackupType`` string See [#]_ No Type of backup heating + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of heating load served + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency + ``AnnualHeatingEfficiency[Units="COP"]/Value`` double W/W > 0 Yes Rated heating efficiency + ``extension/HeatingCapacityRetention[Fraction | Temperature]`` double frac | F >= 0, < 1 | <= 17 No 0.425 | 5 Heating output capacity retention at cold temperature [#]_ + ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 0.0 Crankcase heater power + =============================================================== ======== ======== =========================== ======== ============== ============================================== .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load (unless a different HeatPumpSizingMethodology was selected in :ref:`hvac_sizing_control`). .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load (unless a different HeatPumpSizingMethodology was selected in :ref:`hvac_sizing_control`). .. [#] If neither CompressorLockoutTemperature nor BackupHeatingSwitchoverTemperature provided, CompressorLockoutTemperature defaults to 25F if fossil fuel backup otherwise 0F. + .. [#] BackupType choices are "integrated" or "separate". + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + Use "integrated" if the heat pump's distribution system and blower fan power applies to the backup heating (e.g., built-in electric strip heat or an integrated backup furnace, i.e., a dual-fuel heat pump). + Use "separate" if the backup system has its own distribution system (e.g., electric baseboard or a boiler). + Additional backup inputs are described in :ref:`hvac_hp_backup`. .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] The extension/HeatingCapacityRetention input is a more flexible alternative to HeatingCapacity17F, as it can apply to autosized systems and allows the heating capacity retention to be defined at a user-specified temperature (instead of 17F). Either input approach can be used, but not both. -.. _room_ac_reverse_cycle: +.. _hvac_hp_room_ac_reverse_cycle: Room Air Conditioner w/ Reverse Cycle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If a room air conditioner with reverse cycle is specified, additional information is entered in ``HeatPump``. - - =============================================================== ======== ======== ======================== ======== ============== ============================================== - Element Type Units Constraints Required Default Notes - =============================================================== ======== ======== ======================== ======== ============== ============================================== - ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity (excluding any backup heating) - ``HeatingCapacity17F`` double Btu/hr >= 0, <= HeatingCapacity No Heating output capacity at 17F, if available - ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity - ``CompressorLockoutTemperature`` double F No See [#]_ Minimum outdoor temperature for compressor operation - ``CoolingSensibleHeatFraction`` double frac > 0.5, <= 1 No 0.65 Sensible heat fraction - ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of heating load served - ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served - ``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency - ``AnnualHeatingEfficiency[Units="COP"]/Value`` double W/W > 0 Yes Rated heating efficiency - ``extension/HeatingCapacityRetention[Fraction | Temperature]`` double frac | F >= 0, < 1 | <= 17 No 0.425 | 5 Heating output capacity retention at cold temperature [#]_ - ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 0.0 Crankcase heater power - =============================================================== ======== ======== ======================== ======== ============== ============================================== +Each room air conditioner with reverse cycle is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatPump``. + + =============================================================== ======== ======== ======================================= ======== ============== ============================================== + Element Type Units Constraints Required Default Notes + =============================================================== ======== ======== ======================================= ======== ============== ============================================== + ``SystemIdentifier`` id Yes Unique identifier + ``HeatPumpType`` string room air conditioner with reverse cycle Yes Type of heat pump + ``HeatPumpFuel`` string electricity Yes Fuel type + ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity (excluding any backup heating) + ``HeatingCapacity17F`` double Btu/hr >= 0, <= HeatingCapacity No Heating output capacity at 17F, if available + ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity + ``CompressorLockoutTemperature`` double F No See [#]_ Minimum outdoor temperature for compressor operation + ``CoolingSensibleHeatFraction`` double frac > 0.5, <= 1 No 0.65 Sensible heat fraction + ``BackupType`` string See [#]_ No Type of backup heating + ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of heating load served + ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served + ``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency + ``AnnualHeatingEfficiency[Units="COP"]/Value`` double W/W > 0 Yes Rated heating efficiency + ``extension/HeatingCapacityRetention[Fraction | Temperature]`` double frac | F >= 0, < 1 | <= 17 No 0.425 | 5 Heating output capacity retention at cold temperature [#]_ + ``extension/CrankcaseHeaterPowerWatts`` double W >= 0 No 0.0 Crankcase heater power + =============================================================== ======== ======== ======================================= ======== ============== ============================================== .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load (unless a different HeatPumpSizingMethodology was selected in :ref:`hvac_sizing_control`). .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load (unless a different HeatPumpSizingMethodology was selected in :ref:`hvac_sizing_control`). .. [#] If neither CompressorLockoutTemperature nor BackupHeatingSwitchoverTemperature provided, CompressorLockoutTemperature defaults to 25F if fossil fuel backup otherwise 0F. + .. [#] BackupType choices are "integrated" or "separate". + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + Use "integrated" if the heat pump's distribution system and blower fan power applies to the backup heating (e.g., built-in electric strip heat or an integrated backup furnace, i.e., a dual-fuel heat pump). + Use "separate" if the backup system has its own distribution system (e.g., electric baseboard or a boiler). + Additional backup inputs are described in :ref:`hvac_hp_backup`. .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] The extension/HeatingCapacityRetention input is a more flexible alternative to HeatingCapacity17F, as it can apply to autosized systems and allows the heating capacity retention to be defined at a user-specified temperature (instead of 17F). Either input approach can be used, but not both. +.. _hvac_hp_ground_to_air: + Ground-to-Air Heat Pump ~~~~~~~~~~~~~~~~~~~~~~~ -If a ground-to-air heat pump is specified, additional information is entered in ``HeatPump``. +Each ground-to-air heat pump is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatPump``. =============================================== ======== ====== =============== ======== ============== ============================================== Element Type Units Constraints Required Default Notes =============================================== ======== ====== =============== ======== ============== ============================================== - ``IsSharedSystem`` boolean No false Whether it has a shared hydronic circulation loop [#]_ + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string ground-to-air No See [#]_ Location of air handler ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``IsSharedSystem`` boolean No false Whether it has a shared hydronic circulation loop [#]_ + ``HeatPumpType`` string See [#]_ Yes Type of heat pump + ``HeatPumpFuel`` string electricity Yes Fuel type ``HeatingCapacity`` double Btu/hr >= 0 No autosized [#]_ Heating output capacity (excluding any backup heating) ``CoolingCapacity`` double Btu/hr >= 0 No autosized [#]_ Cooling output capacity ``CoolingSensibleHeatFraction`` double frac > 0.5, <= 1 No 0.73 Sensible heat fraction + ``BackupType`` string See [#]_ No Type of backup heating ``FractionHeatLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of heating load served ``FractionCoolLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of cooling load served ``AnnualCoolingEfficiency[Units="EER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency @@ -2124,14 +2354,30 @@ If a ground-to-air heat pump is specified, additional information is entered in ``extension/PumpPowerWattsPerTon`` double W/ton >= 0 No See [#]_ Pump power [#]_ ``extension/SharedLoopWatts`` double W >= 0 See [#]_ Shared pump power [#]_ ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed + ``extension/HeatingAirflowCFM`` double cfm >= 0 No autosized + ``extension/CoolingAirflowCFM`` double cfm >= 0 No autosized + ``extension/MaxHeatingAirflowCFM`` double cfm >= 0 No + ``extension/MaxCoolingAirflowCFM`` double cfm >= 0 No ``extension/AirflowDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed airflows [#]_ ``extension/ChargeDefectRatio`` double frac >= -0.9, <= 9 No 0.0 Deviation between design/installed refrigerant charges [#]_ =============================================== ======== ====== =============== ======== ============== ============================================== + .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". + .. [#] If UnitLocation not provided, defaults based on the distribution system: + + \- **Air**: supply duct location with the largest area, otherwise "conditioned space" + + \- **DSE**: "conditioned space" if ``FractionHeatLoadServed``/``FractionCoolLoadServed`` are 1, otherwise "unconditioned space" + + .. [#] HVACDistribution type must be :ref:`hvac_distribution_air` (type: "regular velocity") or :ref:`hvac_distribution_dse`. .. [#] IsSharedSystem should be true if the SFA/MF building has multiple ground source heat pumps connected to a shared hydronic circulation loop. - .. [#] HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE. .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. .. [#] Cooling capacity autosized per ACCA Manual J/S based on cooling design load. + .. [#] BackupType choices are "integrated" or "separate". + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + Use "integrated" if the heat pump's distribution system and blower fan power applies to the backup heating (e.g., built-in electric strip heat or an integrated backup furnace, i.e., a dual-fuel heat pump). + Use "separate" if the backup system has its own distribution system (e.g., electric baseboard or a boiler). + Additional backup inputs are described in :ref:`hvac_hp_backup`. .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] NumberofUnitsServed only required if IsSharedSystem is true, in which case it must be > 1. @@ -2144,37 +2390,56 @@ If a ground-to-air heat pump is specified, additional information is entered in .. [#] Shared loop pump power attributed to the dwelling unit is calculated as SharedLoopWatts / NumberofUnitsServed. .. [#] If FanPowerWattsPerCFM not provided, defaulted to 0.5 W/cfm if COP <= 8.75/3.2, else 0.375 W/cfm. .. [#] AirflowDefectRatio is defined as (InstalledAirflow - DesignAirflow) / DesignAirflow; a value of zero means no airflow defect. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. .. [#] ChargeDefectRatio is defined as (InstalledCharge - DesignCharge) / DesignCharge; a value of zero means no refrigerant charge defect. A non-zero charge defect should typically only be applied for systems that are charged on site, not for systems that have pre-charged line sets. - See ANSI/RESNET/ACCA 310-2020 Standard for Grading the Installation of HVAC Systems for more information. + See `ANSI/RESNET/ACCA 310-2020 `_ for more information. -.. _hvac_heatpump_wlhp: +.. _hvac_hp_water_loop: Water-Loop-to-Air Heat Pump ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If a water-loop-to-air heat pump is specified, additional information is entered in ``HeatPump``. - - =============================================== ======== ====== =========== ======== ============== ============================================== - Element Type Units Constraints Required Default Notes - =============================================== ======== ====== =========== ======== ============== ============================================== - ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system - ``HeatingCapacity`` double Btu/hr > 0 No autosized [#]_ Heating output capacity - ``CoolingCapacity`` double Btu/hr > 0 See [#]_ Cooling output capacity - ``AnnualCoolingEfficiency[Units="EER"]/Value`` double Btu/Wh > 0 See [#]_ Rated cooling efficiency - ``AnnualHeatingEfficiency[Units="COP"]/Value`` double W/W > 0 See [#]_ Rated heating efficiency - =============================================== ======== ====== =========== ======== ============== ============================================== +Each water-loop-to-air heat pump is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatPump``. + + =============================================== ======== ====== ================= ======== ============== ============================================== + Element Type Units Constraints Required Default Notes + =============================================== ======== ====== ================= ======== ============== ============================================== + ``SystemIdentifier`` id Yes Unique identifier + ``UnitLocation`` string See [#]_ No See [#]_ Location of air handler + ``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``HeatPumpType`` string water-loop-to-air Yes Type of heat pump + ``HeatPumpFuel`` string electricity Yes Fuel type + ``HeatingCapacity`` double Btu/hr > 0 No autosized [#]_ Heating output capacity + ``CoolingCapacity`` double Btu/hr > 0 See [#]_ Cooling output capacity + ``BackupType`` string See [#]_ No Type of backup heating + ``AnnualCoolingEfficiency[Units="EER"]/Value`` double Btu/Wh > 0 See [#]_ Rated cooling efficiency + ``AnnualHeatingEfficiency[Units="COP"]/Value`` double W/W > 0 See [#]_ Rated heating efficiency + =============================================== ======== ====== ================= ======== ============== ============================================== - .. [#] HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE. + .. [#] UnitLocation choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", "other non-freezing space", "roof deck", "manufactured home belly", or "unconditioned space". + .. [#] If UnitLocation not provided, defaults based on the distribution system: + + \- **Air**: supply duct location with the largest area, otherwise "conditioned space" + + \- **DSE**: "conditioned space" if ``FractionHeatLoadServed``/``FractionCoolLoadServed`` are 1, otherwise "unconditioned space" + + .. [#] HVACDistribution type must be :ref:`hvac_distribution_air` (type: "regular velocity") or :ref:`hvac_distribution_dse`. .. [#] Heating capacity autosized per ACCA Manual J/S based on heating design load. .. [#] CoolingCapacity required if there is a shared chiller or cooling tower with water loop distribution. + .. [#] BackupType choices are "integrated" or "separate". + Heat pump backup will only operate during colder temperatures when the heat pump runs out of heating capacity or is disabled due to a switchover/lockout temperature. + Use "integrated" if the heat pump's distribution system and blower fan power applies to the backup heating (e.g., built-in electric strip heat or an integrated backup furnace, i.e., a dual-fuel heat pump). + Use "separate" if the backup system has its own distribution system (e.g., electric baseboard or a boiler). + Additional backup inputs are described in :ref:`hvac_hp_backup`. .. [#] AnnualCoolingEfficiency required if there is a shared chiller or cooling tower with water loop distribution. .. [#] AnnualHeatingEfficiency required if there is a shared boiler with water loop distribution. .. note:: - If a water loop heat pump is specified, there must be at least one shared heating system (i.e., :ref:`hvac_heating_boiler`) and/or one shared cooling system (i.e., :ref:`hvac_cooling_chiller` or :ref:`hvac_cooling_tower`) specified with water loop distribution. + If a water loop heat pump is specified, there must be at least one shared heating system (i.e., :ref:`hvac_heating_shared_boiler`) and/or one shared cooling system (i.e., :ref:`hvac_cooling_shared_chiller` or :ref:`hvac_cooling_shared_tower`) specified with water loop distribution. + +.. _hvac_hp_backup: Backup ~~~~~~ @@ -2292,7 +2557,7 @@ Note that when detailed cooling performance data is provided, some other inputs HPXML Geothermal Loops ********************** -Each geothermal loop is entered as an ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/GeothermalLoop``. +Each geothermal loop is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/GeothermalLoop``. ======================================== ================ =========== ================== ======== ============== =============================================== Element Type Units Constraints Required Default Notes @@ -2391,7 +2656,13 @@ If a heating and/or cooling season is defined, additional information is entered =================== ======== ===== =========== ======== ======= =========== Thermostat setpoints are additionally entered using either simple inputs or hourly inputs. -Alternatively, setpoints can be defined using :ref:`detailedschedules`. + +- :ref:`hvac_control_simple` +- :ref:`hvac_control_hourly` + +Alternatively, setpoints can be defined using :ref:`schedules_detailed`. + +.. _hvac_control_simple: Simple Inputs ~~~~~~~~~~~~~ @@ -2432,6 +2703,8 @@ If there is a cooling temperature setup, additional information is entered in `` .. [#] TotalSetupHoursperWeekCooling is converted to hrs/day and modeled as a temperature setup every day starting at SetupStartHourCooling. +.. _hvac_control_hourly: + Hourly Inputs ~~~~~~~~~~~~~~~ @@ -2452,47 +2725,44 @@ To define hourly thermostat setpoints, additional information is entered in ``HV HPXML HVAC Distribution *********************** -Each separate HVAC distribution system is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution``. - - ============================== ======= ======= =========== ======== ========= ============================= - Element Type Units Constraints Required Default Notes - ============================== ======= ======= =========== ======== ========= ============================= - ``SystemIdentifier`` id Yes Unique identifier - ``DistributionSystemType`` element See [#]_ Yes Type of distribution system - ``ConditionedFloorAreaServed`` double ft2 > 0 See [#]_ Conditioned floor area served - ============================== ======= ======= =========== ======== ========= ============================= +The following distribution system types can be modeled: - .. [#] DistributionSystemType child element choices are ``AirDistribution``, ``HydronicDistribution``, or ``Other=DSE``. - .. [#] ConditionedFloorAreaServed required only when DistributionSystemType is AirDistribution and duct surface area is defaulted (i.e., ``AirDistribution/Ducts`` are present without ``DuctSurfaceArea`` child elements). +- :ref:`hvac_distribution_air` +- :ref:`hvac_distribution_hydronic` +- :ref:`hvac_distribution_dse` .. note:: - There should be at most one heating system and one cooling system attached to a distribution system. - See :ref:`hvac_heating`, :ref:`hvac_cooling`, and :ref:`hvac_heatpump` for information on which DistributionSystemType is allowed for which HVAC system. + There can be at most one heating system and one cooling system attached to a distribution system. + See :ref:`hvac_heating`, :ref:`hvac_cooling`, and :ref:`hvac_heatpump` for information on which distribution system type is allowed for which HVAC system. Also note that some HVAC systems (e.g., room air conditioners) are not allowed to be attached to a distribution system. -.. _air_distribution: +.. _hvac_distribution_air: Air Distribution ~~~~~~~~~~~~~~~~ -To define an air distribution system, additional information is entered in ``HVACDistribution/DistributionSystemType/AirDistribution``. - - ============================================= ======= ======= =========== ======== ========= ========================== - Element Type Units Constraints Required Default Notes - ============================================= ======= ======= =========== ======== ========= ========================== - ``AirDistributionType`` string See [#]_ Yes Type of air distribution - ``DuctLeakageMeasurement[DuctType="supply"]`` element See [#]_ Supply duct leakage value - ``DuctLeakageMeasurement[DuctType="return"]`` element See [#]_ Return duct leakage value - ``Ducts`` element No Supply/return ducts; multiple are allowed [#]_ - ``NumberofReturnRegisters`` integer >= 0 No See [#]_ Number of return registers - ============================================= ======= ======= =========== ======== ========= ========================== +Each air distribution system is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution``. + + ==================================================================================== ======= ======= =========== ======== ========= ========================== + Element Type Units Constraints Required Default Notes + ==================================================================================== ======= ======= =========== ======== ========= ========================== + ``SystemIdentifier`` id Yes Unique identifier + ``DistributionSystemType/AirDistribution`` element Yes Type of distribution system + ``DistributionSystemType/AirDistribution/AirDistributionType`` string See [#]_ Yes Type of air distribution + ``DistributionSystemType/AirDistribution/DuctLeakageMeasurement[DuctType="supply"]`` element See [#]_ Supply duct leakage value + ``DistributionSystemType/AirDistribution/DuctLeakageMeasurement[DuctType="return"]`` element See [#]_ Return duct leakage value + ``DistributionSystemType/AirDistribution/Ducts`` element No Supply/return ducts; multiple are allowed [#]_ + ``DistributionSystemType/AirDistribution/NumberofReturnRegisters`` integer >= 0 No See [#]_ Number of return registers + ``ConditionedFloorAreaServed`` double ft2 > 0 See [#]_ Conditioned floor area served + ==================================================================================== ======= ======= =========== ======== ========= ========================== .. [#] AirDistributionType choices are "regular velocity", "gravity", or "fan coil" and are further restricted based on attached HVAC system type (e.g., only "regular velocity" or "gravity" for a furnace, only "fan coil" for a shared boiler, etc.). .. [#] Supply duct leakage required if AirDistributionType is "regular velocity" or "gravity" and optional if AirDistributionType is "fan coil". .. [#] Return duct leakage required if AirDistributionType is "regular velocity" or "gravity" and optional if AirDistributionType is "fan coil". .. [#] Provide a Ducts element for each supply duct and each return duct. .. [#] If NumberofReturnRegisters not provided and return ducts are present, defaults to one return register per conditioned floor per `ASHRAE Standard 152 `_, rounded up to the nearest integer if needed. + .. [#] ConditionedFloorAreaServed required only when duct surface area is defaulted (i.e., ``AirDistribution/Ducts`` are present without ``DuctSurfaceArea`` child elements). Additional information is entered in each ``DuctLeakageMeasurement``. @@ -2577,19 +2847,25 @@ Additional information is entered in each ``Ducts``. If FractionDuctArea is provided, each duct surface area will be FractionDuctArea times total duct area, which is calculated using the sum of primary and secondary duct areas from the equations above. +.. _hvac_distribution_hydronic: + Hydronic Distribution ~~~~~~~~~~~~~~~~~~~~~ -To define a hydronic distribution system, additional information is entered in ``HVACDistribution/DistributionSystemType/HydronicDistribution``. +Each hydronic distribution system is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution``. - ============================ ======= ======= =========== ======== ========= ==================================== - Element Type Units Constraints Required Default Notes - ============================ ======= ======= =========== ======== ========= ==================================== - ``HydronicDistributionType`` string See [#]_ Yes Type of hydronic distribution system - ============================ ======= ======= =========== ======== ========= ==================================== + ======================================================================== ======= ======= =========== ======== ========= ==================================== + Element Type Units Constraints Required Default Notes + ======================================================================== ======= ======= =========== ======== ========= ==================================== + ``SystemIdentifier`` id Yes Unique identifier + ``DistributionSystemType/HydronicDistribution`` element Yes Type of distribution system + ``DistributionSystemType/HydronicDistribution/HydronicDistributionType`` string See [#]_ Yes Type of hydronic distribution system + ======================================================================== ======= ======= =========== ======== ========= ==================================== .. [#] HydronicDistributionType choices are "radiator", "baseboard", "radiant floor", "radiant ceiling", or "water loop". +.. _hvac_distribution_dse: + Distribution System Efficiency (DSE) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -2597,61 +2873,94 @@ Distribution System Efficiency (DSE) A simplified DSE model is provided for flexibility, but it is **strongly** recommended to use one of the other detailed distribution system types for better accuracy. The DSE input is simply applied to heating/cooling energy use for every hour of the year. - Note that when specifying a DSE, its effect is reflected in the :ref:`workflow_outputs` but is **not** reflected in the raw EnergyPlus simulation outputs. -To define a DSE, additional information is entered in ``HVACDistribution``. +Each distribution system using DSE is entered as a ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution``. ============================================= ======= ======= =========== ======== ========= =================================================== Element Type Units Constraints Required Default Notes ============================================= ======= ======= =========== ======== ========= =================================================== + ``SystemIdentifier`` id Yes Unique identifier + ``DistributionSystemType/Other`` string DSE Yes Type of distribution system ``AnnualHeatingDistributionSystemEfficiency`` double frac > 0, <= 1 Yes Seasonal distribution system efficiency for heating ``AnnualCoolingDistributionSystemEfficiency`` double frac > 0, <= 1 Yes Seasonal distribution system efficiency for cooling ============================================= ======= ======= =========== ======== ========= =================================================== DSE values can be calculated using, e.g., `ASHRAE Standard 152 `_. -HPXML Ventilation Fan -********************* +HPXML Mechanical Ventilation Fans +********************************* -Each ventilation fan system is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. +The following mechanical ventilation fan types that provide ventilation to the whole dwelling unit can be modeled: - ============================================================================================================================================= ======== ======= =========== ======== ========= ======================== - Element Type Units Constraints Required Default Notes - ============================================================================================================================================= ======== ======= =========== ======== ========= ======================== - ``SystemIdentifier`` id Yes Unique identifier - ``UsedForWholeBuildingVentilation`` or ``UsedForLocalVentilation`` or ``UsedForSeasonalCoolingLoadReduction`` or ``UsedForGarageVentilation`` boolean See [#]_ See [#]_ Ventilation fan use case - ============================================================================================================================================= ======== ======= =========== ======== ========= ======================== - - .. [#] One (and only one) of the ``UsedFor...`` elements must have a value of true. - If UsedForWholeBuildingVentilation is true, see :ref:`wholeventilation`. - If UsedForLocalVentilation is true, see :ref:`localventilation`. - If UsedForSeasonalCoolingLoadReduction is true, see :ref:`wholehousefan`. - If UsedForGarageVentilation is true, garage ventilation is currently ignored. - .. [#] Only the ``UsedFor...`` element that is true is required. +- :ref:`vent_fan_exhaust_only` +- :ref:`vent_fan_supply_only` +- :ref:`vent_fan_balanced` +- :ref:`vent_fan_hrv` +- :ref:`vent_fan_erv` +- :ref:`vent_fan_cfis` -.. _wholeventilation: +.. _vent_fan_exhaust_only: -Whole Ventilation Fan -~~~~~~~~~~~~~~~~~~~~~ +Exhaust Only +~~~~~~~~~~~~ + +Each exhaust only fan is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. + + ============================================================================================= ======== ======= ============ ======== ========= ========================================= + Element Type Units Constraints Required Default Notes + ============================================================================================= ======== ======= ============ ======== ========= ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``UsedForWholeBuildingVentilation`` boolean true Yes Ventilation fan use case [#]_ + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units [#]_ + ``FanType`` string exhaust only Yes Type of ventilation system + ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No See [#]_ Flow rate + ``HoursInOperation`` double hrs/day >= 0, <= 24 See [#]_ 24 Hours per day of operation + ``FanPower`` double W >= 0 No See [#]_ Fan power + ============================================================================================= ======== ======= ============ ======== ========= ========================================= + + .. [#] All other UsedFor... elements (i.e., ``UsedForLocalVentilation``, ``UsedForSeasonalCoolingLoadReduction``, ``UsedForGarageVentilation``) must be omitted or false. + .. [#] Additional inputs for shared systems are described in :ref:`vent_fan_shared`. + .. [#] If flow rate not provided, defaults to the required mechanical ventilation rate per `ASHRAE 62.2-2019 `_: + + Qfan = Qtot - (Qinf/Qtot) * (Qinf * Aext) + + where + + Qfan = required mechanical ventilation rate (cfm) + + Qtot = total required ventilation rate (cfm) = 0.03 * ConditionedFloorArea + 7.5*(NumberofBedrooms + 1) + + Qinf = infiltration rate (cfm) + + Aext = 1 if single-family detached or TypeOfInfiltrationLeakage is "unit exterior only", otherwise ratio of SFA/MF exterior envelope surface area to total envelope surface area as described in :ref:`air_infiltration` + + .. [#] HoursInOperation is optional unless the VentilationFan refers to the supplemental fan of a :ref:`vent_fan_cfis` system, in which case it is not allowed because the runtime is automatically calculated for each hour (based on the air handler runtime) to maintain the hourly target ventilation rate. + .. [#] If FanPower not provided, defaults to 0.35 W/cfm based on `ANSI/RESNET/ICC 301-2019 `_. -Each mechanical ventilation system that provides ventilation to the whole dwelling unit is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan[UsedForWholeBuildingVentilation=true]``. -If not entered, the simulation will not include mechanical ventilation. +.. _vent_fan_supply_only: + +Supply Only +~~~~~~~~~~~ + +Each supply only fan is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. ============================================================================================= ======== ======= =========== ======== ========= ========================================= Element Type Units Constraints Required Default Notes ============================================================================================= ======== ======= =========== ======== ========= ========================================= - ``IsSharedSystem`` boolean See [#]_ No false Whether it serves multiple dwelling units - ``FanType`` string See [#]_ Yes Type of ventilation system - ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No See [#]_ Flow rate [#]_ - ``HoursInOperation`` double hrs/day >= 0, <= 24 See [#]_ See [#]_ Hours per day of operation + ``SystemIdentifier`` id Yes Unique identifier + ``UsedForWholeBuildingVentilation`` boolean true Yes Ventilation fan use case [#]_ + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units [#]_ + ``FanType`` string supply only Yes Type of ventilation system + ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No See [#]_ Flow rate + ``HoursInOperation`` double hrs/day >= 0, <= 24 See [#]_ 24 Hours per day of operation ``FanPower`` double W >= 0 No See [#]_ Fan power ============================================================================================= ======== ======= =========== ======== ========= ========================================= - .. [#] For central fan integrated supply systems, IsSharedSystem must be false. - .. [#] FanType choices are "energy recovery ventilator", "heat recovery ventilator", "exhaust only", "supply only", "balanced", or "central fan integrated supply". + .. [#] All other UsedFor... elements (i.e., ``UsedForLocalVentilation``, ``UsedForSeasonalCoolingLoadReduction``, ``UsedForGarageVentilation``) must be omitted or false. + .. [#] Additional inputs for shared systems are described in :ref:`vent_fan_shared`. .. [#] If flow rate not provided, defaults to the required mechanical ventilation rate per `ASHRAE 62.2-2019 `_: - Qfan = Qtot - Φ*(Qinf * Aext) + Qfan = Qtot - (Qinf/Qtot) * (Qinf * Aext) where @@ -2663,74 +2972,170 @@ If not entered, the simulation will not include mechanical ventilation. Aext = 1 if single-family detached or TypeOfInfiltrationLeakage is "unit exterior only", otherwise ratio of SFA/MF exterior envelope surface area to total envelope surface area as described in :ref:`air_infiltration` - Φ = 1 for balanced ventilation systems, and Qinf/Qtot otherwise + .. [#] HoursInOperation is optional unless the VentilationFan refers to the supplemental fan of a :ref:`vent_fan_cfis` system, in which case it is not allowed because the runtime is automatically calculated for each hour (based on the air handler runtime) to maintain the hourly target ventilation rate. + .. [#] If FanPower not provided, defaults to 0.35 W/cfm based on `ANSI/RESNET/ICC 301-2019 `_. + +.. _vent_fan_balanced: + +Balanced +~~~~~~~~ + +Each balanced (supply and exhaust) fan is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. + + ============================================================================================= ======== ======= =========== ======== ========= ========================================= + Element Type Units Constraints Required Default Notes + ============================================================================================= ======== ======= =========== ======== ========= ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``UsedForWholeBuildingVentilation`` boolean true Yes Ventilation fan use case [#]_ + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units [#]_ + ``FanType`` string balanced Yes Type of ventilation system + ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No See [#]_ Flow rate + ``HoursInOperation`` double hrs/day >= 0, <= 24 No 24 Hours per day of operation + ``FanPower`` double W >= 0 No See [#]_ Fan power + ============================================================================================= ======== ======= =========== ======== ========= ========================================= + + .. [#] All other UsedFor... elements (i.e., ``UsedForLocalVentilation``, ``UsedForSeasonalCoolingLoadReduction``, ``UsedForGarageVentilation``) must be omitted or false. + .. [#] Additional inputs for shared systems are described in :ref:`vent_fan_shared`. + .. [#] If flow rate not provided, defaults to the required mechanical ventilation rate per `ASHRAE 62.2-2019 `_: - .. [#] For a central fan integrated supply system, the flow rate should equal the amount of outdoor air provided to the distribution system, not the total airflow through the distribution system. - .. [#] HoursInOperation is optional unless the VentilationFan refers to the supplemental fan of a CFIS system, in which case it is not allowed. - .. [#] If HoursInOperation not provided, defaults to 24 (i.e., running continuously) for all system types other than central fan integrated supply (CFIS), and 8.0 (i.e., running intermittently) for CFIS systems. - For a CFIS system, the HoursInOperation and the flow rate are combined to form the hourly target ventilation rate (e.g., inputs of 90 cfm and 8 hrs/day produce an hourly target ventilation rate of 30 cfm). - For a CFIS system with a supplemental fan, the supplemental fan's runtime is automatically calculated for each hour (based on the air handler runtime) to maintain the hourly target ventilation rate. - .. [#] If FanPower not provided, defaults based on `ANSI/RESNET/ICC 301-2019 `_: + Qfan = Qtot - (Qinf * Aext) - \- **energy recovery ventilator, heat recovery ventilator, or shared system**: 1.0 W/cfm + where - \- **balanced**: 0.7 W/cfm + Qfan = required mechanical ventilation rate (cfm) - \- **central fan integrated supply**: 0.5 W/cfm + Qtot = total required ventilation rate (cfm) = 0.03 * ConditionedFloorArea + 7.5*(NumberofBedrooms + 1) - \- **exhaust only" or "supply only**: 0.35 W/cfm - -**Exhaust/Supply Only** - -If a supply only or exhaust only system is specified, no additional information is entered. - -**Balanced** + Qinf = infiltration rate (cfm) + + Aext = 1 if single-family detached or TypeOfInfiltrationLeakage is "unit exterior only", otherwise ratio of SFA/MF exterior envelope surface area to total envelope surface area as described in :ref:`air_infiltration` + + .. [#] If FanPower not provided, defaults to 0.7 W/cfm based on `ANSI/RESNET/ICC 301-2019 `_. -If a balanced system is specified, no additional information is entered. +.. _vent_fan_hrv: -**Heat Recovery Ventilator** +Heat Recovery Ventilator (HRV) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If a heat recovery ventilator system is specified, additional information is entered in ``VentilationFan``. +Each heat recovery ventilator (HRV) is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. - ======================================================================== ====== ===== =========== ======== ======= ======================================= - Element Type Units Constraints Required Default Notes - ======================================================================== ====== ===== =========== ======== ======= ======================================= - ``AdjustedSensibleRecoveryEfficiency`` or ``SensibleRecoveryEfficiency`` double frac > 0, <= 1 Yes (Adjusted) Sensible recovery efficiency [#]_ - ======================================================================== ====== ===== =========== ======== ======= ======================================= + ============================================================================================= ======== ======= ======================== ======== ========= ========================================= + Element Type Units Constraints Required Default Notes + ============================================================================================= ======== ======= ======================== ======== ========= ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``UsedForWholeBuildingVentilation`` boolean true Yes Ventilation fan use case [#]_ + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units [#]_ + ``FanType`` string heat recovery ventilator Yes Type of ventilation system + ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No See [#]_ Flow rate + ``HoursInOperation`` double hrs/day >= 0, <= 24 No 24 Hours per day of operation + ``AdjustedSensibleRecoveryEfficiency`` or ``SensibleRecoveryEfficiency`` double frac > 0, <= 1 Yes (Adjusted) Sensible recovery efficiency [#]_ + ``FanPower`` double W >= 0 No See [#]_ Fan power + ============================================================================================= ======== ======= ======================== ======== ========= ========================================= + .. [#] All other UsedFor... elements (i.e., ``UsedForLocalVentilation``, ``UsedForSeasonalCoolingLoadReduction``, ``UsedForGarageVentilation``) must be omitted or false. + .. [#] Additional inputs for shared systems are described in :ref:`vent_fan_shared`. + .. [#] If flow rate not provided, defaults to the required mechanical ventilation rate per `ASHRAE 62.2-2019 `_: + + Qfan = Qtot - (Qinf * Aext) + + where + + Qfan = required mechanical ventilation rate (cfm) + + Qtot = total required ventilation rate (cfm) = 0.03 * ConditionedFloorArea + 7.5*(NumberofBedrooms + 1) + + Qinf = infiltration rate (cfm) + + Aext = 1 if single-family detached or TypeOfInfiltrationLeakage is "unit exterior only", otherwise ratio of SFA/MF exterior envelope surface area to total envelope surface area as described in :ref:`air_infiltration` + .. [#] Providing AdjustedSensibleRecoveryEfficiency (ASRE) is preferable to SensibleRecoveryEfficiency (SRE). - -**Energy Recovery Ventilator** - -If an energy recovery ventilator system is specified, additional information is entered in ``VentilationFan``. - - ======================================================================== ====== ===== =========== ======== ======= ======================================= - Element Type Units Constraints Required Default Notes - ======================================================================== ====== ===== =========== ======== ======= ======================================= - ``AdjustedTotalRecoveryEfficiency`` or ``TotalRecoveryEfficiency`` double frac > 0, <= 1 Yes (Adjusted) Total recovery efficiency [#]_ - ``AdjustedSensibleRecoveryEfficiency`` or ``SensibleRecoveryEfficiency`` double frac > 0, <= 1 Yes (Adjusted) Sensible recovery efficiency [#]_ - ======================================================================== ====== ===== =========== ======== ======= ======================================= - + .. [#] If FanPower not provided, defaults to 1.0 W/cfm based on `ANSI/RESNET/ICC 301-2019 `_. + +.. _vent_fan_erv: + +Energy Recovery Ventilator (ERV) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Each energy recovery ventilator (ERV) is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. + + ============================================================================================= ======== ======= ========================== ======== ========= ========================================= + Element Type Units Constraints Required Default Notes + ============================================================================================= ======== ======= ========================== ======== ========= ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``UsedForWholeBuildingVentilation`` boolean true Yes Ventilation fan use case [#]_ + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units [#]_ + ``FanType`` string energy recovery ventilator Yes Type of ventilation system + ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No See [#]_ Flow rate + ``HoursInOperation`` double hrs/day >= 0, <= 24 No 24 Hours per day of operation + ``AdjustedTotalRecoveryEfficiency`` or ``TotalRecoveryEfficiency`` double frac > 0, <= 1 Yes (Adjusted) Total recovery efficiency [#]_ + ``AdjustedSensibleRecoveryEfficiency`` or ``SensibleRecoveryEfficiency`` double frac > 0, <= 1 Yes (Adjusted) Sensible recovery efficiency [#]_ + ``FanPower`` double W >= 0 No See [#]_ Fan power + ============================================================================================= ======== ======= ========================== ======== ========= ========================================= + + .. [#] All other UsedFor... elements (i.e., ``UsedForLocalVentilation``, ``UsedForSeasonalCoolingLoadReduction``, ``UsedForGarageVentilation``) must be omitted or false. + .. [#] Additional inputs for shared systems are described in :ref:`vent_fan_shared`. + .. [#] If flow rate not provided, defaults to the required mechanical ventilation rate per `ASHRAE 62.2-2019 `_: + + Qfan = Qtot - (Qinf * Aext) + + where + + Qfan = required mechanical ventilation rate (cfm) + + Qtot = total required ventilation rate (cfm) = 0.03 * ConditionedFloorArea + 7.5*(NumberofBedrooms + 1) + + Qinf = infiltration rate (cfm) + + Aext = 1 if single-family detached or TypeOfInfiltrationLeakage is "unit exterior only", otherwise ratio of SFA/MF exterior envelope surface area to total envelope surface area as described in :ref:`air_infiltration` + .. [#] Providing AdjustedTotalRecoveryEfficiency (ATRE) is preferable to TotalRecoveryEfficiency (TRE). .. [#] Providing AdjustedSensibleRecoveryEfficiency (ASRE) is preferable to SensibleRecoveryEfficiency (SRE). + .. [#] If FanPower not provided, defaults to 1.0 W/cfm based on `ANSI/RESNET/ICC 301-2019 `_. -**Central Fan Integrated Supply** - -If a central fan integrated supply (CFIS) system is specified, additional information is entered in ``VentilationFan``. +.. _vent_fan_cfis: - ================================================ ====== ===== =========== ======== =============== ================================== - Element Type Units Constraints Required Default Notes - ================================================ ====== ===== =========== ======== =============== ================================== - ``CFISControls/AdditionalRuntimeOperatingMode`` string See [#]_ No air handler fan How additional ventilation is provided (beyond when the HVAC system is running) - ``CFISControls/SupplementalFan`` idref See [#]_ See [#]_ The supplemental fan providing additional ventilation - ``AttachedToHVACDistributionSystem`` idref See [#]_ Yes ID of attached distribution system - ``extension/VentilationOnlyModeAirflowFraction`` double >= 0, <= 1 No 1.0 Blower airflow rate fraction during ventilation only mode [#]_ - ================================================ ====== ===== =========== ======== =============== ================================== +Central Fan Integrated Supply (CFIS) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Each central fan integrated supply (CFIS) system is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. + + ============================================================================================= ======== ======= ============================= ======== =============== ========================================= + Element Type Units Constraints Required Default Notes + ============================================================================================= ======== ======= ============================= ======== =============== ========================================= + ``SystemIdentifier`` id Yes Unique identifier + ``UsedForWholeBuildingVentilation`` boolean true Yes Ventilation fan use case [#]_ + ``FanType`` string central fan integrated supply Yes Type of ventilation system + ``CFISControls/AdditionalRuntimeOperatingMode`` string See [#]_ No air handler fan How additional ventilation is provided (beyond HVAC system operation) + ``CFISControls/SupplementalFan`` idref See [#]_ See [#]_ The supplemental fan providing additional ventilation + ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No See [#]_ Flow rate [#]_ + ``HoursInOperation`` double hrs/day >= 0, <= 24 false 8 Hours per day of operation [#]_ + ``FanPower`` double W >= 0 No See [#]_ Fan power + ``AttachedToHVACDistributionSystem`` idref See [#]_ Yes ID of attached distribution system + ``extension/VentilationOnlyModeAirflowFraction`` double >= 0, <= 1 No 1.0 Blower airflow rate fraction during ventilation only mode [#]_ + ============================================================================================= ======== ======= ============================= ======== =============== ========================================= + + .. [#] All other UsedFor... elements (i.e., ``UsedForLocalVentilation``, ``UsedForSeasonalCoolingLoadReduction``, ``UsedForGarageVentilation``) must be omitted or false. .. [#] AdditionalRuntimeOperatingMode choices are "air handler fan" or "supplemental fan". .. [#] SupplementalFan must reference another ``VentilationFan`` where UsedForWholeBuildingVentilation=true, IsSharedSystem=false, and FanType="exhaust only" or "supply only". .. [#] SupplementalFan only required if AdditionalRuntimeOperatingMode is "supplemental fan". - .. [#] HVACDistribution type cannot be HydronicDistribution. + .. [#] If flow rate not provided, defaults to the required mechanical ventilation rate per `ASHRAE 62.2-2019 `_: + + Qfan = Qtot - (Qinf/Qtot) * (Qinf * Aext) + + where + + Qfan = required mechanical ventilation rate (cfm) + + Qtot = total required ventilation rate (cfm) = 0.03 * ConditionedFloorArea + 7.5*(NumberofBedrooms + 1) + + Qinf = infiltration rate (cfm) + + Aext = 1 if single-family detached or TypeOfInfiltrationLeakage is "unit exterior only", otherwise ratio of SFA/MF exterior envelope surface area to total envelope surface area as described in :ref:`air_infiltration` + + .. [#] The flow rate should equal the amount of outdoor air provided to the distribution system, not the total airflow through the distribution system. + .. [#] The HoursInOperation and the flow rate are combined to form the hourly target ventilation rate (e.g., inputs of 90 cfm and 8 hrs/day produce an hourly target ventilation rate of 30 cfm). + .. [#] If FanPower not provided, defaults to 0.5 W/cfm based on `ANSI/RESNET/ICC 301-2019 `_. + .. [#] HVACDistribution type cannot be :ref:`hvac_distribution_hydronic`. .. [#] Blower airflow rate when operating in ventilation only mode (i.e., not heating or cooling mode), as a fraction of the maximum blower airflow rate. This value will depend on whether the blower fan can operate at reduced airflow rates during ventilation only operation. It is used to determine how much conditioned air is recirculated through ducts during ventilation only operation, resulting in additional duct losses. @@ -2741,7 +3146,10 @@ If a central fan integrated supply (CFIS) system is specified, additional inform CFIS systems are automated controllers that use the HVAC system's air handler fan to draw in outdoor air to meet an hourly ventilation target. CFIS systems are modeled as assuming they A) maximize the use of normal heating/cooling runtime operation to meet the hourly ventilation target, B) block the flow of outdoor air when the hourly ventilation target has been met, and C) provide additional runtime operation (via air handler fan or supplemental fan) to meet the remainder of the hourly ventilation target when space heating/cooling runtime alone is not sufficient. -**Shared System** +.. _vent_fan_shared: + +Shared System +~~~~~~~~~~~~~ If the specified system is a shared system (i.e., serving multiple dwelling units), additional information is entered in ``VentilationFan``. @@ -2784,17 +3192,16 @@ If pre-cooling is specified for the shared system, additional information is ent .. [#] Fuel only choice is "electricity". -.. _localventilation: - -Local Ventilation Fan -~~~~~~~~~~~~~~~~~~~~~ +HPXML Local Ventilation Fans +**************************** -Each kitchen range fan or bathroom fan that provides local ventilation is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan[UsedForLocalVentilation=true]``. -If not entered, the simulation will not include kitchen/bathroom fans. +Each fan that provides local ventilation (e.g., kitchen range fan or bathroom fan) is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. ============================================================================================= ======= ======= =========== ======== ======== ============================= Element Type Units Constraints Required Default Notes ============================================================================================= ======= ======= =========== ======== ======== ============================= + ``SystemIdentifier`` id Yes Unique identifier + ``UsedForLocalVentilation`` boolean true Yes Ventilation fan use case [#]_ ``Count`` integer >= 0 No See [#]_ Number of identical fans ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No See [#]_ Flow rate to outside [#]_ ``HoursInOperation`` double hrs/day >= 0, <= 24 No See [#]_ Hours per day of operation @@ -2803,6 +3210,7 @@ If not entered, the simulation will not include kitchen/bathroom fans. ``extension/StartHour`` integer >= 0, <= 23 No See [#]_ Daily start hour of operation ============================================================================================= ======= ======= =========== ======== ======== ============================= + .. [#] All other UsedFor... elements (i.e., ``UsedForWholeBuildingVentilation``, ``UsedForSeasonalCoolingLoadReduction``, ``UsedForGarageVentilation``) must be omitted or false. .. [#] If Count not provided, defaults to 1 for kitchen fans and NumberofBathrooms for bath fans based on the `2010 BAHSP `_. .. [#] If flow rate not provided, defaults to 100 cfm for kitchen fans and 50 cfm for bath fans based on the `2010 BAHSP `_. .. [#] If the kitchen range fan is a recirculating fan, the flow rate should be described as zero. @@ -2811,21 +3219,21 @@ If not entered, the simulation will not include kitchen/bathroom fans. .. [#] If FanPower not provided, defaults to 0.3 W/cfm based on the `2010 BAHSP `_. .. [#] If StartHour not provided, defaults to 18 (6pm) for kitchen fans and 7 (7am) for bath fans based on the `2010 BAHSP `_. -.. _wholehousefan: - -Whole House Fan -~~~~~~~~~~~~~~~ +HPXML Whole House Fans +********************** -Each whole house fan that provides cooling load reduction is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan[UsedForSeasonalCoolingLoadReduction=true]``. -If not entered, the simulation will not include whole house fans. +Each whole house fan that provides cooling load reduction is entered as a ``/HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan``. ============================================================================================= ======= ======= =========== ======== ====================== ========================== Element Type Units Constraints Required Default Notes ============================================================================================= ======= ======= =========== ======== ====================== ========================== - ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No ConditionedFloorArea*2 Flow rate + ``SystemIdentifier`` id Yes Unique identifier + ``UsedForSeasonalCoolingLoadReduction`` boolean true Yes Ventilation fan use case [#]_ + ``RatedFlowRate`` or ``TestedFlowRate`` or ``CalculatedFlowRate`` or ``DeliveredVentilation`` double cfm >= 0 No 2*ConditionedFloorArea Flow rate ``FanPower`` double W >= 0 No See [#]_ Fan power ============================================================================================= ======= ======= =========== ======== ====================== ========================== + .. [#] All other UsedFor... elements (i.e., ``UsedForWholeBuildingVentilation``, ``UsedForLocalVentilation``, ``UsedForGarageVentilation``) must be omitted or false. .. [#] If FanPower not provided, defaults to 0.1 W/cfm. .. note:: @@ -2837,23 +3245,45 @@ If not entered, the simulation will not include whole house fans. HPXML Water Heating Systems *************************** -Each water heater is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem``. +The following water heater types can be modeled: + +- :ref:`water_heater_storage` +- :ref:`water_heater_tankless` +- :ref:`water_heater_heat_pump` +- :ref:`water_heater_combi_storage` +- :ref:`water_heater_combi_tankless_coil` + If not entered, the simulation will not include water heating. - ========================= ======= ======= =============== ======== ======== ================================================================ - Element Type Units Constraints Required Default Notes - ========================= ======= ======= =============== ======== ======== ================================================================ - ``SystemIdentifier`` id Yes Unique identifier - ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units or shared laundry room - ``WaterHeaterType`` string See [#]_ Yes Type of water heater - ``Location`` string See [#]_ No See [#]_ Water heater location - ``FractionDHWLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of hot water load served [#]_ - ``HotWaterTemperature`` double F > 0 No 125 Water heater setpoint [#]_ - ``UsesDesuperheater`` boolean No false Presence of desuperheater? - ``NumberofUnitsServed`` integer > 0 See [#]_ Number of dwelling units served directly or indirectly - ========================= ======= ======= =============== ======== ======== ================================================================ - - .. [#] WaterHeaterType choices are "storage water heater", "instantaneous water heater", "heat pump water heater", "space-heating boiler with storage tank", or "space-heating boiler with tankless coil". +.. _water_heater_storage: + +Conventional Storage +~~~~~~~~~~~~~~~~~~~~ + +Each conventional storage water heater is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem``. + + ============================================= ================= ============= ==================== ======== ======== ============================================= + Element Type Units Constraints Required Default Notes + ============================================= ================= ============= ==================== ======== ======== ============================================= + ``SystemIdentifier`` id Yes Unique identifier + ``FuelType`` string See [#]_ Yes Fuel type + ``WaterHeaterType`` string storage water heater Yes Type of water heater + ``Location`` string See [#]_ No See [#]_ Water heater location + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units or shared laundry room + ``NumberofUnitsServed`` integer > 0 See [#]_ Number of dwelling units served directly or indirectly + ``TankVolume`` double gal > 0 No See [#]_ Nominal tank volume + ``FractionDHWLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of hot water load served [#]_ + ``HeatingCapacity`` double Btu/hr > 0 No See [#]_ Heating capacity + ``UniformEnergyFactor`` or ``EnergyFactor`` double frac < 1 Yes EnergyGuide label rated efficiency + ``UsageBin`` or ``FirstHourRating`` string or double str or gal/hr See [#]_ or > 0 No See [#]_ EnergyGuide label usage bin/first hour rating + ``RecoveryEfficiency`` double frac > 0, <= 1 [#]_ No See [#]_ Recovery efficiency + ``WaterHeaterInsulation/Jacket/JacketRValue`` double F-ft2-hr/Btu >= 0 No 0 R-value of additional tank insulation wrap + ``HotWaterTemperature`` double F > 0 No 125 Water heater setpoint [#]_ + ``UsesDesuperheater`` boolean No false Presence of desuperheater? [#]_ + ``extension/TankModelType`` string See [#]_ No mixed Tank model type + ============================================= ================= ============= ==================== ======== ======== ============================================= + + .. [#] FuelType choices are "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "anthracite coal", "electricity", "wood", or "wood pellets". .. [#] Location choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", or "other non-freezing space". See :ref:`hpxmllocations` for descriptions. .. [#] If Location not provided, defaults to the first present space type: @@ -2862,32 +3292,11 @@ If not entered, the simulation will not include water heating. \- **IECC zones 3A, 4-8, unknown**: "basement - conditioned", "basement - unconditioned", "conditioned space" + .. [#] NumberofUnitsServed only required if IsSharedSystem is true, in which case it must be > 1. + .. [#] If TankVolume not provided, defaults based on Table 8 in the `2014 BAHSP `_. .. [#] The sum of all ``FractionDHWLoadServed`` (across all WaterHeatingSystems) must equal to 1. .. [#] FractionDHWLoadServed represents only the fraction of the hot water load associated with the hot water **fixtures**. Additional hot water load from clothes washers/dishwashers will be automatically assigned to the appropriate water heater(s). - .. [#] The water heater setpoint can alternatively be defined using :ref:`detailedschedules`. - .. [#] NumberofUnitsServed only required if IsSharedSystem is true, in which case it must be > 1. - -Conventional Storage -~~~~~~~~~~~~~~~~~~~~ - -If a conventional storage water heater is specified, additional information is entered in ``WaterHeatingSystem``. - - ============================================= ================= ============= =============== ======== ======== ============================================= - Element Type Units Constraints Required Default Notes - ============================================= ================= ============= =============== ======== ======== ============================================= - ``FuelType`` string See [#]_ Yes Fuel type - ``TankVolume`` double gal > 0 No See [#]_ Nominal tank volume - ``HeatingCapacity`` double Btu/hr > 0 No See [#]_ Heating capacity - ``UniformEnergyFactor`` or ``EnergyFactor`` double frac < 1 Yes EnergyGuide label rated efficiency - ``UsageBin`` or ``FirstHourRating`` string or double str or gal/hr See [#]_ or > 0 No See [#]_ EnergyGuide label usage bin/first hour rating - ``RecoveryEfficiency`` double frac > 0, <= 1 [#]_ No See [#]_ Recovery efficiency - ``WaterHeaterInsulation/Jacket/JacketRValue`` double F-ft2-hr/Btu >= 0 No 0 R-value of additional tank insulation wrap - ``extension/TankModelType`` string See [#]_ No mixed Tank model type - ============================================= ================= ============= =============== ======== ======== ============================================= - - .. [#] FuelType choices are "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "anthracite coal", "electricity", "wood", or "wood pellets". - .. [#] If TankVolume not provided, defaults based on Table 8 in the `2014 BAHSP `_. .. [#] If HeatingCapacity not provided, defaults based on Table 8 in the `2014 BAHSP `_. .. [#] UsageBin choices are "very small", "low", "medium", or "high". .. [#] UsageBin/FirstHourRating are only used for water heaters that use UniformEnergyFactor. @@ -2902,78 +3311,173 @@ If a conventional storage water heater is specified, additional information is e \- **Non-electric, EnergyFactor >= 0.75**: 0.561 * EnergyFactor + 0.439 + .. [#] The water heater setpoint can alternatively be defined using :ref:`schedules_detailed`. + .. [#] Additional desuperheater inputs are described in :ref:`water_heater_desuperheater`. .. [#] TankModelType choices are "mixed" or "stratified". +.. _water_heater_tankless: + Tankless ~~~~~~~~ -If an instantaneous tankless water heater is specified, additional information is entered in ``WaterHeatingSystem``. +Each instantaneous tankless water heater is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem``. + + =========================================== ======= ============ ========================== ============ ======== ========================================================== + Element Type Units Constraints Required Default Notes + =========================================== ======= ============ ========================== ============ ======== ========================================================== + ``SystemIdentifier`` id Yes Unique identifier + ``FuelType`` string See [#]_ Yes Fuel type + ``WaterHeaterType`` string instantaneous water heater Yes Type of water heater + ``Location`` string See [#]_ No See [#]_ Water heater location + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units or shared laundry room + ``NumberofUnitsServed`` integer > 0 See [#]_ Number of dwelling units served directly or indirectly + ``PerformanceAdjustment`` double frac >= 0, <= 1 No See [#]_ Multiplier on efficiency, typically to account for cycling + ``FractionDHWLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of hot water load served [#]_ + ``UniformEnergyFactor`` or ``EnergyFactor`` double frac < 1 Yes EnergyGuide label rated efficiency + ``HotWaterTemperature`` double F > 0 No 125 Water heater setpoint [#]_ + ``UsesDesuperheater`` boolean No false Presence of desuperheater? [#]_ + =========================================== ======= ============ ========================== ============ ======== ========================================================== - =========================================== ======= ============ =========== ============ ======== ========================================================== - Element Type Units Constraints Required Default Notes - =========================================== ======= ============ =========== ============ ======== ========================================================== - ``FuelType`` string See [#]_ Yes Fuel type - ``PerformanceAdjustment`` double frac >= 0, <= 1 No See [#]_ Multiplier on efficiency, typically to account for cycling - ``UniformEnergyFactor`` or ``EnergyFactor`` double frac < 1 Yes EnergyGuide label rated efficiency - =========================================== ======= ============ =========== ============ ======== ========================================================== - .. [#] FuelType choices are "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "anthracite coal", "electricity", "wood", or "wood pellets". + .. [#] Location choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", or "other non-freezing space". + See :ref:`hpxmllocations` for descriptions. + .. [#] If Location not provided, defaults to the first present space type: + + \- **IECC zones 1-3, excluding 3A**: "garage", "conditioned space" + + \- **IECC zones 3A, 4-8, unknown**: "basement - conditioned", "basement - unconditioned", "conditioned space" + + .. [#] NumberofUnitsServed only required if IsSharedSystem is true, in which case it must be > 1. .. [#] If PerformanceAdjustment not provided, defaults to 0.94 (UEF) or 0.92 (EF) based on `ANSI/RESNET/ICC 301-2019 `_. + .. [#] The sum of all ``FractionDHWLoadServed`` (across all WaterHeatingSystems) must equal to 1. + .. [#] FractionDHWLoadServed represents only the fraction of the hot water load associated with the hot water **fixtures**. + Additional hot water load from clothes washers/dishwashers will be automatically assigned to the appropriate water heater(s). + .. [#] The water heater setpoint can alternatively be defined using :ref:`schedules_detailed`. + .. [#] Additional desuperheater inputs are described in :ref:`water_heater_desuperheater`. + +.. _water_heater_heat_pump: Heat Pump ~~~~~~~~~ -If a heat pump water heater is specified, additional information is entered in ``WaterHeatingSystem``. +Each heat pump water heater is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem``. + + ============================================= ================ ============= ====================== ======== =========== ============================================= + Element Type Units Constraints Required Default Notes + ============================================= ================ ============= ====================== ======== =========== ============================================= + ``SystemIdentifier`` id Yes Unique identifier + ``FuelType`` string electricity Yes Fuel type + ``WaterHeaterType`` string heat pump water heater Yes Type of water heater + ``Location`` string See [#]_ No See [#]_ Water heater location + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units or shared laundry room + ``NumberofUnitsServed`` integer > 0 See [#]_ Number of dwelling units served directly or indirectly + ``TankVolume`` double gal > 0 Yes Nominal tank volume + ``FractionDHWLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of hot water load served [#]_ + ``UniformEnergyFactor`` or ``EnergyFactor`` double frac > 1, <= 5 Yes EnergyGuide label rated efficiency + ``HPWHOperatingMode`` string See [#]_ No hybrid/auto Operating mode [#]_ + ``UsageBin`` or ``FirstHourRating`` string or double str or gal/hr See [#]_ or > 0 No See [#]_ EnergyGuide label usage bin/first hour rating + ``WaterHeaterInsulation/Jacket/JacketRValue`` double F-ft2-hr/Btu >= 0 No 0 R-value of additional tank insulation wrap + ``HotWaterTemperature`` double F > 0 No 125 Water heater setpoint [#]_ + ``UsesDesuperheater`` boolean No false Presence of desuperheater? [#]_ + ============================================= ================ ============= ====================== ======== =========== ============================================= - ============================================= ================ ============= =============== ======== =========== ============================================= - Element Type Units Constraints Required Default Notes - ============================================= ================ ============= =============== ======== =========== ============================================= - ``FuelType`` string See [#]_ Yes Fuel type - ``TankVolume`` double gal > 0 Yes Nominal tank volume - ``UniformEnergyFactor`` or ``EnergyFactor`` double frac > 1, <= 5 Yes EnergyGuide label rated efficiency - ``HPWHOperatingMode`` string See [#]_ No hybrid/auto Operating mode [#]_ - ``UsageBin`` or ``FirstHourRating`` string or double str or gal/hr See [#]_ or > 0 No See [#]_ EnergyGuide label usage bin/first hour rating - ``WaterHeaterInsulation/Jacket/JacketRValue`` double F-ft2-hr/Btu >= 0 No 0 R-value of additional tank insulation wrap - ============================================= ================ ============= =============== ======== =========== ============================================= + .. [#] Location choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", or "other non-freezing space". + See :ref:`hpxmllocations` for descriptions. + .. [#] If Location not provided, defaults to the first present space type: + + \- **IECC zones 1-3, excluding 3A**: "garage", "conditioned space" + + \- **IECC zones 3A, 4-8, unknown**: "basement - conditioned", "basement - unconditioned", "conditioned space" - .. [#] FuelType only choice is "electricity". + .. [#] NumberofUnitsServed only required if IsSharedSystem is true, in which case it must be > 1. + .. [#] The sum of all ``FractionDHWLoadServed`` (across all WaterHeatingSystems) must equal to 1. + .. [#] FractionDHWLoadServed represents only the fraction of the hot water load associated with the hot water **fixtures**. + Additional hot water load from clothes washers/dishwashers will be automatically assigned to the appropriate water heater(s). .. [#] HPWHOperatingMode choices are "hybrid/auto" or "heat pump only". - .. [#] The heat pump water heater operating mode can alternatively be defined using :ref:`detailedschedules`. + .. [#] The heat pump water heater operating mode can alternatively be defined using :ref:`schedules_detailed`. .. [#] UsageBin choices are "very small", "low", "medium", or "high". .. [#] UsageBin/FirstHourRating are only used for water heaters that use UniformEnergyFactor. If neither UsageBin nor FirstHourRating provided, UsageBin defaults to "medium". If FirstHourRating provided and UsageBin not provided, UsageBin is determined based on the FirstHourRating value. + .. [#] The water heater setpoint can alternatively be defined using :ref:`schedules_detailed`. + .. [#] Additional desuperheater inputs are described in :ref:`water_heater_desuperheater`. + +.. _water_heater_combi_storage: Combi Boiler w/ Storage ~~~~~~~~~~~~~~~~~~~~~~~ -If a combination boiler w/ storage tank (sometimes referred to as an indirect water heater) is specified, additional information is entered in ``WaterHeatingSystem``. - - ============================================= ======= ============ =========== ============ ======== ================================================== - Element Type Units Constraints Required Default Notes - ============================================= ======= ============ =========== ============ ======== ================================================== - ``RelatedHVACSystem`` idref See [#]_ Yes ID of boiler - ``TankVolume`` double gal > 0 Yes Nominal volume of the storage tank - ``WaterHeaterInsulation/Jacket/JacketRValue`` double F-ft2-hr/Btu >= 0 No 0 R-value of additional storage tank insulation wrap - ``StandbyLoss[Units="F/hr"]/Value`` double F/hr > 0 No See [#]_ Storage tank standby losses - ============================================= ======= ============ =========== ============ ======== ================================================== +Each combination boiler w/ storage tank (sometimes referred to as an indirect water heater) is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem``. + + ============================================= ======= ============ ====================================== ============ ======== ================================================== + Element Type Units Constraints Required Default Notes + ============================================= ======= ============ ====================================== ============ ======== ================================================== + ``SystemIdentifier`` id Yes Unique identifier + ``WaterHeaterType`` string space-heating boiler with storage tank Yes Type of water heater + ``Location`` string See [#]_ No See [#]_ Water heater location + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units or shared laundry room + ``NumberofUnitsServed`` integer > 0 See [#]_ Number of dwelling units served directly or indirectly + ``TankVolume`` double gal > 0 Yes Nominal volume of the storage tank + ``FractionDHWLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of hot water load served [#]_ + ``WaterHeaterInsulation/Jacket/JacketRValue`` double F-ft2-hr/Btu >= 0 No 0 R-value of additional storage tank insulation wrap + ``StandbyLoss[Units="F/hr"]/Value`` double F/hr > 0 No See [#]_ Storage tank standby losses + ``HotWaterTemperature`` double F > 0 No 125 Water heater setpoint [#]_ + ``RelatedHVACSystem`` idref See [#]_ Yes ID of boiler + ============================================= ======= ============ ====================================== ============ ======== ================================================== - .. [#] RelatedHVACSystem must reference a ``HeatingSystem`` (Boiler). + .. [#] Location choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", or "other non-freezing space". + See :ref:`hpxmllocations` for descriptions. + .. [#] If Location not provided, defaults to the first present space type: + + \- **IECC zones 1-3, excluding 3A**: "garage", "conditioned space" + + \- **IECC zones 3A, 4-8, unknown**: "basement - conditioned", "basement - unconditioned", "conditioned space" + + .. [#] NumberofUnitsServed only required if IsSharedSystem is true, in which case it must be > 1. + .. [#] The sum of all ``FractionDHWLoadServed`` (across all WaterHeatingSystems) must equal to 1. + .. [#] FractionDHWLoadServed represents only the fraction of the hot water load associated with the hot water **fixtures**. + Additional hot water load from clothes washers/dishwashers will be automatically assigned to the appropriate water heater(s). .. [#] If StandbyLoss not provided, defaults based on a regression analysis of `AHRI Directory of Certified Product Performance `_. + .. [#] The water heater setpoint can alternatively be defined using :ref:`schedules_detailed`. + .. [#] RelatedHVACSystem must reference a ``HeatingSystem`` (Boiler). + +.. _water_heater_combi_tankless_coil: Combi Boiler w/ Tankless Coil ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If a combination boiler w/ tankless coil is specified, additional information is entered in ``WaterHeatingSystem``. - - ===================== ======= ============ =========== ============ ======== ================================================== - Element Type Units Constraints Required Default Notes - ===================== ======= ============ =========== ============ ======== ================================================== - ``RelatedHVACSystem`` idref See [#]_ Yes ID of boiler - ===================== ======= ============ =========== ============ ======== ================================================== +Each combination boiler w/ tankless coil is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem``. + + ========================= ======= ===== ======================================= ============ ======== ================================================== + Element Type Units Constraints Required Default Notes + ========================= ======= ===== ======================================= ============ ======== ================================================== + ``SystemIdentifier`` id Yes Unique identifier + ``WaterHeaterType`` string space-heating boiler with tankless coil Yes Type of water heater + ``Location`` string See [#]_ No See [#]_ Water heater location + ``IsSharedSystem`` boolean No false Whether it serves multiple dwelling units or shared laundry room + ``NumberofUnitsServed`` integer > 0 See [#]_ Number of dwelling units served directly or indirectly + ``FractionDHWLoadServed`` double frac >= 0, <= 1 [#]_ Yes Fraction of hot water load served [#]_ + ``HotWaterTemperature`` double F > 0 No 125 Water heater setpoint [#]_ + ``RelatedHVACSystem`` idref See [#]_ Yes ID of boiler + ========================= ======= ===== ======================================= ============ ======== ================================================== + .. [#] Location choices are "conditioned space", "basement - unconditioned", "basement - conditioned", "attic - unvented", "attic - vented", "garage", "crawlspace - unvented", "crawlspace - vented", "crawlspace - conditioned", "other exterior", "other housing unit", "other heated space", "other multifamily buffer space", or "other non-freezing space". + See :ref:`hpxmllocations` for descriptions. + .. [#] If Location not provided, defaults to the first present space type: + + \- **IECC zones 1-3, excluding 3A**: "garage", "conditioned space" + + \- **IECC zones 3A, 4-8, unknown**: "basement - conditioned", "basement - unconditioned", "conditioned space" + + .. [#] NumberofUnitsServed only required if IsSharedSystem is true, in which case it must be > 1. + .. [#] The sum of all ``FractionDHWLoadServed`` (across all WaterHeatingSystems) must equal to 1. + .. [#] FractionDHWLoadServed represents only the fraction of the hot water load associated with the hot water **fixtures**. + Additional hot water load from clothes washers/dishwashers will be automatically assigned to the appropriate water heater(s). + .. [#] The water heater setpoint can alternatively be defined using :ref:`schedules_detailed`. .. [#] RelatedHVACSystem must reference a ``HeatingSystem`` (Boiler). +.. _water_heater_desuperheater: + Desuperheater ~~~~~~~~~~~~~ @@ -2994,39 +3498,35 @@ If the water heater uses a desuperheater, additional information is entered in ` HPXML Hot Water Distribution **************************** -If any water heating systems are provided, a single hot water distribution system is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/HotWaterDistribution``. +If any water heating systems are provided, a single hot water distribution system can be described: - ================================= ======= ============ =========== ======== ======== ======================================================================= - Element Type Units Constraints Required Default Notes - ================================= ======= ============ =========== ======== ======== ======================================================================= - ``SystemIdentifier`` id Yes Unique identifier - ``SystemType`` element See [#]_ Yes Type of in-unit distribution system serving the dwelling unit - ``PipeInsulation/PipeRValue`` double F-ft2-hr/Btu >= 0 No 0.0 Pipe insulation R-value - ``DrainWaterHeatRecovery`` element No Presence of drain water heat recovery device - ``extension/SharedRecirculation`` element See [#]_ No Presence of shared recirculation system serving multiple dwelling units - ================================= ======= ============ =========== ======== ======== ======================================================================= +- :ref:`hot_water_dist_standard` +- :ref:`hot_water_dist_recirc` +- :ref:`hot_water_dist_recirc_shared` - .. [#] SystemType child element choices are ``Standard`` and ``Recirculation``. - .. [#] If SharedRecirculation is provided, SystemType must be ``Standard``. - This is because a stacked recirculation system (i.e., shared recirculation loop plus an additional in-unit recirculation system) is more likely to indicate input errors than reflect an actual real-world scenario. +Hot water distribution systems are modeled according to the Energy Rating Rated Home in `ANSI/RESNET/ICC 301-2019 `_. .. note:: In attached/multifamily buildings, only the hot water distribution system serving the dwelling unit should be defined. The hot water distribution associated with, e.g., a shared laundry room should not be defined. -Hot water distribution systems are modeled according to the Energy Rating Rated Home in `ANSI/RESNET/ICC 301-2019 `_. +.. _hot_water_dist_standard: Standard ~~~~~~~~ -If the in-unit distribution system is specified as standard, additional information is entered in ``SystemType/Standard``. +A standard hot water distribution system is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/HotWaterDistribution``. - ================ ======= ===== =========== ======== ======== ===================== - Element Type Units Constraints Required Default Notes - ================ ======= ===== =========== ======== ======== ===================== - ``PipingLength`` double ft > 0 No See [#]_ Length of piping [#]_ - ================ ======= ===== =========== ======== ======== ===================== + ==================================== ======= ============ =========== ======== ======== ===================== + Element Type Units Constraints Required Default Notes + ==================================== ======= ============ =========== ======== ======== ===================== + ``SystemIdentifier`` id Yes Unique identifier + ``SystemType/Standard`` element Yes Type of distribution system + ``SystemType/Standard/PipingLength`` double ft > 0 No See [#]_ Length of piping [#]_ + ``PipeInsulation/PipeRValue`` double F-ft2-hr/Btu >= 0 No 0.0 Pipe insulation R-value + ``DrainWaterHeatRecovery`` element No Presence of drain water heat recovery device [#]_ + ==================================== ======= ============ =========== ======== ======== ===================== .. [#] If PipingLength not provided, calculated using the following equation from `ANSI/RESNET/ICC 301-2019 `_: @@ -3040,21 +3540,28 @@ If the in-unit distribution system is specified as standard, additional informat Bsmnt = presence (1.0) or absence (0.0) of an unconditioned basement in the residence. - .. [#] PipingLength is the length of hot water piping from the hot water heater (or from a shared recirculation loop serving multiple dwelling units) to the farthest hot water fixture, measured longitudinally from plans, assuming the hot water piping does not run diagonally, plus 10 feet of piping for each floor level, plus 5 feet of piping for unconditioned basements (if any). + .. [#] PipingLength is the length of hot water piping from the hot water heater to the farthest hot water fixture, measured longitudinally from plans, assuming the hot water piping does not run diagonally, plus 10 feet of piping for each floor level, plus 5 feet of piping for unconditioned basements (if any). + .. [#] Additional drain water heat recovery inputs are described in :ref:`water_heater_dwhr`. -Recirculation -~~~~~~~~~~~~~ +.. _hot_water_dist_recirc: -If the in-unit distribution system is specified as recirculation, additional information is entered in ``SystemType/Recirculation``. +Recirculation (In-Unit) +~~~~~~~~~~~~~~~~~~~~~~~ - ================================= ======= ===== =========== ======== ======== ===================================== - Element Type Units Constraints Required Default Notes - ================================= ======= ===== =========== ======== ======== ===================================== - ``ControlType`` string See [#]_ Yes Recirculation control type - ``RecirculationPipingLoopLength`` double ft > 0 No See [#]_ Recirculation piping loop length [#]_ - ``BranchPipingLength`` double ft > 0 No 10 Branch piping length [#]_ - ``PumpPower`` double W >= 0 No 50 [#]_ Recirculation pump power - ================================= ======= ===== =========== ======== ======== ===================================== +An in-unit recirculation hot water distribution system is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/HotWaterDistribution``. + + ========================================================== ======= ============ =========== ======== ======== ===================================== + Element Type Units Constraints Required Default Notes + ========================================================== ======= ============ =========== ======== ======== ===================================== + ``SystemIdentifier`` id Yes Unique identifier + ``SystemType/Recirculation`` element Yes Type of distribution system + ``SystemType/Recirculation/ControlType`` string See [#]_ Yes Recirculation control type + ``SystemType/Recirculation/RecirculationPipingLoopLength`` double ft > 0 No See [#]_ Recirculation piping loop length [#]_ + ``SystemType/Recirculation/BranchPipingLength`` double ft > 0 No 10 Branch piping length [#]_ + ``SystemType/Recirculation/PumpPower`` double W >= 0 No 50 [#]_ Recirculation pump power + ``PipeInsulation/PipeRValue`` double F-ft2-hr/Btu >= 0 Yes Pipe insulation R-value + ``DrainWaterHeatRecovery`` element No Presence of drain water heat recovery device [#]_ + ========================================================== ======= ============ =========== ======== ======== ===================================== .. [#] ControlType choices are "manual demand control", "presence sensor demand control", "temperature", "timer", or "no control". @@ -3083,23 +3590,52 @@ If the in-unit distribution system is specified as recirculation, additional inf .. [#] RecirculationPipingLoopLength is the recirculation loop length including both supply and return sides, measured longitudinally from plans, assuming the hot water piping does not run diagonally, plus 20 feet of piping for each floor level greater than one plus 10 feet of piping for unconditioned basements. .. [#] BranchPipingLength is the length of the branch hot water piping from the recirculation loop to the farthest hot water fixture from the recirculation loop, measured longitudinally from plans, assuming the branch hot water piping does not run diagonally. .. [#] PumpPower default based on `ANSI/RESNET/ICC 301-2019 `_. + .. [#] Additional drain water heat recovery inputs are described in :ref:`water_heater_dwhr`. -Shared Recirculation -~~~~~~~~~~~~~~~~~~~~ +.. _hot_water_dist_recirc_shared: -If a shared recirculation system is specified, additional information is entered in ``extension/SharedRecirculation``. +Recirculation (Shared) +~~~~~~~~~~~~~~~~~~~~~~ - ======================= ======= ===== =========== ======== ======== ================================= - Element Type Units Constraints Required Default Notes - ======================= ======= ===== =========== ======== ======== ================================= - ``NumberofUnitsServed`` integer > 1 Yes Number of dwelling units served - ``PumpPower`` double W >= 0 No 220 [#]_ Shared recirculation pump power - ``ControlType`` string See [#]_ Yes Shared recirculation control type - ======================= ======= ===== =========== ======== ======== ================================= +A shared recirculation hot water distribution system (serving multiple dwelling units) is entered as a ``/HPXML/Building/BuildingDetails/Systems/WaterHeating/HotWaterDistribution``. + + ===================================================== ======= ============ =========== ======== ======== ===================== + Element Type Units Constraints Required Default Notes + ===================================================== ======= ============ =========== ======== ======== ===================== + ``SystemIdentifier`` id Yes Unique identifier + ``SystemType/Standard`` element Yes Type of distribution system + ``SystemType/Standard/PipingLength`` double ft > 0 No See [#]_ Length of piping [#]_ + ``PipeInsulation/PipeRValue`` double F-ft2-hr/Btu >= 0 No 0.0 Pipe insulation R-value + ``DrainWaterHeatRecovery`` element No Presence of drain water heat recovery device [#]_ + ``extension/SharedRecirculation/NumberofUnitsServed`` integer > 1 Yes Number of dwelling units served + ``extension/SharedRecirculation/PumpPower`` double W >= 0 No 220 [#]_ Shared recirculation pump power + ``extension/SharedRecirculation/ControlType`` string See [#]_ Yes Shared recirculation control type + ===================================================== ======= ============ =========== ======== ======== ===================== + .. [#] If PipingLength not provided, calculated using the following equation from `ANSI/RESNET/ICC 301-2019 `_: + + PipeL = 2.0 * (CFA / NCfl)^0.5 + 10.0 * NCfl + 5.0 * Bsmnt + + where + + CFA = conditioned floor area [ft2], + + NCfl = number of conditioned floor levels number of conditioned floor levels in the residence including conditioned basements, + + Bsmnt = presence (1.0) or absence (0.0) of an unconditioned basement in the residence. + + .. [#] PipingLength is the length of hot water piping from the shared recirculation loop to the farthest hot water fixture, measured longitudinally from plans, assuming the hot water piping does not run diagonally, plus 10 feet of piping for each floor level, plus 5 feet of piping for unconditioned basements (if any). + .. [#] Additional drain water heat recovery inputs are described in :ref:`water_heater_dwhr`. .. [#] PumpPower default based on `ANSI/RESNET/ICC 301-2019 `_. .. [#] ControlType choices are "manual demand control", "presence sensor demand control", "temperature", "timer", or "no control". +.. note:: + + The shared recirculation system is required to have a standard in-unit hot water distribution system; + stacked recirculation systems (i.e., shared recirculation loop plus an additional in-unit recirculation system) are more likely to indicate input errors than reflect an actual real-world scenario. + +.. _water_heater_dwhr: + Drain Water Heat Recovery ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -3151,41 +3687,37 @@ Additional information can be entered in ``/HPXML/Building/BuildingDetails/Syste ``extension/WaterFixturesMonthlyScheduleMultipliers`` array No See [#]_ 12 comma-separated monthly multipliers ===================================================== ======= ===== =========== ======== ======== =============================================== - .. [#] If WaterFixturesWeekdayScheduleFractions or WaterFixturesWeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figures 9-11 of the `2010 BAHSP `_ are used: "0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.087, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.039, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026". - .. [#] If WaterFixturesMonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values are used: "1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0". + .. [#] If WaterFixturesWeekdayScheduleFractions or WaterFixturesWeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figures 9-11 of the `2010 BAHSP `_ are used: "0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.087, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.039, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026". + .. [#] If WaterFixturesMonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values are used: "1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0". Water fixture hot water use is calculated per the Energy Rating Rated Home in `ANSI/RESNET/ICC 301-2019 `_. HPXML Solar Thermal ******************* -A single solar hot water system can be entered as a ``/HPXML/Building/BuildingDetails/Systems/SolarThermal/SolarThermalSystem``. -If not entered, the simulation will not include solar hot water. - - ==================== ======= ===== =========== ======== ======== ============================ - Element Type Units Constraints Required Default Notes - ==================== ======= ===== =========== ======== ======== ============================ - ``SystemIdentifier`` id Yes Unique identifier - ``SystemType`` string See [#]_ Yes Type of solar thermal system - ==================== ======= ===== =========== ======== ======== ============================ +A single solar hot water system can be described with either simple or detailed inputs. - .. [#] SystemType only choice is "hot water". +- :ref:`solar_thermal_simple` +- :ref:`solar_thermal_detailed` -Solar hot water systems can be described with either simple or detailed inputs. It is recommended to use detailed inputs and allow EnergyPlus to calculate the solar contribution to the hot water load; the simple inputs are provided if equivalent calculations are performed in another software tool. +.. _solar_thermal_simple: + Simple Inputs ~~~~~~~~~~~~~ -To define a simple solar hot water system, additional information is entered in ``SolarThermalSystem``. +A simple solar hot water system is entered as a ``/HPXML/Building/BuildingDetails/Systems/SolarThermal/SolarThermalSystem``. - ================= ======= ===== =========== ======== ======== ====================== - Element Type Units Constraints Required Default Notes - ================= ======= ===== =========== ======== ======== ====================== - ``SolarFraction`` double frac > 0, <= 1 Yes Solar fraction [#]_ - ``ConnectedTo`` idref See [#]_ No [#]_ Connected water heater - ================= ======= ===== =========== ======== ======== ====================== + ==================== ======= ===== =========== ======== ======== ====================== + Element Type Units Constraints Required Default Notes + ==================== ======= ===== =========== ======== ======== ====================== + ``SystemIdentifier`` id Yes Unique identifier + ``SystemType`` string hot water Yes Type of solar thermal system + ``SolarFraction`` double frac > 0, <= 1 Yes Solar fraction [#]_ + ``ConnectedTo`` idref See [#]_ No [#]_ Connected water heater + ==================== ======= ===== =========== ======== ======== ====================== .. [#] Portion of total conventional hot water heating load (delivered energy plus tank standby losses). Can be obtained from `Directory of SRCC OG-300 Solar Water Heating System Ratings `_ or NREL's `System Advisor Model `_ or equivalent. @@ -3195,16 +3727,20 @@ To define a simple solar hot water system, additional information is entered in .. warning:: - The solar fraction will reduce the hot water load equally for every EnergyPlus timestep (even during nights and cloudy events). + The solar fraction will reduce the hot water load equally for every EnergyPlus timestep. + +.. _solar_thermal_detailed: Detailed Inputs ~~~~~~~~~~~~~~~ -To define a detailed solar hot water system, additional information is entered in ``SolarThermalSystem``. +A detailed solar hot water system is entered as a ``/HPXML/Building/BuildingDetails/Systems/SolarThermal/SolarThermalSystem``. ================================================ ================= ================ ======================== ======== ======== ============================== Element Type Units Constraints Required Default Notes ================================================ ================= ================ ======================== ======== ======== ============================== + ``SystemIdentifier`` id Yes Unique identifier + ``SystemType`` string hot water Yes Type of solar thermal system ``CollectorArea`` double ft2 > 0 Yes Area ``CollectorLoopType`` string See [#]_ Yes Loop type ``CollectorType`` string See [#]_ Yes System type @@ -3325,7 +3861,7 @@ If not entered, the simulation will not include batteries. An unscheduled battery in a home with photovoltaics (PV) will be controlled using a simple control strategy designed to maximize on site consumption of energy. The battery will charge if PV production is greater than the building load and the battery is below its maximum capacity, while the battery will discharge if the building load is greater than PV production and the battery is above its minimum capacity. - A battery can alternatively be controlled using :ref:`detailedschedules`, where charging and discharging schedules are defined. Positive schedule values control timing and magnitude of charging storage. Negative schedule values control timing and magnitude of discharging storage. Simultaneous charging and discharging of the battery is not allowed. The round trip efficiency affects charging and discharging; the reported charging and discharging rates will be larger than the schedule value by an amount equal to the losses due to the round trip efficiency. + A battery can alternatively be controlled using :ref:`schedules_detailed`, where charging and discharging schedules are defined. Positive schedule values control timing and magnitude of charging storage. Negative schedule values control timing and magnitude of discharging storage. Simultaneous charging and discharging of the battery is not allowed. The round trip efficiency affects charging and discharging; the reported charging and discharging rates will be larger than the schedule value by an amount equal to the losses due to the round trip efficiency. A battery in a home without PV or charging/discharging schedules is assumed to operate as backup and is not modeled. @@ -3396,8 +3932,8 @@ If not entered, the simulation will not include a clothes washer. IMEF may be found using the manufacturer’s data sheet, the `California Energy Commission Appliance Database `_, the `EPA ENERGY STAR website `_, or another reputable source. .. [#] AttachedToWaterHeatingSystem must reference a ``WaterHeatingSystem``; AttachedToHotWaterDistribution must reference a ``HotWaterDistribution``. .. [#] AttachedToWaterHeatingSystem (or AttachedToHotWaterDistribution) only required if IsSharedAppliance is true. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 17 of the `2010 BAHSP `_ are used: "0.009, 0.007, 0.004, 0.004, 0.007, 0.011, 0.022, 0.049, 0.073, 0.086, 0.084, 0.075, 0.067, 0.060, 0.049, 0.052, 0.050, 0.049, 0.049, 0.049, 0.049, 0.047, 0.032, 0.017". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.011, 1.002, 1.022, 1.020, 1.022, 0.996, 0.999, 0.999, 0.996, 0.964, 0.959, 1.011". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 17 of the `2010 BAHSP `_ are used: "0.009, 0.007, 0.004, 0.004, 0.007, 0.011, 0.022, 0.049, 0.073, 0.086, 0.084, 0.075, 0.067, 0.060, 0.049, 0.052, 0.050, 0.049, 0.049, 0.049, 0.049, 0.047, 0.032, 0.017". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.011, 1.002, 1.022, 1.020, 1.022, 0.996, 0.999, 0.999, 0.996, 0.964, 0.959, 1.011". If IntegratedModifiedEnergyFactor or ModifiedEnergyFactor is provided, a complete set of EnergyGuide label information is entered in ``ClothesWasher``. @@ -3446,8 +3982,8 @@ If not entered, the simulation will not include a clothes dryer. CEF = EF / 1.15. CEF may be found using the manufacturer’s data sheet, the `California Energy Commission Appliance Database `_, the `EPA ENERGY STAR website `_, or another reputable source. .. [#] VentedFlowRate default based on the `2010 BAHSP `_. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 18 of the `2010 BAHSP `_ are used: "0.010, 0.006, 0.004, 0.002, 0.004, 0.006, 0.016, 0.032, 0.048, 0.068, 0.078, 0.081, 0.074, 0.067, 0.057, 0.061, 0.055, 0.054, 0.051, 0.051, 0.052, 0.054, 0.044, 0.024". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values are used: "1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 18 of the `2010 BAHSP `_ are used: "0.010, 0.006, 0.004, 0.002, 0.004, 0.006, 0.016, 0.032, 0.048, 0.068, 0.078, 0.081, 0.074, 0.067, 0.057, 0.061, 0.055, 0.054, 0.051, 0.051, 0.052, 0.054, 0.044, 0.024". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values are used: "1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0". Clothes dryer energy use is calculated per the Energy Rating Rated Home in `ANSI/RESNET/ICC 301-2019 Addendum A `_. @@ -3485,8 +4021,8 @@ If not entered, the simulation will not include a dishwasher. RatedAnnualkWh = 215.0 / EF. .. [#] AttachedToWaterHeatingSystem must reference a ``WaterHeatingSystem``; AttachedToHotWaterDistribution must reference a ``HotWaterDistribution``. .. [#] AttachedToWaterHeatingSystem (or AttachedToHotWaterDistribution) only required if IsSharedAppliance is true. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 21 of the `2010 BAHSP `_ are used: "0.015, 0.007, 0.005, 0.003, 0.003, 0.010, 0.020, 0.031, 0.058, 0.065, 0.056, 0.048, 0.041, 0.046, 0.036, 0.038, 0.038, 0.049, 0.087, 0.111, 0.090, 0.067, 0.044, 0.031". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 21 of the `2010 BAHSP `_ are used: "0.015, 0.007, 0.005, 0.003, 0.003, 0.010, 0.020, 0.031, 0.058, 0.065, 0.056, 0.048, 0.041, 0.046, 0.036, 0.038, 0.038, 0.049, 0.087, 0.111, 0.090, 0.067, 0.044, 0.031". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097". If the RatedAnnualkWh or EnergyFactor is provided, a complete set of EnergyGuide label information is entered in ``Dishwasher``. @@ -3528,8 +4064,8 @@ If not entered, the simulation will not include a refrigerator. .. [#] If RatedAnnualkWh not provided, it will be defaulted to represent a standard refrigerator from 2006 using the following equation based on `ANSI/RESNET/ICC 301-2019 `_: RatedAnnualkWh = 637.0 + 18.0 * NumberofBedrooms. .. [#] If multiple refrigerators are specified, there must be exactly one refrigerator described with PrimaryIndicator=true. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 16 of the `2010 BAHSP `_ are used: "0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 16 of the `2010 BAHSP `_ are used: "0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837". .. note:: @@ -3557,8 +4093,8 @@ If not entered, the simulation will not include a standalone freezer. See :ref:`hpxmllocations` for descriptions. .. [#] If Location not provided, defaults to "garage" if present, otherwise "basement - unconditioned" if present, otherwise "basement - conditioned" if present, otherwise "conditioned space". .. [#] RatedAnnualkWh default based on the `2010 BAHSP `_. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 16 of the `2010 BAHSP `_ are used: "0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 16 of the `2010 BAHSP `_ are used: "0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837". .. note:: @@ -3614,8 +4150,8 @@ If not entered, the simulation will not include a cooking range/oven. .. [#] Location choices are "conditioned space", "basement - conditioned", "basement - unconditioned", "garage", "other housing unit", "other heated space", "other multifamily buffer space", or "other non-freezing space". See :ref:`hpxmllocations` for descriptions. .. [#] FuelType choices are "natural gas", "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "diesel", "propane", "kerosene", "coal", "coke", "bituminous coal", "anthracite coal", "electricity", "wood", or "wood pellets". - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 22 of the `2010 BAHSP `_ are used: "0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 22 of the `2010 BAHSP `_ are used: "0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097". If a cooking range is specified, a single oven is also entered as a ``/HPXML/Building/BuildingDetails/Appliances/Oven``. @@ -3691,9 +4227,9 @@ With either lighting specification, additional information can be entered in ``/ ``extension/ExteriorMonthlyScheduleMultipliers`` array No 12 comma-separated exterior monthly multipliers ================================================ ======= ====== =========== ======== ======== =============================================== - .. [#] If *interior* schedule values not provided (and :ref:`detailedschedules` not used), they will be calculated using Lighting Calculation Option 2 (location-dependent lighting profile) of the `2010 BAHSP `_. - .. [#] If *garage* schedule values not provided (and :ref:`detailedschedules` not used), they will be defaulted using Appendix C Table 8 of the `Title 24 2016 Res. ACM Manual `_. - .. [#] If *exterior* schedule values not provided (and :ref:`detailedschedules` not used), they will be defaulted using Appendix C Table 8 of the `Title 24 2016 Res. ACM Manual `_. + .. [#] If *interior* schedule values not provided (and :ref:`schedules_detailed` not used), they will be calculated using Lighting Calculation Option 2 (location-dependent lighting profile) of the `2010 BAHSP `_. + .. [#] If *garage* schedule values not provided (and :ref:`schedules_detailed` not used), they will be defaulted using Appendix C Table 8 of the `Title 24 2016 Res. ACM Manual `_. + .. [#] If *exterior* schedule values not provided (and :ref:`schedules_detailed` not used), they will be defaulted using Appendix C Table 8 of the `Title 24 2016 Res. ACM Manual `_. If exterior holiday lighting is specified, additional information is entered in ``/HPXML/Building/BuildingDetails/Lighting/extension/ExteriorHolidayLighting``. @@ -3710,7 +4246,7 @@ If exterior holiday lighting is specified, additional information is entered in =============================== ======= ======= =========== ======== ============= ============================================ .. [#] If Value not provided, defaults to 1.1 for single-family detached and 0.55 for others. - .. [#] If WeekdayScheduleFractions not provided (and :ref:`detailedschedules` not used), defaults to: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.008, 0.098, 0.168, 0.194, 0.284, 0.192, 0.037, 0.019. + .. [#] If WeekdayScheduleFractions not provided (and :ref:`schedules_detailed` not used), defaults to: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.008, 0.098, 0.168, 0.194, 0.284, 0.192, 0.037, 0.019. HPXML Ceiling Fans ****************** @@ -3731,8 +4267,8 @@ If not entered, the simulation will not include a ceiling fan. .. [#] If Efficiency not provided, defaults to 3000 / 42.6 based on `ANSI/RESNET/ICC 301-2019 `_. .. [#] If Count not provided, defaults to NumberofBedrooms + 1 based on `ANSI/RESNET/ICC 301-2019 `_. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), defaults based on monthly average outdoor temperatures per `ANSI/RESNET/ICC 301-2019 `_ + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.057, 0.057, 0.057, 0.057, 0.057, 0.057". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), defaults based on monthly average outdoor temperatures per `ANSI/RESNET/ICC 301-2019 `_ Ceiling fan energy use is calculated per the Energy Rating Rated Home in `ANSI/RESNET/ICC 301-2019 `_. @@ -3782,8 +4318,8 @@ If not entered, the simulation will not include a pool pump. If "none" is entered, the simulation will not include a pool pump. .. [#] If Value not provided, defaults based on the `2010 BAHSP `_: 158.5 / 0.070 * (0.5 + 0.25 * NumberofBedrooms / 3 + 0.25 * ConditionedFloorArea / 1920). If NumberofResidents provided, this value will be adjusted using the :ref:`buildingoccupancy`. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154". Pool Heater ~~~~~~~~~~~ @@ -3815,8 +4351,8 @@ If not entered, the simulation will not include a pool heater. If NumberofResidents provided, this value will be adjusted using the :ref:`buildingoccupancy`. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154". HPXML Permanent Spas ******************** @@ -3856,8 +4392,8 @@ If not entered, the simulation will not include a permanent spa pump. If "none" is entered, the simulation will not include a permanent spa pump. .. [#] If Value not provided, defaults based on the `2010 BAHSP `_: 59.5 / 0.059 * (0.5 + 0.25 * NumberofBedrooms / 3 + 0.25 * ConditionedFloorArea / 1920). If NumberofResidents provided, this value will be adjusted using the :ref:`buildingoccupancy`. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921". Permanent Spa Heater ~~~~~~~~~~~~~~~~~~~~ @@ -3889,14 +4425,16 @@ If not entered, the simulation will not include a permanent spa heater. If NumberofResidents provided, this value will be adjusted using the :ref:`buildingoccupancy`. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837". + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: "0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024". + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: "0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837". HPXML Misc Loads ---------------- Miscellaneous loads are entered in ``/HPXML/Building/BuildingDetails/MiscLoads``. +.. _plug_loads: + HPXML Plug Loads **************** @@ -3955,7 +4493,7 @@ If not entered, the simulation will not include that type of plug load. \- **electric vehicle charging**: 0.0 - .. [#] If WeekdayScheduleFractions not provided (and :ref:`detailedschedules` not used), defaults as: + .. [#] If WeekdayScheduleFractions not provided (and :ref:`schedules_detailed` not used), defaults as: \- **other**: "0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036" (based on Figure 23 of the `2010 BAHSP `_) @@ -3965,7 +4503,7 @@ If not entered, the simulation will not include that type of plug load. \- **electric vehicle charging**: "0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042" - .. [#] If WeekdendScheduleFractions not provided (and :ref:`detailedschedules` not used), defaults as: + .. [#] If WeekdendScheduleFractions not provided (and :ref:`schedules_detailed` not used), defaults as: \- **other**: "0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036" (based on Figure 23 of the `2010 BAHSP `_) @@ -3975,7 +4513,7 @@ If not entered, the simulation will not include that type of plug load. \- **electric vehicle charging**: "0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042" - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), defaults as: + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), defaults as: \- **other**: "1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248" (based on Figure 24 of the `2010 BAHSP `_) @@ -3985,6 +4523,8 @@ If not entered, the simulation will not include that type of plug load. \- **electric vehicle charging**: "1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0" +.. _fuel_loads: + HPXML Fuel Loads **************** @@ -4023,7 +4563,7 @@ If not entered, the simulation will not include that type of fuel load. .. [#] If FracSensible not provided, defaults to 0.5 for fireplace and 0.0 for all other types. .. [#] The remaining fraction (i.e., 1.0 - FracSensible - FracLatent) must be > 0 and is assumed to be heat gain outside conditioned space and thus lost. .. [#] If FracLatent not provided, defaults to 0.1 for fireplace and 0.0 for all other types. - .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`detailedschedules` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: + .. [#] If WeekdayScheduleFractions or WeekendScheduleFractions not provided (and :ref:`schedules_detailed` not used), default values from Figure 23 of the `2010 BAHSP `_ are used: \- **grill**: "0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007"; @@ -4031,7 +4571,7 @@ If not entered, the simulation will not include that type of fuel load. \- **lighting**: "0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065". - .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`detailedschedules` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: + .. [#] If MonthlyScheduleMultipliers not provided (and :ref:`schedules_detailed` not used), default values from Figure 24 of the `2010 BAHSP `_ are used: \- **grill**: "1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097"; diff --git a/tasks.rb b/tasks.rb index 8dae3626b9..15b146af7c 100644 --- a/tasks.rb +++ b/tasks.rb @@ -1347,11 +1347,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 bc0f7db7f6..efddb44dc6 100644 --- a/workflow/hpxml_inputs.json +++ b/workflow/hpxml_inputs.json @@ -1643,6 +1643,17 @@ "heat_pump_backup_heating_efficiency": 1, "heat_pump_backup_heating_capacity": 36000 }, + "sample_files/base-hvac-air-to-air-heat-pump-1-speed-airflow-cfm.xml": { + "parent_hpxml": "sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml", + "hvac_distribution_heating_airflow_cfm": 800, + "hvac_distribution_cooling_airflow_cfm": 1000 + }, + "sample_files/base-hvac-air-to-air-heat-pump-1-speed-existing-ductwork-restriction.xml": { + "parent_hpxml": "sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml", + "hvac_distribution_fan_watts_per_cfm": 0.4, + "hvac_distribution_max_heating_airflow_cfm": 900, + "hvac_distribution_max_cooling_airflow_cfm": 1200 + }, "sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml": { "parent_hpxml": "sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml" }, @@ -2078,59 +2089,70 @@ "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", "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-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", diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-airflow-cfm.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-airflow-cfm.xml new file mode 100644 index 0000000000..336594267a --- /dev/null +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-airflow-cfm.xml @@ -0,0 +1,559 @@ + + + + HPXML + tasks.rb + 2000-01-01T00:00:00-07:00 + create + + + + + 60 + + + + Bills + + + + + + + + +
+ CO +
+
+ + proposed workscope + + + + + suburban + stand-alone + no units above or below + 180 + + electricity + natural gas + + + + single-family detached + 2.0 + 1.0 + 8.0 + 3 + 2 + 2700.0 + 21600.0 + + + + + 2006 + 5B + + + + USA_CO_Denver.Intl.AP.725650_TMY3 + + USA_CO_Denver.Intl.AP.725650_TMY3.epw + + + + + + + + 50.0 + + ACH + 3.0 + + 21600.0 + + + + + + + + false + + + false + + + + + + + + + + + true + + + + + + + + + + + attic - unvented + 1509.3 + asphalt or fiberglass shingles + 0.7 + 0.92 + 6.0 + + + 2.3 + + + + + + + outside + basement - conditioned + 115.6 + wood siding + 0.7 + 0.92 + + + 23.0 + + + + + + + outside + conditioned space + + + + 1200.0 + wood siding + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + outside + attic - unvented + gable + + + + 225.0 + wood siding + 0.7 + 0.92 + + + 4.0 + + + + + + + ground + basement - conditioned + 8.0 + 1200.0 + 8.0 + 7.0 + + gypsum board + + + + + continuous - exterior + 8.9 + 0.0 + 8.0 + + + continuous - interior + 0.0 + + + + + + + + attic - unvented + conditioned space + ceiling + + + + 1350.0 + + gypsum board + + + + 39.3 + + + + + + + basement - conditioned + 1350.0 + 4.0 + 150.0 + + + + 0.0 + 0.0 + + + + + + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + + + + 108.0 + 0 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 90 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 108.0 + 180 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 270 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + + + + 40.0 + 180 + 4.4 + + + + + + + + + + + + + + air-to-air + electricity + 36000.0 + 36000.0 + single stage + 0.73 + integrated + electricity + + Percent + 1.0 + + 36000.0 + 1.0 + 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + + + 800.0 + 1000.0 + + 0.6 + 17.0 + + + + + + + 68.0 + 78.0 + + + + + + regular velocity + + supply + + CFM25 + 75.0 + to outside + + + + return + + CFM25 + 25.0 + to outside + + + + + supply + 4.0 + attic - unvented + 150.0 + + + + return + 0.0 + attic - unvented + 50.0 + + + + + + + + + electricity + storage water heater + conditioned space + 40.0 + 1.0 + 18767.0 + 0.95 + 125.0 + + + + + + 50.0 + + + + 0.0 + + + + + shower head + true + + + + faucet + false + + + + + + + conditioned space + 1.21 + 380.0 + 0.12 + 1.09 + 27.0 + 6.0 + 3.2 + + + + conditioned space + electricity + 3.73 + true + 150.0 + + + + conditioned space + 307.0 + 12 + 0.12 + 1.09 + 22.32 + 4.0 + + + + conditioned space + 650.0 + true + + + + conditioned space + electricity + false + + + + false + + + + + + interior + 0.4 + + + + + + + interior + 0.1 + + + + + + + interior + 0.25 + + + + + + + exterior + 0.4 + + + + + + + exterior + 0.1 + + + + + + + exterior + 0.25 + + + + + + + + + TV other + + kWh/year + 620.0 + + + + + other + + kWh/year + 2457.0 + + + 0.855 + 0.045 + + + + +
+
\ No newline at end of file diff --git a/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-existing-ductwork-restriction.xml b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-existing-ductwork-restriction.xml new file mode 100644 index 0000000000..efa8ea95e2 --- /dev/null +++ b/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-existing-ductwork-restriction.xml @@ -0,0 +1,560 @@ + + + + HPXML + tasks.rb + 2000-01-01T00:00:00-07:00 + create + + + + + 60 + + + + Bills + + + + + + + + +
+ CO +
+
+ + proposed workscope + + + + + suburban + stand-alone + no units above or below + 180 + + electricity + natural gas + + + + single-family detached + 2.0 + 1.0 + 8.0 + 3 + 2 + 2700.0 + 21600.0 + + + + + 2006 + 5B + + + + USA_CO_Denver.Intl.AP.725650_TMY3 + + USA_CO_Denver.Intl.AP.725650_TMY3.epw + + + + + + + + 50.0 + + ACH + 3.0 + + 21600.0 + + + + + + + + false + + + false + + + + + + + + + + + true + + + + + + + + + + + attic - unvented + 1509.3 + asphalt or fiberglass shingles + 0.7 + 0.92 + 6.0 + + + 2.3 + + + + + + + outside + basement - conditioned + 115.6 + wood siding + 0.7 + 0.92 + + + 23.0 + + + + + + + outside + conditioned space + + + + 1200.0 + wood siding + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + outside + attic - unvented + gable + + + + 225.0 + wood siding + 0.7 + 0.92 + + + 4.0 + + + + + + + ground + basement - conditioned + 8.0 + 1200.0 + 8.0 + 7.0 + + gypsum board + + + + + continuous - exterior + 8.9 + 0.0 + 8.0 + + + continuous - interior + 0.0 + + + + + + + + attic - unvented + conditioned space + ceiling + + + + 1350.0 + + gypsum board + + + + 39.3 + + + + + + + basement - conditioned + 1350.0 + 4.0 + 150.0 + + + + 0.0 + 0.0 + + + + + + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + + + + 108.0 + 0 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 90 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 108.0 + 180 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 270 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + + + + 40.0 + 180 + 4.4 + + + + + + + + + + + + + + air-to-air + electricity + 36000.0 + 36000.0 + single stage + 0.73 + integrated + electricity + + Percent + 1.0 + + 36000.0 + 1.0 + 1.0 + + SEER + 13.0 + + + HSPF + 7.7 + + + 0.4 + 900.0 + 1200.0 + + 0.6 + 17.0 + + + + + + + 68.0 + 78.0 + + + + + + regular velocity + + supply + + CFM25 + 75.0 + to outside + + + + return + + CFM25 + 25.0 + to outside + + + + + supply + 4.0 + attic - unvented + 150.0 + + + + return + 0.0 + attic - unvented + 50.0 + + + + + + + + + electricity + storage water heater + conditioned space + 40.0 + 1.0 + 18767.0 + 0.95 + 125.0 + + + + + + 50.0 + + + + 0.0 + + + + + shower head + true + + + + faucet + false + + + + + + + conditioned space + 1.21 + 380.0 + 0.12 + 1.09 + 27.0 + 6.0 + 3.2 + + + + conditioned space + electricity + 3.73 + true + 150.0 + + + + conditioned space + 307.0 + 12 + 0.12 + 1.09 + 22.32 + 4.0 + + + + conditioned space + 650.0 + true + + + + conditioned space + electricity + false + + + + false + + + + + + interior + 0.4 + + + + + + + interior + 0.1 + + + + + + + interior + 0.25 + + + + + + + exterior + 0.4 + + + + + + + exterior + 0.1 + + + + + + + exterior + 0.25 + + + + + + + + + TV other + + kWh/year + 620.0 + + + + + other + + kWh/year + 2457.0 + + + 0.855 + 0.045 + + + + +
+
\ No newline at end of file diff --git a/workflow/tests/base_results/results_sizing.csv b/workflow/tests/base_results/results_sizing.csv index d3e35f8a0c..86e46d306b 100644 --- a/workflow/tests/base_results/results_sizing.csv +++ b/workflow/tests/base_results/results_sizing.csv @@ -1,4 +1,7 @@ HPXML,HVAC Capacity: Heating (Btu/h),HVAC Capacity: Cooling (Btu/h),HVAC Capacity: Heat Pump Backup (Btu/h),HVAC Airflow: Heating (cfm),HVAC Airflow: Cooling (cfm) +denver-hvac-autosize-air-to-air-heat-pump-1-speed-airflow-cfm-sizing-methodology-ACCA.xml,22911.0,22911.0,31147.0,800.0,1000.0 +denver-hvac-autosize-air-to-air-heat-pump-1-speed-airflow-cfm-sizing-methodology-HERS.xml,31147.0,31147.0,31147.0,800.0,1000.0 +denver-hvac-autosize-air-to-air-heat-pump-1-speed-airflow-cfm-sizing-methodology-MaxLoad.xml,65909.0,65909.0,31147.0,800.0,1000.0 denver-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only-sizing-methodology-ACCA.xml,0.0,21309.0,0.0,0.0,886.0 denver-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only-sizing-methodology-HERS.xml,0.0,18787.0,0.0,0.0,781.0 denver-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only-sizing-methodology-MaxLoad.xml,0.0,21309.0,0.0,0.0,886.0 @@ -183,6 +186,9 @@ denver-hvac-autosize-stove-oil-only.xml,23640.0,0.0,0.0,689.0,0.0 denver-hvac-autosize-stove-wood-pellets-only.xml,23640.0,0.0,0.0,689.0,0.0 denver-hvac-autosize-undersized.xml,28898.0,19717.0,0.0,638.0,820.0 denver-hvac-autosize-wall-furnace-elec-only.xml,23640.0,0.0,0.0,689.0,0.0 +houston-hvac-autosize-air-to-air-heat-pump-1-speed-airflow-cfm-sizing-methodology-ACCA.xml,27095.0,27095.0,20038.0,800.0,1000.0 +houston-hvac-autosize-air-to-air-heat-pump-1-speed-airflow-cfm-sizing-methodology-HERS.xml,25329.0,25329.0,20038.0,800.0,1000.0 +houston-hvac-autosize-air-to-air-heat-pump-1-speed-airflow-cfm-sizing-methodology-MaxLoad.xml,30521.0,30521.0,20038.0,800.0,1000.0 houston-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only-sizing-methodology-ACCA.xml,0.0,27095.0,0.0,0.0,1127.0 houston-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only-sizing-methodology-HERS.xml,0.0,25329.0,0.0,0.0,1053.0 houston-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only-sizing-methodology-MaxLoad.xml,0.0,27095.0,0.0,0.0,1127.0 diff --git a/workflow/tests/base_results/results_workflow_simulations1.csv b/workflow/tests/base_results/results_workflow_simulations1.csv index 4726db5786..71633ad9f0 100644 --- a/workflow/tests/base_results/results_workflow_simulations1.csv +++ b/workflow/tests/base_results/results_workflow_simulations1.csv @@ -168,7 +168,9 @@ base-foundation-unvented-crawlspace.xml,40.275,40.275,29.774,29.774,10.501,0.0,0 base-foundation-vented-crawlspace-above-grade.xml,42.267,42.267,29.879,29.879,12.388,0.0,0.0,0.0,0.0,0.0,0.0,0.204,0.0,0.0,4.35,0.83,9.364,0.0,0.0,2.647,0.0,0.238,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,4.187,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.388,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,11.599,0.0,14.129,9.182,0.777,0.0,0.0,0.0,0.0,1721.9,2790.7,2790.7,15.473,15.546,0.0,3.952,3.793,0.0,0.0,0.758,10.49,-10.966,0.0,0.0,6.708,0.0,-0.446,1.847,0.0,0.78,0.0,1.999,-6.302,-1.401,0.0,-0.145,-0.695,0.0,0.0,0.016,-0.509,13.003,0.0,0.0,-2.522,0.0,-0.441,-0.399,-2.671,-0.183,0.0,1.477,6.282,1.246,1354.8,997.6,11171.5,2752.7,0.0,36000.0,24000.0,0.0,6.8,91.76,24393.0,7387.0,7508.0,0.0,575.0,2198.0,0.0,2255.0,0.0,2171.0,2299.0,15739.0,2026.0,7037.0,0.0,207.0,232.0,0.0,598.0,0.0,2010.0,310.0,3320.0,380.0,0.0,-420.0,800.0 base-foundation-vented-crawlspace.xml,42.177,42.177,29.718,29.718,12.459,0.0,0.0,0.0,0.0,0.0,0.0,0.206,0.0,0.0,4.213,0.797,9.372,0.0,0.0,2.647,0.0,0.238,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,4.187,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.459,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,11.666,0.0,13.527,9.182,0.786,0.0,0.0,0.0,0.0,1723.9,3094.6,3094.6,15.482,15.239,0.0,3.962,3.816,0.0,0.0,0.766,10.546,-11.029,0.0,0.0,6.732,0.0,-0.434,1.848,0.0,0.782,0.0,2.013,-6.322,-1.406,0.0,-0.128,-0.69,0.0,0.0,0.01,-0.475,12.939,0.0,0.0,-3.04,0.0,-0.429,-0.394,-2.616,-0.18,0.0,1.349,6.262,1.241,1354.8,997.6,11171.5,2752.7,0.0,36000.0,24000.0,0.0,6.8,91.76,23883.0,6887.0,7508.0,0.0,575.0,2198.0,0.0,2246.0,0.0,2171.0,2299.0,15424.0,1713.0,7037.0,0.0,207.0,232.0,0.0,596.0,0.0,2010.0,310.0,3320.0,380.0,0.0,-420.0,800.0 base-foundation-walkout-basement.xml,64.094,64.094,36.213,36.213,27.88,0.0,0.0,0.0,0.0,0.0,0.0,0.46,0.0,0.0,4.58,0.879,9.017,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,27.88,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,26.11,0.0,15.293,9.075,0.615,0.0,0.0,0.0,0.0,2133.5,3620.4,3620.4,26.753,20.8,0.0,3.536,3.698,0.521,7.384,0.648,10.878,-12.928,0.0,0.0,0.0,10.191,-0.062,6.628,0.0,0.729,0.0,5.961,-8.927,-2.504,0.0,-0.108,-0.524,-0.061,1.459,-0.034,-1.566,12.043,0.0,0.0,0.0,-3.716,-0.057,-1.537,-3.401,-0.161,0.0,3.295,7.852,2.006,1354.8,997.6,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,34105.0,8645.0,7925.0,0.0,575.0,6502.0,0.0,0.0,2345.0,2171.0,5942.0,19161.0,5335.0,7221.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,803.0,3320.0,0.0,0.0,0.0,0.0 +base-hvac-air-to-air-heat-pump-1-speed-airflow-cfm.xml,47.996,47.996,47.996,47.996,0.0,0.0,0.0,0.0,0.0,0.0,11.529,0.903,0.47,0.021,3.988,0.794,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.831,0.491,13.911,9.075,0.614,0.0,0.0,0.0,0.0,7192.8,3313.6,7192.8,25.069,17.056,0.0,3.479,3.645,0.513,7.531,0.631,10.102,-12.683,0.0,0.0,0.0,8.317,-0.064,4.807,0.0,0.729,0.0,6.87,-8.905,-2.499,0.0,-0.034,-0.464,-0.052,2.684,-0.026,-1.409,11.73,0.0,0.0,0.0,-6.35,-0.06,-1.171,-3.107,-0.166,0.0,2.665,7.873,2.011,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml,34.713,34.713,34.713,34.713,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.367,1.009,9.061,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.916,9.075,0.661,0.0,0.0,0.0,0.0,2020.7,3214.9,3214.9,0.0,16.016,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.022,-0.472,-0.052,2.664,-0.032,-1.455,11.85,0.0,0.0,0.0,-6.919,-0.064,-1.194,-3.019,-0.167,0.0,1.982,8.007,2.036,1354.8,997.6,11171.5,2563.5,0.0,0.0,36000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-hvac-air-to-air-heat-pump-1-speed-existing-ductwork-restriction.xml,45.352,45.352,45.352,45.352,0.0,0.0,0.0,0.0,0.0,0.0,9.672,0.531,0.834,0.02,3.466,0.538,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.902,0.854,13.802,9.075,0.614,0.0,0.0,0.0,0.0,7065.8,3095.7,7065.8,24.578,17.406,0.0,3.475,3.645,0.513,7.532,0.631,10.105,-12.683,0.0,0.0,0.0,8.318,-0.065,4.807,0.0,0.729,0.0,6.941,-8.906,-2.499,0.0,-0.029,-0.464,-0.052,2.684,-0.026,-1.406,11.73,0.0,0.0,0.0,-6.349,-0.061,-1.17,-3.105,-0.166,0.0,2.543,7.871,2.01,1354.8,997.6,11171.6,2563.5,0.0,28858.0,28858.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml,45.533,45.533,45.533,45.533,0.0,0.0,0.0,0.0,0.0,0.0,9.428,0.999,0.296,0.017,3.461,1.038,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.459,0.313,13.301,9.075,0.614,0.0,0.0,0.0,0.0,7012.9,3247.0,7012.9,24.203,16.281,0.0,3.531,3.645,0.513,7.53,0.631,10.104,-12.683,0.0,0.0,0.0,8.316,-0.065,4.807,0.0,0.729,0.0,5.456,-8.906,-2.499,0.0,-0.007,-0.465,-0.052,2.684,-0.026,-1.407,11.73,0.0,0.0,0.0,-6.35,-0.061,-1.17,-3.104,-0.166,0.0,2.031,7.871,2.01,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml,41.785,41.785,41.785,41.785,0.0,0.0,0.0,0.0,0.0,0.0,9.448,1.729,0.308,0.031,0.0,0.0,8.992,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.092,0.339,0.0,9.075,0.588,0.0,0.0,0.0,0.0,7122.8,1624.2,7122.8,25.253,0.0,0.0,3.503,3.648,0.513,7.514,0.632,10.115,-12.683,0.0,0.0,0.0,8.151,-0.069,4.81,0.0,0.73,0.0,6.27,-8.906,-2.499,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.8,997.6,11171.6,2563.5,0.0,36000.0,0.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml,45.501,45.501,45.501,45.501,0.0,0.0,0.0,0.0,0.0,0.0,8.966,0.903,0.894,0.051,3.382,1.014,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.707,0.945,12.973,9.075,0.613,0.0,0.0,144.0,0.0,10357.9,3230.8,10357.9,37.455,16.144,0.0,3.614,3.675,0.516,7.775,0.624,10.039,-12.798,0.0,0.0,0.0,9.086,0.059,4.748,0.0,0.762,0.0,4.604,-8.886,-2.51,0.0,0.007,-0.452,-0.051,2.749,-0.035,-1.506,11.615,0.0,0.0,0.0,-6.397,0.05,-1.191,-3.331,-0.163,0.0,1.991,7.891,2.0,1354.8,997.6,11171.5,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 diff --git a/workflow/tests/base_results/results_workflow_simulations1_bills.csv b/workflow/tests/base_results/results_workflow_simulations1_bills.csv index f38da8b8a8..76db5133a7 100644 --- a/workflow/tests/base_results/results_workflow_simulations1_bills.csv +++ b/workflow/tests/base_results/results_workflow_simulations1_bills.csv @@ -168,7 +168,9 @@ base-foundation-unvented-crawlspace.xml,1491.96,144.0,1092.72,0.0,1236.72,144.0, base-foundation-vented-crawlspace-above-grade.xml,1515.82,144.0,1096.59,0.0,1240.59,144.0,131.23,275.23,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-foundation-vented-crawlspace.xml,1510.65,144.0,1090.66,0.0,1234.66,144.0,131.99,275.99,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-foundation-walkout-basement.xml,1912.39,144.0,1329.04,0.0,1473.04,144.0,295.35,439.35,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-hvac-air-to-air-heat-pump-1-speed-airflow-cfm.xml,1905.47,144.0,1761.47,0.0,1905.47,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml,1417.99,144.0,1273.99,0.0,1417.99,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-hvac-air-to-air-heat-pump-1-speed-existing-ductwork-restriction.xml,1808.45,144.0,1664.45,0.0,1808.45,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml,1815.07,144.0,1671.07,0.0,1815.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml,1677.51,144.0,1533.51,0.0,1677.51,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml,1813.9,144.0,1669.9,0.0,1813.9,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0