openstudio-standards 0.4.0 → 0.5.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/inventory/thermal_bridging.csv +90 -0
- data/data/standards/OpenStudio_Standards-deer-comstock.xlsx +0 -0
- data/data/standards/manage_OpenStudio_Standards.rb +1 -1
- data/data/standards/test_performance_expected_dd_results.csv +2014 -1891
- data/lib/openstudio-standards/btap/analysis.rb +8 -8
- data/lib/openstudio-standards/btap/bridging.rb +664 -645
- data/lib/openstudio-standards/btap/btap.model.rb +14 -14
- data/lib/openstudio-standards/btap/btap.rb +7 -7
- data/lib/openstudio-standards/btap/btap_result.rb +1 -1
- data/lib/openstudio-standards/btap/economics.rb +23 -23
- data/lib/openstudio-standards/btap/envelope.rb +8 -8
- data/lib/openstudio-standards/btap/equest.rb +1 -1
- data/lib/openstudio-standards/btap/geometry.rb +2 -2
- data/lib/openstudio-standards/btap/mpc.rb +7 -7
- data/lib/openstudio-standards/btap/schedules.rb +1 -1
- data/lib/openstudio-standards/btap/simmanager.rb +4 -4
- data/lib/openstudio-standards/btap/spaceloads.rb +26 -26
- data/lib/openstudio-standards/btap/utilities.rb +6 -6
- data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
- data/lib/openstudio-standards/constructions/information.rb +83 -0
- data/lib/openstudio-standards/constructions/materials/modify.rb +72 -0
- data/lib/openstudio-standards/constructions/modify.rb +80 -0
- data/lib/openstudio-standards/create_typical/create_typical.rb +983 -0
- data/lib/openstudio-standards/create_typical/enumerations.rb +484 -0
- data/lib/openstudio-standards/create_typical/space_type_blend.rb +791 -0
- data/lib/openstudio-standards/create_typical/space_type_ratios.rb +494 -0
- data/lib/openstudio-standards/daylighting/space.rb +47 -0
- data/lib/openstudio-standards/geometry/create.rb +801 -0
- data/lib/openstudio-standards/geometry/create_bar.rb +2171 -0
- data/lib/openstudio-standards/geometry/information.rb +462 -0
- data/lib/openstudio-standards/geometry/modify.rb +48 -0
- data/lib/openstudio-standards/hvac/air_loop/information.rb +79 -0
- data/lib/openstudio-standards/hvac/cbecs_hvac.rb +616 -0
- data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +91 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +2 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.hvac_systems.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -36
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -36
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +3 -3
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.elevators.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.elevators.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +14 -14
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +9 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +16 -16
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +11 -11
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +9 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +11 -11
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +9 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +19 -19
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +10 -10
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +13 -13
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +9 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +11 -11
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +10 -10
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +19 -19
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +18 -18
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +957 -957
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +84 -16
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +61 -10
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +43 -30
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +18 -11
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +774 -117
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +340 -481
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +3 -3
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +3 -3
- data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +22 -22
- data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
- data/lib/openstudio-standards/qaqc/calibration.rb +131 -0
- data/lib/openstudio-standards/qaqc/create_results.rb +983 -0
- data/lib/openstudio-standards/qaqc/envelope.rb +399 -0
- data/lib/openstudio-standards/qaqc/eui.rb +213 -0
- data/lib/openstudio-standards/qaqc/hvac.rb +1943 -0
- data/lib/openstudio-standards/qaqc/internal_loads.rb +568 -0
- data/lib/openstudio-standards/qaqc/reporting.rb +141 -0
- data/lib/openstudio-standards/qaqc/schedules.rb +129 -0
- data/lib/openstudio-standards/qaqc/service_water_heating.rb +273 -0
- data/lib/openstudio-standards/qaqc/weather_files.rb +497 -0
- data/lib/openstudio-standards/qaqc/zone_conditions.rb +278 -0
- data/lib/openstudio-standards/schedules/create.rb +364 -0
- data/lib/openstudio-standards/schedules/information.rb +169 -0
- data/lib/openstudio-standards/schedules/modify.rb +445 -0
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +110 -71
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +16 -10
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +5 -5
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Construction.rb +17 -18
- data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +6 -6
- data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Fan.rb +6 -12
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +3 -3
- data/lib/openstudio-standards/standards/Standards.Model.rb +411 -261
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +94 -29
- data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +14 -14
- data/lib/openstudio-standards/standards/Standards.Space.rb +37 -30
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +38 -29
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +7 -7
- data/lib/openstudio-standards/standards/Standards.Surface.rb +13 -13
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +109 -66
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +11 -4
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +5 -21
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +4 -4
- 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/ashrae_90_1_2013.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +36 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/comstock_ashrae_90_1_2016.AirLoopHVAC.rb +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +53 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/comstock_ashrae_90_1_2019.AirLoopHVAC.rb +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +211 -211
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +14 -14
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +14 -14
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTowerVariableSpeed.rb +1 -1
- 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.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +1 -1
- 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.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +22 -28
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +1 -74
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +7 -59
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +1 -21
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.DesignSpecificationOutdoorAir.rb +101 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +643 -526
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +8 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +17 -77
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +74 -16
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +96 -44
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +18 -6
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +328 -74
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +0 -118
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +2 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_rejection.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_outdoor_air.md +35 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +228 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +131 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes.AirLoopHVAC.rb +5 -5
- data/lib/openstudio-standards/standards/cbes/cbes.Model.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +109 -27
- data/lib/openstudio-standards/standards/deer/deer.Space.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +18 -5
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.heat_pumps.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.economizers.json +260 -0
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +3 -3
- 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 +3 -3
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.economizers.json +246 -4
- data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/space_types.json +447 -223
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +1 -1
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/space_types.json +447 -223
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +5 -2
- data/lib/openstudio-standards/standards/necb/ECMS/data/chiller_types.json +25 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/chillers.json +44 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +225 -0
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +2 -2
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +193 -73
- data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +10 -4
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +7 -7
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +4 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chiller_types.json +32 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +36 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +7 -7
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +47587 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +49764 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Warehouse.osm +283 -297
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_type_unit_definitions.txt +2 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +447 -223
- data/lib/openstudio-standards/standards/necb/NECB2011/data/standards_data.rb +3 -3
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +49 -27
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +400 -202
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -4
- data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +637 -318
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +18 -1
- data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +3 -3
- data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +637 -318
- data/lib/openstudio-standards/standards/necb/NECB2017/hvac_systems.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +3 -3
- data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +615 -307
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +4 -4
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +10 -5
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +1 -1
- data/lib/openstudio-standards/utilities/assertion.rb +128 -0
- data/lib/openstudio-standards/utilities/logging.rb +2 -3
- data/lib/openstudio-standards/utilities/object_info.rb +39 -18
- data/lib/openstudio-standards/utilities/schedule_translator.rb +8 -6
- data/lib/openstudio-standards/utilities/simulation.rb +24 -11
- data/lib/openstudio-standards/utilities/sqlfile.rb +10 -5
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +8 -9
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +3 -3
- data/lib/openstudio-standards/weather/information.rb +35 -0
- data/lib/openstudio-standards.rb +69 -5
- metadata +52 -16
- data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +0 -59
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingWater.rb +0 -13
- data/lib/openstudio-standards/hvac_sizing/Siz.HVACComponent.rb +0 -36
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +0 -898
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +0 -126
- data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +0 -356
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +0 -35
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +0 -110
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +0 -5
|
@@ -6,7 +6,7 @@ class Standard
|
|
|
6
6
|
# Hard-size the resulting min OA into the sizing:system object.
|
|
7
7
|
#
|
|
8
8
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
9
|
-
# return [
|
|
9
|
+
# return [Boolean] returns true if successful, false if not
|
|
10
10
|
# @todo move building-type-specific code to Prototype classes
|
|
11
11
|
def air_loop_hvac_apply_multizone_vav_outdoor_air_sizing(air_loop_hvac)
|
|
12
12
|
# First time adjustment:
|
|
@@ -25,7 +25,7 @@ class Standard
|
|
|
25
25
|
#
|
|
26
26
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
27
27
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
28
|
-
# @return [
|
|
28
|
+
# @return [Boolean] returns true if successful, false if not
|
|
29
29
|
# @todo optimum start
|
|
30
30
|
# @todo night damper shutoff
|
|
31
31
|
# @todo nightcycle control
|
|
@@ -190,7 +190,7 @@ class Standard
|
|
|
190
190
|
#
|
|
191
191
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
192
192
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
193
|
-
# @return [
|
|
193
|
+
# @return [Boolean] returns true if successful, false if not
|
|
194
194
|
def air_loop_hvac_apply_prm_baseline_controls(air_loop_hvac, climate_zone)
|
|
195
195
|
# Economizers
|
|
196
196
|
if air_loop_hvac_prm_baseline_economizer_required?(air_loop_hvac, climate_zone)
|
|
@@ -233,7 +233,7 @@ class Standard
|
|
|
233
233
|
# Defaults to 90.1-2004 logic, which requires optimum start if > 10,000 cfm
|
|
234
234
|
#
|
|
235
235
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
236
|
-
# @return [
|
|
236
|
+
# @return [Boolean] returns true if required, false if not
|
|
237
237
|
def air_loop_hvac_optimum_start_required?(air_loop_hvac)
|
|
238
238
|
opt_start_required = false
|
|
239
239
|
|
|
@@ -268,7 +268,7 @@ class Standard
|
|
|
268
268
|
# Adds optimum start control to the airloop.
|
|
269
269
|
#
|
|
270
270
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
271
|
-
# @return [
|
|
271
|
+
# @return [Boolean] returns true if successful, false if not
|
|
272
272
|
def air_loop_hvac_enable_optimum_start(air_loop_hvac)
|
|
273
273
|
# Get the heating and cooling setpoint schedules
|
|
274
274
|
# for all zones on this airloop.
|
|
@@ -374,7 +374,7 @@ class Standard
|
|
|
374
374
|
end
|
|
375
375
|
|
|
376
376
|
# Set default fan curve to be VSD with static pressure reset
|
|
377
|
-
# @return [
|
|
377
|
+
# @return [String name of appropriate curve for this code version
|
|
378
378
|
def air_loop_hvac_set_vsd_curve_type
|
|
379
379
|
return 'Multi Zone VAV with VSD and SP Setpoint Reset'
|
|
380
380
|
end
|
|
@@ -387,7 +387,7 @@ class Standard
|
|
|
387
387
|
# if the proposed model had multiple fans (supply, return, exhaust, etc.)
|
|
388
388
|
#
|
|
389
389
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
390
|
-
# return [
|
|
390
|
+
# return [Boolean] true if successful, false if not
|
|
391
391
|
def air_loop_hvac_apply_prm_baseline_fan_power(air_loop_hvac)
|
|
392
392
|
# Main AHU fans
|
|
393
393
|
|
|
@@ -625,7 +625,7 @@ class Standard
|
|
|
625
625
|
# with or without the fans inside of fan powered terminals.
|
|
626
626
|
#
|
|
627
627
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
628
|
-
# @param include_terminal_fans [
|
|
628
|
+
# @param include_terminal_fans [Boolean] if true, power from fan powered terminals will be included
|
|
629
629
|
# @return [Double] total brake horsepower of the fans on the system, in units of horsepower
|
|
630
630
|
def air_loop_hvac_system_fan_brake_horsepower(air_loop_hvac, include_terminal_fans = true)
|
|
631
631
|
# @todo get the template from the parent model itself?
|
|
@@ -668,7 +668,7 @@ class Standard
|
|
|
668
668
|
# the system hitting the baseline allowable fan power
|
|
669
669
|
#
|
|
670
670
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
671
|
-
# @return [
|
|
671
|
+
# @return [Boolean] returns true if successful, false if not
|
|
672
672
|
def air_loop_hvac_apply_baseline_fan_pressure_rise(air_loop_hvac)
|
|
673
673
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "#{air_loop_hvac.name}-Setting #{template} baseline fan power.")
|
|
674
674
|
|
|
@@ -784,6 +784,10 @@ class Standard
|
|
|
784
784
|
# CoilCoolingWater
|
|
785
785
|
elsif sc.to_CoilCoolingWater.is_initialized
|
|
786
786
|
coil = sc.to_CoilCoolingWater.get
|
|
787
|
+
# error if the design coil capacity method isn't available
|
|
788
|
+
if coil.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
789
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required CoilCoolingWater method .autosizedDesignCoilLoad is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
790
|
+
end
|
|
787
791
|
if coil.autosizedDesignCoilLoad.is_initialized
|
|
788
792
|
# @todo Change to pull water coil nominal capacity instead of design load
|
|
789
793
|
total_cooling_capacity_w += coil.autosizedDesignCoilLoad.get
|
|
@@ -827,6 +831,10 @@ class Standard
|
|
|
827
831
|
# CoilCoolingWater
|
|
828
832
|
elsif clg_coil.to_CoilCoolingWater.is_initialized
|
|
829
833
|
coil = clg_coil.to_CoilCoolingWater.get
|
|
834
|
+
# error if the design coil capacity method isn't available
|
|
835
|
+
if coil.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
836
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required CoilCoolingWater method .autosizedDesignCoilLoad is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
837
|
+
end
|
|
830
838
|
if coil.autosizedDesignCoilLoad.is_initialized
|
|
831
839
|
# @todo Change to pull water coil nominal capacity instead of design load
|
|
832
840
|
total_cooling_capacity_w += coil.autosizedDesignCoilLoad.get
|
|
@@ -871,6 +879,10 @@ class Standard
|
|
|
871
879
|
# CoilCoolingWater
|
|
872
880
|
elsif clg_coil.to_CoilCoolingWater.is_initialized
|
|
873
881
|
coil = clg_coil.to_CoilCoolingWater.get
|
|
882
|
+
# error if the design coil capacity method isn't available
|
|
883
|
+
if coil.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
884
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required CoilCoolingWater method .autosizedDesignCoilLoad is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
885
|
+
end
|
|
874
886
|
if coil.autosizedDesignCoilLoad.is_initialized
|
|
875
887
|
# @todo Change to pull water coil nominal capacity instead of design load
|
|
876
888
|
total_cooling_capacity_w += coil.autosizedDesignCoilLoad.get
|
|
@@ -937,7 +949,7 @@ class Standard
|
|
|
937
949
|
#
|
|
938
950
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
939
951
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
940
|
-
# @return [
|
|
952
|
+
# @return [Boolean] returns true if an economizer is required, false if not
|
|
941
953
|
def air_loop_hvac_economizer_required?(air_loop_hvac, climate_zone)
|
|
942
954
|
economizer_required = false
|
|
943
955
|
|
|
@@ -1013,7 +1025,7 @@ class Standard
|
|
|
1013
1025
|
#
|
|
1014
1026
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1015
1027
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1016
|
-
# @return [
|
|
1028
|
+
# @return [Boolean] returns true if successful, false if not
|
|
1017
1029
|
def air_loop_hvac_apply_economizer_limits(air_loop_hvac, climate_zone)
|
|
1018
1030
|
# EnergyPlus economizer types
|
|
1019
1031
|
# 'NoEconomizer'
|
|
@@ -1060,6 +1072,12 @@ class Standard
|
|
|
1060
1072
|
oa_control.setEconomizerMaximumLimitDryBulbTemperature(drybulb_limit_c)
|
|
1061
1073
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Economizer type = #{economizer_type}, dry bulb limit = #{drybulb_limit_f}F")
|
|
1062
1074
|
end
|
|
1075
|
+
# Some templates include fixed enthalpy limits in addition to fixed dry bulb limits
|
|
1076
|
+
if enthalpy_limit_btu_per_lb
|
|
1077
|
+
enthalpy_limit_j_per_kg = OpenStudio.convert(enthalpy_limit_btu_per_lb, 'Btu/lb', 'J/kg').get
|
|
1078
|
+
oa_control.setEconomizerMaximumLimitEnthalpy(enthalpy_limit_j_per_kg)
|
|
1079
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: additional economizer enthalpy limit = #{enthalpy_limit_btu_per_lb}Btu/lb")
|
|
1080
|
+
end
|
|
1063
1081
|
when 'FixedEnthalpy'
|
|
1064
1082
|
if enthalpy_limit_btu_per_lb
|
|
1065
1083
|
enthalpy_limit_j_per_kg = OpenStudio.convert(enthalpy_limit_btu_per_lb, 'Btu/lb', 'J/kg').get
|
|
@@ -1123,7 +1141,7 @@ class Standard
|
|
|
1123
1141
|
#
|
|
1124
1142
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1125
1143
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1126
|
-
# @return [
|
|
1144
|
+
# @return [Boolean] returns true if successful, false if not
|
|
1127
1145
|
def air_loop_hvac_apply_economizer_integration(air_loop_hvac, climate_zone)
|
|
1128
1146
|
# Determine if an integrated economizer is required
|
|
1129
1147
|
integrated_economizer_required = air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
|
|
@@ -1158,7 +1176,7 @@ class Standard
|
|
|
1158
1176
|
# Determine if the airloop includes hydronic cooling coils
|
|
1159
1177
|
#
|
|
1160
1178
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1161
|
-
# @return [
|
|
1179
|
+
# @return [Boolean] returns true if hydronic cooling coils are included on the airloop
|
|
1162
1180
|
def air_loop_hvac_include_hydronic_cooling_coil?(air_loop_hvac)
|
|
1163
1181
|
air_loop_hvac.supplyComponents.each do |comp|
|
|
1164
1182
|
return true if comp.to_CoilCoolingWater.is_initialized
|
|
@@ -1168,7 +1186,7 @@ class Standard
|
|
|
1168
1186
|
|
|
1169
1187
|
# Determine if the airloop includes cooling coils
|
|
1170
1188
|
#
|
|
1171
|
-
# @return [
|
|
1189
|
+
# @return [Boolean] returns true if cooling coils are included on the airloop
|
|
1172
1190
|
def air_loop_hvac_include_cooling_coil?(air_loop_hvac)
|
|
1173
1191
|
air_loop_hvac.supplyComponents.each do |comp|
|
|
1174
1192
|
return true if comp.to_CoilCoolingWater.is_initialized
|
|
@@ -1214,7 +1232,7 @@ class Standard
|
|
|
1214
1232
|
|
|
1215
1233
|
# Determine if the airloop includes evaporative coolers
|
|
1216
1234
|
#
|
|
1217
|
-
# @return [
|
|
1235
|
+
# @return [Boolean] returns true if evaporative coolers are included on the airloop
|
|
1218
1236
|
def air_loop_hvac_include_evaporative_cooler?(air_loop_hvac)
|
|
1219
1237
|
air_loop_hvac.supplyComponents.each do |comp|
|
|
1220
1238
|
return true if comp.to_EvaporativeCoolerDirectResearchSpecial.is_initialized
|
|
@@ -1225,7 +1243,7 @@ class Standard
|
|
|
1225
1243
|
|
|
1226
1244
|
# Determine if the airloop includes an air-economizer
|
|
1227
1245
|
#
|
|
1228
|
-
# @return [
|
|
1246
|
+
# @return [Boolean] returns true if the airloop has an air-economizer
|
|
1229
1247
|
def air_loop_hvac_include_economizer?(air_loop_hvac)
|
|
1230
1248
|
return false unless air_loop_hvac.airLoopHVACOutdoorAirSystem.is_initialized
|
|
1231
1249
|
|
|
@@ -1245,7 +1263,7 @@ class Standard
|
|
|
1245
1263
|
# Determine if the airloop includes WSHP cooling coils
|
|
1246
1264
|
#
|
|
1247
1265
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1248
|
-
# @return [
|
|
1266
|
+
# @return [Boolean] returns true if WSHP cooling coils are included on the airloop
|
|
1249
1267
|
def air_loop_hvac_include_wshp?(air_loop_hvac)
|
|
1250
1268
|
air_loop_hvac.supplyComponents.each do |comp|
|
|
1251
1269
|
return true if comp.to_CoilCoolingWaterToAirHeatPumpEquationFit.is_initialized
|
|
@@ -1261,7 +1279,7 @@ class Standard
|
|
|
1261
1279
|
|
|
1262
1280
|
# Determine if the air loop includes a unitary system
|
|
1263
1281
|
#
|
|
1264
|
-
# @return [
|
|
1282
|
+
# @return [Boolean] returns true if a unitary system is included on the air loop
|
|
1265
1283
|
def air_loop_hvac_include_unitary_system?(air_loop_hvac)
|
|
1266
1284
|
air_loop_hvac.supplyComponents.each do |comp|
|
|
1267
1285
|
return true if comp.to_AirLoopHVACUnitarySystem.is_initialized
|
|
@@ -1275,7 +1293,7 @@ class Standard
|
|
|
1275
1293
|
#
|
|
1276
1294
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1277
1295
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1278
|
-
# @return [
|
|
1296
|
+
# @return [Boolean] returns true if required, false if not
|
|
1279
1297
|
def air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
|
|
1280
1298
|
# Determine if it is a VAV system
|
|
1281
1299
|
is_vav = air_loop_hvac_vav_system?(air_loop_hvac)
|
|
@@ -1353,7 +1371,7 @@ class Standard
|
|
|
1353
1371
|
#
|
|
1354
1372
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1355
1373
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1356
|
-
# @return [
|
|
1374
|
+
# @return [Boolean] returns true if required, false if not
|
|
1357
1375
|
def air_loop_hvac_prm_baseline_economizer_required?(air_loop_hvac, climate_zone)
|
|
1358
1376
|
economizer_required = false
|
|
1359
1377
|
|
|
@@ -1415,7 +1433,7 @@ class Standard
|
|
|
1415
1433
|
#
|
|
1416
1434
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1417
1435
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1418
|
-
# @return [
|
|
1436
|
+
# @return [Boolean] returns true if successful, false if not
|
|
1419
1437
|
def air_loop_hvac_apply_prm_baseline_economizer(air_loop_hvac, climate_zone)
|
|
1420
1438
|
# EnergyPlus economizer types
|
|
1421
1439
|
# 'NoEconomizer'
|
|
@@ -1535,7 +1553,7 @@ class Standard
|
|
|
1535
1553
|
#
|
|
1536
1554
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1537
1555
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1538
|
-
# @return [
|
|
1556
|
+
# @return [Boolean] returns true if allowable, if the system has no economizer or no OA system
|
|
1539
1557
|
# Returns false if the economizer type is not allowable.
|
|
1540
1558
|
def air_loop_hvac_economizer_type_allowable?(air_loop_hvac, climate_zone)
|
|
1541
1559
|
# EnergyPlus economizer types
|
|
@@ -1620,7 +1638,7 @@ class Standard
|
|
|
1620
1638
|
#
|
|
1621
1639
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1622
1640
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1623
|
-
# @return [
|
|
1641
|
+
# @return [Boolean] returns true if required, false if not
|
|
1624
1642
|
# @todo Add exception logic for systems serving parking garage, warehouse, or multifamily
|
|
1625
1643
|
def air_loop_hvac_energy_recovery_ventilator_required?(air_loop_hvac, climate_zone)
|
|
1626
1644
|
# ERV Not Applicable for AHUs that serve
|
|
@@ -1780,7 +1798,7 @@ class Standard
|
|
|
1780
1798
|
#
|
|
1781
1799
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1782
1800
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1783
|
-
# @return [
|
|
1801
|
+
# @return [Boolean] returns true if required, false if not
|
|
1784
1802
|
# @todo Add exception logic for systems serving parking garage, warehouse, or multifamily
|
|
1785
1803
|
def air_loop_hvac_apply_energy_recovery_ventilator(air_loop_hvac, climate_zone)
|
|
1786
1804
|
# Get the OA system
|
|
@@ -1892,7 +1910,7 @@ class Standard
|
|
|
1892
1910
|
#
|
|
1893
1911
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1894
1912
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1895
|
-
# @return [
|
|
1913
|
+
# @return [Boolean] returns true if required, false if not
|
|
1896
1914
|
# @todo Add exception logic for systems with AIA healthcare ventilation requirements dual duct systems
|
|
1897
1915
|
def air_loop_hvac_multizone_vav_optimization_required?(air_loop_hvac, climate_zone)
|
|
1898
1916
|
multizone_opt_required = false
|
|
@@ -1903,7 +1921,7 @@ class Standard
|
|
|
1903
1921
|
# in the Controller:MechanicalVentilation object to 'VentilationRateProcedure'
|
|
1904
1922
|
#
|
|
1905
1923
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1906
|
-
# @return [
|
|
1924
|
+
# @return [Boolean] returns true if required, false if not
|
|
1907
1925
|
def air_loop_hvac_enable_multizone_vav_optimization(air_loop_hvac)
|
|
1908
1926
|
# Enable multizone vav optimization
|
|
1909
1927
|
# at each timestep.
|
|
@@ -1928,7 +1946,7 @@ class Standard
|
|
|
1928
1946
|
# in the Controller:MechanicalVentilation object to 'ZoneSum'
|
|
1929
1947
|
#
|
|
1930
1948
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1931
|
-
# @return [
|
|
1949
|
+
# @return [Boolean] returns true if required, false if not
|
|
1932
1950
|
def air_loop_hvac_disable_multizone_vav_optimization(air_loop_hvac)
|
|
1933
1951
|
# Disable multizone vav optimization
|
|
1934
1952
|
# at each timestep.
|
|
@@ -1957,9 +1975,9 @@ class Standard
|
|
|
1957
1975
|
# Set the minimum VAV damper positions.
|
|
1958
1976
|
#
|
|
1959
1977
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1960
|
-
# @param has_ddc [
|
|
1978
|
+
# @param has_ddc [Boolean] if true, will assume that there is DDC control of vav terminals.
|
|
1961
1979
|
# If false, assumes otherwise.
|
|
1962
|
-
# @return [
|
|
1980
|
+
# @return [Boolean] returns true if successful, false if not
|
|
1963
1981
|
def air_loop_hvac_apply_minimum_vav_damper_positions(air_loop_hvac, has_ddc = true)
|
|
1964
1982
|
air_loop_hvac.thermalZones.each do |zone|
|
|
1965
1983
|
zone.equipment.each do |equip|
|
|
@@ -1978,7 +1996,7 @@ class Standard
|
|
|
1978
1996
|
# system outdoor air flow
|
|
1979
1997
|
#
|
|
1980
1998
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
1981
|
-
# @return [
|
|
1999
|
+
# @return [Boolean] returns true if required, false if not
|
|
1982
2000
|
# @todo Add exception logic for systems serving parking garage, warehouse, or multifamily
|
|
1983
2001
|
def air_loop_hvac_adjust_minimum_vav_damper_positions(air_loop_hvac)
|
|
1984
2002
|
# Do not apply the adjustment to some of the system in
|
|
@@ -2027,7 +2045,13 @@ class Standard
|
|
|
2027
2045
|
num_zones_adj = 0
|
|
2028
2046
|
|
|
2029
2047
|
# Retrieve the sum of the zone minimum primary airflow
|
|
2030
|
-
|
|
2048
|
+
if air_loop_hvac.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
2049
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required AirLoopHVAC method .autosizedSumMinimumHeatingAirFlowRates is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
2050
|
+
elsif air_loop_hvac.autosizedSumMinimumHeatingAirFlowRates.is_initialized
|
|
2051
|
+
vpz_min_sum = air_loop_hvac.autosizedSumMinimumHeatingAirFlowRates.get
|
|
2052
|
+
else
|
|
2053
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', "autosizedSumMinimumHeatingAirFlowRates is not available for air loop #{air_loop_hvac}.")
|
|
2054
|
+
end
|
|
2031
2055
|
|
|
2032
2056
|
air_loop_hvac.thermalZones.sort.each do |zone|
|
|
2033
2057
|
# Breathing zone airflow rate
|
|
@@ -2043,6 +2067,12 @@ class Standard
|
|
|
2043
2067
|
# max of heating and cooling
|
|
2044
2068
|
# design air flow rates
|
|
2045
2069
|
v_pz = 0.0
|
|
2070
|
+
|
|
2071
|
+
# error if zone autosized methods are not available
|
|
2072
|
+
if air_loop_hvac.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
2073
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required ThermalZone method .autosizedCoolingDesignAirFlowRate and .autosizedHeatingDesignAirFlowRate are not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
2074
|
+
end
|
|
2075
|
+
|
|
2046
2076
|
clg_dsn_flow = zone.autosizedCoolingDesignAirFlowRate
|
|
2047
2077
|
if clg_dsn_flow.is_initialized
|
|
2048
2078
|
clg_dsn_flow = clg_dsn_flow.get
|
|
@@ -2174,7 +2204,17 @@ class Standard
|
|
|
2174
2204
|
# zone airflow are lower than the calculated system
|
|
2175
2205
|
# outdoor air intake
|
|
2176
2206
|
if v_ot_adj > vpz_min_sum && v_ot_adj > 0
|
|
2177
|
-
|
|
2207
|
+
|
|
2208
|
+
# Retrieve the sum of the zone maximum air flow rates
|
|
2209
|
+
if air_loop_hvac.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
2210
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', 'Required AirLoopHVAC method .autosizedSumAirTerminalMaxAirFlowRate is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
2211
|
+
elsif air_loop_hvac.autosizedSumAirTerminalMaxAirFlowRate.is_initialized
|
|
2212
|
+
v_max = air_loop_hvac.autosizedSumAirTerminalMaxAirFlowRate.get
|
|
2213
|
+
else
|
|
2214
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', "autosizedSumAirTerminalMaxAirFlowRate is not available for air loop #{air_loop_hvac}.")
|
|
2215
|
+
end
|
|
2216
|
+
|
|
2217
|
+
mdp_adj = [v_ot_adj / v_max, 1].min
|
|
2178
2218
|
air_loop_hvac.thermalZones.sort.each do |zone|
|
|
2179
2219
|
air_loop_hvac_set_minimum_damper_position(zone, mdp_adj)
|
|
2180
2220
|
end
|
|
@@ -2200,7 +2240,7 @@ class Standard
|
|
|
2200
2240
|
#
|
|
2201
2241
|
# @param zone [OpenStudio::Model::ThermalZone] thermal zone
|
|
2202
2242
|
# @param mdp [Double] minimum damper position
|
|
2203
|
-
# @return [
|
|
2243
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2204
2244
|
def air_loop_hvac_set_minimum_damper_position(zone, mdp)
|
|
2205
2245
|
zone.equipment.each do |equip|
|
|
2206
2246
|
if equip.to_AirTerminalSingleDuctVAVHeatAndCoolNoReheat.is_initialized
|
|
@@ -2229,7 +2269,7 @@ class Standard
|
|
|
2229
2269
|
# the results of the current climate zone
|
|
2230
2270
|
#
|
|
2231
2271
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2232
|
-
# @return [
|
|
2272
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2233
2273
|
def air_loop_hvac_adjust_minimum_vav_damper_positions_outpatient(air_loop_hvac)
|
|
2234
2274
|
air_loop_hvac.model.getSpaces.sort.each do |space|
|
|
2235
2275
|
zone = space.thermalZone.get
|
|
@@ -2267,7 +2307,7 @@ class Standard
|
|
|
2267
2307
|
#
|
|
2268
2308
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2269
2309
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
2270
|
-
# @return [
|
|
2310
|
+
# @return [Boolean] returns true if required, false if not
|
|
2271
2311
|
# @todo Add exception logic for systems that serve multifamily, parking garage, warehouse
|
|
2272
2312
|
def air_loop_hvac_demand_control_ventilation_required?(air_loop_hvac, climate_zone)
|
|
2273
2313
|
dcv_required = false
|
|
@@ -2362,7 +2402,7 @@ class Standard
|
|
|
2362
2402
|
# when an energy recovery device is present. Defaults to true.
|
|
2363
2403
|
#
|
|
2364
2404
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2365
|
-
# @return [
|
|
2405
|
+
# @return [Boolean] returns true if required, false if not
|
|
2366
2406
|
def air_loop_hvac_dcv_required_when_erv(air_loop_hvac)
|
|
2367
2407
|
dcv_required_when_erv_present = false
|
|
2368
2408
|
return dcv_required_when_erv_present
|
|
@@ -2374,7 +2414,7 @@ class Standard
|
|
|
2374
2414
|
#
|
|
2375
2415
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2376
2416
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
2377
|
-
# @return [
|
|
2417
|
+
# @return [Boolean] returns true if required, false if not
|
|
2378
2418
|
def air_loop_hvac_enable_demand_control_ventilation(air_loop_hvac, climate_zone)
|
|
2379
2419
|
# Get the OA intake
|
|
2380
2420
|
controller_oa = nil
|
|
@@ -2407,7 +2447,7 @@ class Standard
|
|
|
2407
2447
|
#
|
|
2408
2448
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2409
2449
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
2410
|
-
# @return [
|
|
2450
|
+
# @return [Boolean] returns true if required, false if not
|
|
2411
2451
|
def air_loop_hvac_supply_air_temperature_reset_required?(air_loop_hvac, climate_zone)
|
|
2412
2452
|
is_sat_reset_required = false
|
|
2413
2453
|
return is_sat_reset_required
|
|
@@ -2416,7 +2456,7 @@ class Standard
|
|
|
2416
2456
|
# Enable supply air temperature (SAT) reset based on the cooling demand of the warmest zone.
|
|
2417
2457
|
#
|
|
2418
2458
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2419
|
-
# @return [
|
|
2459
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2420
2460
|
def air_loop_hvac_enable_supply_air_temperature_reset_warmest_zone(air_loop_hvac)
|
|
2421
2461
|
# Get the current setpoint and calculate
|
|
2422
2462
|
# the new setpoint.
|
|
@@ -2463,7 +2503,7 @@ class Standard
|
|
|
2463
2503
|
# and reset linearly when outdoor air is between 50F and 70F.
|
|
2464
2504
|
#
|
|
2465
2505
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2466
|
-
# @return [
|
|
2506
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2467
2507
|
def air_loop_hvac_enable_supply_air_temperature_reset_outdoor_temperature(air_loop_hvac)
|
|
2468
2508
|
# for AHU1 in Outpatient, SAT is 52F constant, no reset
|
|
2469
2509
|
return true if air_loop_hvac.name.get == 'PVAV Outpatient F1'
|
|
@@ -2506,7 +2546,7 @@ class Standard
|
|
|
2506
2546
|
# Determine if the system has an economizer
|
|
2507
2547
|
#
|
|
2508
2548
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2509
|
-
# @return [
|
|
2549
|
+
# @return [Boolean] returns true if required, false if not
|
|
2510
2550
|
def air_loop_hvac_economizer?(air_loop_hvac)
|
|
2511
2551
|
# Get the OA system and OA controller
|
|
2512
2552
|
oa_sys = air_loop_hvac.airLoopHVACOutdoorAirSystem
|
|
@@ -2525,7 +2565,7 @@ class Standard
|
|
|
2525
2565
|
# Determine if the system is a VAV system based on the fan which may be inside of a unitary system.
|
|
2526
2566
|
#
|
|
2527
2567
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2528
|
-
# @return [
|
|
2568
|
+
# @return [Boolean] returns true if vav system, false if not
|
|
2529
2569
|
def air_loop_hvac_vav_system?(air_loop_hvac)
|
|
2530
2570
|
is_vav = false
|
|
2531
2571
|
air_loop_hvac.supplyComponents.reverse.each do |comp|
|
|
@@ -2552,7 +2592,7 @@ class Standard
|
|
|
2552
2592
|
# Determine if the system is a multizone VAV system
|
|
2553
2593
|
#
|
|
2554
2594
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2555
|
-
# @return [
|
|
2595
|
+
# @return [Boolean] returns true if multizone vav, false if not
|
|
2556
2596
|
def air_loop_hvac_multizone_vav_system?(air_loop_hvac)
|
|
2557
2597
|
multizone_vav_system = false
|
|
2558
2598
|
|
|
@@ -2576,7 +2616,7 @@ class Standard
|
|
|
2576
2616
|
# Determine if the system has terminal reheat
|
|
2577
2617
|
#
|
|
2578
2618
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2579
|
-
# @return [
|
|
2619
|
+
# @return [Boolean] returns true if has one or more reheat terminals, false if it doesn't
|
|
2580
2620
|
def air_loop_hvac_terminal_reheat?(air_loop_hvac)
|
|
2581
2621
|
has_term_rht = false
|
|
2582
2622
|
air_loop_hvac.demandComponents.each do |sc|
|
|
@@ -2596,7 +2636,7 @@ class Standard
|
|
|
2596
2636
|
# Determine if the system has energy recovery already
|
|
2597
2637
|
#
|
|
2598
2638
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2599
|
-
# @return [
|
|
2639
|
+
# @return [Boolean] returns true if an ERV is present, false if not
|
|
2600
2640
|
def air_loop_hvac_energy_recovery?(air_loop_hvac)
|
|
2601
2641
|
has_erv = false
|
|
2602
2642
|
|
|
@@ -2618,7 +2658,7 @@ class Standard
|
|
|
2618
2658
|
# Determine if the air loop is a unitary system
|
|
2619
2659
|
#
|
|
2620
2660
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2621
|
-
# @return [
|
|
2661
|
+
# @return [Boolean] returns true if a unitary system is present, false if not
|
|
2622
2662
|
def air_loop_hvac_unitary_system?(air_loop_hvac)
|
|
2623
2663
|
is_unitary_system = false
|
|
2624
2664
|
air_loop_hvac.supplyComponents.each do |component|
|
|
@@ -2634,7 +2674,7 @@ class Standard
|
|
|
2634
2674
|
# Set the VAV damper control to single maximum or dual maximum control depending on the standard.
|
|
2635
2675
|
#
|
|
2636
2676
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2637
|
-
# @return [
|
|
2677
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2638
2678
|
# @todo see if this impacts the sizing run.
|
|
2639
2679
|
def air_loop_hvac_apply_vav_damper_action(air_loop_hvac)
|
|
2640
2680
|
damper_action = air_loop_hvac_vav_damper_action(air_loop_hvac)
|
|
@@ -2664,11 +2704,11 @@ class Standard
|
|
|
2664
2704
|
if term.reheatCoil.to_CoilHeatingWater.is_initialized
|
|
2665
2705
|
term.setDamperHeatingAction(damper_action_eplus)
|
|
2666
2706
|
control_type_set = true
|
|
2707
|
+
term.setMaximumFlowFractionDuringReheat(0.5)
|
|
2667
2708
|
end
|
|
2668
2709
|
else
|
|
2669
2710
|
term.setDamperHeatingAction(damper_action_eplus)
|
|
2670
2711
|
control_type_set = true
|
|
2671
|
-
term.setMaximumFlowFractionDuringReheat(0.5)
|
|
2672
2712
|
end
|
|
2673
2713
|
end
|
|
2674
2714
|
end
|
|
@@ -2694,7 +2734,7 @@ class Standard
|
|
|
2694
2734
|
#
|
|
2695
2735
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2696
2736
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
2697
|
-
# @return [
|
|
2737
|
+
# @return [Boolean] returns true if required, false if not
|
|
2698
2738
|
def air_loop_hvac_motorized_oa_damper_required?(air_loop_hvac, climate_zone)
|
|
2699
2739
|
motorized_oa_damper_required = false
|
|
2700
2740
|
|
|
@@ -2789,7 +2829,7 @@ class Standard
|
|
|
2789
2829
|
# @param min_occ_pct [Double] the fractional value below which the system will be considered unoccupied.
|
|
2790
2830
|
# @param occ_sch [OpenStudio::Model::Schedule] the occupancy schedule.
|
|
2791
2831
|
# If not supplied, one will be created based on the supplied occupancy threshold.
|
|
2792
|
-
# @return [
|
|
2832
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2793
2833
|
def air_loop_hvac_add_motorized_oa_damper(air_loop_hvac, min_occ_pct = 0.05, occ_sch = nil)
|
|
2794
2834
|
# Get the OA system and OA controller
|
|
2795
2835
|
oa_sys = air_loop_hvac.airLoopHVACOutdoorAirSystem
|
|
@@ -2832,7 +2872,7 @@ class Standard
|
|
|
2832
2872
|
# increases building loads unnecessarily during unoccupied hours.
|
|
2833
2873
|
#
|
|
2834
2874
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2835
|
-
# @return [
|
|
2875
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2836
2876
|
def air_loop_hvac_remove_motorized_oa_damper(air_loop_hvac)
|
|
2837
2877
|
# Get the OA system and OA controller
|
|
2838
2878
|
oa_sys = air_loop_hvac.airLoopHVACOutdoorAirSystem
|
|
@@ -2870,7 +2910,7 @@ class Standard
|
|
|
2870
2910
|
#
|
|
2871
2911
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
2872
2912
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
2873
|
-
# @return [
|
|
2913
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2874
2914
|
def air_loop_hvac_apply_single_zone_controls(air_loop_hvac, climate_zone)
|
|
2875
2915
|
# These controls only apply to systems with DX cooling
|
|
2876
2916
|
unless air_loop_hvac_dx_cooling?(air_loop_hvac)
|
|
@@ -3242,8 +3282,8 @@ class Standard
|
|
|
3242
3282
|
# be added to the OpenStudio data model.
|
|
3243
3283
|
#
|
|
3244
3284
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
3245
|
-
# @param has_ddc [
|
|
3246
|
-
# return [
|
|
3285
|
+
# @param has_ddc [Boolean] whether or not the system has DDC control over VAV terminals.
|
|
3286
|
+
# return [Boolean] returns true if static pressure reset is required, false if not
|
|
3247
3287
|
def air_loop_hvac_static_pressure_reset_required?(air_loop_hvac, has_ddc)
|
|
3248
3288
|
sp_reset_required = false
|
|
3249
3289
|
|
|
@@ -3261,7 +3301,7 @@ class Standard
|
|
|
3261
3301
|
# Per ASHRAE 90.1 section 6.4.3.3, HVAC systems are required to have off-hour controls
|
|
3262
3302
|
#
|
|
3263
3303
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
3264
|
-
# @return [
|
|
3304
|
+
# @return [Boolean] returns true if required, false if not
|
|
3265
3305
|
def air_loop_hvac_unoccupied_fan_shutoff_required?(air_loop_hvac)
|
|
3266
3306
|
shutoff_required = true
|
|
3267
3307
|
|
|
@@ -3305,7 +3345,7 @@ class Standard
|
|
|
3305
3345
|
#
|
|
3306
3346
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
3307
3347
|
# @param min_occ_pct [Double] the fractional value below which the system will be considered unoccupied.
|
|
3308
|
-
# @return [
|
|
3348
|
+
# @return [Boolean] returns true if successful, false if not
|
|
3309
3349
|
def air_loop_hvac_enable_unoccupied_fan_shutoff(air_loop_hvac, min_occ_pct = 0.05)
|
|
3310
3350
|
# Set the system to night cycle
|
|
3311
3351
|
# The fan of a parallel PIU terminal are set to only cycle during heating operation
|
|
@@ -3510,7 +3550,7 @@ class Standard
|
|
|
3510
3550
|
#
|
|
3511
3551
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
3512
3552
|
# @param max_reheat_c [Double] the maximum reheat temperature, in degrees Celsius
|
|
3513
|
-
# @return [
|
|
3553
|
+
# @return [Boolean] returns true if successful, false if not
|
|
3514
3554
|
def air_loop_hvac_apply_maximum_reheat_temperature(air_loop_hvac, max_reheat_c)
|
|
3515
3555
|
air_loop_hvac.demandComponents.each do |sc|
|
|
3516
3556
|
if sc.to_AirTerminalSingleDuctConstantVolumeReheat.is_initialized
|
|
@@ -3538,7 +3578,7 @@ class Standard
|
|
|
3538
3578
|
# Set the system sizing properties based on the zone sizing information
|
|
3539
3579
|
#
|
|
3540
3580
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
3541
|
-
# @return [
|
|
3581
|
+
# @return [Boolean] returns true if successful, false if not
|
|
3542
3582
|
def air_loop_hvac_apply_prm_sizing_temperatures(air_loop_hvac)
|
|
3543
3583
|
# Get the design heating and cooling SAT information
|
|
3544
3584
|
# for all zones served by the system.
|
|
@@ -3610,7 +3650,7 @@ class Standard
|
|
|
3610
3650
|
# Determine if this Air Loop uses DX cooling.
|
|
3611
3651
|
#
|
|
3612
3652
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
3613
|
-
# @return [
|
|
3653
|
+
# @return [Boolean] returns true if uses DX cooling, false if not
|
|
3614
3654
|
def air_loop_hvac_dx_cooling?(air_loop_hvac)
|
|
3615
3655
|
dx_clg = false
|
|
3616
3656
|
|
|
@@ -3658,7 +3698,7 @@ class Standard
|
|
|
3658
3698
|
# Determine if this Air Loop uses multi-stage DX cooling.
|
|
3659
3699
|
#
|
|
3660
3700
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
3661
|
-
# @return [
|
|
3701
|
+
# @return [Boolean] returns true if uses multi-stage DX cooling, false if not
|
|
3662
3702
|
def air_loop_hvac_multi_stage_dx_cooling?(air_loop_hvac)
|
|
3663
3703
|
dx_clg = false
|
|
3664
3704
|
|
|
@@ -3701,8 +3741,8 @@ class Standard
|
|
|
3701
3741
|
|
|
3702
3742
|
# Get return fan power for airloop
|
|
3703
3743
|
#
|
|
3704
|
-
# @param
|
|
3705
|
-
# @return [
|
|
3744
|
+
# @param air_loop [OpenStudio::Model::AirLoopHVAC] AirLoopHVAC object
|
|
3745
|
+
# @return [Double] Fan power
|
|
3706
3746
|
def air_loop_hvac_get_return_fan_power(air_loop)
|
|
3707
3747
|
return_fan_power = 0
|
|
3708
3748
|
|
|
@@ -3728,8 +3768,8 @@ class Standard
|
|
|
3728
3768
|
|
|
3729
3769
|
# Get supply fan power for airloop
|
|
3730
3770
|
#
|
|
3731
|
-
# @param
|
|
3732
|
-
# @return [
|
|
3771
|
+
# @param air_loop [OpenStudio::Model::AirLoopHVAC] AirLoopHVAC object
|
|
3772
|
+
# @return [Double] Fan power
|
|
3733
3773
|
def air_loop_hvac_get_supply_fan_power(air_loop)
|
|
3734
3774
|
supply_fan_power = 0
|
|
3735
3775
|
|
|
@@ -3746,7 +3786,7 @@ class Standard
|
|
|
3746
3786
|
|
|
3747
3787
|
# Get supply fan for airloop
|
|
3748
3788
|
#
|
|
3749
|
-
# @param
|
|
3789
|
+
# @param air_loop [OpenStudio::Model::AirLoopHVAC] AirLoopHVAC object
|
|
3750
3790
|
# @return fan
|
|
3751
3791
|
def air_loop_hvac_get_supply_fan(air_loop)
|
|
3752
3792
|
fan = nil
|
|
@@ -3786,8 +3826,8 @@ class Standard
|
|
|
3786
3826
|
|
|
3787
3827
|
# Get relief fan power for airloop
|
|
3788
3828
|
#
|
|
3789
|
-
# @param
|
|
3790
|
-
# @return [
|
|
3829
|
+
# @param air_loop [OpenStudio::Model::AirLoopHVAC] AirLoopHVAC object
|
|
3830
|
+
# @return [Double] Fan power
|
|
3791
3831
|
def air_loop_hvac_get_relief_fan_power(air_loop)
|
|
3792
3832
|
relief_fan_power = 0
|
|
3793
3833
|
|
|
@@ -3817,8 +3857,8 @@ class Standard
|
|
|
3817
3857
|
# by scheduling air terminal dampers (so load can
|
|
3818
3858
|
# still be met) and cycling unitary system fans
|
|
3819
3859
|
#
|
|
3820
|
-
# @param air_loop_hvac [OpenStudio::
|
|
3821
|
-
# @param
|
|
3860
|
+
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] OpenStudio AirLoopHVAC object
|
|
3861
|
+
# @param standby_mode_spaces [Array<OpenStudio::Model::Space>] List of all spaces required to have standby mode controls
|
|
3822
3862
|
# @return [Boolean] true if sucessful, false otherwise
|
|
3823
3863
|
def air_loop_hvac_standby_mode_occupancy_control(air_loop_hvac, standby_mode_spaces)
|
|
3824
3864
|
return true
|
|
@@ -3830,7 +3870,6 @@ class Standard
|
|
|
3830
3870
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] HVAC air loop object
|
|
3831
3871
|
# @param oa_control [OpenStudio::Model::ControllerOutdoorAir] Outdoor air controller object to have this maximum OA fraction schedule
|
|
3832
3872
|
# @param snc [String] System name
|
|
3833
|
-
#
|
|
3834
3873
|
# @return [OpenStudio::Model::ScheduleRuleset] Generated maximum outdoor air fraction schedule for later use
|
|
3835
3874
|
def set_maximum_fraction_outdoor_air_schedule(air_loop_hvac, oa_control, snc)
|
|
3836
3875
|
max_oa_sch_name = "#{snc}maxOASch"
|
|
@@ -3839,7 +3878,7 @@ class Standard
|
|
|
3839
3878
|
max_oa_sch.defaultDaySchedule.setName("#{max_oa_sch_name}Default")
|
|
3840
3879
|
max_oa_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0.7)
|
|
3841
3880
|
oa_control.setMaximumFractionofOutdoorAirSchedule(max_oa_sch)
|
|
3842
|
-
max_oa_sch
|
|
3881
|
+
return max_oa_sch
|
|
3843
3882
|
end
|
|
3844
3883
|
|
|
3845
3884
|
# Checks if zones served by the air loop use zone exhaust fan
|