openstudio-standards 0.2.12.rc4 → 0.2.13.rc3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/geometry/ASHRAE90120162019HighriseApartment.json +1042 -0
- data/data/geometry/ASHRAE90120162019Hospital.json +199 -0
- data/data/geometry/ASHRAE90120162019LargeHotel.json +73 -0
- data/data/geometry/ASHRAE90120162019LargeOffice.json +109 -0
- data/data/geometry/ASHRAE90120162019SecondarySchool.json +205 -0
- data/data/geometry/ASHRAECourthouse.json +112 -0
- data/data/geometry/ASHRAECourthouse.osm +26470 -0
- data/data/geometry/ASHRAELargeHotel.osm +11 -1
- data/data/geometry/ASHRAELargeOffice.json +4 -0
- data/data/geometry/ASHRAESmallDataCenter.json +1 -1
- data/data/standards/OpenStudio_Standards-ashrae_90_1(space_types).xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/exclude_list.csv +19 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.boilers.json +49 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.chillers.json +293 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +25426 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_sets.json +1600 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +564 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.elevators.json +349 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +164 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ground_temperatures.json +10663 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps.json +508 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +156 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_rejection.json +44 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +184 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +3094 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_cases.json +829 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ref_lnup.json +562 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_compressors.json +52 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_condenser.json +220 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_system.json +156 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.refrigeration_walkins.json +1316 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +21446 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +554 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_heaters.json +68 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_source_heat_pumps.json +28 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.water_source_heat_pumps_heating.json +12 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.boilers.json +49 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.chillers.json +293 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +12487 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_sets.json +1600 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +564 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.elevators.json +349 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +164 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ground_temperatures.json +10663 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps.json +466 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +137 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_rejection.json +44 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +184 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +3094 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_cases.json +829 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ref_lnup.json +562 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_compressors.json +52 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_condenser.json +220 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_system.json +156 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.refrigeration_walkins.json +1316 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +21380 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +554 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_heaters.json +68 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_source_heat_pumps.json +28 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.water_source_heat_pumps_heating.json +12 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.boilers.json +49 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.chillers.json +395 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +12487 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_sets.json +1600 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +592 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.elevators.json +349 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +550 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +164 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ground_temperatures.json +10663 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps.json +466 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +137 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_rejection.json +44 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +238 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +3094 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_cases.json +829 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ref_lnup.json +562 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_compressors.json +52 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_condenser.json +220 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_system.json +156 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.refrigeration_walkins.json +1316 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +21548 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +554 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_heaters.json +68 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_source_heat_pumps.json +28 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.water_source_heat_pumps_heating.json +12 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.boilers.json +64 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.chillers.json +871 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +12487 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_sets.json +1600 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +592 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.elevators.json +349 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +1096 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +164 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ground_temperatures.json +10663 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps.json +886 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +194 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_rejection.json +44 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +247 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +3094 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_cases.json +829 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ref_lnup.json +562 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_compressors.json +52 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_condenser.json +220 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_system.json +156 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.refrigeration_walkins.json +1316 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +22079 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +994 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_heaters.json +68 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps.json +28 -0
- data/data/standards/export/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps_heating.json +12 -0
- data/data/standards/manage_OpenStudio_Standards.rb +87 -37
- data/data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1-ALL-comstockspace_types.csv +236 -0
- data/data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1.csv +622 -0
- data/data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1space_types.csv +191 -0
- data/data/standards/openstudio_standards_duplicates_log.csv +17 -0
- data/data/standards/test_performance_expected_dd_results.csv +1971 -1171
- data/lib/openstudio-standards.rb +76 -18
- data/lib/openstudio-standards/btap/btap.model.rb +1 -1
- data/lib/openstudio-standards/btap/economics.rb +14 -11
- data/lib/openstudio-standards/btap/envelope.rb +185 -257
- data/lib/openstudio-standards/btap/fileio.rb +1 -0
- data/lib/openstudio-standards/btap/geometry.rb +21 -1
- data/lib/openstudio-standards/btap/measures.rb +12 -11
- data/lib/openstudio-standards/btap/schedules.rb +3 -12
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +178 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingDXMultiSpeed.rb +8 -8
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +3 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +28 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.FanVariableVolume.rb +0 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +28 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +53 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +29 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +157 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +29 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +24 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanConstantVolume.rb +32 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanOnOff.rb +33 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanVariableVolume.rb +32 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.elevators.rb +25 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +366 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +144 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +11 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +24 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanConstantVolume.rb +32 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanOnOff.rb +33 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanVariableVolume.rb +32 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.elevators.rb +25 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +367 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +144 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +11 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +0 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +0 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.HeatExchangerAirToAirSensibleAndLatent.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerAirToAirSensibleAndLatent.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +3 -3
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +74 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +46 -30
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +23 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +26 -15
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +8 -11
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +54 -60
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +56 -60
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +38 -12
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +218 -134
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +6 -2
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +230 -134
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +60 -62
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +25 -15
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +34 -22
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +31 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +43 -28
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +48 -38
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +9 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +575 -345
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +13 -19
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +13 -17
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +9 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +79 -51
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +60 -60
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +2 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +133 -120
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +124 -112
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +138 -66
- data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +7275 -199
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +35 -35
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +3 -3
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +4 -3
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +7 -8
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +7 -8
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +13 -14
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +7 -5
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.elevators.rb +4 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +0 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +25 -14
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +474 -89
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +35 -33
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +3 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +72 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +120 -120
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +142 -154
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +9 -3
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +11 -5
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +26 -14
- data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +270 -247
- data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
- data/lib/openstudio-standards/refs/references.rb +5 -2
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +70 -51
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +1 -0
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +2 -4
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +91 -2
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +4 -5
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +30 -9
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +3 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +0 -3
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +37 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -3
- data/lib/openstudio-standards/standards/Standards.Construction.rb +124 -118
- data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.Fan.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +2 -4
- data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +10 -3
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.Model.rb +305 -247
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -0
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -9
- data/lib/openstudio-standards/standards/Standards.Pump.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +103 -121
- data/lib/openstudio-standards/standards/Standards.Space.rb +42 -35
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +9 -17
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +25 -27
- data/lib/openstudio-standards/standards/Standards.Surface.rb +97 -52
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +76 -25
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +6 -7
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +85 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1.Standards.FanVariableVolume.rb +0 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +10 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Model.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +63 -99
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ext_ltg.json +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +2420 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +32 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_rejection.json +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +70 -40
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +105 -40
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +15 -15
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirLoopHVAC.rb +5 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +63 -99
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ext_ltg.json +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +1460 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +32 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_rejection.json +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +123 -39
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +104 -17
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +15 -15
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +32 -15
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +63 -99
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ext_ltg.json +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +1460 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +64 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +52 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_rejection.json +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +123 -39
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +112 -25
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +37 -14
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +63 -99
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ext_ltg.json +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.boilers.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.chillers.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +1460 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +64 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +104 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_rejection.json +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +125 -41
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +172 -55
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +15 -15
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_heaters.json +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.water_source_heat_pumps_heating.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +456 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +24 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTower.rb +19 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerSingleSpeed.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerTwoSpeed.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +16 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.FanVariableVolume.rb +37 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +189 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ThermalZone.rb +57 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +22 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.rb +16 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.boilers.json +68 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.chillers.json +490 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_properties.json +21244 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_sets.json +2111 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.economizers.json +676 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.elevators.json +372 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +1096 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ext_ltg.json +169 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps.json +532 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +164 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_rejection.json +49 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.motors.json +274 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.prototype_inputs.json +3094 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ref_cases.json +854 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ref_lnup.json +562 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_compressors.json +58 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_condenser.json +238 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_system.json +12 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_walkins.json +1316 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +23067 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +648 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.water_heaters.json +72 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.water_source_heat_pumps.json +31 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.water_source_heat_pumps_heating.json +13 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +456 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +24 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTower.rb +19 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerSingleSpeed.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerTwoSpeed.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +16 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.FanVariableVolume.rb +37 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +189 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ThermalZone.rb +57 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +22 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.rb +16 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.boilers.json +68 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.chillers.json +490 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_properties.json +21244 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_sets.json +2111 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.economizers.json +676 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.elevators.json +372 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +1096 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ext_ltg.json +169 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps.json +664 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +204 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_rejection.json +49 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.motors.json +274 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.prototype_inputs.json +3094 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ref_cases.json +854 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ref_lnup.json +562 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_compressors.json +58 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_condenser.json +238 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_system.json +12 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_walkins.json +1316 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +23067 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +671 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.water_heaters.json +72 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.water_source_heat_pumps.json +31 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.water_source_heat_pumps_heating.json +13 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +1662 -332
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.fans.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.materials.json +4994 -234
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +1743 -161
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +63 -99
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ext_ltg.json +11 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.heat_rejection.json +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.prototype_inputs.json +8 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +5967 -2727
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +63 -99
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ext_ltg.json +10 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.heat_rejection.json +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.prototype_inputs.json +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +5920 -2700
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.heat_rejection.json +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +2011 -1112
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +0 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.heat_rejection.json +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +1946 -1106
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.water_heaters.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +3 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes.Model.rb +1 -3
- data/lib/openstudio-standards/standards/cbes/cbes.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +8 -13
- data/lib/openstudio-standards/standards/deer/deer.Model.rb +2 -2
- data/lib/openstudio-standards/standards/deer/deer.PlanarSurface.rb +2 -0
- data/lib/openstudio-standards/standards/deer/deer.Space.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +0 -1
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +0 -1
- data/lib/openstudio-standards/standards/icc_iecc/icc_iecc_2015/icc_iecc_2015.rb +0 -1
- data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/btap_1980to2010.rb +2 -18
- data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/space_types.json +1677 -1005
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +87 -15
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +31 -19
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/curves.json +75 -0
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/heat_pumps.json +16 -16
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/space_types.json +1677 -1005
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +16 -2
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +15 -0
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +14 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/boiler_set.json +29 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +913 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/equip_eff_lim.json +52 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/erv.json +109 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/furnace_set.json +23 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps.json +803 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps_heating.json +787 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/pv.json +112 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/shw_set.json +29 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/unitary_acs.json +50 -0
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +100 -0
- data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +33 -0
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +1729 -0
- data/lib/openstudio-standards/standards/necb/ECMS/nv.rb +189 -0
- data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +104 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +68 -33
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +24 -13
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +110 -99
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +24 -24
- data/lib/openstudio-standards/standards/necb/NECB2011/data/curves.json +50 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/erv.json +31 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LowriseApartment.osm +39278 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/led_lighting_data.json +2028 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +1745 -1297
- data/lib/openstudio-standards/standards/necb/NECB2011/daylighting_control.md +70 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/demand_controlled_ventilation.md +46 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +69 -107
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +41 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +15 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +139 -141
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +38 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +13 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +12 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +492 -240
- data/lib/openstudio-standards/standards/necb/NECB2011/led_lighting.md +51 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/lighting.rb +75 -9
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +1229 -37
- data/lib/openstudio-standards/standards/necb/NECB2011/nv.md +74 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/pv_ground.md +44 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +11 -3
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/qaqc_resources/neb_end_use_prices.csv +39 -84
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2015/data/led_lighting_data.json +2883 -0
- data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +2554 -1916
- data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +32 -1
- data/lib/openstudio-standards/standards/necb/NECB2017/data/led_lighting_data.json +2883 -0
- data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +2554 -1916
- data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +29 -0
- data/lib/openstudio-standards/standards/oeesc/oeesc_2014/oeesc_2014.rb +0 -1
- data/lib/openstudio-standards/standards/standard.rb +6 -5
- data/lib/openstudio-standards/utilities/Add_template_field_to_json.rb +3 -3
- data/lib/openstudio-standards/utilities/convert_surfaces_to_adiabatic_necb_8426.rb +54 -54
- data/lib/openstudio-standards/utilities/generate_prototype_database.rb +2 -2
- data/lib/openstudio-standards/utilities/generate_space_types.rb +3 -3
- data/lib/openstudio-standards/utilities/logging.rb +7 -7
- data/lib/openstudio-standards/utilities/necb_to_epw_map.rb +14 -14
- data/lib/openstudio-standards/utilities/os_sim_extract.rb +25 -25
- data/lib/openstudio-standards/utilities/rename_surfaces.rb +10 -13
- data/lib/openstudio-standards/utilities/round_surf_coords.rb +18 -20
- data/lib/openstudio-standards/utilities/sched_create.rb +39 -41
- data/lib/openstudio-standards/utilities/set_mult_to_adiabatic.rb +31 -31
- data/lib/openstudio-standards/utilities/simulation.rb +13 -21
- data/lib/openstudio-standards/utilities/speacetype_map_converter.rb +10 -11
- data/lib/openstudio-standards/utilities/sqlfile.rb +6 -8
- data/lib/openstudio-standards/utilities/template_measure/measure.rb +108 -0
- data/lib/openstudio-standards/utilities/template_measure/measure.xml +162 -0
- data/lib/openstudio-standards/utilities/template_measure/resources/BTAPMeasureHelper.rb +448 -0
- data/lib/openstudio-standards/utilities/template_measure/tests/test.rb +160 -0
- data/lib/openstudio-standards/utilities/weatherData1_xlsx_to_json.rb +23 -26
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +112 -87
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +17 -17
- metadata +236 -2
@@ -569,6 +569,7 @@ class Standard
|
|
569
569
|
construction_name_to_vt_map = {}
|
570
570
|
space.surfaces.sort.each do |surface|
|
571
571
|
next unless surface.outsideBoundaryCondition == 'Outdoors' && surface.surfaceType == 'Wall'
|
572
|
+
|
572
573
|
surface.subSurfaces.sort.each do |sub_surface|
|
573
574
|
next unless sub_surface.outsideBoundaryCondition == 'Outdoors' && (sub_surface.subSurfaceType == 'FixedWindow' || sub_surface.subSurfaceType == 'OperableWindow' || sub_surface.subSurfaceType == 'GlassDoor')
|
574
575
|
|
@@ -684,6 +685,7 @@ class Standard
|
|
684
685
|
construction_name_to_vt_map = {}
|
685
686
|
space.surfaces.sort.each do |surface|
|
686
687
|
next unless surface.outsideBoundaryCondition == 'Outdoors' && surface.surfaceType == 'RoofCeiling'
|
688
|
+
|
687
689
|
surface.subSurfaces.sort.each do |sub_surface|
|
688
690
|
next unless sub_surface.outsideBoundaryCondition == 'Outdoors' && sub_surface.subSurfaceType == 'Skylight'
|
689
691
|
|
@@ -821,8 +823,10 @@ class Standard
|
|
821
823
|
ext_fen_area_m2 = 0
|
822
824
|
space.surfaces.each do |surface|
|
823
825
|
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
826
|
+
|
824
827
|
surface.subSurfaces.each do |sub_surface|
|
825
828
|
next unless sub_surface.subSurfaceType == 'FixedWindow' || sub_surface.subSurfaceType == 'OperableWindow' || sub_surface.subSurfaceType == 'Skylight' || sub_surface.subSurfaceType == 'GlassDoor'
|
829
|
+
|
826
830
|
ext_fen_area_m2 += sub_surface.netArea
|
827
831
|
end
|
828
832
|
end
|
@@ -1332,6 +1336,7 @@ class Standard
|
|
1332
1336
|
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
1333
1337
|
# Skip non-walls
|
1334
1338
|
next unless surface.surfaceType == 'Wall'
|
1339
|
+
|
1335
1340
|
# This surface
|
1336
1341
|
area_m2 += surface.netArea
|
1337
1342
|
# Subsurfaces in this surface
|
@@ -1356,6 +1361,7 @@ class Standard
|
|
1356
1361
|
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
1357
1362
|
# Skip non-walls
|
1358
1363
|
next unless surface.surfaceType == 'Wall' || surface.surfaceType == 'RoofCeiling'
|
1364
|
+
|
1359
1365
|
# This surface
|
1360
1366
|
area_m2 += surface.netArea
|
1361
1367
|
# Subsurfaces in this surface
|
@@ -1430,6 +1436,7 @@ class Standard
|
|
1430
1436
|
largest_surface = nil
|
1431
1437
|
space.surfaces.each do |surface|
|
1432
1438
|
next unless surface.surfaceType == 'Floor' && surface.outsideBoundaryCondition == 'Surface'
|
1439
|
+
|
1433
1440
|
if surface.grossArea > largest_floor_area
|
1434
1441
|
largest_floor_area = surface.grossArea
|
1435
1442
|
largest_surface = surface
|
@@ -1591,6 +1598,7 @@ class Standard
|
|
1591
1598
|
unless adj_surface.empty?
|
1592
1599
|
space.model.getSpaces.sort.each do |other_space|
|
1593
1600
|
next if other_space == space
|
1601
|
+
|
1594
1602
|
other_space.surfaces.each do |surf|
|
1595
1603
|
if surf == adj_surface.get
|
1596
1604
|
spaces << other_space
|
@@ -1602,8 +1610,10 @@ class Standard
|
|
1602
1610
|
# If looking for only spaces adjacent on the same floor.
|
1603
1611
|
if same_floor == true
|
1604
1612
|
raise "Cannot get adjacent spaces of space #{space.name} since space not set to BuildingStory" if space.buildingStory.empty?
|
1613
|
+
|
1605
1614
|
spaces.each do |other_space|
|
1606
1615
|
raise "One or more adjecent spaces to space #{space.name} is not assigned to a BuildingStory. Ensure all spaces are assigned." if space.buildingStory.empty?
|
1616
|
+
|
1607
1617
|
if other_space.buildingStory.get == space.buildingStory.get
|
1608
1618
|
same_floor_spaces << other_space
|
1609
1619
|
end
|
@@ -1615,6 +1625,7 @@ class Standard
|
|
1615
1625
|
area_index = []
|
1616
1626
|
array_hash = {}
|
1617
1627
|
return nil if spaces.size.zero?
|
1628
|
+
|
1618
1629
|
# iterate through each surface in the space
|
1619
1630
|
space.surfaces.each do |surface|
|
1620
1631
|
# get the adjacent surface in another space.
|
@@ -1623,6 +1634,7 @@ class Standard
|
|
1623
1634
|
# go through each of the adjeacent spaces to find the matching surface/space.
|
1624
1635
|
spaces.each_with_index do |other_space, index|
|
1625
1636
|
next if other_space == space
|
1637
|
+
|
1626
1638
|
other_space.surfaces.each do |surf|
|
1627
1639
|
if surf == adj_surface.get
|
1628
1640
|
# initialize array index to zero for first time so += will work.
|
@@ -1643,7 +1655,7 @@ class Standard
|
|
1643
1655
|
return get_adjacent_spaces_with_touching_area(same_floor)[0][0]
|
1644
1656
|
end
|
1645
1657
|
|
1646
|
-
#
|
1658
|
+
# TODO: - add related related to space_hours_of_operation like set_space_hours_of_operation and shift_and_expand_space_hours_of_operation
|
1647
1659
|
# todo - ideally these could take in a date range, array of dates and or days of week. Hold off until need is a bit more defined.
|
1648
1660
|
|
1649
1661
|
# If the model has an hours of operation schedule set in default schedule set for building that looks valid it will
|
@@ -1654,7 +1666,6 @@ class Standard
|
|
1654
1666
|
# @param space [Space] takes space
|
1655
1667
|
# @return [Hash] start and end of hours of operation, stat date, end date, bool for each day of the week
|
1656
1668
|
def space_hours_of_operation(space)
|
1657
|
-
|
1658
1669
|
default_sch_type = OpenStudio::Model::DefaultScheduleType.new('HoursofOperationSchedule')
|
1659
1670
|
hours_of_operation = space.getDefaultSchedule(default_sch_type)
|
1660
1671
|
if !hours_of_operation.is_initialized
|
@@ -1682,7 +1693,7 @@ class Standard
|
|
1682
1693
|
unexpected_val = false
|
1683
1694
|
times = hours_of_operation.defaultDaySchedule.times
|
1684
1695
|
values = hours_of_operation.defaultDaySchedule.values
|
1685
|
-
times.each_with_index do |time,i|
|
1696
|
+
times.each_with_index do |time, i|
|
1686
1697
|
if values[i] == 0 && hoo_start.nil?
|
1687
1698
|
hoo_start = time.totalHours
|
1688
1699
|
elsif values[i] == 1 && hoo_end.nil?
|
@@ -1723,8 +1734,8 @@ class Standard
|
|
1723
1734
|
end
|
1724
1735
|
rule_hash[:hoo_hours] = hoo_hours
|
1725
1736
|
days_used = []
|
1726
|
-
indices_vector.each_with_index do |profile_index,i|
|
1727
|
-
if profile_index == -1 then days_used << i+1 end
|
1737
|
+
indices_vector.each_with_index do |profile_index, i|
|
1738
|
+
if profile_index == -1 then days_used << i + 1 end
|
1728
1739
|
end
|
1729
1740
|
rule_hash[:days_used] = days_used
|
1730
1741
|
profiles[-1] = rule_hash
|
@@ -1738,10 +1749,10 @@ class Standard
|
|
1738
1749
|
unexpected_val = false
|
1739
1750
|
times = rule.daySchedule.times
|
1740
1751
|
values = rule.daySchedule.values
|
1741
|
-
times.each_with_index do |time,i|
|
1752
|
+
times.each_with_index do |time, i|
|
1742
1753
|
if values[i] == 0 && hoo_start.nil?
|
1743
1754
|
hoo_start = time.totalHours
|
1744
|
-
elsif values[i] == 1
|
1755
|
+
elsif values[i] == 1 && hoo_end.nil?
|
1745
1756
|
hoo_end = time.totalHours
|
1746
1757
|
elsif values[i] != 1 && values[i] != 0
|
1747
1758
|
unexpected_val = true
|
@@ -1778,37 +1789,34 @@ class Standard
|
|
1778
1789
|
end
|
1779
1790
|
rule_hash[:hoo_hours] = hoo_hours
|
1780
1791
|
days_used = []
|
1781
|
-
indices_vector.each_with_index do |profile_index,i|
|
1782
|
-
if profile_index == rule.ruleIndex then days_used << i+1 end
|
1792
|
+
indices_vector.each_with_index do |profile_index, i|
|
1793
|
+
if profile_index == rule.ruleIndex then days_used << i + 1 end
|
1783
1794
|
end
|
1784
1795
|
rule_hash[:days_used] = days_used
|
1785
1796
|
|
1786
|
-
|
1787
|
-
#
|
1788
|
-
|
1789
|
-
|
1790
|
-
|
1791
|
-
|
1792
|
-
|
1793
|
-
|
1794
|
-
|
1795
|
-
|
1796
|
-
|
1797
|
-
|
1798
|
-
|
1799
|
-
|
1800
|
-
rule_hash[:
|
1801
|
-
rule_hash[:
|
1802
|
-
rule_hash[:
|
1803
|
-
rule_hash[:
|
1804
|
-
rule_hash[:
|
1805
|
-
rule_hash[:
|
1806
|
-
rule_hash[:sun] = rule.applySunday
|
1807
|
-
=end
|
1797
|
+
# # todo - delete rule details below unless end up needing to use them
|
1798
|
+
# if rule.startDate.is_initialized
|
1799
|
+
# date = rule.startDate.get
|
1800
|
+
# rule_hash[:start_date] = "#{date.monthOfYear.value}/#{date.dayOfMonth}"
|
1801
|
+
# else
|
1802
|
+
# rule_hash[:start_date] = nil
|
1803
|
+
# end
|
1804
|
+
# if rule.endDate.is_initialized
|
1805
|
+
# date = rule.endDate.get
|
1806
|
+
# rule_hash[:end_date] = "#{date.monthOfYear.value}/#{date.dayOfMonth}"
|
1807
|
+
# else
|
1808
|
+
# rule_hash[:end_date] = nil
|
1809
|
+
# end
|
1810
|
+
# rule_hash[:mon] = rule.applyMonday
|
1811
|
+
# rule_hash[:tue] = rule.applyTuesday
|
1812
|
+
# rule_hash[:wed] = rule.applyWednesday
|
1813
|
+
# rule_hash[:thu] = rule.applyThursday
|
1814
|
+
# rule_hash[:fri] = rule.applyFriday
|
1815
|
+
# rule_hash[:sat] = rule.applySaturday
|
1816
|
+
# rule_hash[:sun] = rule.applySunday
|
1808
1817
|
|
1809
1818
|
# update hash
|
1810
1819
|
profiles[rule.ruleIndex] = rule_hash
|
1811
|
-
|
1812
1820
|
end
|
1813
1821
|
|
1814
1822
|
return profiles
|
@@ -1835,7 +1843,7 @@ class Standard
|
|
1835
1843
|
end
|
1836
1844
|
end
|
1837
1845
|
|
1838
|
-
#
|
1846
|
+
# TODO: - replace this with logic to get combined hours of operation for collection of spaces.
|
1839
1847
|
# each hours_of_operation_array is hash with key for each profile.
|
1840
1848
|
# each profile has hash with keys for hoo_start, hoo_end, hoo_hours, days_used
|
1841
1849
|
# my goal is to compare profiles and days used across all profiles to create new entries as necessary
|
@@ -1845,11 +1853,10 @@ class Standard
|
|
1845
1853
|
|
1846
1854
|
# OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.Space', "Evaluating hours of operation for #{space_names.join(',')}: #{hours_of_operation_array}")
|
1847
1855
|
|
1848
|
-
#
|
1856
|
+
# TODO: - what is this getting max of, it isn't longest hours of operation, is it the most profiles?
|
1849
1857
|
hours_of_operation = hours_of_operation_array.max_by { |i| hours_of_operation_array.count(i) }
|
1850
1858
|
|
1851
1859
|
return hours_of_operation
|
1852
|
-
|
1853
1860
|
end
|
1854
1861
|
|
1855
1862
|
private
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
class Standard
|
3
2
|
# @!group SpaceType
|
4
3
|
|
@@ -6,7 +5,6 @@ class Standard
|
|
6
5
|
#
|
7
6
|
# @return [hash] hash of internal loads for different load types
|
8
7
|
def space_type_get_standards_data(space_type)
|
9
|
-
|
10
8
|
standards_building_type = if space_type.standardsBuildingType.is_initialized
|
11
9
|
space_type.standardsBuildingType.get
|
12
10
|
end
|
@@ -84,6 +82,7 @@ class Standard
|
|
84
82
|
if space_type.name.get.to_s.downcase.include?('plenum')
|
85
83
|
return false
|
86
84
|
end
|
85
|
+
|
87
86
|
if space_type.standardsSpaceType.is_initialized
|
88
87
|
if space_type.standardsSpaceType.get.downcase.include?('plenum')
|
89
88
|
return false
|
@@ -94,7 +93,7 @@ class Standard
|
|
94
93
|
space_type_properties = space_type_get_standards_data(space_type)
|
95
94
|
|
96
95
|
# Need to add a check, or it'll crash on space_type_properties['occupancy_per_area'].to_f below
|
97
|
-
if space_type_properties.nil?
|
96
|
+
if space_type_properties.nil? || space_type_properties.empty?
|
98
97
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} was not found in the standards data.")
|
99
98
|
return false
|
100
99
|
end
|
@@ -119,6 +118,7 @@ class Standard
|
|
119
118
|
elsif instances.size > 1
|
120
119
|
instances.each_with_index do |inst, i|
|
121
120
|
next if i.zero?
|
121
|
+
|
122
122
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "Removed #{inst.name} from #{space_type.name}.")
|
123
123
|
inst.remove
|
124
124
|
end
|
@@ -211,6 +211,7 @@ class Standard
|
|
211
211
|
elsif instances.size > 1
|
212
212
|
instances.each_with_index do |inst, i|
|
213
213
|
next if i.zero?
|
214
|
+
|
214
215
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "Removed #{inst.name} from #{space_type.name}.")
|
215
216
|
inst.remove
|
216
217
|
end
|
@@ -289,6 +290,7 @@ class Standard
|
|
289
290
|
elsif instances.size > 1
|
290
291
|
instances.each_with_index do |inst, i|
|
291
292
|
next if i.zero?
|
293
|
+
|
292
294
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "Removed #{inst.name} from #{space_type.name}.")
|
293
295
|
inst.remove
|
294
296
|
end
|
@@ -331,6 +333,7 @@ class Standard
|
|
331
333
|
elsif instances.size > 1
|
332
334
|
instances.each_with_index do |inst, i|
|
333
335
|
next if i.zero?
|
336
|
+
|
334
337
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "Removed #{inst.name} from #{space_type.name}.")
|
335
338
|
inst.remove
|
336
339
|
end
|
@@ -421,6 +424,7 @@ class Standard
|
|
421
424
|
elsif instances.size > 1
|
422
425
|
instances.each_with_index do |inst, i|
|
423
426
|
next if i.zero?
|
427
|
+
|
424
428
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "Removed #{inst.name} from #{space_type.name}.")
|
425
429
|
inst.remove
|
426
430
|
end
|
@@ -495,48 +499,39 @@ class Standard
|
|
495
499
|
# Lights
|
496
500
|
if set_lights
|
497
501
|
|
498
|
-
apply_lighting_schedule(space_type, space_type_properties,default_sch_set)
|
502
|
+
apply_lighting_schedule(space_type, space_type_properties, default_sch_set)
|
499
503
|
|
500
504
|
end
|
501
505
|
|
502
|
-
|
503
|
-
|
504
506
|
# Electric Equipment
|
505
507
|
if set_electric_equipment
|
506
|
-
|
507
508
|
elec_equip_sch = space_type_properties['electric_equipment_schedule']
|
508
509
|
unless elec_equip_sch.nil?
|
509
510
|
default_sch_set.setElectricEquipmentSchedule(model_add_schedule(space_type.model, elec_equip_sch))
|
510
511
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set electric equipment schedule to #{elec_equip_sch}.")
|
511
512
|
end
|
512
|
-
|
513
513
|
end
|
514
514
|
|
515
515
|
# Gas Equipment
|
516
516
|
if set_gas_equipment
|
517
|
-
|
518
517
|
gas_equip_sch = space_type_properties['gas_equipment_schedule']
|
519
518
|
unless gas_equip_sch.nil?
|
520
519
|
default_sch_set.setGasEquipmentSchedule(model_add_schedule(space_type.model, gas_equip_sch))
|
521
520
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set gas equipment schedule to #{gas_equip_sch}.")
|
522
521
|
end
|
523
|
-
|
524
522
|
end
|
525
523
|
|
526
524
|
# Infiltration
|
527
525
|
if set_infiltration
|
528
|
-
|
529
526
|
infiltration_sch = space_type_properties['infiltration_schedule']
|
530
527
|
unless infiltration_sch.nil?
|
531
528
|
default_sch_set.setInfiltrationSchedule(model_add_schedule(space_type.model, infiltration_sch))
|
532
529
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set infiltration schedule to #{infiltration_sch}.")
|
533
530
|
end
|
534
|
-
|
535
531
|
end
|
536
532
|
|
537
533
|
# Thermostat
|
538
534
|
if make_thermostat
|
539
|
-
|
540
535
|
thermostat = OpenStudio::Model::ThermostatSetpointDualSetpoint.new(space_type.model)
|
541
536
|
thermostat.setName("#{space_type.name} Thermostat")
|
542
537
|
|
@@ -551,20 +546,17 @@ class Standard
|
|
551
546
|
thermostat.setCoolingSetpointTemperatureSchedule(model_add_schedule(space_type.model, cooling_setpoint_sch))
|
552
547
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set cooling setpoint schedule to #{cooling_setpoint_sch}.")
|
553
548
|
end
|
554
|
-
|
555
549
|
end
|
556
550
|
|
557
551
|
return true
|
558
552
|
end
|
559
553
|
|
560
|
-
def apply_lighting_schedule(space_type, space_type_properties,default_sch_set)
|
561
|
-
|
554
|
+
def apply_lighting_schedule(space_type, space_type_properties, default_sch_set)
|
562
555
|
lighting_sch = space_type_properties['lighting_schedule']
|
563
556
|
unless lighting_sch.nil?
|
564
557
|
default_sch_set.setLightingSchedule(model_add_schedule(space_type.model, lighting_sch))
|
565
558
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set lighting schedule to #{lighting_sch}.")
|
566
559
|
end
|
567
|
-
|
568
560
|
end
|
569
561
|
|
570
562
|
# Returns standards data for selected construction
|
@@ -11,24 +11,24 @@ class Standard
|
|
11
11
|
|
12
12
|
# Define the envelope component infiltration rates
|
13
13
|
component_infil_rates_cfm_per_ft2 = {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
14
|
+
'baseline' => {
|
15
|
+
'opaque_door' => 0.40,
|
16
|
+
'loading_dock_door' => 0.40,
|
17
|
+
'swinging_or_revolving_glass_door' => 1.0,
|
18
|
+
'vestibule' => 1.0,
|
19
|
+
'sliding_glass_door' => 0.40,
|
20
|
+
'window' => 0.40,
|
21
|
+
'skylight' => 0.40
|
22
|
+
},
|
23
|
+
'advanced' => {
|
24
|
+
'opaque_door' => 0.20,
|
25
|
+
'loading_dock_door' => 0.20,
|
26
|
+
'swinging_or_revolving_glass_door' => 1.0,
|
27
|
+
'vestibule' => 1.0,
|
28
|
+
'sliding_glass_door' => 0.20,
|
29
|
+
'window' => 0.20,
|
30
|
+
'skylight' => 0.20
|
31
|
+
}
|
32
32
|
}
|
33
33
|
|
34
34
|
boundary_condition = sub_surface.outsideBoundaryCondition
|
@@ -231,7 +231,7 @@ class Standard
|
|
231
231
|
# 'sub_surface_create_centered_subsurface_from_scaled_surface' method because it can handle concave surfaces.
|
232
232
|
# However, it takes longer because it uses BTAP::Geometry::Surfaces.make_convex_surfaces which includes many nested
|
233
233
|
# loops that cycle through the verticies in a surface.
|
234
|
-
def sub_surface_create_scaled_subsurfaces_from_surface
|
234
|
+
def sub_surface_create_scaled_subsurfaces_from_surface(surface:, area_fraction:, model:, consturction:)
|
235
235
|
# Set geometry tolerences:
|
236
236
|
geometry_tolerence = 12
|
237
237
|
# Get rid of all existing subsurfaces.
|
@@ -243,7 +243,7 @@ class Standard
|
|
243
243
|
surface.vertices.each do |surf_vert|
|
244
244
|
surface.vertices.each do |surf_vert_2|
|
245
245
|
unless surf_vert_2.z.to_f.round(geometry_tolerence) == surf_vert.z.to_f.round(geometry_tolerence)
|
246
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model',
|
246
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', 'Currently skylights can only be added to buildings with non-plenum flat roofs.')
|
247
247
|
end
|
248
248
|
end
|
249
249
|
end
|
@@ -257,7 +257,7 @@ class Standard
|
|
257
257
|
|
258
258
|
# Turn everything back into OpenStudio stuff
|
259
259
|
os_surf_points = []
|
260
|
-
os_surf_cents =[]
|
260
|
+
os_surf_cents = []
|
261
261
|
for i in 0..(new_surfaces.length - 1)
|
262
262
|
os_surf_point = []
|
263
263
|
for j in 0..(new_surfaces[i].length - 1)
|
@@ -295,11 +295,11 @@ class Standard
|
|
295
295
|
# 'skylight'). If there will be more than one subsurface then add a counter at the end.
|
296
296
|
new_name = surface.name.to_s + '_' + new_sub_surface.subSurfaceType.to_s
|
297
297
|
if new_surfaces.length > 1
|
298
|
-
new_name = surface.name.to_s + '_' + new_sub_surface.subSurfaceType.to_s + '_' +
|
298
|
+
new_name = surface.name.to_s + '_' + new_sub_surface.subSurfaceType.to_s + '_' + index.to_s
|
299
299
|
end
|
300
|
-
#Set the skylight type to 'Skylight'
|
300
|
+
# Set the skylight type to 'Skylight'
|
301
301
|
new_sub_surface.setSubSurfaceType('Skylight')
|
302
|
-
#Set the skylight construction to whatever was passed (should be the default skylight construction)
|
302
|
+
# Set the skylight construction to whatever was passed (should be the default skylight construction)
|
303
303
|
new_sub_surface.setConstruction(consturction)
|
304
304
|
new_sub_surface.setName(new_name)
|
305
305
|
# There is now only one surface on the subsurface. Enforce this
|
@@ -322,8 +322,6 @@ class Standard
|
|
322
322
|
# This removes all of the subsurfaces from a surface. Is a preparation for replaceing windows or clearing doors
|
323
323
|
# before adding windows.
|
324
324
|
def remove_All_Subsurfaces(surface:)
|
325
|
-
surface.subSurfaces.sort.each
|
326
|
-
sub_surface.remove
|
327
|
-
end
|
325
|
+
surface.subSurfaces.sort.each(&:remove)
|
328
326
|
end
|
329
327
|
end
|
@@ -86,14 +86,14 @@ class Standard
|
|
86
86
|
vertical_surface.subSurfaces.sort.each do |vertical_subsurface|
|
87
87
|
# Need to fix this so that error show up in right place
|
88
88
|
if vertical_subsurface.nil?
|
89
|
-
puts
|
89
|
+
puts 'Surface does not exist'
|
90
90
|
else
|
91
91
|
vertical_subsurface.remove
|
92
92
|
end
|
93
93
|
end
|
94
94
|
# corner_coords = vertical_surface.vertices
|
95
|
-
code_window_area = fdwr*vertical_surface.grossArea
|
96
|
-
code_window_width = code_window_area/window_height_m
|
95
|
+
code_window_area = fdwr * vertical_surface.grossArea
|
96
|
+
code_window_width = code_window_area / window_height_m
|
97
97
|
min_z = 0
|
98
98
|
vertical_surface.vertices.each_with_index do |vertex, index|
|
99
99
|
if index == 0
|
@@ -134,57 +134,58 @@ class Standard
|
|
134
134
|
# Note that this will not include foundation walls.
|
135
135
|
next unless surface.surfaceType == 'Wall'
|
136
136
|
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
137
|
+
|
137
138
|
# Determine if the wall is vertical which I define as being between 89 and 91 degrees from horizontal.
|
138
139
|
tilt_radian = surface.tilt
|
139
140
|
tilt_degrees = OpenStudio.convert(tilt_radian, 'rad', 'deg').get
|
140
141
|
sub_surface_info = []
|
141
|
-
if tilt_degrees <= max_angle
|
142
|
+
if tilt_degrees <= max_angle && tilt_degrees >= min_angle
|
142
143
|
# If the wall is vertical determine if it is adjacent to a plenum. If yes include it in the array of
|
143
144
|
# plenum walls and add it to the plenum wall area counter (accounting for space multipliers).
|
144
145
|
if space_plenum?(space)
|
145
146
|
plenum_surfaces << surface
|
146
|
-
exp_plenum_area += surface.grossArea*space.multiplier
|
147
|
+
exp_plenum_area += surface.grossArea * space.multiplier
|
147
148
|
else
|
148
149
|
# If not a plenum then include it in the array of non-plenum walls and add it to the non-plenum area
|
149
150
|
# counter (accounting for space multipliers).
|
150
151
|
exposed_surfaces << surface
|
151
|
-
exp_nonplenum_area += surface.grossArea*space.multiplier
|
152
|
+
exp_nonplenum_area += surface.grossArea * space.multiplier
|
152
153
|
surface.subSurfaces.sort.each do |sub_surface|
|
153
|
-
sub_surface_area += sub_surface.grossArea.to_f*space.multiplier
|
154
|
+
sub_surface_area += sub_surface.grossArea.to_f * space.multiplier
|
154
155
|
sub_surface_info << {
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
156
|
+
'subsurface_name' => sub_surface.nameString,
|
157
|
+
'subsurface_type' => sub_surface.subSurfaceType,
|
158
|
+
'gross_area_m2' => sub_surface.grossArea.to_f,
|
159
|
+
'construction_name' => sub_surface.construction.get.nameString
|
159
160
|
}
|
160
161
|
end
|
161
162
|
unless sub_surface_info.empty?
|
162
163
|
sub_surfaces_info << {
|
163
|
-
|
164
|
-
|
164
|
+
'surface_name' => surface.nameString,
|
165
|
+
'subsurfaces' => sub_surface_info
|
165
166
|
}
|
166
167
|
end
|
167
168
|
end
|
168
169
|
# Regardless of if the wall is adjacent to a plenum or not add it to the exposed wall area adjacent to
|
169
170
|
# conditioned spaces (accounting for space multipliers).
|
170
|
-
total_exp_area += surface.grossArea*space.multiplier
|
171
|
+
total_exp_area += surface.grossArea * space.multiplier
|
171
172
|
end
|
172
173
|
end
|
173
174
|
end
|
174
175
|
end
|
175
176
|
fdwr = 999
|
176
177
|
unless exp_nonplenum_area < 0.1
|
177
|
-
fdwr = sub_surface_area/exp_nonplenum_area
|
178
|
+
fdwr = sub_surface_area / exp_nonplenum_area
|
178
179
|
end
|
179
180
|
# Add everything into a hash and return that hash to whomever called the method.
|
180
181
|
exp_surf_info = {
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
182
|
+
'total_exp_wall_area_m2' => total_exp_area,
|
183
|
+
'exp_plenum_wall_area_m2' => exp_plenum_area,
|
184
|
+
'exp_nonplenum_wall_area_m2' => exp_nonplenum_area,
|
185
|
+
'exp_plenum_walls' => plenum_surfaces,
|
186
|
+
'exp_nonplenum_walls' => exposed_surfaces,
|
187
|
+
'fdwr' => fdwr,
|
188
|
+
'sub_surfaces' => sub_surfaces_info
|
188
189
|
}
|
189
190
|
return exp_surf_info
|
190
191
|
end
|
@@ -209,53 +210,54 @@ class Standard
|
|
209
210
|
# Assume a roof is of type 'RoofCeiling' and has an 'Outdoors' boundary condition.
|
210
211
|
next unless surface.surfaceType == 'RoofCeiling'
|
211
212
|
next unless surface.outsideBoundaryCondition == 'Outdoors'
|
213
|
+
|
212
214
|
# Determine if the roof is adjacent to a plenum.
|
213
215
|
sub_surface_info = []
|
214
216
|
if space_plenum?(space)
|
215
217
|
# If the roof is adjacent to a plenum add it to the plenum roof array and the plenum roof area counter
|
216
218
|
# (accounting for space multipliers).
|
217
219
|
plenum_surfaces << surface
|
218
|
-
exp_plenum_area += surface.grossArea*space.multiplier
|
220
|
+
exp_plenum_area += surface.grossArea * space.multiplier
|
219
221
|
else
|
220
222
|
# If the roof is not adjacent to a plenum add it to the non-plenum roof array and the non-plenum roof area
|
221
223
|
# counter (accounting for space multipliers).
|
222
224
|
exposed_surfaces << surface
|
223
|
-
exp_nonplenum_area += surface.grossArea*space.multiplier
|
225
|
+
exp_nonplenum_area += surface.grossArea * space.multiplier
|
224
226
|
surface.subSurfaces.sort.each do |sub_surface|
|
225
|
-
sub_surface_area += sub_surface.grossArea.to_f*space.multiplier
|
227
|
+
sub_surface_area += sub_surface.grossArea.to_f * space.multiplier
|
226
228
|
sub_surface_info << {
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
229
|
+
'subsurface_name' => sub_surface.nameString,
|
230
|
+
'subsurface_type' => sub_surface.subSurfaceType,
|
231
|
+
'gross_area_m2' => sub_surface.grossArea.to_f,
|
232
|
+
'construction_name' => sub_surface.construction.get.nameString
|
231
233
|
}
|
232
234
|
end
|
233
235
|
unless sub_surface_info.empty?
|
234
236
|
sub_surfaces_info << {
|
235
|
-
|
236
|
-
|
237
|
+
'surface_name' => surface.nameString,
|
238
|
+
'subsurfaces' => sub_surface_info
|
237
239
|
}
|
238
240
|
end
|
239
241
|
end
|
240
242
|
# Regardless of if the roof is adjacent to a plenum or not add it to the total roof area counter (accounting
|
241
243
|
# for space multipliers).
|
242
|
-
total_exp_area += surface.grossArea*space.multiplier
|
244
|
+
total_exp_area += surface.grossArea * space.multiplier
|
243
245
|
end
|
244
246
|
end
|
245
247
|
end
|
246
248
|
srr = 999
|
247
249
|
unless exp_nonplenum_area < 0.1
|
248
|
-
srr = sub_surface_area/exp_nonplenum_area
|
250
|
+
srr = sub_surface_area / exp_nonplenum_area
|
249
251
|
end
|
250
252
|
# Put the information into a hash and return it to whomever called this method.
|
251
253
|
exp_surf_info = {
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
254
|
+
'total_exp_roof_area_m2' => total_exp_area,
|
255
|
+
'exp_plenum_roof_area_m2' => exp_plenum_area,
|
256
|
+
'exp_nonplenum_roof_area_m2' => exp_nonplenum_area,
|
257
|
+
'exp_plenum_roofs' => plenum_surfaces,
|
258
|
+
'exp_nonplenum_roofs' => exposed_surfaces,
|
259
|
+
'srr' => srr,
|
260
|
+
'sub_surfaces' => sub_surfaces_info
|
259
261
|
}
|
260
262
|
return exp_surf_info
|
261
263
|
end
|
@@ -300,6 +302,7 @@ class Standard
|
|
300
302
|
end
|
301
303
|
# If no outdoor roofceiling go to the next space.
|
302
304
|
next if outdoor_roof == false
|
305
|
+
|
303
306
|
z_Origin = space.zOrigin.to_f
|
304
307
|
ceiling_centroid = [0, 0, 0]
|
305
308
|
|
@@ -307,8 +310,8 @@ class Standard
|
|
307
310
|
# centroid calculation.
|
308
311
|
space_surfaces.each do |sp_surface|
|
309
312
|
if max_surf.centroid.z.to_f.round(tol) == sp_surface.centroid.z.to_f.round(tol)
|
310
|
-
ceiling_centroid[0] += sp_surface.centroid.x.to_f*sp_surface.grossArea.to_f
|
311
|
-
ceiling_centroid[1] += sp_surface.centroid.y.to_f*sp_surface.grossArea.to_f
|
313
|
+
ceiling_centroid[0] += sp_surface.centroid.x.to_f * sp_surface.grossArea.to_f
|
314
|
+
ceiling_centroid[1] += sp_surface.centroid.y.to_f * sp_surface.grossArea.to_f
|
312
315
|
ceiling_centroid[2] += sp_surface.grossArea.to_f
|
313
316
|
end
|
314
317
|
end
|
@@ -319,11 +322,11 @@ class Standard
|
|
319
322
|
|
320
323
|
# Put the info into an array containing hashes of spaces with outdoor roofceilings
|
321
324
|
spaces_info << {
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
325
|
+
space: space,
|
326
|
+
x: ceiling_centroid[0] + space.xOrigin.to_f,
|
327
|
+
y: ceiling_centroid[1] + space.yOrigin.to_f,
|
328
|
+
z: max_surf.centroid.z.to_f + z_Origin,
|
329
|
+
area_m2: ceiling_centroid[2]
|
327
330
|
}
|
328
331
|
# This is to determine which are the global highest outdoor roofceilings
|
329
332
|
if max_height.round(tol) < (max_surf.centroid.z.to_f + z_Origin).round(tol)
|
@@ -336,8 +339,8 @@ class Standard
|
|
336
339
|
# calculate the centroid
|
337
340
|
if space_info[:z].to_f.round(tol) == max_height.round(tol)
|
338
341
|
top_spaces << space_info
|
339
|
-
roof_centroid[0] += space_info[:x]*space_info[:area_m2]
|
340
|
-
roof_centroid[1] += space_info[:y]*space_info[:area_m2]
|
342
|
+
roof_centroid[0] += space_info[:x] * space_info[:area_m2]
|
343
|
+
roof_centroid[1] += space_info[:y] * space_info[:area_m2]
|
341
344
|
roof_centroid[2] += space_info[:area_m2]
|
342
345
|
end
|
343
346
|
end
|
@@ -346,10 +349,52 @@ class Standard
|
|
346
349
|
roof_centroid[0] /= roof_centroid[2]
|
347
350
|
roof_centroid[1] /= roof_centroid[2]
|
348
351
|
roof_cent = {
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
+
top_spaces: top_spaces,
|
353
|
+
roof_centroid: [roof_centroid[0], roof_centroid[1], max_height],
|
354
|
+
roof_area: roof_centroid[2]
|
352
355
|
}
|
353
356
|
return roof_cent
|
354
357
|
end
|
358
|
+
|
359
|
+
# Calculate a surface's absolute azimuth
|
360
|
+
# source: https://github.com/NREL/openstudio-extension-gem/blob/e354355054b83ffc26e3b69befa20d6baf5ef242/lib/openstudio/extension/core/os_lib_geometry.rb#L913
|
361
|
+
#
|
362
|
+
# @param surface [OpenStudio::Model:Surface] OpenStudio Surface object
|
363
|
+
# @return [Float] Surface absolute azimuth
|
364
|
+
def surface_absolute_azimuth(surface)
|
365
|
+
# Get associated space
|
366
|
+
space = surface.space.get
|
367
|
+
|
368
|
+
# Get model object
|
369
|
+
model = surface.model
|
370
|
+
|
371
|
+
# Calculate azimuth
|
372
|
+
surface_azimuth_rel_space = OpenStudio.convert(surface.azimuth, 'rad', 'deg').get
|
373
|
+
space_dir_rel_N = space.directionofRelativeNorth
|
374
|
+
building_dir_rel_N = model.getBuilding.northAxis
|
375
|
+
surface_abs_azimuth = surface_azimuth_rel_space + space_dir_rel_N + building_dir_rel_N
|
376
|
+
surface_abs_azimuth -= 360.0 until surface_abs_azimuth < 360.0
|
377
|
+
|
378
|
+
return surface_abs_azimuth
|
379
|
+
end
|
380
|
+
|
381
|
+
# Determine a surface absolute cardinal direction
|
382
|
+
#
|
383
|
+
# @param surface [OpenStudio::Model::Surface] OpenStudio Surface object
|
384
|
+
# @return [String] Surface absolute cardinal
|
385
|
+
def surface_cardinal_direction(surface)
|
386
|
+
# Get the surface's absolute azimuth
|
387
|
+
surface_abs_azimuth = surface_absolute_azimuth(surface)
|
388
|
+
|
389
|
+
# Determine the surface's cardinal direction
|
390
|
+
if (surface_abs_azimuth >= 0 && surface_abs_azimuth <= 45) || (surface_abs_azimuth > 315 && surface_abs_azimuth <= 360)
|
391
|
+
return 'N'
|
392
|
+
elsif surface_abs_azimuth > 45 && surface_abs_azimuth <= 135
|
393
|
+
return 'E'
|
394
|
+
elsif surface_abs_azimuth > 135 && surface_abs_azimuth <= 225
|
395
|
+
return 'S'
|
396
|
+
elsif surface_abs_azimuth > 225 && surface_abs_azimuth <= 315
|
397
|
+
return 'W'
|
398
|
+
end
|
399
|
+
end
|
355
400
|
end
|