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
@@ -0,0 +1,189 @@
|
|
1
|
+
class ECMS
|
2
|
+
|
3
|
+
def apply_nv(model:, nv_type:, nv_opening_fraction:, nv_Tout_min:, nv_Delta_Tin_Tout:)
|
4
|
+
|
5
|
+
##### If any of users' inputs are nil/false/none, do nothing.
|
6
|
+
##### If users' input for 'nv_type' is 'NECB_Default', do nothing.
|
7
|
+
##### If any of users' inputs for nv_opening_fraction/nv_Tout_min/nv_Delta_Tin_Tout is 'NECB_Default', use default values as defined here.
|
8
|
+
return if nv_type.nil? || nv_type == false || nv_type == 'none' || nv_type == 'NECB_Default'
|
9
|
+
return if nv_opening_fraction.nil? || nv_opening_fraction == false || nv_opening_fraction == 'none'
|
10
|
+
return if nv_Tout_min.nil? || nv_Tout_min == false || nv_Tout_min == 'none'
|
11
|
+
return if nv_Delta_Tin_Tout.nil? || nv_Delta_Tin_Tout == false || nv_Delta_Tin_Tout == 'none'
|
12
|
+
|
13
|
+
##### Convert a string to a float (except for nv_type)
|
14
|
+
if nv_opening_fraction.instance_of?(String) && nv_opening_fraction != 'NECB_Default'
|
15
|
+
nv_opening_fraction = nv_opening_fraction.to_f
|
16
|
+
end
|
17
|
+
if nv_Tout_min.instance_of?(String) && nv_Tout_min != 'NECB_Default'
|
18
|
+
nv_Tout_min = nv_Tout_min.to_f
|
19
|
+
end
|
20
|
+
if nv_Delta_Tin_Tout.instance_of?(String) && nv_Delta_Tin_Tout != 'NECB_Default'
|
21
|
+
nv_Delta_Tin_Tout = nv_Delta_Tin_Tout.to_f
|
22
|
+
end
|
23
|
+
|
24
|
+
##### Set default nv_opening_fraction as 0.1
|
25
|
+
if nv_opening_fraction == 'NECB_Default'
|
26
|
+
nv_opening_fraction = 0.1
|
27
|
+
end
|
28
|
+
##### Set default nv_Tout_min as 13.0
|
29
|
+
if nv_Tout_min == 'NECB_Default'
|
30
|
+
nv_Tout_min = 13.0 #Note: 13.0 is based on inputs from Michel Tardif re a real school in QC
|
31
|
+
end
|
32
|
+
##### Set default nv_Delta_Tin_Tout as 1.0
|
33
|
+
if nv_Delta_Tin_Tout == 'NECB_Default'
|
34
|
+
nv_Delta_Tin_Tout = 1.0 #Note: 1.0 is based on inputs from Michel Tardif re a real school in QC
|
35
|
+
end
|
36
|
+
|
37
|
+
setpoint_adjustment_for_nv = 2.0 #This is to adjust heating and cooling setpoint temperature as min and max indoor temperature to have NV
|
38
|
+
|
39
|
+
model.getZoneHVACEquipmentLists.sort.each do |zone_hvac_equipment_list|
|
40
|
+
|
41
|
+
thermal_zone = zone_hvac_equipment_list.thermalZone
|
42
|
+
|
43
|
+
thermal_zone.spaces.sort.each do |space|
|
44
|
+
number_of_windows = 0.0
|
45
|
+
|
46
|
+
##### Gather OA per person and floor area of the space from the osm file
|
47
|
+
outdoor_air = space.designSpecificationOutdoorAir.get
|
48
|
+
outdoor_air_flow_per_person = outdoor_air.outdoorAirFlowperPerson
|
49
|
+
outdoor_air_flow_per_floor_area = outdoor_air.outdoorAirFlowperFloorArea
|
50
|
+
|
51
|
+
##### Get heating/cooling setpoint temperature schedules from the osm file
|
52
|
+
# These schedules are used for min/max Tin schedules under the objects of "ZoneVentilation:DesignFlowRate" and "ZoneVentilation:WindandStackOpenArea".
|
53
|
+
# Note: as per E+ I/O Ref.: "If the user enters a valid schedule name, the minimum/maximum temperature values specified in this schedule will override the constant value specified in the Minimum/Maximum Indoor Temperature field." under the objects of "ZoneVentilation:DesignFlowRate" and "ZoneVentilation:WindandStackOpenArea".
|
54
|
+
if thermal_zone.thermostat.is_initialized
|
55
|
+
if thermal_zone.thermostat.get.to_ThermostatSetpointDualSetpoint.is_initialized
|
56
|
+
if thermal_zone.thermostat.get.to_ThermostatSetpointDualSetpoint.get.heatingSetpointTemperatureSchedule.is_initialized ||
|
57
|
+
thermal_zone.thermostat.get.to_ThermostatSetpointDualSetpoint.get.coolingSetpointTemperatureSchedule.is_initialized
|
58
|
+
zone_thermostat = thermal_zone.thermostatSetpointDualSetpoint.get
|
59
|
+
zone_clg_thermostat_sch = zone_thermostat.coolingSetpointTemperatureSchedule.get
|
60
|
+
zone_htg_thermostat_sch = zone_thermostat.heatingSetpointTemperatureSchedule.get
|
61
|
+
|
62
|
+
##### Create schedule for max Tin to have NV on the basis of cooling setpoint temperature for default day
|
63
|
+
zone_clg_thermostat_sch_name = zone_clg_thermostat_sch.name
|
64
|
+
zone_clg_sp_schedule = zone_clg_thermostat_sch.to_ScheduleRuleset.get
|
65
|
+
|
66
|
+
max_Tin_schedule = zone_clg_sp_schedule.clone(model).to_ScheduleRuleset.get
|
67
|
+
max_Tin_schedule.setName('natural_ventilation_max_Tin_schedule')
|
68
|
+
## default days/weekdays
|
69
|
+
max_Tin_schedule_defaultDay = max_Tin_schedule.defaultDaySchedule
|
70
|
+
max_Tin_schedule_defaultDay.setName('natural_ventilation_max_Tin_schedule_defaultDay')
|
71
|
+
max_Tin_schedule_defaultDay_times = max_Tin_schedule_defaultDay.times
|
72
|
+
max_Tin_schedule_defaultDay_values = max_Tin_schedule_defaultDay.values
|
73
|
+
max_Tin_schedule_defaultDay_values_adjusted = max_Tin_schedule_defaultDay_values.map { |i| i + setpoint_adjustment_for_nv }
|
74
|
+
i = 0.0
|
75
|
+
max_Tin_schedule_defaultDay_times.each do |time|
|
76
|
+
max_Tin_schedule_defaultDay.addValue(time, max_Tin_schedule_defaultDay_values_adjusted[i])
|
77
|
+
i += 1.0
|
78
|
+
end
|
79
|
+
|
80
|
+
##### Create schedule for min Tin to have NV on the basis of cooling setpoint temperature for default day
|
81
|
+
zone_htg_thermostat_sch_name = zone_htg_thermostat_sch.name
|
82
|
+
zone_htg_sp_schedule = zone_htg_thermostat_sch.to_ScheduleRuleset.get
|
83
|
+
min_Tin_schedule = zone_htg_sp_schedule.clone(model).to_ScheduleRuleset.get
|
84
|
+
min_Tin_schedule.setName('natural_ventilation_min_Tin_schedule')
|
85
|
+
## default days/weekdays
|
86
|
+
min_Tin_schedule_defaultDay = min_Tin_schedule.defaultDaySchedule
|
87
|
+
min_Tin_schedule_defaultDay.setName('natural_ventilation_min_Tin_schedule_defaultDay')
|
88
|
+
min_Tin_schedule_defaultDay_times = min_Tin_schedule_defaultDay.times
|
89
|
+
min_Tin_schedule_defaultDay_values = min_Tin_schedule_defaultDay.values
|
90
|
+
min_Tin_schedule_defaultDay_values_adjusted = min_Tin_schedule_defaultDay_values.map { |i| i - setpoint_adjustment_for_nv }
|
91
|
+
i = 0.0
|
92
|
+
min_Tin_schedule_defaultDay_times.each do |time|
|
93
|
+
min_Tin_schedule_defaultDay.addValue(time, min_Tin_schedule_defaultDay_values_adjusted[i])
|
94
|
+
i += 1.0
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
##### Calculate how many windows a space has.
|
103
|
+
# The total number of windows is used to divide OA/person and OA/FloorArea of the space by it (i.e. number of windows).
|
104
|
+
# In this way, NV-driven OA in each space would be avoided to be more than required.
|
105
|
+
space.surfaces.sort.each do |surface|
|
106
|
+
surface.subSurfaces.sort.each do |subsurface|
|
107
|
+
if (subsurface.subSurfaceType == 'OperableWindow' || subsurface.subSurfaceType == 'FixedWindow') && subsurface.outsideBoundaryCondition == 'Outdoors'
|
108
|
+
number_of_windows += 1.0
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
oa_per_person_normalized_by_number_of_windows = outdoor_air_flow_per_person/number_of_windows
|
113
|
+
oa_per_floor_area_normalized_by_number_of_windows = outdoor_air_flow_per_floor_area/number_of_windows
|
114
|
+
|
115
|
+
##### Add NV in each space that has window(s) using two objects: "ZoneVentilation:DesignFlowRate" and "ZoneVentilation:WindandStackOpenArea"
|
116
|
+
space.surfaces.sort.each do |surface|
|
117
|
+
surface.subSurfaces.sort.each do |subsurface|
|
118
|
+
if (subsurface.subSurfaceType == 'OperableWindow' || subsurface.subSurfaceType == 'FixedWindow') && subsurface.outsideBoundaryCondition == 'Outdoors'
|
119
|
+
window_azimuth_deg = OpenStudio::convert(subsurface.azimuth,"rad","deg").get
|
120
|
+
window_area = subsurface.netArea
|
121
|
+
|
122
|
+
##### Define a constant schedule for operable windows
|
123
|
+
operable_window_schedule = OpenStudio::Model::ScheduleConstant.new(model)
|
124
|
+
operable_window_schedule.setName('operable_window_schedule_constant')
|
125
|
+
operable_window_schedule.setScheduleTypeLimits(BTAP::Resources::Schedules::StandardScheduleTypeLimits::get_on_off(model))
|
126
|
+
|
127
|
+
##### Add a "ZoneVentilation:DesignFlowRate" object for NV to set OA per person.
|
128
|
+
zn_vent_design_flow_rate_1 = OpenStudio::Model::ZoneVentilationDesignFlowRate.new(model)
|
129
|
+
zn_vent_design_flow_rate_1.setDesignFlowRateCalculationMethod('Flow/Person')
|
130
|
+
zn_vent_design_flow_rate_1.setFlowRateperPerson(oa_per_person_normalized_by_number_of_windows)
|
131
|
+
zn_vent_design_flow_rate_1.setVentilationType('Natural')
|
132
|
+
zn_vent_design_flow_rate_1.setMinimumIndoorTemperatureSchedule(min_Tin_schedule)
|
133
|
+
zn_vent_design_flow_rate_1.setMaximumIndoorTemperatureSchedule(max_Tin_schedule)
|
134
|
+
zn_vent_design_flow_rate_1.setMinimumOutdoorTemperature(nv_Tout_min)
|
135
|
+
zn_vent_design_flow_rate_1.setMaximumOutdoorTemperatureSchedule(max_Tin_schedule)
|
136
|
+
zn_vent_design_flow_rate_1.setDeltaTemperature(nv_Delta_Tin_Tout) #E+ I/O Ref.: "This is the temperature difference between the indoor and outdoor air dry-bulb temperatures below which ventilation is shutoff."
|
137
|
+
zone_hvac_equipment_list.addEquipment(zn_vent_design_flow_rate_1)
|
138
|
+
|
139
|
+
##### Add another "ZoneVentilation:DesignFlowRate" object for NV to set OA per floor area.
|
140
|
+
zn_vent_design_flow_rate_2 = OpenStudio::Model::ZoneVentilationDesignFlowRate.new(model)
|
141
|
+
zn_vent_design_flow_rate_2.setDesignFlowRateCalculationMethod('Flow/Area')
|
142
|
+
zn_vent_design_flow_rate_2.setFlowRateperZoneFloorArea(oa_per_floor_area_normalized_by_number_of_windows)
|
143
|
+
zn_vent_design_flow_rate_2.setVentilationType('Natural')
|
144
|
+
zn_vent_design_flow_rate_2.setMinimumIndoorTemperatureSchedule(min_Tin_schedule)
|
145
|
+
zn_vent_design_flow_rate_2.setMaximumIndoorTemperatureSchedule(max_Tin_schedule)
|
146
|
+
zn_vent_design_flow_rate_2.setMinimumOutdoorTemperature(nv_Tout_min)
|
147
|
+
zn_vent_design_flow_rate_2.setMaximumOutdoorTemperatureSchedule(max_Tin_schedule)
|
148
|
+
zn_vent_design_flow_rate_2.setDeltaTemperature(nv_Delta_Tin_Tout)
|
149
|
+
zone_hvac_equipment_list.addEquipment(zn_vent_design_flow_rate_2)
|
150
|
+
|
151
|
+
##### Add the "ZoneVentilation:WindandStackOpenArea" for NV.
|
152
|
+
# Note: it has been assumed that 'Opening Effectiveness' and 'Discharge Coefficient for Opening' are autocalculated (which are the default assumptions).
|
153
|
+
zn_vent_wind_and_stack = OpenStudio::Model::ZoneVentilationWindandStackOpenArea.new(model)
|
154
|
+
zn_vent_wind_and_stack.setOpeningArea(window_area * nv_opening_fraction)
|
155
|
+
zn_vent_wind_and_stack.setOpeningAreaFractionSchedule(operable_window_schedule)
|
156
|
+
# (Ref: E+ I/O) The Effective Angle value "is used to calculate the angle between the wind direction and the opening outward normal to determine the opening effectiveness values when the input field Opening Effectiveness = Autocalculate."
|
157
|
+
# (Ref: E+ I/O) "Effective Angle is the angle in degrees counting from the North clockwise to the opening outward normal."
|
158
|
+
zn_vent_wind_and_stack.setEffectiveAngle(window_azimuth_deg)
|
159
|
+
zn_vent_wind_and_stack.setMinimumIndoorTemperatureSchedule(min_Tin_schedule)
|
160
|
+
zn_vent_wind_and_stack.setMaximumIndoorTemperatureSchedule(max_Tin_schedule)
|
161
|
+
zn_vent_wind_and_stack.setMinimumOutdoorTemperature(nv_Tout_min)
|
162
|
+
zn_vent_wind_and_stack.setMaximumOutdoorTemperatureSchedule(max_Tin_schedule)
|
163
|
+
zn_vent_wind_and_stack.setDeltaTemperature(nv_Delta_Tin_Tout)
|
164
|
+
zone_hvac_equipment_list.addEquipment(zn_vent_wind_and_stack)
|
165
|
+
|
166
|
+
end #if (subsurface.subSurfaceType == 'OperableWindow' || subsurface.subSurfaceType == 'FixedWindow') && subsurface.outsideBoundaryCondition == 'Outdoors'
|
167
|
+
end #surface.subSurfaces.sort.each do |subsurface|
|
168
|
+
end #space.surfaces.sort.each do |surface|
|
169
|
+
|
170
|
+
|
171
|
+
end #thermal_zone.spaces.sort.each do |space|
|
172
|
+
|
173
|
+
end #model.getZoneHVACEquipmentLists.sort.each do |zone_hvac_equipment_list|
|
174
|
+
|
175
|
+
##### Add AvailabilityManagerHybridVentilation to "prevents simultaneous natural ventilation and HVAC system operation" (Ref: E+ I/O)
|
176
|
+
model.getAirLoopHVACs.sort.each do |air_loop|
|
177
|
+
air_loop.availabilityManagers.sort.each do |avail_mgr|
|
178
|
+
if avail_mgr.to_AvailabilityManagerHybridVentilation.empty?
|
179
|
+
avail_mgr_hybr_vent = OpenStudio::Model::AvailabilityManagerHybridVentilation.new(model)
|
180
|
+
avail_mgr_hybr_vent.setMinimumOutdoorTemperature(nv_Tout_min) #Note: since "Ventilation Control Mode" is by default set to "Temperature (i.e. 1)", only min and max Tout are needed. (see E+ I/O Ref.) #Note: Tout_min is to avoid overcooling (see E+ I/O Ref).
|
181
|
+
avail_mgr_hybr_vent.setMaximumOutdoorTemperature(30.0) #Note: the AvailabilityManagerHybridVentilation obj does not have a schedule field for Tout, so it has been set to a fixed value of 30C.
|
182
|
+
air_loop.addAvailabilityManager(avail_mgr_hybr_vent)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
class ECMS
|
2
|
+
|
3
|
+
def apply_pv_ground(model:, pv_ground_type:, pv_ground_total_area_pv_panels_m2:, pv_ground_tilt_angle:, pv_ground_azimuth_angle:, pv_ground_module_description:)
|
4
|
+
|
5
|
+
##### Remove leading or trailing whitespace in case users add them in inputs
|
6
|
+
if pv_ground_total_area_pv_panels_m2.instance_of?(String)
|
7
|
+
pv_ground_total_area_pv_panels_m2 = pv_ground_total_area_pv_panels_m2.strip
|
8
|
+
end
|
9
|
+
if pv_ground_tilt_angle.instance_of?(String)
|
10
|
+
pv_ground_tilt_angle = pv_ground_tilt_angle.strip
|
11
|
+
end
|
12
|
+
if pv_ground_azimuth_angle.instance_of?(String)
|
13
|
+
pv_ground_azimuth_angle = pv_ground_azimuth_angle.strip
|
14
|
+
end
|
15
|
+
|
16
|
+
##### If any of users' inputs are nil/false do nothing.
|
17
|
+
return if pv_ground_type.nil? || pv_ground_type == false || pv_ground_type == 'none' || pv_ground_type == 'NECB_Default'
|
18
|
+
return if pv_ground_total_area_pv_panels_m2 == nil? || pv_ground_total_area_pv_panels_m2 == false || pv_ground_total_area_pv_panels_m2 == 'none'
|
19
|
+
return if pv_ground_tilt_angle == nil? || pv_ground_tilt_angle == false || pv_ground_tilt_angle == 'none'
|
20
|
+
return if pv_ground_azimuth_angle == nil? || pv_ground_azimuth_angle == false || pv_ground_azimuth_angle == 'none'
|
21
|
+
return if pv_ground_module_description == nil? || pv_ground_module_description == false || pv_ground_module_description == 'none'
|
22
|
+
|
23
|
+
##### Convert a string to a float (except for pv_ground_type and pv_ground_module_description)
|
24
|
+
if pv_ground_total_area_pv_panels_m2.instance_of?(String) && pv_ground_total_area_pv_panels_m2 != 'NECB_Default'
|
25
|
+
pv_ground_total_area_pv_panels_m2 = pv_ground_total_area_pv_panels_m2.to_f
|
26
|
+
end
|
27
|
+
if pv_ground_tilt_angle.instance_of?(String) && pv_ground_tilt_angle != 'NECB_Default'
|
28
|
+
pv_ground_tilt_angle = pv_ground_tilt_angle.to_f
|
29
|
+
end
|
30
|
+
if pv_ground_azimuth_angle.instance_of?(String) && pv_ground_azimuth_angle != 'NECB_Default'
|
31
|
+
pv_ground_azimuth_angle = pv_ground_azimuth_angle.to_f
|
32
|
+
end
|
33
|
+
|
34
|
+
##### Calculate footprint of the building model (this is used as default value for pv_ground_total_area_pv_panels_m2)
|
35
|
+
building_footprint_m2_array = []
|
36
|
+
lowest_floor = 10000000000.0 #dummy number as initialization to find the lowest floor among spaces #TODO: Question:it it fine that it has been assumed that the floor of all lowest spaces are at the same level?
|
37
|
+
model.getSpaces.sort.each do |space|
|
38
|
+
space.surfaces.sort.select{ |surface| (surface.surfaceType == 'Floor') && (surface.outsideBoundaryCondition != 'Surface') && (surface.outsideBoundaryCondition != 'Adiabatic')}.each do |surface|
|
39
|
+
floor_vertices = surface.vertices
|
40
|
+
floor_z = floor_vertices[0].z.round(1)
|
41
|
+
if floor_z <= lowest_floor
|
42
|
+
lowest_floor = floor_z
|
43
|
+
building_footprint_m2_array << surface.netArea
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
building_footprint_m2 = building_footprint_m2_array.sum
|
48
|
+
puts "building_footprint_m2 is #{building_footprint_m2}"
|
49
|
+
|
50
|
+
##### Set default PV panels' total area as the building footprint
|
51
|
+
if pv_ground_total_area_pv_panels_m2 == 'NECB_Default'
|
52
|
+
pv_ground_total_area_pv_panels_m2 = building_footprint_m2
|
53
|
+
end
|
54
|
+
|
55
|
+
##### Set default PV panels' tilt angle as the latitude
|
56
|
+
if pv_ground_tilt_angle == 'NECB_Default'
|
57
|
+
epw = BTAP::Environment::WeatherFile.new(model.weatherFile.get.path.get)
|
58
|
+
pv_ground_tilt_angle = epw.latitude.to_f
|
59
|
+
end
|
60
|
+
|
61
|
+
##### Set default PV panels' azimuth angle as south-facing arrays
|
62
|
+
if pv_ground_azimuth_angle == 'NECB_Default'
|
63
|
+
pv_ground_azimuth_angle = 180 # EnergyPlus I/O Reference: "An azimuth angle of 180° is for a south-facing array, and an azimuth angle of 0° is for a north-facing array."
|
64
|
+
end
|
65
|
+
|
66
|
+
##### Set default PV module type as the the below one
|
67
|
+
if pv_ground_module_description == 'NECB_Default'
|
68
|
+
pv_ground_module_description = 'HES-160-36PV 26.6 x 58.3 x 1.38' # Note: As per Mike Lubun's comment, assuming a typical panel is 5 ft x 2 ft, the closest standard type PV panel in the spreadsheet would be the 160W HES.
|
69
|
+
end
|
70
|
+
|
71
|
+
##### Calculate number of PV panels
|
72
|
+
# Note: assuming 5 ft x 2 ft as PV panel's size since it seems to fit the racking system used for ground mounts as per Mike Lubun's comment.
|
73
|
+
pv_area_each_ft2 = 5.0 * 2.0
|
74
|
+
pv_area_each_m2 = (OpenStudio.convert(pv_area_each_ft2, 'ft^2', 'm^2').get) #convert pv_area_each_ft2 to m2
|
75
|
+
pv_number_panels = pv_ground_total_area_pv_panels_m2/pv_area_each_m2
|
76
|
+
|
77
|
+
##### Get data of the PV panel from the json file
|
78
|
+
pv_info = @standards_data['tables']['pv']['table'].detect { |item| item['pv_module_description'] == pv_ground_module_description }
|
79
|
+
pv_ground_module_type = pv_info['pv_module_type']
|
80
|
+
pv_watt = pv_info['pv_module_wattage']
|
81
|
+
|
82
|
+
##### Create the generator
|
83
|
+
# Assuming one PVWatts generator in E+ as per Mike Lubun's comment for simplification, however exact number of PVWatts generators (and inverters) are calculated for costing.
|
84
|
+
dc_system_capacity = pv_number_panels * pv_watt
|
85
|
+
generator = OpenStudio::Model::GeneratorPVWatts.new(model,dc_system_capacity)
|
86
|
+
generator.setModuleType(pv_ground_module_type)
|
87
|
+
generator.setArrayType('OneAxis') # Note: "tilt and azimuth are fixed" for this array type (see E+ I/O Reference). This array type has been chosen as per Mike Lubun's costing spec.
|
88
|
+
generator.setTiltAngle(pv_ground_tilt_angle)
|
89
|
+
generator.setAzimuthAngle(pv_ground_azimuth_angle)
|
90
|
+
|
91
|
+
##### Create the inverter
|
92
|
+
inverter = OpenStudio::Model::ElectricLoadCenterInverterPVWatts.new(model)
|
93
|
+
inverter.setDCToACSizeRatio(1.1) # Note: This is EnergyPlus' default value; This default value has been chosen for ground-mounted PV, assuming no storage as per Mike Lubun's costing spec.
|
94
|
+
inverter.setInverterEfficiency(0.96) # Note: This is EnergyPlus' default value; This default value has been chosen as per Mike Lubun's costing spec.
|
95
|
+
|
96
|
+
##### Get distribution systems and set relevant parameters
|
97
|
+
model.getElectricLoadCenterDistributions.sort.each do |elc_distribution|
|
98
|
+
elc_distribution.setInverter(inverter)
|
99
|
+
elc_distribution.setGeneratorOperationSchemeType('Baseload') # E+ I/O Reference: "The Baseload scheme requests all generators scheduled ON (available) to operate, even if the amount of electric power generated exceeds the total facility electric power demand." This scheme type has been chosen as per Mike Lubun's costing spec.
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
@@ -52,7 +52,7 @@ class NECB2011
|
|
52
52
|
# Some expections are dwelling units wet zone and wild zones. These spaces will have special considerations when autozoning a
|
53
53
|
# building.
|
54
54
|
|
55
|
-
def apply_auto_zoning(model:, sizing_run_dir: Dir.pwd)
|
55
|
+
def apply_auto_zoning(model:, sizing_run_dir: Dir.pwd, lights_type: 'NECB_Default', lights_scale: 1.0)
|
56
56
|
raise('validation of model failed.') unless validate_initial_model(model)
|
57
57
|
|
58
58
|
# Check to see if model is using another vintage of spacetypes. If so overwrite the @standards for the object with the
|
@@ -82,9 +82,9 @@ class NECB2011
|
|
82
82
|
# Remove any Thermal zones assigned again to start fresh.
|
83
83
|
model.getThermalZones.each(&:remove)
|
84
84
|
self.auto_zone_dwelling_units(model)
|
85
|
-
self.auto_zone_wet_spaces(model)
|
85
|
+
self.auto_zone_wet_spaces(model: model, lights_type: lights_type, lights_scale: lights_scale)
|
86
86
|
self.auto_zone_all_other_spaces(model)
|
87
|
-
self.auto_zone_wild_spaces(model)
|
87
|
+
self.auto_zone_wild_spaces(model: model, lights_type: lights_type, lights_scale: lights_scale)
|
88
88
|
#THis will color the spaces and zones.
|
89
89
|
random = Random.new(1234)
|
90
90
|
#Set ideal hvac in case we want to not implement the hvac yet and still run osm right after this function.
|
@@ -193,6 +193,7 @@ class NECB2011
|
|
193
193
|
# set a larger tolerance for unmet hours from default 0.2 to 1.0C
|
194
194
|
model.getOutputControlReportingTolerances.setToleranceforTimeHeatingSetpointNotMet(1.0)
|
195
195
|
model.getOutputControlReportingTolerances.setToleranceforTimeCoolingSetpointNotMet(1.0)
|
196
|
+
|
196
197
|
end
|
197
198
|
|
198
199
|
# Method to store space sizing loads. This is needed because later when the zones are destroyed this information will be lost.
|
@@ -283,7 +284,8 @@ class NECB2011
|
|
283
284
|
# Something that the code is silent on are smelly humid areas that should not be on the same system as the rest of the
|
284
285
|
# building.. These are the 'wet' spaces and have been defined as locker and washroom areas.. These will be put under
|
285
286
|
# their own single system 4 system. These will be set to the dominant floor schedule.
|
286
|
-
|
287
|
+
|
288
|
+
def auto_zone_wet_spaces(model:, lights_type: 'NECB_Default', lights_scale: 1.0)
|
287
289
|
wet_zone_array = Array.new
|
288
290
|
model.getSpaces.select {|space| is_an_necb_wet_space?(space)}.each do |space|
|
289
291
|
#if this space was already assigned to something skip it.
|
@@ -302,7 +304,8 @@ class NECB2011
|
|
302
304
|
|
303
305
|
#this method will determine if the right schedule was used for this wet & wild space if not.. it will reset the space
|
304
306
|
# to use the correct schedule version of the wet and wild space type.
|
305
|
-
adjust_wildcard_spacetype_schedule(space, dominant_schedule)
|
307
|
+
adjust_wildcard_spacetype_schedule(space: space, schedule: dominant_schedule, lights_type: lights_type, lights_scale: lights_scale)
|
308
|
+
|
306
309
|
#Find spacetype thermostat and assign it to the zone.
|
307
310
|
thermostat_name = space.spaceType.get.name.get + ' Thermostat'
|
308
311
|
thermostat = model.getThermostatSetpointDualSetpointByName(thermostat_name)
|
@@ -320,7 +323,7 @@ class NECB2011
|
|
320
323
|
model.getSpaces.select {|s| is_an_necb_wet_space?(s)}.each do |space_target|
|
321
324
|
if space_target.thermalZone.empty?
|
322
325
|
if are_space_loads_similar?(space_1: space, space_2: space_target) && space.buildingStory().get == space_target.buildingStory().get # added since chris needs zones to not span floors for costing.
|
323
|
-
adjust_wildcard_spacetype_schedule(space_target, dominant_schedule)
|
326
|
+
adjust_wildcard_spacetype_schedule(space_target, dominant_schedule, lights_type, lights_scale, space_height)
|
324
327
|
space_target.setThermalZone(zone)
|
325
328
|
end
|
326
329
|
end
|
@@ -379,7 +382,7 @@ class NECB2011
|
|
379
382
|
|
380
383
|
# This will take all the wildcard spaces and merge them to be supported by a system 4. The control zone will be the
|
381
384
|
# zone that has the largest heating load per area.
|
382
|
-
def auto_zone_wild_spaces(model)
|
385
|
+
def auto_zone_wild_spaces(model:, lights_type: 'NECB_Default', lights_scale: 1.0)
|
383
386
|
other_tz_array = Array.new
|
384
387
|
#iterate through wildcard spaces.
|
385
388
|
model.getSpaces.select {|space| is_an_necb_wildcard_space?(space) and not is_an_necb_wet_space?(space)}.each do |space|
|
@@ -396,10 +399,13 @@ class NECB2011
|
|
396
399
|
#Assign space to the new zone.
|
397
400
|
space.setThermalZone(zone)
|
398
401
|
|
399
|
-
#lets keep the wild schedules to be the same as what dominate the floor.
|
402
|
+
# lets keep the wild schedules to be the same as what dominate the floor.
|
400
403
|
dominant_floor_schedule = determine_dominant_schedule(space.model.getSpaces)
|
401
404
|
|
402
|
-
adjust_wildcard_spacetype_schedule(space,
|
405
|
+
adjust_wildcard_spacetype_schedule(space: space,
|
406
|
+
schedule: dominant_floor_schedule,
|
407
|
+
lights_type: lights_type,
|
408
|
+
lights_scale: lights_scale)
|
403
409
|
|
404
410
|
# Add a thermostat
|
405
411
|
space_type_name = space.spaceType.get.name.get
|
@@ -464,7 +470,7 @@ class NECB2011
|
|
464
470
|
schedule_type = determine_dominant_schedule(space.buildingStory.get.spaces)
|
465
471
|
zone = other_adjacent_spaces.first.thermalZone.get
|
466
472
|
wild_adjacent_spaces.each do |space|
|
467
|
-
adjust_wildcard_spacetype_schedule(space, schedule_type)
|
473
|
+
adjust_wildcard_spacetype_schedule(space, schedule_type, @lights_type, @lights_scale, @space_height)
|
468
474
|
space.setThermalZone(zone)
|
469
475
|
end
|
470
476
|
end
|
@@ -483,7 +489,7 @@ class NECB2011
|
|
483
489
|
dominant_floor_schedule = determine_dominant_schedule(space.buildingStory().get.spaces)
|
484
490
|
#this method will determine if the right schedule was used for this wet & wild space if not.. it will reset the space
|
485
491
|
# to use the correct schedule version of the wet and wild space type.
|
486
|
-
adjust_wildcard_spacetype_schedule(space, dominant_floor_schedule)
|
492
|
+
adjust_wildcard_spacetype_schedule(space, dominant_floor_schedule, @lights_type, @lights_scale, @space_height)
|
487
493
|
#Find spacetype thermostat and assign it to the zone.
|
488
494
|
thermostat_name = space.spaceType.get.name.get + ' Thermostat'
|
489
495
|
thermostat = model.getThermostatSetpointDualSetpointByName(thermostat_name)
|
@@ -502,7 +508,7 @@ class NECB2011
|
|
502
508
|
if space_target.thermalZone.empty?
|
503
509
|
if are_space_loads_similar?(space_1: space, space_2: space_target) &&
|
504
510
|
space.buildingStory().get == space_target.buildingStory().get # added since chris needs zones to not span floors for costing.
|
505
|
-
adjust_wildcard_spacetype_schedule(space_target, dominant_floor_schedule)
|
511
|
+
adjust_wildcard_spacetype_schedule(space_target, dominant_floor_schedule, @lights_type, @lights_scale, @space_height)
|
506
512
|
space_target.setThermalZone(zone)
|
507
513
|
end
|
508
514
|
end
|
@@ -708,7 +714,7 @@ class NECB2011
|
|
708
714
|
end
|
709
715
|
|
710
716
|
# Set wildcard spactype schedule to NECB letter index.
|
711
|
-
def adjust_wildcard_spacetype_schedule(space,
|
717
|
+
def adjust_wildcard_spacetype_schedule(space:, schedule:, lights_type: 'NECB_Default', lights_scale: 1.0)
|
712
718
|
if space.spaceType.empty?
|
713
719
|
OpenStudio.logFree(OpenStudio::Error, 'Error: No spacetype assigned for #{space.name.get}. This must be assigned. Aborting.')
|
714
720
|
end
|
@@ -733,7 +739,7 @@ class NECB2011
|
|
733
739
|
new_spacetype.setStandardsBuildingType(space.spaceType.get.standardsBuildingType.get)
|
734
740
|
new_spacetype.setStandardsSpaceType(new_spacetype_name)
|
735
741
|
new_spacetype.setName("#{space.spaceType.get.standardsBuildingType.get} #{new_spacetype_name}")
|
736
|
-
space_type_apply_internal_loads(new_spacetype,
|
742
|
+
space_type_apply_internal_loads(space_type: new_spacetype, lights_type: lights_type, lights_scale: lights_scale)
|
737
743
|
space_type_apply_internal_load_schedules(new_spacetype, true, true, true, true, true, true, true)
|
738
744
|
end
|
739
745
|
space.setSpaceType(new_spacetype)
|
@@ -881,7 +887,8 @@ class NECB2011
|
|
881
887
|
mau_type: mau_type,
|
882
888
|
mau_heating_coil_type: mau_heating_coil_type,
|
883
889
|
baseboard_type: baseboard_type,
|
884
|
-
hw_loop: @hw_loop
|
890
|
+
hw_loop: @hw_loop,
|
891
|
+
multispeed: false)
|
885
892
|
end
|
886
893
|
when 2
|
887
894
|
group_similar_zones_together(zones).each do |zones|
|
@@ -894,11 +901,12 @@ class NECB2011
|
|
894
901
|
end
|
895
902
|
when 3
|
896
903
|
group_similar_zones_together(zones).each do |zones|
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
904
|
+
add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating(model: model,
|
905
|
+
zones: zones,
|
906
|
+
heating_coil_type: heating_coil_type_sys3,
|
907
|
+
baseboard_type: baseboard_type,
|
908
|
+
hw_loop: @hw_loop,
|
909
|
+
multispeed: false)
|
902
910
|
end
|
903
911
|
when 4
|
904
912
|
group_similar_zones_together(zones).each do |zones|
|
@@ -907,6 +915,12 @@ class NECB2011
|
|
907
915
|
heating_coil_type: heating_coil_type_sys4,
|
908
916
|
baseboard_type: baseboard_type,
|
909
917
|
hw_loop: @hw_loop)
|
918
|
+
# add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating(model: model,
|
919
|
+
# zones: zones,
|
920
|
+
# heating_coil_type: heating_coil_type_sys4,
|
921
|
+
# baseboard_type: baseboard_type,
|
922
|
+
# hw_loop: @hw_loop,
|
923
|
+
# multispeed: false)
|
910
924
|
end
|
911
925
|
when 5
|
912
926
|
group_similar_zones_together(zones).each do |zones|
|
@@ -1024,7 +1038,8 @@ class NECB2011
|
|
1024
1038
|
mau_type: mau_type,
|
1025
1039
|
mau_heating_coil_type: mau_heating_coil_type,
|
1026
1040
|
baseboard_type: baseboard_type,
|
1027
|
-
hw_loop: @hw_loop
|
1041
|
+
hw_loop: @hw_loop,
|
1042
|
+
multispeed: false)
|
1028
1043
|
else
|
1029
1044
|
#Create a separate air loop for each unit.
|
1030
1045
|
zones.each do |zone|
|
@@ -1033,27 +1048,29 @@ class NECB2011
|
|
1033
1048
|
mau_type: mau_type,
|
1034
1049
|
mau_heating_coil_type: mau_heating_coil_type,
|
1035
1050
|
baseboard_type: baseboard_type,
|
1036
|
-
hw_loop: @hw_loop
|
1051
|
+
hw_loop: @hw_loop,
|
1052
|
+
multispeed: false)
|
1037
1053
|
|
1038
1054
|
end
|
1039
1055
|
end
|
1040
1056
|
|
1041
1057
|
when 3
|
1042
1058
|
if dwelling_shared_ahu
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1059
|
+
add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating(model: model,
|
1060
|
+
zones: zones,
|
1061
|
+
heating_coil_type: heating_coil_type_sys3,
|
1062
|
+
baseboard_type: baseboard_type,
|
1063
|
+
hw_loop: @hw_loop,
|
1064
|
+
multispeed: false)
|
1048
1065
|
else
|
1049
1066
|
#Create a separate air loop for each unit.
|
1050
1067
|
zones.each do |zone|
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1068
|
+
add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating(model: model,
|
1069
|
+
zones: [zone],
|
1070
|
+
heating_coil_type: heating_coil_type_sys3,
|
1071
|
+
baseboard_type: baseboard_type,
|
1072
|
+
hw_loop: @hw_loop,
|
1073
|
+
multispeed: false)
|
1057
1074
|
end
|
1058
1075
|
end
|
1059
1076
|
end
|
@@ -1079,6 +1096,12 @@ class NECB2011
|
|
1079
1096
|
heating_coil_type: heating_coil_type_sys4,
|
1080
1097
|
baseboard_type: baseboard_type,
|
1081
1098
|
hw_loop: @hw_loop)
|
1099
|
+
# add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating(model: model,
|
1100
|
+
# zones: wet_tz,
|
1101
|
+
# heating_coil_type: heating_coil_type_sys4,
|
1102
|
+
# baseboard_type: baseboard_type,
|
1103
|
+
# hw_loop: @hw_loop,
|
1104
|
+
# multispeed: false)
|
1082
1105
|
end
|
1083
1106
|
end
|
1084
1107
|
|
@@ -1102,6 +1125,12 @@ class NECB2011
|
|
1102
1125
|
heating_coil_type: heating_coil_type_sys4,
|
1103
1126
|
baseboard_type: baseboard_type,
|
1104
1127
|
hw_loop: @hw_loop)
|
1128
|
+
# add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating(model: model,
|
1129
|
+
# zones: tz,
|
1130
|
+
# heating_coil_type: heating_coil_type_sys4,
|
1131
|
+
# baseboard_type: baseboard_type,
|
1132
|
+
# hw_loop: @hw_loop,
|
1133
|
+
# multispeed: true)
|
1105
1134
|
end
|
1106
1135
|
end
|
1107
1136
|
|
@@ -1125,6 +1154,12 @@ class NECB2011
|
|
1125
1154
|
heating_coil_type: heating_coil_type_sys4,
|
1126
1155
|
baseboard_type: baseboard_type,
|
1127
1156
|
hw_loop: @hw_loop)
|
1157
|
+
# add_sys3and8_single_zone_packaged_rooftop_unit_with_baseboard_heating(model: model,
|
1158
|
+
# zones: zones,
|
1159
|
+
# heating_coil_type: heating_coil_type_sys4,
|
1160
|
+
# baseboard_type: baseboard_type,
|
1161
|
+
# hw_loop: @hw_loop,
|
1162
|
+
# multispeed: true)
|
1128
1163
|
end
|
1129
1164
|
end
|
1130
1165
|
|