diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index 5431067704..904671ef23 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - 15c39750-5947-45ef-887d-47606442ed57 - 2026-04-02T19:46:00Z + bf9d7070-c3d0-4251-ad9d-e45da9629d51 + 2026-04-09T03:47:56Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -499,7 +499,7 @@ output.rb rb resource - 7F8E008D + 2712B090 psychrometrics.rb diff --git a/HPXMLtoOpenStudio/resources/output.rb b/HPXMLtoOpenStudio/resources/output.rb index f79913da87..b3fa98fa76 100644 --- a/HPXMLtoOpenStudio/resources/output.rb +++ b/HPXMLtoOpenStudio/resources/output.rb @@ -128,6 +128,9 @@ def self.apply_unmet_hours_ems_program(model, hpxml_osm_map, hpxml_header) htg_avail_sensor = model.getEnergyManagementSystemSensors.find { |s| s.additionalProperties.getFeatureAsString('ObjectType').to_s == Constants::ObjectTypeHeatingAvailabilitySensor } clg_avail_sensor = model.getEnergyManagementSystemSensors.find { |s| s.additionalProperties.getFeatureAsString('ObjectType').to_s == Constants::ObjectTypeCoolingAvailabilitySensor } + htg_tol = model.getOutputControlReportingTolerances.toleranceforTimeHeatingSetpointNotMet + clg_tol = model.getOutputControlReportingTolerances.toleranceforTimeCoolingSetpointNotMet + # EMS program clg_hrs = 'clg_unmet_hours' htg_hrs = 'htg_unmet_hours' @@ -151,7 +154,7 @@ def self.apply_unmet_hours_ems_program(model, hpxml_osm_map, hpxml_header) line += " && (#{htg_avail_sensor.name} == 1)" if not htg_avail_sensor.nil? program.addLine(line) if zone_air_temp_sensors.keys.include? unit # on off deadband - program.addLine(" If #{zone_air_temp_sensors[unit].name} < (#{htg_spt_sensors[unit].name} - #{UnitConversions.convert(onoff_deadbands, 'deltaF', 'deltaC')})") + program.addLine(" If #{zone_air_temp_sensors[unit].name} < (#{htg_spt_sensors[unit].name} - #{htg_tol})") program.addLine(" Set #{unit_htg_hrs} = #{unit_htg_hrs} + #{htg_sensors[unit].name}") program.addLine(' EndIf') else @@ -173,7 +176,7 @@ def self.apply_unmet_hours_ems_program(model, hpxml_osm_map, hpxml_header) line += " && (#{clg_avail_sensor.name} == 1)" if not clg_avail_sensor.nil? program.addLine(line) if zone_air_temp_sensors.keys.include? unit # on off deadband - program.addLine(" If #{zone_air_temp_sensors[unit].name} > (#{clg_spt_sensors[unit].name} + #{UnitConversions.convert(onoff_deadbands, 'deltaF', 'deltaC')})") + program.addLine(" If #{zone_air_temp_sensors[unit].name} > (#{clg_spt_sensors[unit].name} + #{clg_tol})") program.addLine(" Set #{unit_clg_hrs} = #{unit_clg_hrs} + #{clg_sensors[unit].name}") program.addLine(' EndIf') else diff --git a/workflow/tests/base_results/results_simulations_misc.csv b/workflow/tests/base_results/results_simulations_misc.csv index ad6f534372..3526934def 100644 --- a/workflow/tests/base_results/results_simulations_misc.csv +++ b/workflow/tests/base_results/results_simulations_misc.csv @@ -215,11 +215,11 @@ base-hvac-air-to-air-heat-pump-1-speed-detailed-performance.xml,0.0,0.0,0.0,1286 base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml,0.0,0.0,0.0,1286.4,890.5,11468.5,3942.3,9035.1,4233.1,9035.1,9035.1,4233.1,9035.1,31072.0,24785.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml,0.0,0.0,0.0,1286.4,890.5,11468.6,3942.3,9046.3,1887.6,9046.3,9046.3,1887.6,9046.3,31055.0,0.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml,148.0,0.0,0.0,1286.4,890.5,11468.6,3942.3,15409.2,4217.6,15409.2,15409.2,4217.6,15409.2,51750.0,24621.0,0.0 -base-hvac-air-to-air-heat-pump-1-speed-research-features.xml,250.567,0.0,0.0,1286.4,890.5,12241.8,4208.1,20808.8,9769.5,20808.8,20808.8,9769.5,20808.8,63178.0,33162.0,0.0 +base-hvac-air-to-air-heat-pump-1-speed-research-features.xml,412.433,0.0,0.0,1286.4,890.5,12241.8,4208.1,20808.8,9769.5,20808.8,20808.8,9769.5,20808.8,63178.0,33162.0,0.0 base-hvac-air-to-air-heat-pump-1-speed-seer-hspf.xml,0.0,0.0,0.0,1286.4,890.5,11468.5,3942.3,9099.4,4416.8,9099.4,9099.4,4416.8,9099.4,31054.0,24785.0,0.0 base-hvac-air-to-air-heat-pump-1-speed.xml,0.0,0.0,0.0,1286.4,890.5,11468.5,3942.3,9063.9,4233.1,9063.9,9063.9,4233.1,9063.9,31054.0,24785.0,0.0 base-hvac-air-to-air-heat-pump-2-speed-detailed-performance.xml,0.0,0.0,0.0,1286.4,890.5,11468.5,3942.3,8970.5,4139.6,8970.5,8970.5,4139.6,8970.5,31065.0,26551.0,0.0 -base-hvac-air-to-air-heat-pump-2-speed-research-features.xml,113.483,0.0,0.0,1286.4,890.5,12241.8,4208.1,20428.5,8271.9,20428.5,20428.5,8271.9,20428.5,61169.0,24149.0,0.0 +base-hvac-air-to-air-heat-pump-2-speed-research-features.xml,371.3,0.0,0.0,1286.4,890.5,12241.8,4208.1,20428.5,8271.9,20428.5,20428.5,8271.9,20428.5,61169.0,24149.0,0.0 base-hvac-air-to-air-heat-pump-2-speed.xml,0.0,0.0,0.0,1286.4,890.5,11468.5,3942.3,9006.7,3885.5,9006.7,9006.7,3885.5,9006.7,31037.0,26784.0,0.0 base-hvac-air-to-air-heat-pump-var-speed-autosize-maxload.xml,0.0,0.0,0.0,1286.4,890.5,11468.5,3942.3,6255.1,3407.2,6255.1,6255.1,3407.2,6255.1,29024.0,24805.0,0.0 base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml,3.0,460.0,0.0,1286.4,890.5,11468.6,3942.3,3285.6,3239.0,3285.6,3285.6,3239.0,3285.6,26537.0,18943.0,0.0