openstudio-standards 0.2.17.rc1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|