Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Os3 8 fixes for NzeHvac #56

Merged
merged 2 commits into from
May 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions lib/measures/nze_hvac/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ def run(model, runner, user_arguments)
when 'Automatic Partition'
# group zones by occupancy type (residential/nonresidential)
# split non-dominant groups if their total area exceeds 20,000 ft2.
sys_groups = std.model_group_zones_by_type(model, OpenStudio.convert(20000, 'ft^2', 'm^2').get)
sys_groups = OpenstudioStandards::Geometry.model_group_thermal_zones_by_occupancy_type(model, OpenStudio.convert(20000, 'ft^2', 'm^2').get)

# assume secondary system type is PSZ-AC for VAV Reheat otherwise assume same hvac system type
sec_sys_type = hvac_system_type # same as primary system type
Expand All @@ -381,13 +381,13 @@ def run(model, runner, user_arguments)
add_system_to_zones(model, runner, hvac_system_type, conditioned_zones, std, doas_dcv: doas_dcv)

when 'One System Per Building Story'
story_groups = std.model_group_zones_by_story(model, conditioned_zones)
story_groups = OpenstudioStandards::Geometry.model_group_thermal_zones_by_building_story(model, conditioned_zones)
story_groups.each do |story_zones|
add_system_to_zones(model, runner, hvac_system_type, story_zones, std, doas_dcv: doas_dcv)
end

when 'One System Per Building Type'
system_groups = std.model_group_zones_by_building_type(model, 0.0)
system_groups = OpenstudioStandards::Geometry.model_group_thermal_zones_by_building_type(model, 0.0)
system_groups.each do |system_group|
add_system_to_zones(model, runner, hvac_system_type, system_group['zones'], std, doas_dcv: doas_dcv)
end
Expand Down
8 changes: 4 additions & 4 deletions lib/measures/nze_hvac/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>nze_hvac</name>
<uid>f060dff2-b28d-4194-a6af-e66d88ddb33c</uid>
<version_id>a2ad7907-8083-482b-a970-f891362eb561</version_id>
<version_modified>2024-05-07T22:07:52Z</version_modified>
<version_id>fb498bc9-7394-45d8-a884-9fe5b872176d</version_id>
<version_modified>2024-05-09T17:21:18Z</version_modified>
<xml_checksum>0E5E4776</xml_checksum>
<class_name>NzeHvac</class_name>
<display_name>NZEHVAC</display_name>
Expand Down Expand Up @@ -258,13 +258,13 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>C8C36771</checksum>
<checksum>7538C55C</checksum>
</file>
<file>
<filename>NZEHVAC_Test.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>B2D92497</checksum>
<checksum>90B2A846</checksum>
</file>
<file>
<filename>USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw</filename>
Expand Down
32 changes: 16 additions & 16 deletions lib/measures/nze_hvac/tests/NZEHVAC_Test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,9 @@ def run_nze_hvac_measure_test(test_name, osm_path, epw_path,

# test for unmet hours
errs = []
unmet_heating_hrs = std.model_annual_occupied_unmet_heating_hours(model)
unmet_cooling_hrs = std.model_annual_occupied_unmet_cooling_hours(model)
unmet_hrs = std.model_annual_occupied_unmet_hours(model)
unmet_heating_hrs = OpenstudioStandards::SqlFile.model_get_annual_occupied_unmet_heating_hours(model)
unmet_cooling_hrs = OpenstudioStandards::SqlFile.model_get_annual_occupied_unmet_cooling_hours(model)
unmet_hrs = OpenstudioStandards::SqlFile.model_get_annual_occupied_unmet_hours(model)
if unmet_hrs
if unmet_hrs > max_unmet_hrs
errs << "For #{test_name} there were #{unmet_heating_hrs.round(1)} unmet occupied heating hours and #{unmet_cooling_hrs.round(1)} unmet occupied cooling hours (total: #{unmet_hrs.round(1)}), more than the limit of #{max_unmet_hrs}." if unmet_hrs > max_unmet_hrs
Expand All @@ -160,21 +160,21 @@ def run_nze_hvac_measure_test(test_name, osm_path, epw_path,
end

# calculate EUIs to determine if HVAC EUI is appropriate
annual_eui = std.model_annual_eui_kbtu_per_ft2(model)
int_lighting_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Interior Lighting').round(1)
ext_lighting_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Exterior Lighting').round(1)
int_equipment_elec_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Interior Equipment').round(1)
int_equipment_gas_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Natural Gas', 'Interior Equipment').round(1)
annual_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2(model)
int_lighting_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Interior Lighting').round(1)
ext_lighting_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Exterior Lighting').round(1)
int_equipment_elec_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Interior Equipment').round(1)
int_equipment_gas_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Natural Gas', 'Interior Equipment').round(1)
int_equipment_eui = (int_equipment_elec_eui + int_equipment_gas_eui).round(1)
refrigeration_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Refrigeration').round(1)
shw_elec_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Water Systems').round(1)
shw_gas_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Natural Gas', 'Water Systems').round(1)
refrigeration_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Refrigeration').round(1)
shw_elec_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Water Systems').round(1)
shw_gas_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Natural Gas', 'Water Systems').round(1)
shw_eui = (shw_elec_eui + shw_gas_eui).round(1)
fan_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Fans').round(1)
pump_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Pumps').round(1)
cooling_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Cooling').round(1)
heating_elec_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Heating').round(1)
heating_gas_eui = std.model_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Natural Gas', 'Heating').round(1)
fan_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Fans').round(1)
pump_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Pumps').round(1)
cooling_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Cooling').round(1)
heating_elec_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Electricity', 'Heating').round(1)
heating_gas_eui = OpenstudioStandards::SqlFile.model_get_annual_eui_kbtu_per_ft2_by_fuel_and_enduse(model, 'Natural Gas', 'Heating').round(1)
heating_eui = (heating_elec_eui + heating_gas_eui).round(1)
hvac_eui = (fan_eui + pump_eui + cooling_eui + heating_eui).round(1)
puts "Annual EUI (kBtu/ft^2): #{annual_eui.round(1)}, split:"
Expand Down