openstudio-standards 0.2.17.rc1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/openstudio_standards_duplicates_log.csv +5 -0
- data/lib/openstudio-standards/btap/btap_result.rb +138 -138
- data/lib/openstudio-standards/btap/economics.rb +58 -53
- data/lib/openstudio-standards/btap/envelope.rb +1 -1
- data/lib/openstudio-standards/btap/fileio.rb +12 -12
- data/lib/openstudio-standards/btap/measures.rb +63 -59
- data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +5 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +8 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +9 -3
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +53 -23
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +15 -1
- data/lib/openstudio-standards/standards/Standards.Construction.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Model.rb +18 -18
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +5 -5
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +3 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +43 -40
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.entryways.json +19 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.parking.json +13 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +9 -9
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +5 -1
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +5 -1
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +8 -4
- data/lib/openstudio-standards/standards/necb/ECMS/nv.rb +8 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +7 -3
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +4 -4
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +1 -1
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +5 -0
- metadata +4 -2
@@ -21,9 +21,9 @@ class NECB2011
|
|
21
21
|
# @return [Bool] returns true if an economizer is required, false if not
|
22
22
|
def air_loop_hvac_economizer_required?(air_loop_hvac)
|
23
23
|
economizer_required = false
|
24
|
-
|
24
|
+
|
25
25
|
# need a better way to determine if an economizer is needed.
|
26
|
-
return economizer_required if ((air_loop_hvac.name.to_s.include? 'Outpatient F1' ) ||
|
26
|
+
return economizer_required if ((air_loop_hvac.name.to_s.include? 'Outpatient F1' ) ||
|
27
27
|
(air_loop_hvac.sizingSystem.typeofLoadtoSizeOn.to_s == "VentilationRequirement"))
|
28
28
|
|
29
29
|
# A big number of btu per hr as the minimum requirement
|
@@ -1997,7 +1997,11 @@ class NECB2011
|
|
1997
1997
|
air_loop_sizing.setCentralHeatingDesignSupplyAirTemperature(system_data[:CentralHeatingDesignSupplyAirTemperature]) unless system_data[:CentralHeatingDesignSupplyAirTemperature].nil?
|
1998
1998
|
air_loop_sizing.setAllOutdoorAirinCooling(system_data[:AllOutdoorAirinCooling]) unless system_data[:AllOutdoorAirinCooling].nil?
|
1999
1999
|
air_loop_sizing.setAllOutdoorAirinHeating(system_data[:AllOutdoorAirinHeating]) unless system_data[:AllOutdoorAirinHeating].nil?
|
2000
|
-
|
2000
|
+
if model.version < OpenStudio::VersionString.new('2.7.0')
|
2001
|
+
air_loop_sizing.setMinimumSystemAirFlowRatio(system_data[:MinimumSystemAirFlowRatio]) unless system_data[:MinimumSystemAirFlowRatio].nil?
|
2002
|
+
else
|
2003
|
+
air_loop_sizing.setCentralHeatingMaximumSystemAirFlowRatio(system_data[:MinimumSystemAirFlowRatio]) unless system_data[:MinimumSystemAirFlowRatio].nil?
|
2004
|
+
end
|
2001
2005
|
return mau_air_loop
|
2002
2006
|
end
|
2003
2007
|
|
@@ -835,7 +835,7 @@ class NECB2011
|
|
835
835
|
air_loop_info[:cooling_coils][:dx_single_speed] << coil
|
836
836
|
single_speed = supply_comp.to_CoilCoolingDXSingleSpeed.get
|
837
837
|
coil[:name] = single_speed.name.get
|
838
|
-
coil[:cop] = single_speed.ratedCOP.
|
838
|
+
coil[:cop] = single_speed.ratedCOP.to_f
|
839
839
|
coil[:nominal_total_capacity_w] = model.sqlFile.get.execAndReturnFirstDouble("SELECT Value FROM TabularDataWithStrings WHERE ReportName='EquipmentSummary' AND ReportForString='Entire Facility' AND TableName='Cooling Coils' AND ColumnName='Nominal Total Capacity' AND RowName='#{coil[:name].upcase}' ")
|
840
840
|
coil[:nominal_total_capacity_w] = validate_optional(coil[:nominal_total_capacity_w], model, -1.0)
|
841
841
|
end
|
@@ -844,8 +844,8 @@ class NECB2011
|
|
844
844
|
air_loop_info[:cooling_coils][:dx_two_speed] << coil
|
845
845
|
two_speed = supply_comp.to_CoilCoolingDXTwoSpeed.get
|
846
846
|
coil[:name] = two_speed.name.get
|
847
|
-
coil[:cop_low] = two_speed.ratedLowSpeedCOP.
|
848
|
-
coil[:cop_high] = two_speed.ratedHighSpeedCOP.
|
847
|
+
coil[:cop_low] = two_speed.ratedLowSpeedCOP.to_f
|
848
|
+
coil[:cop_high] = two_speed.ratedHighSpeedCOP.to_f
|
849
849
|
coil[:nominal_total_capacity_w] = model.sqlFile.get.execAndReturnFirstDouble("SELECT Value FROM TabularDataWithStrings WHERE ReportName='EquipmentSummary' AND ReportForString='Entire Facility' AND TableName='Cooling Coils' AND ColumnName='Nominal Total Capacity' AND RowName='#{coil[:name].upcase}' ")
|
850
850
|
coil[:nominal_total_capacity_w] = validate_optional(coil[:nominal_total_capacity_w], model, -1.0)
|
851
851
|
end
|
@@ -1712,7 +1712,7 @@ class NECB2011
|
|
1712
1712
|
# This method will run the HRV compliance for a single air loop
|
1713
1713
|
#
|
1714
1714
|
# @param qaqc [:hash] Hash that contains the base data with qaqc keys
|
1715
|
-
# @param model [:OS:Model]
|
1715
|
+
# @param model [:OS:Model] OpenStudio Model
|
1716
1716
|
# @param air_loop_info [:hash] single air_loop object from the qaqc hash
|
1717
1717
|
def necb_hrv_compliance_for_single_airloop(qaqc, model, air_loop_info)
|
1718
1718
|
# HRV check
|
@@ -222,7 +222,7 @@ class NECB2011
|
|
222
222
|
|
223
223
|
# Append the name with standards information
|
224
224
|
water_heater_mixed.setName("#{water_heater_mixed.name} #{water_heater_eff.round(3)} Therm Eff")
|
225
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.WaterHeaterMixed', "For #{template}: #{water_heater_mixed.name}; thermal efficiency = #{water_heater_eff.round(3)}, skin-loss UA = #{ua_btu_per_hr_per_f.round}Btu/hr")
|
225
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.WaterHeaterMixed', "For #{template}: #{water_heater_mixed.name}; thermal efficiency = #{water_heater_eff.round(3)}, skin-loss UA = #{ua_btu_per_hr_per_f.round}Btu/hr-R")
|
226
226
|
return true
|
227
227
|
end
|
228
228
|
|
@@ -153,7 +153,7 @@ class NECB2020
|
|
153
153
|
|
154
154
|
# Append the name with standards information
|
155
155
|
water_heater_mixed.setName("#{water_heater_mixed.name} #{water_heater_eff.round(3)} Therm Eff")
|
156
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.WaterHeaterMixed', "For #{template}: #{water_heater_mixed.name}; thermal efficiency = #{water_heater_eff.round(3)}, skin-loss UA = #{ua_btu_per_hr_per_f.round}Btu/hr")
|
156
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.WaterHeaterMixed', "For #{template}: #{water_heater_mixed.name}; thermal efficiency = #{water_heater_eff.round(3)}, skin-loss UA = #{ua_btu_per_hr_per_f.round}Btu/hr-R")
|
157
157
|
return true
|
158
158
|
end
|
159
159
|
end
|
@@ -98,6 +98,11 @@ class Standard
|
|
98
98
|
weather_dir = File.expand_path(File.join(Dir.pwd, 'extracted_files/weather/'))
|
99
99
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.weather.Model', "Extracting weather files from OpenStudio CLI to #{weather_dir}")
|
100
100
|
FileUtils.mkdir_p(weather_dir)
|
101
|
+
|
102
|
+
path_length = "#{weather_dir}/#{weather_file_name}".length
|
103
|
+
if path_length > 260
|
104
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.weather.Model', "Weather file path length #{path_length} is >260 characters and may cause issues in Windows environments.")
|
105
|
+
end
|
101
106
|
File.open("#{weather_dir}/#{weather_file_name}", 'wb') { |f| f << epw_string; f.flush }
|
102
107
|
File.open("#{weather_dir}/#{weather_file_name.gsub('.epw', '.ddy')}", 'wb') { |f| f << ddy_string; f.flush }
|
103
108
|
File.open("#{weather_dir}/#{weather_file_name.gsub('.epw', '.stat')}", 'wb') { |f| f << stat_string; f.flush }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstudio-standards
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Parker
|
@@ -28,7 +28,7 @@ authors:
|
|
28
28
|
autorequire:
|
29
29
|
bindir: bin
|
30
30
|
cert_chain: []
|
31
|
-
date: 2022-
|
31
|
+
date: 2022-11-03 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: minitest-reporters
|
@@ -653,6 +653,7 @@ files:
|
|
653
653
|
- data/geometry/DOERefSmallOffice.json
|
654
654
|
- data/geometry/DOERefWarehouse.json
|
655
655
|
- data/geometry/DOERefWarehouse.osm
|
656
|
+
- data/standards/OpenStudio_Standards-ashrae_90_1.xlsx
|
656
657
|
- data/standards/exclude_list.csv
|
657
658
|
- data/standards/export_OpenStudio_libraries.rb
|
658
659
|
- data/standards/legacy_dd_results.csv
|
@@ -661,6 +662,7 @@ files:
|
|
661
662
|
- data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1-ALL-comstockspace_types.csv
|
662
663
|
- data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1.csv
|
663
664
|
- data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1space_types.csv
|
665
|
+
- data/standards/openstudio_standards_duplicates_log.csv
|
664
666
|
- data/standards/templates_to_climate_zones.json
|
665
667
|
- data/standards/test_performance_expected_dd_results.csv
|
666
668
|
- data/weather/ALTURAS_725958_CZ2010.ddy
|