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
|
@@ -10,7 +10,7 @@ class ASHRAE901PRM < Standard
|
|
|
10
10
|
#
|
|
11
11
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
12
12
|
# @param min_occ_pct [Double] the fractional value below which the system will be considered unoccupied.
|
|
13
|
-
# @return [
|
|
13
|
+
# @return [Boolean] returns true if successful, false if not
|
|
14
14
|
def air_loop_hvac_enable_unoccupied_fan_shutoff(air_loop_hvac, min_occ_pct = 0.05)
|
|
15
15
|
if air_loop_hvac.additionalProperties.hasFeature('zone_group_type')
|
|
16
16
|
zone_group_type = air_loop_hvac.additionalProperties.getFeatureAsString('zone_group_type').get
|
|
@@ -92,25 +92,14 @@ class ASHRAE901PRM < Standard
|
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
# Determine if the system is a multizone VAV system
|
|
95
|
-
#
|
|
96
|
-
# @return [
|
|
95
|
+
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
96
|
+
# @return [Boolean] Returns true if required, false if not.
|
|
97
97
|
def air_loop_hvac_multizone_vav_system?(air_loop_hvac)
|
|
98
98
|
return true if air_loop_hvac.name.to_s.include?('Sys5') || air_loop_hvac.name.to_s.include?('Sys6') || air_loop_hvac.name.to_s.include?('Sys7') || air_loop_hvac.name.to_s.include?('Sys8')
|
|
99
99
|
|
|
100
100
|
return false
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
-
# Determine if multizone vav optimization is required.
|
|
104
|
-
# Not required for stable baseline.
|
|
105
|
-
#
|
|
106
|
-
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
107
|
-
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
108
|
-
# @return [Bool] returns true if required, false if not
|
|
109
|
-
def air_loop_hvac_multizone_vav_optimization_required?(air_loop_hvac, climate_zone)
|
|
110
|
-
multizone_opt_required = false
|
|
111
|
-
return multizone_opt_required
|
|
112
|
-
end
|
|
113
|
-
|
|
114
103
|
# Determine whether the VAV damper control is single maximum or dual maximum control.
|
|
115
104
|
# Defaults to Single Maximum for stable baseline.
|
|
116
105
|
#
|
|
@@ -132,7 +121,7 @@ class ASHRAE901PRM < Standard
|
|
|
132
121
|
#
|
|
133
122
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
134
123
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
135
|
-
# @return [
|
|
124
|
+
# @return [Boolean] returns true if required, false if not
|
|
136
125
|
def air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
|
|
137
126
|
return true
|
|
138
127
|
end
|
|
@@ -165,7 +154,7 @@ class ASHRAE901PRM < Standard
|
|
|
165
154
|
#
|
|
166
155
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
167
156
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
168
|
-
# @return [
|
|
157
|
+
# @return [Boolean] returns true if required, false if not
|
|
169
158
|
def air_loop_hvac_prm_baseline_economizer_required?(air_loop_hvac, climate_zone)
|
|
170
159
|
economizer_required = false
|
|
171
160
|
baseline_system_type = air_loop_hvac.additionalProperties.getFeatureAsString('baseline_system_type').get
|
|
@@ -204,7 +193,7 @@ class ASHRAE901PRM < Standard
|
|
|
204
193
|
end
|
|
205
194
|
|
|
206
195
|
# Set fan curve for stable baseline to be VSD with fixed static pressure setpoint
|
|
207
|
-
# @return [
|
|
196
|
+
# @return [String name of appropriate curve for this code version
|
|
208
197
|
def air_loop_hvac_set_vsd_curve_type
|
|
209
198
|
return 'Multi Zone VAV with VSD and Fixed SP Setpoint'
|
|
210
199
|
end
|
|
@@ -213,7 +202,7 @@ class ASHRAE901PRM < Standard
|
|
|
213
202
|
# PRM does not require optimum start - override it to false.
|
|
214
203
|
#
|
|
215
204
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
216
|
-
# @return [
|
|
205
|
+
# @return [Boolean] returns true if required, false if not
|
|
217
206
|
def air_loop_hvac_optimum_start_required?(air_loop_hvac)
|
|
218
207
|
return false
|
|
219
208
|
end
|
|
@@ -229,7 +218,7 @@ class ASHRAE901PRM < Standard
|
|
|
229
218
|
# Also adjusts the fan power and flow rates
|
|
230
219
|
# of any parallel PIU terminals on the system.
|
|
231
220
|
#
|
|
232
|
-
# return [
|
|
221
|
+
# return [Boolean] true if successful, false if not.
|
|
233
222
|
def air_loop_hvac_apply_prm_baseline_fan_power(air_loop_hvac)
|
|
234
223
|
# Get system type associated with air loop
|
|
235
224
|
system_type = air_loop_hvac.additionalProperties.getFeatureAsString('baseline_system_type').get
|
|
@@ -263,7 +252,12 @@ class ASHRAE901PRM < Standard
|
|
|
263
252
|
# individual zone air flow
|
|
264
253
|
air_loop_total_zone_design_airflow = 0
|
|
265
254
|
air_loop_hvac.thermalZones.sort.each do |zone|
|
|
266
|
-
|
|
255
|
+
# error if zone design air flow rate is not available
|
|
256
|
+
if zone.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
257
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.ashrae_90_1_prm.AirLoopHVAC', 'Required ThermalZone method .autosizedDesignAirFlowRate is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
zone_air_flow = zone.autosizedDesignAirFlowRate.to_f
|
|
267
261
|
air_loop_total_zone_design_airflow += zone_air_flow
|
|
268
262
|
# Fractions variables are actually power at that point
|
|
269
263
|
supply_fan_power_fraction += zone_air_flow * zone.additionalProperties.getFeatureAsDouble('supply_fan_w').get
|
|
@@ -415,6 +409,7 @@ class ASHRAE901PRM < Standard
|
|
|
415
409
|
# Determine the allowable fan system brake horsepower
|
|
416
410
|
# Per Section G3.1.2.9
|
|
417
411
|
#
|
|
412
|
+
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC]
|
|
418
413
|
# @return [Double] allowable fan system brake horsepower
|
|
419
414
|
# units = horsepower
|
|
420
415
|
def air_loop_hvac_allowable_system_brake_horsepower(air_loop_hvac)
|
|
@@ -554,7 +549,7 @@ class ASHRAE901PRM < Standard
|
|
|
554
549
|
# Get the air loop HVAC design outdoor air flow rate by reading Standard 62.1 Summary from the sizing sql
|
|
555
550
|
# @author Xuechen (Jerry) Lei, PNNL
|
|
556
551
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
557
|
-
# @return [
|
|
552
|
+
# @return [Double] Design outdoor air flow rate (m^3/s)
|
|
558
553
|
def get_airloop_hvac_design_oa_from_sql(air_loop_hvac)
|
|
559
554
|
return false unless air_loop_hvac.airLoopHVACOutdoorAirSystem.is_initialized
|
|
560
555
|
|
|
@@ -570,9 +565,9 @@ class ASHRAE901PRM < Standard
|
|
|
570
565
|
# Set the minimum VAV damper positions.
|
|
571
566
|
#
|
|
572
567
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
|
573
|
-
# @param has_ddc [
|
|
568
|
+
# @param has_ddc [Boolean] if true, will assume that there is DDC control of vav terminals.
|
|
574
569
|
# If false, assumes otherwise.
|
|
575
|
-
# @return [
|
|
570
|
+
# @return [Boolean] returns true if successful, false if not
|
|
576
571
|
def air_loop_hvac_apply_minimum_vav_damper_positions(air_loop_hvac, has_ddc = true)
|
|
577
572
|
air_loop_hvac.thermalZones.each do |zone|
|
|
578
573
|
zone.equipment.each do |equip|
|
|
@@ -756,28 +751,27 @@ class ASHRAE901PRM < Standard
|
|
|
756
751
|
|
|
757
752
|
# Exception 2 - System exhausting toxic fumes
|
|
758
753
|
if thermal_zone.additionalProperties.hasFeature('exhaust_energy_recovery_exception_for_toxic_fumes_etc')
|
|
759
|
-
if thermal_zone.additionalProperties.
|
|
760
|
-
return nil
|
|
754
|
+
if thermal_zone.additionalProperties.getFeatureAsBoolean('exhaust_energy_recovery_exception_for_toxic_fumes_etc')
|
|
761
755
|
end
|
|
762
756
|
end
|
|
763
757
|
|
|
764
758
|
# Exception 3 - Commercial kitchen hoods
|
|
765
759
|
if thermal_zone.additionalProperties.hasFeature('exhaust_energy_recovery_exception_for_type1_kitchen_hoods')
|
|
766
|
-
if thermal_zone.additionalProperties.
|
|
760
|
+
if thermal_zone.additionalProperties.getFeatureAsBoolean('exhaust_energy_recovery_exception_for_type1_kitchen_hoods')
|
|
767
761
|
return nil
|
|
768
762
|
end
|
|
769
763
|
end
|
|
770
764
|
|
|
771
765
|
# Exception 6 - Distributed exhaust
|
|
772
766
|
if thermal_zone.additionalProperties.hasFeature('exhaust_energy_recovery_exception_for_type_distributed_exhaust')
|
|
773
|
-
if thermal_zone.additionalProperties.
|
|
767
|
+
if thermal_zone.additionalProperties.getFeatureAsBoolean('exhaust_energy_recovery_exception_for_type_distributed_exhaust')
|
|
774
768
|
return nil
|
|
775
769
|
end
|
|
776
770
|
end
|
|
777
771
|
|
|
778
772
|
# Exception 7 - Dehumidification
|
|
779
773
|
if thermal_zone.additionalProperties.hasFeature('exhaust_energy_recovery_exception_for_dehumidifcation_with_series_cooling_recovery')
|
|
780
|
-
if thermal_zone.additionalProperties.
|
|
774
|
+
if thermal_zone.additionalProperties.getFeatureAsBoolean('exhaust_energy_recovery_exception_for_dehumidifcation_with_series_cooling_recovery')
|
|
781
775
|
return nil
|
|
782
776
|
end
|
|
783
777
|
end
|
|
@@ -3,7 +3,7 @@ class ASHRAE901PRM < Standard
|
|
|
3
3
|
|
|
4
4
|
# Return the fan on flow fraction for a parallel PIU terminal
|
|
5
5
|
#
|
|
6
|
-
# @return [
|
|
6
|
+
# @return [Double] returns nil or a float representing the fraction
|
|
7
7
|
def air_terminal_single_duct_parallel_piu_reheat_fan_on_flow_fraction
|
|
8
8
|
return 0.0 # will make the secondary fans run for heating loads
|
|
9
9
|
end
|
|
@@ -9,9 +9,9 @@ class ASHRAE901PRM < Standard
|
|
|
9
9
|
# @param zone_min_oa [Double] the zone outdoor air flow rate, in m^3/s.
|
|
10
10
|
# If supplied, this will be set as a minimum limit in addition to the minimum
|
|
11
11
|
# damper position. EnergyPlus will use the larger of the two values during sizing.
|
|
12
|
-
# @param has_ddc [
|
|
12
|
+
# @param has_ddc [Boolean] whether or not there is DDC control of the VAV terminal,
|
|
13
13
|
# which impacts the minimum damper position requirement.
|
|
14
|
-
# @return [
|
|
14
|
+
# @return [Boolean] returns true if successful, false if not
|
|
15
15
|
# @todo remove exception where older vintages don't have minimum positions adjusted.
|
|
16
16
|
def air_terminal_single_duct_vav_reheat_apply_minimum_damper_position(air_terminal_single_duct_vav_reheat, zone_min_oa = nil, has_ddc = true)
|
|
17
17
|
# Minimum damper position
|
|
@@ -1,83 +1,10 @@
|
|
|
1
1
|
class ASHRAE901PRM < Standard
|
|
2
2
|
# @!group BoilerHotWater
|
|
3
3
|
|
|
4
|
-
# find search criteria
|
|
5
|
-
#
|
|
6
|
-
# @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
|
|
7
|
-
# @return [Hash] used for standards_lookup_table(model)
|
|
8
|
-
def boiler_hot_water_find_search_criteria(boiler_hot_water)
|
|
9
|
-
# Define the criteria to find the boiler properties
|
|
10
|
-
# in the hvac standards data set.
|
|
11
|
-
search_criteria = {}
|
|
12
|
-
search_criteria['template'] = template
|
|
13
|
-
|
|
14
|
-
# Get fuel type
|
|
15
|
-
search_criteria['fuel_type'] = 'Gas'
|
|
16
|
-
|
|
17
|
-
# Get the fluid type
|
|
18
|
-
search_criteria['fluid_type'] = 'Hot Water'
|
|
19
|
-
|
|
20
|
-
return search_criteria
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Finds lookup object in standards and return minimum thermal efficiency
|
|
24
|
-
#
|
|
25
|
-
# @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
|
|
26
|
-
# @param rename [Bool] returns true if successful, false if not
|
|
27
|
-
# @return [Double] minimum thermal efficiency
|
|
28
|
-
def boiler_hot_water_standard_minimum_thermal_efficiency(boiler_hot_water, rename = false)
|
|
29
|
-
# Get the boiler properties
|
|
30
|
-
search_criteria = boiler_hot_water_find_search_criteria(boiler_hot_water)
|
|
31
|
-
capacity_w = boiler_hot_water_find_capacity(boiler_hot_water)
|
|
32
|
-
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
33
|
-
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
34
|
-
|
|
35
|
-
# Get the minimum efficiency standards
|
|
36
|
-
thermal_eff = nil
|
|
37
|
-
|
|
38
|
-
# Get the boiler properties
|
|
39
|
-
blr_props = model_find_object(standards_data['boilers'], search_criteria, capacity_btu_per_hr)
|
|
40
|
-
unless blr_props
|
|
41
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{boiler_hot_water.name}, cannot find boiler properties, cannot apply efficiency standard.")
|
|
42
|
-
successfully_set_all_properties = false
|
|
43
|
-
return successfully_set_all_properties
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# If specified as AFUE
|
|
47
|
-
unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil?
|
|
48
|
-
min_afue = blr_props['minimum_annual_fuel_utilization_efficiency']
|
|
49
|
-
thermal_eff = afue_to_thermal_eff(min_afue)
|
|
50
|
-
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
|
|
51
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: Gas Hot Water Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# If specified as thermal efficiency
|
|
55
|
-
unless blr_props['minimum_thermal_efficiency'].nil?
|
|
56
|
-
thermal_eff = blr_props['minimum_thermal_efficiency']
|
|
57
|
-
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{thermal_eff} Thermal Eff"
|
|
58
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: Gas Hot Water Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Thermal Efficiency = #{thermal_eff}")
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# If specified as combustion efficiency
|
|
62
|
-
unless blr_props['minimum_combustion_efficiency'].nil?
|
|
63
|
-
min_comb_eff = blr_props['minimum_combustion_efficiency']
|
|
64
|
-
thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
|
|
65
|
-
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
|
|
66
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: Gas Hot Water Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# Rename
|
|
70
|
-
if rename
|
|
71
|
-
boiler_hot_water.setName(new_comp_name)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
return thermal_eff
|
|
75
|
-
end
|
|
76
|
-
|
|
77
4
|
# Applies the standard efficiency ratings to this object.
|
|
78
5
|
#
|
|
79
6
|
# @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
|
|
80
|
-
# @return [
|
|
7
|
+
# @return [Boolean] returns true if successful, false if not
|
|
81
8
|
def boiler_hot_water_apply_efficiency_and_curves(boiler_hot_water)
|
|
82
9
|
# Get the minimum efficiency standards
|
|
83
10
|
thermal_eff = boiler_hot_water_standard_minimum_thermal_efficiency(boiler_hot_water)
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb
CHANGED
|
@@ -1,72 +1,20 @@
|
|
|
1
1
|
class ASHRAE901PRM < Standard
|
|
2
2
|
# @!group ChillerElectricEIR
|
|
3
3
|
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# @param chiller_electric_eir [OpenStudio::Model::ChillerElectricEIR] chiller object
|
|
7
|
-
# @return [hash] has for search criteria to be used for find object
|
|
8
|
-
def chiller_electric_eir_find_search_criteria(chiller_electric_eir)
|
|
9
|
-
search_criteria = {}
|
|
10
|
-
search_criteria['template'] = template
|
|
11
|
-
|
|
12
|
-
# In AppG prm models, all scenarios are WaterCooled for cooling type.
|
|
13
|
-
cooling_type = 'WaterCooled'
|
|
14
|
-
|
|
15
|
-
search_criteria['cooling_type'] = cooling_type
|
|
16
|
-
|
|
17
|
-
# TODO: Standards replace this with a mechanism to store this
|
|
18
|
-
# data in the chiller object itself.
|
|
19
|
-
# For now, retrieve the condenser type from the name
|
|
20
|
-
name = chiller_electric_eir.name.get
|
|
21
|
-
condenser_type = nil
|
|
22
|
-
compressor_type = nil
|
|
23
|
-
if chiller_electric_eir.additionalProperties.hasFeature('compressor_type')
|
|
24
|
-
compressor_type = chiller_electric_eir.additionalProperties.getFeatureAsString('compressor_type').get
|
|
25
|
-
end
|
|
26
|
-
unless condenser_type.nil?
|
|
27
|
-
search_criteria['condenser_type'] = condenser_type
|
|
28
|
-
end
|
|
29
|
-
unless compressor_type.nil?
|
|
30
|
-
search_criteria['compressor_type'] = compressor_type
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
return search_criteria
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Finds lookup object in standards and return full load efficiency
|
|
4
|
+
# Applies the standard efficiency ratings to this object.
|
|
37
5
|
#
|
|
38
6
|
# @param chiller_electric_eir [OpenStudio::Model::ChillerElectricEIR] chiller object
|
|
39
|
-
# @return [
|
|
40
|
-
def
|
|
41
|
-
# Get the chiller
|
|
42
|
-
search_criteria = chiller_electric_eir_find_search_criteria(chiller_electric_eir)
|
|
7
|
+
# @return [Boolean] returns true if successful, false if not
|
|
8
|
+
def chiller_electric_eir_apply_efficiency_and_curves(chiller_electric_eir)
|
|
9
|
+
# Get the chiller capacity
|
|
43
10
|
capacity_w = chiller_electric_eir_find_capacity(chiller_electric_eir)
|
|
44
|
-
unless capacity_w
|
|
45
|
-
return nil
|
|
46
|
-
end
|
|
47
11
|
|
|
12
|
+
# Convert capacity to tons
|
|
48
13
|
capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
|
|
49
|
-
chlr_props = model_find_object(standards_data['chillers'], search_criteria, capacity_tons, Date.today)
|
|
50
|
-
|
|
51
|
-
if chlr_props.nil? || !chlr_props['minimum_full_load_efficiency']
|
|
52
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find minimum full load efficiency.")
|
|
53
|
-
return nil
|
|
54
|
-
else
|
|
55
|
-
# lookup the efficiency value
|
|
56
|
-
kw_per_ton = chlr_props['minimum_full_load_efficiency']
|
|
57
|
-
cop = kw_per_ton_to_cop(kw_per_ton)
|
|
58
|
-
end
|
|
59
14
|
|
|
60
|
-
return cop, capacity_tons, kw_per_ton
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Applies the standard efficiency ratings to this object.
|
|
64
|
-
#
|
|
65
|
-
# @param chiller_electric_eir [OpenStudio::Model::ChillerElectricEIR] chiller object
|
|
66
|
-
# @return [Bool] true if successful, false if not
|
|
67
|
-
def chiller_electric_eir_apply_efficiency_and_curves(chiller_electric_eir)
|
|
68
15
|
# Set the efficiency value
|
|
69
|
-
cop
|
|
16
|
+
cop = chiller_electric_eir_standard_minimum_full_load_efficiency(chiller_electric_eir)
|
|
17
|
+
kw_per_ton = cop_to_kw_per_ton(cop)
|
|
70
18
|
if cop.nil?
|
|
71
19
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find minimum full load efficiency, will not be set.")
|
|
72
20
|
successfully_set_all_properties = false
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb
CHANGED
|
@@ -82,7 +82,7 @@ class ASHRAE901PRM < Standard
|
|
|
82
82
|
#
|
|
83
83
|
# @param coil_cooling_dx_single_speed [OpenStudio::Model::CoilCoolingDXSingleSpeed] coil cooling dx single speed object
|
|
84
84
|
# @param sys_type [String] HVAC system type
|
|
85
|
-
# @param rename [
|
|
85
|
+
# @param rename [Boolean] if true, object will be renamed to include capacity and efficiency level
|
|
86
86
|
# @return [Double] full load efficiency (COP)
|
|
87
87
|
def coil_cooling_dx_single_speed_standard_minimum_cop(coil_cooling_dx_single_speed, sys_type, rename = false)
|
|
88
88
|
# find properties
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb
CHANGED
|
@@ -43,7 +43,7 @@ class ASHRAE901PRM < Standard
|
|
|
43
43
|
#
|
|
44
44
|
# @param coil_cooling_dx_two_speed [OpenStudio::Model::CoilCoolingDXTwoSpeed] coil cooling dx two speed object
|
|
45
45
|
# @param sys_type [String] HVAC system type
|
|
46
|
-
# @param rename [
|
|
46
|
+
# @param rename [Boolean] if true, object will be renamed to include capacity and efficiency level
|
|
47
47
|
# @return [Double] full load efficiency (COP)
|
|
48
48
|
def coil_cooling_dx_two_speed_standard_minimum_cop(coil_cooling_dx_two_speed, sys_type, rename = false)
|
|
49
49
|
# find properties
|
|
@@ -49,7 +49,7 @@ module ASHRAEPRMCoilDX
|
|
|
49
49
|
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object
|
|
50
50
|
# @param capacity [Double] capacity in btu/hr
|
|
51
51
|
# @param sys_type [String] HVAC system type
|
|
52
|
-
# @return [
|
|
52
|
+
# @return [Hash] has for search criteria to be used for find object
|
|
53
53
|
def coil_dx_find_search_criteria(coil_dx, capacity, sys_type)
|
|
54
54
|
search_criteria = {}
|
|
55
55
|
search_criteria['template'] = template
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb
CHANGED
|
@@ -137,7 +137,7 @@ class ASHRAE901PRM < Standard
|
|
|
137
137
|
#
|
|
138
138
|
# @param coil_heating_dx_single_speed [OpenStudio::Model::CoilHeatingDXSingleSpeed] coil heating dx single speed object
|
|
139
139
|
# @param sys_type [String] HVAC system type
|
|
140
|
-
# @param rename [
|
|
140
|
+
# @param rename [Boolean] if true, object will be renamed to include capacity and efficiency level
|
|
141
141
|
# @return [Double] full load efficiency (COP)
|
|
142
142
|
def coil_heating_dx_single_speed_standard_minimum_cop(coil_heating_dx_single_speed, sys_type, rename = false)
|
|
143
143
|
# find ac properties
|
|
@@ -23,31 +23,11 @@ class ASHRAE901PRM < Standard
|
|
|
23
23
|
return search_criteria
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
# find furnace capacity
|
|
27
|
-
#
|
|
28
|
-
# @param coil_heating_gas [OpenStudio::Model::CoilHeatingGas] coil heating gas object
|
|
29
|
-
# @return [Double] capacity in W to be used for find object
|
|
30
|
-
def coil_heating_gas_find_capacity(coil_heating_gas)
|
|
31
|
-
# Get the coil capacity
|
|
32
|
-
capacity_w = nil
|
|
33
|
-
if coil_heating_gas.nominalCapacity.is_initialized
|
|
34
|
-
capacity_w = coil_heating_gas.nominalCapacity.get
|
|
35
|
-
elsif coil_heating_gas.autosizedNominalCapacity.is_initialized
|
|
36
|
-
capacity_w = coil_heating_gas.autosizedNominalCapacity.get
|
|
37
|
-
else
|
|
38
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingGas', "For #{coil_heating_gas.name} capacity is not available, cannot apply efficiency standard.")
|
|
39
|
-
successfully_set_all_properties = false
|
|
40
|
-
return successfully_set_all_properties
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
return capacity_w
|
|
44
|
-
end
|
|
45
|
-
|
|
46
26
|
# Finds lookup object in standards and return minimum thermal efficiency
|
|
47
27
|
#
|
|
48
28
|
# @param coil_heating_gas [OpenStudio::Model::CoilHeatingGas] coil heating gas object
|
|
49
29
|
# @param sys_type [String] HVAC system type
|
|
50
|
-
# @param rename [
|
|
30
|
+
# @param rename [Boolean] if true, object will be renamed to include capacity and efficiency level
|
|
51
31
|
# @return [Double] minimum thermal efficiency
|
|
52
32
|
def coil_heating_gas_standard_minimum_thermal_efficiency(coil_heating_gas, sys_type, rename = false)
|
|
53
33
|
# Get the coil properties
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
class ASHRAE901PRM2019 < ASHRAE901PRM
|
|
2
|
+
# @!group DesignSpecification:OutdoorAir
|
|
3
|
+
# Sets the rules on outdoor air specifications on spaces / spaceType
|
|
4
|
+
|
|
5
|
+
# Function applies user specified OA to the model
|
|
6
|
+
# @param model [OpenStudio::Model::Model] model object
|
|
7
|
+
# @return [Boolean] returns true if successful, false if not
|
|
8
|
+
def model_apply_userdata_outdoor_air(model)
|
|
9
|
+
# Step 1: Create a hash that maps design_spec_oa to a list of spaces
|
|
10
|
+
# Also create a map that maps each design_spec_oa name to design_spec_oa.
|
|
11
|
+
oa_spec_to_spaces = {}
|
|
12
|
+
oa_spec_hash = {}
|
|
13
|
+
model.getSpaces.each do |space|
|
|
14
|
+
oa_spec = space.designSpecificationOutdoorAir
|
|
15
|
+
if oa_spec.is_initialized
|
|
16
|
+
oa_spec = oa_spec.get
|
|
17
|
+
oa_spec_name = oa_spec.name.get
|
|
18
|
+
unless oa_spec_to_spaces.key?(oa_spec_name)
|
|
19
|
+
# init oa_spec_name associate zone name list.
|
|
20
|
+
oa_spec_to_spaces[oa_spec_name] = []
|
|
21
|
+
end
|
|
22
|
+
unless oa_spec_hash.key?(oa_spec_name)
|
|
23
|
+
# init the map of oa_spec_name to oa_spec object
|
|
24
|
+
oa_spec_hash[oa_spec_name] = oa_spec
|
|
25
|
+
end
|
|
26
|
+
oa_spec_to_spaces[oa_spec_name].push(space)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Step 2: Loop the hash (oa_spec_name -> space_lists)
|
|
31
|
+
oa_spec_to_spaces.each do |oa_spec_name, space_list|
|
|
32
|
+
design_spec_oa = oa_spec_hash[oa_spec_name]
|
|
33
|
+
if design_spec_oa.additionalProperties.hasFeature('has_user_data')
|
|
34
|
+
outdoor_air_method = design_spec_oa.outdoorAirMethod
|
|
35
|
+
|
|
36
|
+
outdoor_airflow_per_person = get_additional_property_as_double(design_spec_oa, 'outdoor_airflow_per_person')
|
|
37
|
+
outdoor_airflow_per_floor_area = get_additional_property_as_double(design_spec_oa, 'outdoor_airflow_per_floor_area')
|
|
38
|
+
outdoor_air_flowrate = get_additional_property_as_double(design_spec_oa, 'outdoor_air_flowrate')
|
|
39
|
+
outdoor_air_flow_air_changes_per_hour = get_additional_property_as_double(design_spec_oa, 'outdoor_air_flow_air_changes_per_hour')
|
|
40
|
+
|
|
41
|
+
# Area SQL - TabularDataWithStrings -> InputVerificationResultsSummary -> Entire Facility -> Zone Summary -> Zone Name -> Area
|
|
42
|
+
total_modeled_area_oa = 0.0 # m2
|
|
43
|
+
total_user_area_oa = 0.0 # m2
|
|
44
|
+
total_modeled_people_oa = 0.0 # m3/s-person
|
|
45
|
+
total_user_people_oa = 0.0 # m3/s-person
|
|
46
|
+
total_modeled_airflow_oa = 0.0 # m3/s
|
|
47
|
+
total_user_airflow_oa = 0.0 # m3/s
|
|
48
|
+
total_modeled_ach_oa = 0.0 # ach
|
|
49
|
+
total_user_ach_oa = 0.0 # ach
|
|
50
|
+
space_list.each do |space|
|
|
51
|
+
floor_area = space.floorArea
|
|
52
|
+
volume = space.volume
|
|
53
|
+
number_people = space.numberOfPeople
|
|
54
|
+
total_modeled_area_oa += floor_area * design_spec_oa.outdoorAirFlowperFloorArea
|
|
55
|
+
total_user_area_oa += floor_area * outdoor_airflow_per_floor_area
|
|
56
|
+
|
|
57
|
+
total_modeled_people_oa += number_people * design_spec_oa.outdoorAirFlowperPerson
|
|
58
|
+
total_user_people_oa += number_people * outdoor_airflow_per_person
|
|
59
|
+
|
|
60
|
+
total_modeled_airflow_oa += design_spec_oa.outdoorAirFlowRate
|
|
61
|
+
total_user_airflow_oa += outdoor_air_flowrate
|
|
62
|
+
# convert to m3/s -> ach * volume / 3600
|
|
63
|
+
total_modeled_ach_oa += design_spec_oa.outdoorAirFlowAirChangesperHour * volume / 3600
|
|
64
|
+
total_user_ach_oa += outdoor_air_flow_air_changes_per_hour * volume / 3600
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# calculate the amount of total outdoor air
|
|
68
|
+
if outdoor_air_method.casecmp('sum') == 0
|
|
69
|
+
total_modeled_airflow = total_modeled_area_oa + total_modeled_people_oa + total_modeled_airflow_oa + total_modeled_ach_oa
|
|
70
|
+
total_user_airflow = total_user_area_oa + total_user_people_oa + total_user_airflow_oa + total_user_ach_oa
|
|
71
|
+
elsif outdoor_air_method.casecmp('maximum') == 0
|
|
72
|
+
total_modeled_airflow = [total_modeled_area_oa, total_modeled_people_oa, total_modeled_airflow_oa, total_modeled_ach_oa].max
|
|
73
|
+
total_user_airflow = [total_user_area_oa, total_user_people_oa, total_user_airflow_oa, total_user_ach_oa].max
|
|
74
|
+
else
|
|
75
|
+
# No outdoor air method specified or match to the options available in OpenStudio
|
|
76
|
+
# Raise exception to flag the modeling error
|
|
77
|
+
error_msg = "DesignSpecification:OutdoorAir: #{design_spec_oa.name.get} is missing a method or the method is not one of the options {'Maximum', 'Sum'}."
|
|
78
|
+
OpenStudio.logFree(OpenStudio::Warn, 'prm.log', error_msg)
|
|
79
|
+
prm_raise(false,
|
|
80
|
+
@sizing_run_dir,
|
|
81
|
+
error_msg)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
if total_modeled_airflow < total_user_airflow
|
|
85
|
+
# Do not modify the model outdoor air if the total user airflow is lower than total modeled airflow
|
|
86
|
+
OpenStudio.logFree(OpenStudio::Warn, 'prm.log', "The calculated total airflow for DesignSpecification:OutdoorAir is #{total_modeled_airflow} m3/s, which is smaller than the calculated user total airflow #{total_user_airflow} m3/s. Skip modifying the Outdoor Air.")
|
|
87
|
+
else
|
|
88
|
+
# set values.
|
|
89
|
+
design_spec_oa.setOutdoorAirFlowperFloorArea(outdoor_airflow_per_floor_area)
|
|
90
|
+
OpenStudio.logFree(OpenStudio::Info, 'prm.log', "Update DesignSpecification:OutdoorAir #{oa_spec_name} Outdoor Air Flow Per Floor Area to #{outdoor_airflow_per_floor_area} m3/s-m2.")
|
|
91
|
+
design_spec_oa.setOutdoorAirFlowperPerson(outdoor_airflow_per_person)
|
|
92
|
+
OpenStudio.logFree(OpenStudio::Info, 'prm.log', "Update DesignSpecification:OutdoorAir #{oa_spec_name} Outdoor Air Flow Per Person to #{outdoor_airflow_per_person} m3/s-person.")
|
|
93
|
+
design_spec_oa.setOutdoorAirFlowRate(outdoor_air_flowrate)
|
|
94
|
+
OpenStudio.logFree(OpenStudio::Info, 'prm.log', "Update DesignSpecification:OutdoorAir #{oa_spec_name} Outdoor Air Flow Rate to #{outdoor_air_flowrate} m3/s.")
|
|
95
|
+
design_spec_oa.setOutdoorAirFlowAirChangesperHour(outdoor_air_flow_air_changes_per_hour)
|
|
96
|
+
OpenStudio.logFree(OpenStudio::Info, 'prm.log', "Update DesignSpecification:OutdoorAir #{oa_spec_name} Outdoor Air ACH to #{outdoor_air_flow_air_changes_per_hour}.")
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb
CHANGED
|
@@ -6,7 +6,7 @@ class ASHRAE901PRM
|
|
|
6
6
|
# Determines whether there is a requirement to have a VSD or some other method to reduce fan power at low part load ratios.
|
|
7
7
|
# Required for all VAV fans for stable baseline
|
|
8
8
|
# @param fan_variable_volume [OpenStudio::Model::FanVariableVolume] variable volume fan object
|
|
9
|
-
# @return [
|
|
9
|
+
# @return [Boolean] returns true if required, false if not
|
|
10
10
|
def fan_variable_volume_part_load_fan_power_limitation?(fan_variable_volume)
|
|
11
11
|
part_load_control_required = true
|
|
12
12
|
return part_load_control_required
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb
CHANGED
|
@@ -48,7 +48,7 @@ class ASHRAE901PRM < Standard
|
|
|
48
48
|
# Determine the required enthalpy recovery ratio (ERR)
|
|
49
49
|
#
|
|
50
50
|
# @param heat_exchanger_air_to_air_sensible_and_latent [OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent] OpenStudio heat exchanger object
|
|
51
|
-
# @return [
|
|
51
|
+
# @return [Double] enthalpy recovery ratio
|
|
52
52
|
def heat_exchanger_air_to_air_sensible_and_latent_enthalpy_recovery_ratio(heat_exchanger_air_to_air_sensible_and_latent)
|
|
53
53
|
return 0.5
|
|
54
54
|
end
|