Skip to content

Commit

Permalink
Merge branch 'ansi_301_2022' into ansi_301_2022_lighting_appl
Browse files Browse the repository at this point in the history
  • Loading branch information
joseph-robertson committed Feb 2, 2024
2 parents 9d0323b + a523a45 commit 93cca77
Show file tree
Hide file tree
Showing 22 changed files with 809 additions and 196 deletions.
131 changes: 68 additions & 63 deletions hpxml-measures/BuildResidentialHPXML/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5238,7 +5238,7 @@ def self.set_cooling_systems(hpxml_bldg, args)
integrated_heating_system_efficiency_percent: integrated_heating_system_efficiency_percent,
integrated_heating_system_fraction_heat_load_served: integrated_heating_system_fraction_heat_load_served)

if args[:hvac_perf_data_capacity_type].is_initialized && [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type) && compressor_type == HPXML::HVACCompressorTypeVariableSpeed
if args[:hvac_perf_data_cooling_outdoor_temperatures].is_initialized && [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type) && compressor_type == HPXML::HVACCompressorTypeVariableSpeed
hvac_perf_data_capacity_type = args[:hvac_perf_data_capacity_type].get
hvac_perf_data_cooling_outdoor_temperatures = args[:hvac_perf_data_cooling_outdoor_temperatures].get.split(',').map(&:strip)
hvac_perf_data_cooling_min_speed_capacities = args[:hvac_perf_data_cooling_min_speed_capacities].get.split(',').map(&:strip)
Expand Down Expand Up @@ -5419,74 +5419,79 @@ def self.set_heat_pumps(hpxml_bldg, args)
primary_heating_system: primary_heating_system,
primary_cooling_system: primary_cooling_system)

if args[:hvac_perf_data_capacity_type].is_initialized && [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit].include?(heat_pump_type) && compressor_type == HPXML::HVACCompressorTypeVariableSpeed
hvac_perf_data_capacity_type = args[:hvac_perf_data_capacity_type].get
hvac_perf_data_heating_outdoor_temperatures = args[:hvac_perf_data_heating_outdoor_temperatures].get.split(',').map(&:strip)
hvac_perf_data_heating_min_speed_capacities = args[:hvac_perf_data_heating_min_speed_capacities].get.split(',').map(&:strip)
hvac_perf_data_heating_max_speed_capacities = args[:hvac_perf_data_heating_max_speed_capacities].get.split(',').map(&:strip)
hvac_perf_data_heating_min_speed_cops = args[:hvac_perf_data_heating_min_speed_cops].get.split(',').map(&:strip)
hvac_perf_data_heating_max_speed_cops = args[:hvac_perf_data_heating_max_speed_cops].get.split(',').map(&:strip)

htg_perf_data = hpxml_bldg.heat_pumps[0].heating_detailed_performance_data
heating_perf_data_data_points = hvac_perf_data_heating_outdoor_temperatures.zip(hvac_perf_data_heating_min_speed_capacities,
hvac_perf_data_heating_max_speed_capacities,
hvac_perf_data_heating_min_speed_cops,
hvac_perf_data_heating_max_speed_cops)
heating_perf_data_data_points.each do |heating_perf_data_data_point|
outdoor_temperature, min_speed_cap_or_frac, max_speed_cap_or_frac, min_speed_cop, max_speed_cop = heating_perf_data_data_point
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit].include?(heat_pump_type) && compressor_type == HPXML::HVACCompressorTypeVariableSpeed
if args[:hvac_perf_data_heating_outdoor_temperatures].is_initialized
hvac_perf_data_capacity_type = args[:hvac_perf_data_capacity_type].get
hvac_perf_data_heating_outdoor_temperatures = args[:hvac_perf_data_heating_outdoor_temperatures].get.split(',').map(&:strip)
hvac_perf_data_heating_min_speed_capacities = args[:hvac_perf_data_heating_min_speed_capacities].get.split(',').map(&:strip)
hvac_perf_data_heating_max_speed_capacities = args[:hvac_perf_data_heating_max_speed_capacities].get.split(',').map(&:strip)
hvac_perf_data_heating_min_speed_cops = args[:hvac_perf_data_heating_min_speed_cops].get.split(',').map(&:strip)
hvac_perf_data_heating_max_speed_cops = args[:hvac_perf_data_heating_max_speed_cops].get.split(',').map(&:strip)

htg_perf_data = hpxml_bldg.heat_pumps[0].heating_detailed_performance_data
heating_perf_data_data_points = hvac_perf_data_heating_outdoor_temperatures.zip(hvac_perf_data_heating_min_speed_capacities,
hvac_perf_data_heating_max_speed_capacities,
hvac_perf_data_heating_min_speed_cops,
hvac_perf_data_heating_max_speed_cops)
heating_perf_data_data_points.each do |heating_perf_data_data_point|
outdoor_temperature, min_speed_cap_or_frac, max_speed_cap_or_frac, min_speed_cop, max_speed_cop = heating_perf_data_data_point

if hvac_perf_data_capacity_type == 'Absolute capacities'
min_speed_capacity = Float(min_speed_cap_or_frac)
max_speed_capacity = Float(max_speed_cap_or_frac)
elsif hvac_perf_data_capacity_type == 'Normalized capacity fractions'
min_speed_capacity_fraction_of_nominal = Float(min_speed_cap_or_frac)
max_speed_capacity_fraction_of_nominal = Float(max_speed_cap_or_frac)
end

if hvac_perf_data_capacity_type == 'Absolute capacities'
min_speed_capacity = Float(min_speed_cap_or_frac)
max_speed_capacity = Float(max_speed_cap_or_frac)
elsif hvac_perf_data_capacity_type == 'Normalized capacity fractions'
min_speed_capacity_fraction_of_nominal = Float(min_speed_cap_or_frac)
max_speed_capacity_fraction_of_nominal = Float(max_speed_cap_or_frac)
htg_perf_data.add(outdoor_temperature: Float(outdoor_temperature),
capacity: min_speed_capacity,
capacity_fraction_of_nominal: min_speed_capacity_fraction_of_nominal,
capacity_description: HPXML::CapacityDescriptionMinimum,
efficiency_cop: Float(min_speed_cop))
htg_perf_data.add(outdoor_temperature: Float(outdoor_temperature),
capacity: max_speed_capacity,
capacity_fraction_of_nominal: max_speed_capacity_fraction_of_nominal,
capacity_description: HPXML::CapacityDescriptionMaximum,
efficiency_cop: Float(max_speed_cop))
end

htg_perf_data.add(outdoor_temperature: Float(outdoor_temperature),
capacity: min_speed_capacity,
capacity_fraction_of_nominal: min_speed_capacity_fraction_of_nominal,
capacity_description: HPXML::CapacityDescriptionMinimum,
efficiency_cop: Float(min_speed_cop))
htg_perf_data.add(outdoor_temperature: Float(outdoor_temperature),
capacity: max_speed_capacity,
capacity_fraction_of_nominal: max_speed_capacity_fraction_of_nominal,
capacity_description: HPXML::CapacityDescriptionMaximum,
efficiency_cop: Float(max_speed_cop))
end

hvac_perf_data_cooling_outdoor_temperatures = args[:hvac_perf_data_cooling_outdoor_temperatures].get.split(',').map(&:strip)
hvac_perf_data_cooling_min_speed_capacities = args[:hvac_perf_data_cooling_min_speed_capacities].get.split(',').map(&:strip)
hvac_perf_data_cooling_max_speed_capacities = args[:hvac_perf_data_cooling_max_speed_capacities].get.split(',').map(&:strip)
hvac_perf_data_cooling_min_speed_cops = args[:hvac_perf_data_cooling_min_speed_cops].get.split(',').map(&:strip)
hvac_perf_data_cooling_max_speed_cops = args[:hvac_perf_data_cooling_max_speed_cops].get.split(',').map(&:strip)

clg_perf_data = hpxml_bldg.heat_pumps[0].cooling_detailed_performance_data
cooling_perf_data_data_points = hvac_perf_data_cooling_outdoor_temperatures.zip(hvac_perf_data_cooling_min_speed_capacities,
hvac_perf_data_cooling_max_speed_capacities,
hvac_perf_data_cooling_min_speed_cops,
hvac_perf_data_cooling_max_speed_cops)
cooling_perf_data_data_points.each do |cooling_perf_data_data_point|
outdoor_temperature, min_speed_cap_or_frac, max_speed_cap_or_frac, min_speed_cop, max_speed_cop = cooling_perf_data_data_point
if args[:hvac_perf_data_cooling_outdoor_temperatures].is_initialized
hvac_perf_data_capacity_type = args[:hvac_perf_data_capacity_type].get
hvac_perf_data_cooling_outdoor_temperatures = args[:hvac_perf_data_cooling_outdoor_temperatures].get.split(',').map(&:strip)
hvac_perf_data_cooling_min_speed_capacities = args[:hvac_perf_data_cooling_min_speed_capacities].get.split(',').map(&:strip)
hvac_perf_data_cooling_max_speed_capacities = args[:hvac_perf_data_cooling_max_speed_capacities].get.split(',').map(&:strip)
hvac_perf_data_cooling_min_speed_cops = args[:hvac_perf_data_cooling_min_speed_cops].get.split(',').map(&:strip)
hvac_perf_data_cooling_max_speed_cops = args[:hvac_perf_data_cooling_max_speed_cops].get.split(',').map(&:strip)

clg_perf_data = hpxml_bldg.heat_pumps[0].cooling_detailed_performance_data
cooling_perf_data_data_points = hvac_perf_data_cooling_outdoor_temperatures.zip(hvac_perf_data_cooling_min_speed_capacities,
hvac_perf_data_cooling_max_speed_capacities,
hvac_perf_data_cooling_min_speed_cops,
hvac_perf_data_cooling_max_speed_cops)
cooling_perf_data_data_points.each do |cooling_perf_data_data_point|
outdoor_temperature, min_speed_cap_or_frac, max_speed_cap_or_frac, min_speed_cop, max_speed_cop = cooling_perf_data_data_point

if hvac_perf_data_capacity_type == 'Absolute capacities'
min_speed_capacity = Float(min_speed_cap_or_frac)
max_speed_capacity = Float(max_speed_cap_or_frac)
elsif hvac_perf_data_capacity_type == 'Normalized capacity fractions'
min_speed_capacity_fraction_of_nominal = Float(min_speed_cap_or_frac)
max_speed_capacity_fraction_of_nominal = Float(max_speed_cap_or_frac)
end

if hvac_perf_data_capacity_type == 'Absolute capacities'
min_speed_capacity = Float(min_speed_cap_or_frac)
max_speed_capacity = Float(max_speed_cap_or_frac)
elsif hvac_perf_data_capacity_type == 'Normalized capacity fractions'
min_speed_capacity_fraction_of_nominal = Float(min_speed_cap_or_frac)
max_speed_capacity_fraction_of_nominal = Float(max_speed_cap_or_frac)
clg_perf_data.add(outdoor_temperature: Float(outdoor_temperature),
capacity: min_speed_capacity,
capacity_fraction_of_nominal: min_speed_capacity_fraction_of_nominal,
capacity_description: HPXML::CapacityDescriptionMinimum,
efficiency_cop: Float(min_speed_cop))
clg_perf_data.add(outdoor_temperature: Float(outdoor_temperature),
capacity: max_speed_capacity,
capacity_fraction_of_nominal: max_speed_capacity_fraction_of_nominal,
capacity_description: HPXML::CapacityDescriptionMaximum,
efficiency_cop: Float(max_speed_cop))
end

clg_perf_data.add(outdoor_temperature: Float(outdoor_temperature),
capacity: min_speed_capacity,
capacity_fraction_of_nominal: min_speed_capacity_fraction_of_nominal,
capacity_description: HPXML::CapacityDescriptionMinimum,
efficiency_cop: Float(min_speed_cop))
clg_perf_data.add(outdoor_temperature: Float(outdoor_temperature),
capacity: max_speed_capacity,
capacity_fraction_of_nominal: max_speed_capacity_fraction_of_nominal,
capacity_description: HPXML::CapacityDescriptionMaximum,
efficiency_cop: Float(max_speed_cop))
end
end
end
Expand Down
6 changes: 3 additions & 3 deletions hpxml-measures/BuildResidentialHPXML/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.1</schema_version>
<name>build_residential_hpxml</name>
<uid>a13a8983-2b01-4930-8af2-42030b6e4233</uid>
<version_id>4457c708-6386-407f-b0b0-65b067e6c345</version_id>
<version_modified>2024-01-25T22:18:41Z</version_modified>
<version_id>f2656ed9-4491-4e74-93ae-ad65beb77be6</version_id>
<version_modified>2024-02-01T23:33:18Z</version_modified>
<xml_checksum>2C38F48B</xml_checksum>
<class_name>BuildResidentialHPXML</class_name>
<display_name>HPXML Builder</display_name>
Expand Down Expand Up @@ -7166,7 +7166,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>2B3919E4</checksum>
<checksum>538AD9A0</checksum>
</file>
<file>
<filename>geometry.rb</filename>
Expand Down
10 changes: 5 additions & 5 deletions hpxml-measures/HPXMLtoOpenStudio/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.1</schema_version>
<name>hpxm_lto_openstudio</name>
<uid>b1543b30-9465-45ff-ba04-1d1f85e763bc</uid>
<version_id>d174c41c-6d39-43d1-b1d5-ea3e96a7f8cf</version_id>
<version_modified>2024-01-31T17:47:42Z</version_modified>
<version_id>415f0fbf-4733-4f8f-92a5-2c05d9fda4b6</version_id>
<version_modified>2024-02-01T23:34:15Z</version_modified>
<xml_checksum>D8922A73</xml_checksum>
<class_name>HPXMLtoOpenStudio</class_name>
<display_name>HPXML to OpenStudio Translator</display_name>
Expand Down Expand Up @@ -298,7 +298,7 @@
<filename>hotwater_appliances.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>A0BE47F1</checksum>
<checksum>7B340461</checksum>
</file>
<file>
<filename>hpxml.rb</filename>
Expand Down Expand Up @@ -328,7 +328,7 @@
<filename>hpxml_schematron/EPvalidator.xml</filename>
<filetype>xml</filetype>
<usage_type>resource</usage_type>
<checksum>78586E3C</checksum>
<checksum>14188216</checksum>
</file>
<file>
<filename>hpxml_schematron/iso-schematron.xsd</filename>
Expand Down Expand Up @@ -610,7 +610,7 @@
<filename>test_hotwater_appliance.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>EF0A5474</checksum>
<checksum>7D49C113</checksum>
</file>
<file>
<filename>test_hvac.rb</filename>
Expand Down
12 changes: 2 additions & 10 deletions hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb
Original file line number Diff line number Diff line change
Expand Up @@ -538,9 +538,7 @@ def self.calc_range_oven_energy(nbeds, cooking_range, oven, is_outside = false)
if cooking_range.fuel_type == HPXML::FuelTypeElectricity
frac_sens = (1.0 - frac_lost) * 0.90
else
elec_btu = UnitConversions.convert(annual_kwh, 'kWh', 'Btu')
gas_btu = UnitConversions.convert(annual_therm, 'therm', 'Btu')
frac_sens = (1.0 - frac_lost) * ((0.90 * elec_btu + 0.7942 * gas_btu) / (elec_btu + gas_btu))
frac_sens = (1.0 - frac_lost) * 0.80
end
frac_lat = 1.0 - frac_sens - frac_lost
else # Internal gains outside unit
Expand Down Expand Up @@ -703,13 +701,7 @@ def self.calc_clothes_dryer_energy(eri_version, nbeds, clothes_dryer, clothes_wa
if clothes_dryer.is_vented
frac_lost = 0.85
end
if clothes_dryer.fuel_type == HPXML::FuelTypeElectricity
frac_sens = (1.0 - frac_lost) * 0.90
else
elec_btu = UnitConversions.convert(annual_kwh, 'kWh', 'Btu')
gas_btu = UnitConversions.convert(annual_therm, 'therm', 'Btu')
frac_sens = (1.0 - frac_lost) * ((0.90 * elec_btu + 0.8894 * gas_btu) / (elec_btu + gas_btu))
end
frac_sens = (1.0 - frac_lost) * 0.90
frac_lat = 1.0 - frac_sens - frac_lost
else # Internal gains outside unit
frac_sens = 0.0
Expand Down
Loading

0 comments on commit 93cca77

Please sign in to comment.