Skip to content

Commit 438ad8b

Browse files
authored
Merge pull request #1567 from NREL/fix_allow_increased_fixed_capacities
Fixes `AllowIncreasedFixedCapacities`=true w/ HP detailed performance data
2 parents a77a6e5 + f197511 commit 438ad8b

File tree

3 files changed

+43
-42
lines changed

3 files changed

+43
-42
lines changed

Changelog.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
__New Features__
44

55
__Bugfixes__
6+
- Fixes error if using AllowIncreasedFixedCapacities=true w/ HP detailed performance data.
67
- Error-checking for unrealistically low HVAC SensibleHeatFraction values (less than or equal to 0.5).
78

89
## OpenStudio-HPXML v1.7.0

HPXMLtoOpenStudio/measure.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<schema_version>3.1</schema_version>
44
<name>hpxm_lto_openstudio</name>
55
<uid>b1543b30-9465-45ff-ba04-1d1f85e763bc</uid>
6-
<version_id>d79e4072-0445-4280-bf47-6e1c8fbea366</version_id>
7-
<version_modified>2023-12-06T18:04:38Z</version_modified>
6+
<version_id>ef49c8bc-3558-48d5-9273-1c35379c0752</version_id>
7+
<version_modified>2023-12-06T20:33:28Z</version_modified>
88
<xml_checksum>D8922A73</xml_checksum>
99
<class_name>HPXMLtoOpenStudio</class_name>
1010
<display_name>HPXML to OpenStudio Translator</display_name>
@@ -262,7 +262,7 @@
262262
<filename>hpxml_defaults.rb</filename>
263263
<filetype>rb</filetype>
264264
<usage_type>resource</usage_type>
265-
<checksum>9C9F94F7</checksum>
265+
<checksum>B7B35F9A</checksum>
266266
</file>
267267
<file>
268268
<filename>hpxml_schema/HPXML.xsd</filename>

HPXMLtoOpenStudio/resources/hpxml_defaults.rb

+39-39
Original file line numberDiff line numberDiff line change
@@ -2843,17 +2843,17 @@ def self.apply_hvac_sizing(hpxml_bldg, weather, cfa)
28432843
tol = 10 # Btuh
28442844

28452845
# Assign heating design loads to HPXML object
2846-
hvacpl.hdl_total = bldg_design_loads.Heat_Tot.round
2847-
hvacpl.hdl_walls = bldg_design_loads.Heat_Walls.round
2848-
hvacpl.hdl_ceilings = bldg_design_loads.Heat_Ceilings.round
2849-
hvacpl.hdl_roofs = bldg_design_loads.Heat_Roofs.round
2850-
hvacpl.hdl_floors = bldg_design_loads.Heat_Floors.round
2851-
hvacpl.hdl_slabs = bldg_design_loads.Heat_Slabs.round
2852-
hvacpl.hdl_windows = bldg_design_loads.Heat_Windows.round
2853-
hvacpl.hdl_skylights = bldg_design_loads.Heat_Skylights.round
2854-
hvacpl.hdl_doors = bldg_design_loads.Heat_Doors.round
2855-
hvacpl.hdl_infilvent = bldg_design_loads.Heat_InfilVent.round
2856-
hvacpl.hdl_ducts = bldg_design_loads.Heat_Ducts.round
2846+
hvacpl.hdl_total = Float(bldg_design_loads.Heat_Tot.round)
2847+
hvacpl.hdl_walls = Float(bldg_design_loads.Heat_Walls.round)
2848+
hvacpl.hdl_ceilings = Float(bldg_design_loads.Heat_Ceilings.round)
2849+
hvacpl.hdl_roofs = Float(bldg_design_loads.Heat_Roofs.round)
2850+
hvacpl.hdl_floors = Float(bldg_design_loads.Heat_Floors.round)
2851+
hvacpl.hdl_slabs = Float(bldg_design_loads.Heat_Slabs.round)
2852+
hvacpl.hdl_windows = Float(bldg_design_loads.Heat_Windows.round)
2853+
hvacpl.hdl_skylights = Float(bldg_design_loads.Heat_Skylights.round)
2854+
hvacpl.hdl_doors = Float(bldg_design_loads.Heat_Doors.round)
2855+
hvacpl.hdl_infilvent = Float(bldg_design_loads.Heat_InfilVent.round)
2856+
hvacpl.hdl_ducts = Float(bldg_design_loads.Heat_Ducts.round)
28572857
hdl_sum = (hvacpl.hdl_walls + hvacpl.hdl_ceilings + hvacpl.hdl_roofs +
28582858
hvacpl.hdl_floors + hvacpl.hdl_slabs + hvacpl.hdl_windows +
28592859
hvacpl.hdl_skylights + hvacpl.hdl_doors + hvacpl.hdl_infilvent +
@@ -2863,18 +2863,18 @@ def self.apply_hvac_sizing(hpxml_bldg, weather, cfa)
28632863
end
28642864

28652865
# Assign cooling sensible design loads to HPXML object
2866-
hvacpl.cdl_sens_total = bldg_design_loads.Cool_Sens.round
2867-
hvacpl.cdl_sens_walls = bldg_design_loads.Cool_Walls.round
2868-
hvacpl.cdl_sens_ceilings = bldg_design_loads.Cool_Ceilings.round
2869-
hvacpl.cdl_sens_roofs = bldg_design_loads.Cool_Roofs.round
2870-
hvacpl.cdl_sens_floors = bldg_design_loads.Cool_Floors.round
2866+
hvacpl.cdl_sens_total = Float(bldg_design_loads.Cool_Sens.round)
2867+
hvacpl.cdl_sens_walls = Float(bldg_design_loads.Cool_Walls.round)
2868+
hvacpl.cdl_sens_ceilings = Float(bldg_design_loads.Cool_Ceilings.round)
2869+
hvacpl.cdl_sens_roofs = Float(bldg_design_loads.Cool_Roofs.round)
2870+
hvacpl.cdl_sens_floors = Float(bldg_design_loads.Cool_Floors.round)
28712871
hvacpl.cdl_sens_slabs = 0.0
2872-
hvacpl.cdl_sens_windows = bldg_design_loads.Cool_Windows.round
2873-
hvacpl.cdl_sens_skylights = bldg_design_loads.Cool_Skylights.round
2874-
hvacpl.cdl_sens_doors = bldg_design_loads.Cool_Doors.round
2875-
hvacpl.cdl_sens_infilvent = bldg_design_loads.Cool_InfilVent_Sens.round
2876-
hvacpl.cdl_sens_ducts = bldg_design_loads.Cool_Ducts_Sens.round
2877-
hvacpl.cdl_sens_intgains = bldg_design_loads.Cool_IntGains_Sens.round
2872+
hvacpl.cdl_sens_windows = Float(bldg_design_loads.Cool_Windows.round)
2873+
hvacpl.cdl_sens_skylights = Float(bldg_design_loads.Cool_Skylights.round)
2874+
hvacpl.cdl_sens_doors = Float(bldg_design_loads.Cool_Doors.round)
2875+
hvacpl.cdl_sens_infilvent = Float(bldg_design_loads.Cool_InfilVent_Sens.round)
2876+
hvacpl.cdl_sens_ducts = Float(bldg_design_loads.Cool_Ducts_Sens.round)
2877+
hvacpl.cdl_sens_intgains = Float(bldg_design_loads.Cool_IntGains_Sens.round)
28782878
cdl_sens_sum = (hvacpl.cdl_sens_walls + hvacpl.cdl_sens_ceilings +
28792879
hvacpl.cdl_sens_roofs + hvacpl.cdl_sens_floors +
28802880
hvacpl.cdl_sens_slabs + hvacpl.cdl_sens_windows +
@@ -2886,10 +2886,10 @@ def self.apply_hvac_sizing(hpxml_bldg, weather, cfa)
28862886
end
28872887

28882888
# Assign cooling latent design loads to HPXML object
2889-
hvacpl.cdl_lat_total = bldg_design_loads.Cool_Lat.round
2890-
hvacpl.cdl_lat_ducts = bldg_design_loads.Cool_Ducts_Lat.round
2891-
hvacpl.cdl_lat_infilvent = bldg_design_loads.Cool_InfilVent_Lat.round
2892-
hvacpl.cdl_lat_intgains = bldg_design_loads.Cool_IntGains_Lat.round
2889+
hvacpl.cdl_lat_total = Float(bldg_design_loads.Cool_Lat.round)
2890+
hvacpl.cdl_lat_ducts = Float(bldg_design_loads.Cool_Ducts_Lat.round)
2891+
hvacpl.cdl_lat_infilvent = Float(bldg_design_loads.Cool_InfilVent_Lat.round)
2892+
hvacpl.cdl_lat_intgains = Float(bldg_design_loads.Cool_IntGains_Lat.round)
28932893
cdl_lat_sum = (hvacpl.cdl_lat_ducts + hvacpl.cdl_lat_infilvent +
28942894
hvacpl.cdl_lat_intgains)
28952895
if (cdl_lat_sum - hvacpl.cdl_lat_total).abs > tol
@@ -2906,14 +2906,14 @@ def self.apply_hvac_sizing(hpxml_bldg, weather, cfa)
29062906

29072907
# Heating capacities
29082908
if htg_sys.heating_capacity.nil? || ((htg_sys.heating_capacity - hvac_sizing_values.Heat_Capacity).abs >= 1.0)
2909-
scaling_factor = hvac_sizing_values.Heat_Capacity.round / htg_sys.heating_capacity unless htg_sys.heating_capacity.nil?
2909+
scaling_factor = Float(hvac_sizing_values.Heat_Capacity.round) / htg_sys.heating_capacity unless htg_sys.heating_capacity.nil?
29102910
# Heating capacity @ 17F
29112911
if htg_sys.is_a? HPXML::HeatPump
29122912
if (not htg_sys.heating_capacity.nil?) && (not htg_sys.heating_capacity_17F.nil?)
29132913
# Fixed value entered; scale w/ heating_capacity in case allow_increased_fixed_capacities=true
29142914
htg_cap_17f = htg_sys.heating_capacity_17F * scaling_factor
29152915
if (htg_sys.heating_capacity_17F - htg_cap_17f).abs >= 1.0
2916-
htg_sys.heating_capacity_17F = htg_cap_17f.round
2916+
htg_sys.heating_capacity_17F = Float(htg_cap_17f.round)
29172917
htg_sys.heating_capacity_17F_isdefaulted = true
29182918
end
29192919
end
@@ -2923,20 +2923,20 @@ def self.apply_hvac_sizing(hpxml_bldg, weather, cfa)
29232923
htg_sys.heating_detailed_performance_data.each do |dp|
29242924
htg_cap_dp = dp.capacity * scaling_factor
29252925
if (dp.capacity - htg_cap_dp).abs >= 1.0
2926-
dp.capacity = htg_cap_dp.round
2926+
dp.capacity = Float(htg_cap_dp.round)
29272927
dp.capacity_isdefaulted = true
29282928
end
29292929
end
29302930
end
2931-
htg_sys.heating_capacity = hvac_sizing_values.Heat_Capacity.round
2931+
htg_sys.heating_capacity = Float(hvac_sizing_values.Heat_Capacity.round)
29322932
htg_sys.heating_capacity_isdefaulted = true
29332933
end
29342934
if htg_sys.is_a? HPXML::HeatPump
29352935
if htg_sys.backup_type.nil?
29362936
htg_sys.backup_heating_capacity = 0.0
29372937
elsif htg_sys.backup_type == HPXML::HeatPumpBackupTypeIntegrated
29382938
if htg_sys.backup_heating_capacity.nil? || ((htg_sys.backup_heating_capacity - hvac_sizing_values.Heat_Capacity_Supp).abs >= 1.0)
2939-
htg_sys.backup_heating_capacity = hvac_sizing_values.Heat_Capacity_Supp.round
2939+
htg_sys.backup_heating_capacity = Float(hvac_sizing_values.Heat_Capacity_Supp.round)
29402940
htg_sys.backup_heating_capacity_isdefaulted = true
29412941
end
29422942
end
@@ -2946,7 +2946,7 @@ def self.apply_hvac_sizing(hpxml_bldg, weather, cfa)
29462946
if not (htg_sys.is_a?(HPXML::HeatingSystem) &&
29472947
[HPXML::HVACTypeBoiler,
29482948
HPXML::HVACTypeElectricResistance].include?(htg_sys.heating_system_type))
2949-
htg_sys.heating_airflow_cfm = hvac_sizing_values.Heat_Airflow.round
2949+
htg_sys.heating_airflow_cfm = Float(hvac_sizing_values.Heat_Airflow.round)
29502950
htg_sys.heating_airflow_cfm_isdefaulted = true
29512951
end
29522952

@@ -2965,32 +2965,32 @@ def self.apply_hvac_sizing(hpxml_bldg, weather, cfa)
29652965
# Cooling capacities
29662966
if clg_sys.cooling_capacity.nil? || ((clg_sys.cooling_capacity - hvac_sizing_values.Cool_Capacity).abs >= 1.0)
29672967
if not clg_sys.cooling_detailed_performance_data.empty?
2968-
scaling_factor = hvac_sizing_values.Cool_Capacity.round / clg_sys.cooling_capacity unless clg_sys.cooling_capacity.nil?
2968+
scaling_factor = Float(hvac_sizing_values.Cool_Capacity.round) / clg_sys.cooling_capacity unless clg_sys.cooling_capacity.nil?
29692969
# Fixed values entered; Scale w/ cooling_capacity in case allow_increased_fixed_capacities=true
29702970
clg_sys.cooling_detailed_performance_data.each do |dp|
29712971
clg_cap_dp = dp.capacity * scaling_factor
29722972
if (dp.capacity - clg_cap_dp).abs >= 1.0
2973-
dp.capacity = clg_cap_dp.round
2973+
dp.capacity = Float(clg_cap_dp.round)
29742974
dp.capacity_isdefaulted = true
29752975
end
29762976
end
29772977
end
2978-
clg_sys.cooling_capacity = hvac_sizing_values.Cool_Capacity.round
2978+
clg_sys.cooling_capacity = Float(hvac_sizing_values.Cool_Capacity.round)
29792979
clg_sys.cooling_capacity_isdefaulted = true
29802980
end
29812981
# Integrated heating system capacities
29822982
if (clg_sys.is_a? HPXML::CoolingSystem) && clg_sys.has_integrated_heating
29832983
if clg_sys.integrated_heating_system_capacity.nil? || ((clg_sys.integrated_heating_system_capacity - hvac_sizing_values.Heat_Capacity).abs >= 1.0)
2984-
clg_sys.integrated_heating_system_capacity = hvac_sizing_values.Heat_Capacity.round
2984+
clg_sys.integrated_heating_system_capacity = Float(hvac_sizing_values.Heat_Capacity.round)
29852985
clg_sys.integrated_heating_system_capacity_isdefaulted = true
29862986
end
2987-
clg_sys.integrated_heating_system_airflow_cfm = hvac_sizing_values.Heat_Airflow.round
2987+
clg_sys.integrated_heating_system_airflow_cfm = Float(hvac_sizing_values.Heat_Airflow.round)
29882988
clg_sys.integrated_heating_system_airflow_cfm_isdefaulted = true
29892989
end
2990-
clg_sys.additional_properties.cooling_capacity_sensible = hvac_sizing_values.Cool_Capacity_Sens.round
2990+
clg_sys.additional_properties.cooling_capacity_sensible = Float(hvac_sizing_values.Cool_Capacity_Sens.round)
29912991

29922992
# Cooling airflow
2993-
clg_sys.cooling_airflow_cfm = hvac_sizing_values.Cool_Airflow.round
2993+
clg_sys.cooling_airflow_cfm = Float(hvac_sizing_values.Cool_Airflow.round)
29942994
clg_sys.cooling_airflow_cfm_isdefaulted = true
29952995
end
29962996
end

0 commit comments

Comments
 (0)