openstudio-standards 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.md +33 -0
- 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 +2170 -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 +54 -18
- data/License.txt +0 -65
- 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
|