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
@@ -12,124 +12,6 @@ class ASHRAE901PRM2019 < ASHRAE901PRM
|
|
12
12
|
return true
|
13
13
|
end
|
14
14
|
|
15
|
-
# Determines the area of the building above which point
|
16
|
-
# the non-dominant area type gets it's own HVAC system type.
|
17
|
-
# @return [Double] the minimum area (m^2)
|
18
|
-
def model_prm_baseline_system_group_minimum_area(model, custom)
|
19
|
-
exception_min_area_ft2 = 20_000
|
20
|
-
# Customization - Xcel EDA Program Manual 2014
|
21
|
-
# 3.2.1 Mechanical System Selection ii
|
22
|
-
if custom == 'Xcel Energy CO EDA'
|
23
|
-
exception_min_area_ft2 = 5000
|
24
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Customization; per Xcel EDA Program Manual 2014 3.2.1 Mechanical System Selection ii, minimum area for non-predominant conditions reduced to #{exception_min_area_ft2} ft2.")
|
25
|
-
end
|
26
|
-
exception_min_area_m2 = OpenStudio.convert(exception_min_area_ft2, 'ft^2', 'm^2').get
|
27
|
-
return exception_min_area_m2
|
28
|
-
end
|
29
|
-
|
30
|
-
# Determines which system number is used
|
31
|
-
# for the baseline system.
|
32
|
-
# @return [String] the system number: 1_or_2, 3_or_4,
|
33
|
-
# 5_or_6, 7_or_8, 9_or_10
|
34
|
-
def model_prm_baseline_system_number(model, climate_zone, area_type, fuel_type, area_ft2, num_stories, custom)
|
35
|
-
sys_num = nil
|
36
|
-
|
37
|
-
# Customization - Xcel EDA Program Manual 2014
|
38
|
-
# Table 3.2.2 Baseline HVAC System Types
|
39
|
-
if custom == 'Xcel Energy CO EDA'
|
40
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', 'Custom; per Xcel EDA Program Manual 2014 Table 3.2.2 Baseline HVAC System Types, the 90.1-2010 lookup for HVAC system types shall be used.')
|
41
|
-
|
42
|
-
# Set the area limit
|
43
|
-
limit_ft2 = 25_000
|
44
|
-
|
45
|
-
case area_type
|
46
|
-
when 'residential'
|
47
|
-
sys_num = '1_or_2'
|
48
|
-
when 'nonresidential'
|
49
|
-
# nonresidential and 3 floors or less and <25,000 ft2
|
50
|
-
if num_stories <= 3 && area_ft2 < limit_ft2
|
51
|
-
sys_num = '3_or_4'
|
52
|
-
# nonresidential and 4 or 5 floors or 5 floors or less and 25,000 ft2 to 150,000 ft2
|
53
|
-
elsif ((num_stories == 4 || num_stories == 5) && area_ft2 < limit_ft2) || (num_stories <= 5 && (area_ft2 >= limit_ft2 && area_ft2 <= 150_000))
|
54
|
-
sys_num = '5_or_6'
|
55
|
-
# nonresidential and more than 5 floors or >150,000 ft2
|
56
|
-
elsif num_stories >= 5 || area_ft2 > 150_000
|
57
|
-
sys_num = '7_or_8'
|
58
|
-
end
|
59
|
-
when 'heatedonly'
|
60
|
-
sys_num = '9_or_10'
|
61
|
-
when 'retail'
|
62
|
-
# Should only be hit by Xcel EDA
|
63
|
-
sys_num = '3_or_4'
|
64
|
-
end
|
65
|
-
|
66
|
-
else
|
67
|
-
|
68
|
-
# Set the area limit
|
69
|
-
limit_ft2 = 25_000
|
70
|
-
|
71
|
-
case area_type
|
72
|
-
when 'residential'
|
73
|
-
sys_num = '1_or_2'
|
74
|
-
when 'nonresidential'
|
75
|
-
# nonresidential and 3 floors or less and <25,000 ft2
|
76
|
-
if num_stories <= 3 && area_ft2 < limit_ft2
|
77
|
-
sys_num = '3_or_4'
|
78
|
-
# nonresidential and 4 or 5 floors or 5 floors or less and 25,000 ft2 to 150,000 ft2
|
79
|
-
elsif ((num_stories == 4 || num_stories == 5) && area_ft2 < limit_ft2) || (num_stories <= 5 && (area_ft2 >= limit_ft2 && area_ft2 <= 150_000))
|
80
|
-
sys_num = '5_or_6'
|
81
|
-
# nonresidential and more than 5 floors or >150,000 ft2
|
82
|
-
elsif num_stories >= 5 || area_ft2 > 150_000
|
83
|
-
sys_num = '7_or_8'
|
84
|
-
end
|
85
|
-
when 'heatedonly'
|
86
|
-
sys_num = '9_or_10'
|
87
|
-
when 'retail'
|
88
|
-
sys_num = '3_or_4'
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
|
93
|
-
return sys_num
|
94
|
-
end
|
95
|
-
|
96
|
-
# Change the fuel type based on climate zone, depending on the standard.
|
97
|
-
# For 90.1-2013, fuel type is based on climate zone, not the proposed model.
|
98
|
-
# @return [String] the revised fuel type
|
99
|
-
def model_prm_baseline_system_change_fuel_type(model, fuel_type, climate_zone, custom = nil)
|
100
|
-
if custom == 'Xcel Energy CO EDA'
|
101
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', 'Custom; per Xcel EDA Program Manual 2014 Table 3.2.2 Baseline HVAC System Types, the 90.1-2010 rules for heating fuel type (based on proposed model) rules apply.')
|
102
|
-
return fuel_type
|
103
|
-
end
|
104
|
-
|
105
|
-
# For 90.1-2013 the fuel type is determined based on climate zone.
|
106
|
-
# Don't change the fuel if it purchased heating or cooling.
|
107
|
-
if fuel_type == 'electric' || fuel_type == 'fossil'
|
108
|
-
case climate_zone
|
109
|
-
when 'ASHRAE 169-2006-1A',
|
110
|
-
'ASHRAE 169-2006-2A',
|
111
|
-
'ASHRAE 169-2006-3A',
|
112
|
-
'ASHRAE 169-2013-1A',
|
113
|
-
'ASHRAE 169-2013-2A',
|
114
|
-
'ASHRAE 169-2013-3A'
|
115
|
-
fuel_type = 'electric'
|
116
|
-
else
|
117
|
-
fuel_type = 'fossil'
|
118
|
-
end
|
119
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "Heating fuel is #{fuel_type} for 90.1-2013, climate zone #{climate_zone}. This is independent of the heating fuel type in the proposed building, per G3.1.1-3. This is different than previous versions of 90.1.")
|
120
|
-
end
|
121
|
-
|
122
|
-
return fuel_type
|
123
|
-
end
|
124
|
-
|
125
|
-
# Determines the fan type used by VAV_Reheat and VAV_PFP_Boxes systems.
|
126
|
-
# Variable speed fan for 90.1-2013
|
127
|
-
# @return [String] the fan type: TwoSpeed Fan, Variable Speed Fan
|
128
|
-
def model_baseline_system_vav_fan_type(model)
|
129
|
-
fan_type = 'Variable Speed Fan'
|
130
|
-
return fan_type
|
131
|
-
end
|
132
|
-
|
133
15
|
# Determines the skylight to roof ratio limit for a given standard
|
134
16
|
# 3% for 90.1-PRM-2019
|
135
17
|
# @return [Double] the skylight to roof ratio, as a percent: 5.0 = 5%
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb
CHANGED
@@ -16,9 +16,10 @@ class ASHRAE901PRM2019 < ASHRAE901PRM
|
|
16
16
|
|
17
17
|
# Determine the base infiltration rate at 75 PA.
|
18
18
|
#
|
19
|
+
# @param space [OpenStudio::Model::Space] space object
|
19
20
|
# @return [Double] the baseline infiltration rate, in cfm/ft^2
|
20
21
|
# defaults to no infiltration.
|
21
|
-
def space_infiltration_rate_75_pa
|
22
|
+
def space_infiltration_rate_75_pa(space = nil)
|
22
23
|
basic_infil_rate_cfm_per_ft2 = 1.0
|
23
24
|
return basic_infil_rate_cfm_per_ft2
|
24
25
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Baseline Outdoor Air
|
2
|
+
|
3
|
+
# ASHRAE 90.1-2019 PRM Reference Manual
|
4
|
+
For all HVAC zones, the minimum ventilation system outdoor air intake flow shall be the same for the proposed and baseline building designs. Except in the following conditions:
|
5
|
+
- If the minimum outdoor air intake flow in the proposed design is provided in excess of the amount required by the rating authority or building official, then the baseline building design shall be modeled to reflect the greater of that required by the rating authority or building official and will be less than the proposed design.
|
6
|
+
|
7
|
+
# Implementation
|
8
|
+
- Reads in userdata_design_specification_outdoor_air
|
9
|
+
- Before the HVAC sizing run, evaluate the user data
|
10
|
+
- Loop through Sizing:Zones
|
11
|
+
- Get the DesignSpecification:OutdoorAir, if matches to the user_data_oa then check the current ventilation settings.
|
12
|
+
- Split into four sub-routines:
|
13
|
+
- calculate total OA by occupants in model: occupant_oa_p = zone_total_occupants * airflow_per_occupant_u
|
14
|
+
- calculate total OA by occupants in user data: occupant_oa_u = zone_total_occupants * airflow_per_occupant_u
|
15
|
+
- calculate total OA by floor area in model: floor_area_oa_p = zone_floor_area * airflow_per_floor_area_p
|
16
|
+
- calculate total OA by floor area in user data: floor_area_oa_u = zone_floor_area * airflow_per_floor_area_u
|
17
|
+
- calculate total OA by zone in model: zone_oa_p = airflow_per_zone_p
|
18
|
+
- calculate total OA by zone in user data: zone_oa_u = airflow_per_zone_u
|
19
|
+
- calculate total OA by ACH in model: ach_oa_p = ach_p * height(m) / 3.6 / 1000
|
20
|
+
- calculate total OA by ACH in user data: ach_oa_u = ach_u * height(m) / 3.6 / 1000
|
21
|
+
- calculate sum OA: sum_oa = occupant_oa_p + floor_area_oa_p + zone_oa_p + ach_oa_p
|
22
|
+
- calculate sum user data oa: user_data_oa = occupant_oa_u + floor_area_oa_u + zone_oa_u + ach_oa_u
|
23
|
+
- if sum_oa > user_data_oa:
|
24
|
+
- Modify the ventilation methods in the object.
|
25
|
+
- else:
|
26
|
+
- Issue a warning in the log
|
27
|
+
NOTE:
|
28
|
+
1. There are some details relate to Zone-Space relationship needs to be explored in the above logic
|
29
|
+
2. When assigning user specified ventilation methods, it will likely require to create a new space type and override the ventilation object in the new space type - this could cause multiple space types in the baseline model (similar case is in ligthing)
|
30
|
+
|
31
|
+
# Key Ruby Methods
|
32
|
+
|
33
|
+
## New
|
34
|
+
|
35
|
+
|
@@ -70,7 +70,7 @@ Expected output: the baseline schedule is 15% higher than proposed schedule for
|
|
70
70
|
- User data folder: */userdata_pe_03*
|
71
71
|
- Summary:
|
72
72
|
This case will test whether *motor_horsepower*, *motor_efficiency* and *motor_is_exempt* are read correctly for an electric equipment (*Office WholeBuilding - Sm Office Elec Equip*).
|
73
|
-
Expected output: the electric equipment in the baseline shall have three additional properties *motor_horsepower = 10.0*, *motor_efficiency = 0.72* and *motor_is_exempt =
|
73
|
+
Expected output: the electric equipment in the baseline shall have three additional properties *motor_horsepower = 10.0*, *motor_efficiency = 0.72* and *motor_is_exempt = False*
|
74
74
|
|
75
75
|
|
76
76
|
### Test case 4
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb
ADDED
@@ -0,0 +1,228 @@
|
|
1
|
+
class UserDataCSV
|
2
|
+
# Abstract class for writing user data template from user model.
|
3
|
+
#
|
4
|
+
# @param model [OpenStudio::Model::Model]
|
5
|
+
# @param save_dir [String] directory to save user data files
|
6
|
+
def initialize(model, save_dir)
|
7
|
+
@model = model
|
8
|
+
@component_name = nil
|
9
|
+
unless Dir.exist?(save_dir)
|
10
|
+
raise ArgumentError "Saving directory #{save_dir} does not exist!"
|
11
|
+
end
|
12
|
+
|
13
|
+
@save_dir = save_dir
|
14
|
+
@components = nil
|
15
|
+
@headers = nil
|
16
|
+
@file_name = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
# getter function to get file name
|
20
|
+
attr_reader :file_name
|
21
|
+
|
22
|
+
# method to write csv files
|
23
|
+
# this method controls the workflow for generating a user data file.
|
24
|
+
# @return [Boolean] True for success, false otherwise
|
25
|
+
def write_csv
|
26
|
+
@components = load_component
|
27
|
+
@headers = load_header
|
28
|
+
unless @components
|
29
|
+
OpenStudio.logFree(OpenStudio::Warn, 'prm.log', "No relevant component #{@component_name} found in model. Skip the process")
|
30
|
+
return false
|
31
|
+
end
|
32
|
+
|
33
|
+
CSV.open("#{@save_dir}/#{@file_name}.csv", 'w') do |csv|
|
34
|
+
csv << @headers
|
35
|
+
@components.each do |component|
|
36
|
+
csv << [prm_get_component_name(component)] + write_default_rows
|
37
|
+
end
|
38
|
+
end
|
39
|
+
return true
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
# method to write the parameters in the csv file.
|
45
|
+
# This method provides a template to write in default values to the user data file
|
46
|
+
# return [Array] array of strings that contains the data in the userdata file
|
47
|
+
def write_default_rows
|
48
|
+
raise NotImplementedError, 'Method write rows should be implemented in class'
|
49
|
+
end
|
50
|
+
|
51
|
+
# Load header from pre-defined user data files.
|
52
|
+
# This method loads the user data file from the list.
|
53
|
+
#
|
54
|
+
# @return [Boolean] returns true if successful, false if not
|
55
|
+
def load_header
|
56
|
+
userdata_dir = __dir__
|
57
|
+
src_csv_dir = "#{userdata_dir}/*.csv"
|
58
|
+
headers = nil
|
59
|
+
Dir.glob(src_csv_dir).each do |csv_full_name|
|
60
|
+
csv_file_name = File.basename(csv_full_name, File.extname(csv_full_name))
|
61
|
+
if csv_file_name == @file_name
|
62
|
+
headers = CSV.read(csv_full_name, headers: true).headers
|
63
|
+
end
|
64
|
+
end
|
65
|
+
return headers
|
66
|
+
end
|
67
|
+
|
68
|
+
# Method to load OpenStudio component list from the model and save to @Component
|
69
|
+
# subclass shall determine what data group to extract from a modle.
|
70
|
+
# @return [Array] array of OpenStudio components.
|
71
|
+
def load_component
|
72
|
+
return @model.public_send("get#{@component_name}")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class UserDataCSVAirLoopHVAC < UserDataCSV
|
77
|
+
# user data userdata_airloop_hvac
|
78
|
+
# @param model [OpenStudio::Model::Model]
|
79
|
+
# @param save_dir [String] directory to save user data files
|
80
|
+
def initialize(model, save_dir)
|
81
|
+
super
|
82
|
+
@component_name = 'AirLoopHVACs'
|
83
|
+
@file_name = UserDataFiles::AIRLOOP_HVAC
|
84
|
+
end
|
85
|
+
|
86
|
+
def write_default_rows
|
87
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
88
|
+
return Array.new(@headers.length - 1, '')
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
class UserDataCSVBuilding < UserDataCSV
|
93
|
+
# user data userdata_building
|
94
|
+
# @param model [OpenStudio::Model::Model]
|
95
|
+
# @param save_dir [String] directory to save user data files
|
96
|
+
def initialize(model, save_dir)
|
97
|
+
super
|
98
|
+
@component_name = 'Building'
|
99
|
+
@file_name = UserDataFiles::BUILDING
|
100
|
+
end
|
101
|
+
|
102
|
+
private
|
103
|
+
|
104
|
+
def load_component
|
105
|
+
return [@model.public_send("get#{@component_name}")]
|
106
|
+
end
|
107
|
+
|
108
|
+
def write_default_rows
|
109
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
110
|
+
return Array.new(@headers.length - 1, '')
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
class UserDataCSVSpace < UserDataCSV
|
115
|
+
# user data userdata_space
|
116
|
+
# @param model [OpenStudio::Model::Model]
|
117
|
+
# @param save_dir [String] directory to save user data files
|
118
|
+
def initialize(model, save_dir)
|
119
|
+
super
|
120
|
+
@component_name = 'Spaces'
|
121
|
+
@file_name = UserDataFiles::SPACE
|
122
|
+
end
|
123
|
+
|
124
|
+
private
|
125
|
+
|
126
|
+
def write_default_rows
|
127
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
128
|
+
return Array.new(@headers.length - 1, '')
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
class UserDataCSVSpaceTypes < UserDataCSV
|
133
|
+
# user data userdata_spacetypes
|
134
|
+
# @param model [OpenStudio::Model::Model]
|
135
|
+
# @param save_dir [String] directory to save user data files
|
136
|
+
def initialize(model, save_dir)
|
137
|
+
super
|
138
|
+
@component_name = 'SpaceTypes'
|
139
|
+
@file_name = UserDataFiles::SPACETYPE
|
140
|
+
end
|
141
|
+
|
142
|
+
private
|
143
|
+
|
144
|
+
def write_default_rows
|
145
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
146
|
+
return Array.new(@headers.length - 1, '')
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
class UserDataCSVAirLoopHVACDOAS < UserDataCSV
|
151
|
+
# user data userdata_airloop_hvac_doas
|
152
|
+
# @param model [OpenStudio::Model::Model]
|
153
|
+
# @param save_dir [String] directory to save user data files
|
154
|
+
def initialize(model, save_dir)
|
155
|
+
super
|
156
|
+
@component_name = 'AirLoopHVACDedicatedOutdoorAirSystems'
|
157
|
+
@file_name = UserDataFiles::AIRLOOP_HVAC_DOAS
|
158
|
+
end
|
159
|
+
|
160
|
+
def write_default_rows
|
161
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
162
|
+
return Array.new(@headers.length - 1, '')
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
class UserDataCSVExteriorLights < UserDataCSV
|
167
|
+
# user data userdata_airloop_hvac_doas
|
168
|
+
# @param model [OpenStudio::Model::Model]
|
169
|
+
# @param save_dir [String] directory to save user data files
|
170
|
+
def initialize(model, save_dir)
|
171
|
+
super
|
172
|
+
@component_name = 'ExteriorLightss'
|
173
|
+
@file_name = UserDataFiles::EXTERIOR_LIGHTS
|
174
|
+
end
|
175
|
+
|
176
|
+
def write_default_rows
|
177
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
178
|
+
return Array.new(@headers.length - 1, '')
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
class UserDataCSVThermalZone < UserDataCSV
|
183
|
+
# user data userdata_thermal_zone
|
184
|
+
# @param model [OpenStudio::Model::Model]
|
185
|
+
# @param save_dir [String] directory to save user data files
|
186
|
+
def initialize(model, save_dir)
|
187
|
+
super
|
188
|
+
@component_name = 'ThermalZones'
|
189
|
+
@file_name = UserDataFiles::THERMAL_ZONE
|
190
|
+
end
|
191
|
+
|
192
|
+
def write_default_rows
|
193
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
194
|
+
return Array.new(@headers.length - 1, '')
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
class UserDataCSVElectricEquipment < UserDataCSV
|
199
|
+
# user data userdata_electric_equipment
|
200
|
+
# @param model [OpenStudio::Model::Model]
|
201
|
+
# @param save_dir [String] directory to save user data files
|
202
|
+
def initialize(model, save_dir)
|
203
|
+
super
|
204
|
+
@component_name = 'ElectricEquipments'
|
205
|
+
@file_name = UserDataFiles::ELECTRIC_EQUIPMENT
|
206
|
+
end
|
207
|
+
|
208
|
+
def write_default_rows
|
209
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
210
|
+
return Array.new(@headers.length - 1, '')
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
class UserDataCSVOutdoorAir < UserDataCSV
|
215
|
+
# user data userdata_design_specification_outdoor_air
|
216
|
+
# @param model [OpenStudio::Model::Model]
|
217
|
+
# @param save_dir [String] directory to save user data files
|
218
|
+
def initialize(model, save_dir)
|
219
|
+
super
|
220
|
+
@component_name = 'DesignSpecificationOutdoorAirs'
|
221
|
+
@file_name = UserDataFiles::DESIGN_SPECIFICATION_OUTDOOR_AIR
|
222
|
+
end
|
223
|
+
|
224
|
+
def write_default_rows
|
225
|
+
# @todo we can do more here but right now, keep everything unchecked.
|
226
|
+
return Array.new(@headers.length - 1, '')
|
227
|
+
end
|
228
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
class UserData
|
2
|
+
# Static method that retrieves the function constant values in a list
|
3
|
+
def self.get_constant_values
|
4
|
+
return constants.map(&method(:const_get))
|
5
|
+
end
|
6
|
+
|
7
|
+
# Static method to check if a user data matches to any of the constant value
|
8
|
+
#
|
9
|
+
# @param user_data [String] a user data
|
10
|
+
# @return [Boolean] matched any, else false
|
11
|
+
def self.matched_any?(user_data)
|
12
|
+
userdata_constants = get_constant_values
|
13
|
+
userdata_constants.each do |constant|
|
14
|
+
return true if compare(user_data, constant)
|
15
|
+
end
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
# Compare the two UserData enums are the same or not. Static method.
|
20
|
+
# @param one [String] one UserData type enum
|
21
|
+
# @param another [String] another UserDataType enum
|
22
|
+
# @return [Boolean] if the two enums or strings are the same
|
23
|
+
def self.compare(one, another)
|
24
|
+
return one && another && !one.empty? && !another.empty? && one.downcase.strip == another.downcase.strip
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class UserDataBoolean < UserData
|
29
|
+
TRUE = 'true'.freeze
|
30
|
+
FALSE = 'false'.freeze
|
31
|
+
end
|
32
|
+
|
33
|
+
class UserDataHVACBldgType < UserData
|
34
|
+
HEATED_ONLY_STORAGE = 'heated only storage'.freeze
|
35
|
+
HOSPITAL = 'hospital'.freeze
|
36
|
+
PUBLIC_ASSEMBLY = 'public assembly'.freeze
|
37
|
+
RETAIL = 'retail'.freeze
|
38
|
+
OTHER_NONRESIDENTIAL = 'other nonresidential'.freeze
|
39
|
+
RESIDENTIAL = 'residential'.freeze
|
40
|
+
UNCONDITIONED = 'unconditioned'.freeze
|
41
|
+
end
|
42
|
+
|
43
|
+
class UserDataSHWBldgType < UserData
|
44
|
+
WORKSHOP = 'Workshop'.freeze
|
45
|
+
WAREHOUSE = 'Warehouse'.freeze
|
46
|
+
TRANSPORTATION = 'Transportation'.freeze
|
47
|
+
TOWN_HALL = 'Town hall'.freeze
|
48
|
+
SPORT_ARENA = 'Sport arena'.freeze
|
49
|
+
SCHOOL_UNIVERSITY = 'School/university'.freeze
|
50
|
+
RETAIL = 'Retail'.freeze
|
51
|
+
RELIGIOUS_FACILITY = 'Religious facility'.freeze
|
52
|
+
POST_OFFICE = 'Post office'.freeze
|
53
|
+
POLICE_STATION = 'Police station'.freeze
|
54
|
+
PERFORMING_ARTS_THEATER = 'Performing arts theater'.freeze
|
55
|
+
PENITENTIARY = 'Penitentiary'.freeze
|
56
|
+
PARKING_GARAGE = 'Parking garage'.freeze
|
57
|
+
OFFICE = 'Office'.freeze
|
58
|
+
MUSEUM = 'Museum'.freeze
|
59
|
+
MULTIFAMILY = 'Multifamily'.freeze
|
60
|
+
MOTION_PICTURE_THEATHER = 'Motion picture theater'.freeze
|
61
|
+
MOTEL = 'Motel'.freeze
|
62
|
+
MANUFACTURING_FACILITY = 'Manufacturing_facility'.freeze
|
63
|
+
LIBRARY = 'Library'.freeze
|
64
|
+
HOTEL = 'Hotel'.freeze
|
65
|
+
HOSPITAL_OUTPATIENT_SURGERY = 'Hospital and outpatient surgery center'.freeze
|
66
|
+
HEALTH_CARE_CLINIC = 'Health-care clinic'.freeze
|
67
|
+
GYMNASIUM = 'Gymnasium'.freeze
|
68
|
+
GROCERY_STORE = 'Grocery store'.freeze
|
69
|
+
FIRE_STATION = 'Fire station'.freeze
|
70
|
+
EXERCISE_CENTER = 'Exercise center'.freeze
|
71
|
+
DORMITORY = 'Domitory'.freeze
|
72
|
+
DINING_FAMILY = 'Dining:Family'.freeze
|
73
|
+
DINING_CAFETERIA = 'Dining: Cafeteria/fast food'.freeze
|
74
|
+
DINING_BAR = 'Dining: Bar lounge/leisure'.freeze
|
75
|
+
COURTHOUSE = 'Courthouse'.freeze
|
76
|
+
CONVENTION_CENTER = 'Convention center'.freeze
|
77
|
+
CONVENTION_STORE = 'Convention store'.freeze
|
78
|
+
AUTOMOTIVE_FACILITY = 'Automotive facility'.freeze
|
79
|
+
ALL_OTHER = 'All others'.freeze
|
80
|
+
end
|
81
|
+
|
82
|
+
class UserDataNonTradableLightsCategory < UserData
|
83
|
+
GENERAL = 'nontradeable_general'.freeze
|
84
|
+
BUILDING_FACADE_AREA = 'building_facades_area'.freeze
|
85
|
+
BUILDING_FACADE_PERIM = 'building_facades_perim'.freeze
|
86
|
+
AUTOMATED_TELLER_MACHINES_PER_LOCATION = 'automated_teller_machines_per_location'.freeze
|
87
|
+
AUTOMATED_TELLER_MACHINES_PER_MACHINE = 'automated_teller_machines_per_machine'.freeze
|
88
|
+
ENTRIES_AND_GATES = 'entries_and_gates'.freeze
|
89
|
+
LOADING_AREAS_FOR_EMERGENCY_VEHICLES = 'loading_areas_for_emergency_vehicles'.freeze
|
90
|
+
DRIVE_THROUGH = 'drive_through_windows_and_doors'.freeze
|
91
|
+
PARKING_ENTRANCES = 'parking_near_24_hour_entrances'.freeze
|
92
|
+
PARKING_ROADWAY = 'roadway_parking'.freeze
|
93
|
+
end
|
94
|
+
|
95
|
+
class UserDataWWRBldgType < UserData
|
96
|
+
WAREHOUSE = 'Warehouse (nonrefrigerated)'.freeze
|
97
|
+
SCHOOL_SECONDARY = 'School (secondary and university)'.freeze
|
98
|
+
SCHOOL_PRIMARY = 'School (primary)'.freeze
|
99
|
+
RETAIL_STRIP_MALL = 'Retail (strip mall)'.freeze
|
100
|
+
RETAIL_STAND_ALONE = 'Retail (stand alone)'.freeze
|
101
|
+
RESTAURANT_QUICK_SERVICE = 'Restaurant (quick service)'.freeze
|
102
|
+
RESTAURANT_FULL_SERVICE = 'Restaurant (full serivce)'.freeze
|
103
|
+
OFFICE_SMALL = 'Office <= 5,000 sq ft'.freeze
|
104
|
+
OFFICE_MEDIUM = 'Office 5,000 to 50,000 sq ft'.freeze
|
105
|
+
OFFICE_LARGE = 'Office > 50,000 sq ft'.freeze
|
106
|
+
HOTEL_LARGE = 'Hotel/motel > 75 rooms'.freeze
|
107
|
+
HOTEL_SMALL = 'Hotel/motel <= 75 rooms'.freeze
|
108
|
+
HOSPITAL = 'Hospital'.freeze
|
109
|
+
HEALTHCARE = 'Healthcare (outpatient)'.freeze
|
110
|
+
GROCERY = 'Grocery store'.freeze
|
111
|
+
ALL_OTHER = 'All other'.freeze
|
112
|
+
end
|
113
|
+
|
114
|
+
class UserDataFiles < UserData
|
115
|
+
AIRLOOP_HVAC = 'userdata_airloop_hvac'.freeze
|
116
|
+
AIRLOOP_HVAC_DOAS = 'userdata_airloop_hvac_doas'.freeze
|
117
|
+
BUILDING = 'userdata_building'.freeze
|
118
|
+
DESIGN_SPECIFICATION_OUTDOOR_AIR = 'userdata_design_specification_outdoor_air'.freeze
|
119
|
+
ELECTRIC_EQUIPMENT = 'userdata_electric_equipment'.freeze
|
120
|
+
EXTERIOR_LIGHTS = 'userdata_exterior_lights'.freeze
|
121
|
+
GAS_EQUIPMENT = 'userdata_gas_equipment'.freeze
|
122
|
+
LIGHTS = 'userdata_lights'.freeze
|
123
|
+
SPACE = 'userdata_space'.freeze
|
124
|
+
SPACETYPE = 'userdata_spacetype'.freeze
|
125
|
+
THERMAL_ZONE = 'userdata_thermal_zone'.freeze
|
126
|
+
WATERUSE_CONNECTIONS = 'userdata_wateruse_connections'.freeze
|
127
|
+
WATERUSE_EQUIPMENT = 'userdata_wateruse_equipment'.freeze
|
128
|
+
WATERUSE_EQUIPMENT_DEFINITION = 'userdata_wateruse_equipment_definition'.freeze
|
129
|
+
ZONE_HVAC = 'userdata_zone_hvac'.freeze
|
130
|
+
ZONE_INFILTRATION = 'userdata_zone_infiltration'.freeze
|
131
|
+
end
|
@@ -1 +1 @@
|
|
1
|
-
name,building_type_for_wwr,num_std_ltg_types,std_ltg_type01,std_ltg_type_frac01,std_ltg_type02,std_ltg_type_frac02,std_ltg_type03,std_ltg_type_frac03,std_ltg_type04,std_ltg_type_frac04,std_ltg_type05,std_ltg_type_frac05,std_ltg_type06,std_ltg_type_frac06,std_ltg_type07,std_ltg_type_frac07,std_ltg_type08,std_ltg_type_frac08,std_ltg_type09,std_ltg_type_frac09,std_ltg_type10,std_ltg_type_frac10,std_ltg_type11,std_ltg_type_frac11,std_ltg_type12,std_ltg_type_frac12,std_ltg_type13,std_ltg_type_frac13,std_ltg_type14,std_ltg_type_frac14,std_ltg_type15,std_ltg_type_frac15,std_ltg_type16,std_ltg_type_frac16,std_ltg_type17,std_ltg_type_frac17,std_ltg_type18,std_ltg_type_frac18,std_ltg_type19,std_ltg_type_frac19,std_ltg_type20,std_ltg_type_frac20
|
1
|
+
name,building_type_for_wwr,num_std_ltg_types,std_ltg_type01,std_ltg_type_frac01,std_ltg_type02,std_ltg_type_frac02,std_ltg_type03,std_ltg_type_frac03,std_ltg_type04,std_ltg_type_frac04,std_ltg_type05,std_ltg_type_frac05,std_ltg_type06,std_ltg_type_frac06,std_ltg_type07,std_ltg_type_frac07,std_ltg_type08,std_ltg_type_frac08,std_ltg_type09,std_ltg_type_frac09,std_ltg_type10,std_ltg_type_frac10,std_ltg_type11,std_ltg_type_frac11,std_ltg_type12,std_ltg_type_frac12,std_ltg_type13,std_ltg_type_frac13,std_ltg_type14,std_ltg_type_frac14,std_ltg_type15,std_ltg_type_frac15,std_ltg_type16,std_ltg_type_frac16,std_ltg_type17,std_ltg_type_frac17,std_ltg_type18,std_ltg_type_frac18,std_ltg_type19,std_ltg_type_frac19,std_ltg_type20,std_ltg_type_frac20,has_residential_exception
|
@@ -5,7 +5,7 @@ class CBES < Standard
|
|
5
5
|
# Does nothing for CBES.
|
6
6
|
#
|
7
7
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
8
|
-
# return [
|
8
|
+
# return [Boolean] returns true if successful, false if not
|
9
9
|
# @todo enable damper position adjustment for legacy IDFS
|
10
10
|
def air_loop_hvac_apply_multizone_vav_outdoor_air_sizing(air_loop_hvac)
|
11
11
|
# Do nothing
|
@@ -16,8 +16,8 @@ class CBES < Standard
|
|
16
16
|
# Not required by CBES.
|
17
17
|
#
|
18
18
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
19
|
-
# @param has_ddc [
|
20
|
-
# return [
|
19
|
+
# @param has_ddc [Boolean] whether or not the system has DDC control over VAV terminals.
|
20
|
+
# return [Boolean] returns true if static pressure reset is required, false if not
|
21
21
|
def air_loop_hvac_static_pressure_reset_required?(air_loop_hvac, has_ddc)
|
22
22
|
sp_reset_required = false
|
23
23
|
return sp_reset_required
|
@@ -38,7 +38,7 @@ class CBES < Standard
|
|
38
38
|
#
|
39
39
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
40
40
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
41
|
-
# @return [
|
41
|
+
# @return [Boolean] returns true if required, false if not
|
42
42
|
def air_loop_hvac_demand_control_ventilation_required?(air_loop_hvac, climate_zone)
|
43
43
|
dcv_required = false
|
44
44
|
return dcv_required
|
@@ -49,7 +49,7 @@ class CBES < Standard
|
|
49
49
|
#
|
50
50
|
# @param air_loop_hvac [OpenStudio::Model::AirLoopHVAC] air loop
|
51
51
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
52
|
-
# @return [
|
52
|
+
# @return [Boolean] returns true if successful, false if not
|
53
53
|
def air_loop_hvac_apply_single_zone_controls(air_loop_hvac, climate_zone)
|
54
54
|
# Do nothing
|
55
55
|
return true
|
@@ -12,7 +12,7 @@ class CBES
|
|
12
12
|
# When 'Sum', all min OA flow rates are added up. Commonly used by 90.1.
|
13
13
|
# When 'Maximum', only the biggest OA flow rate. Used by T24.
|
14
14
|
#
|
15
|
-
# @param model [OpenStudio::Model::Model]
|
15
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
16
16
|
# @return [String] the ventilation method, either Sum or Maximum
|
17
17
|
def model_ventilation_method(model)
|
18
18
|
ventilation_method = 'Maximum'
|
@@ -5,7 +5,7 @@ class CBES < Standard
|
|
5
5
|
# Not required for CBES.
|
6
6
|
#
|
7
7
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
8
|
-
# @return [
|
8
|
+
# @return [Boolean] returns true if required, false if not
|
9
9
|
def plant_loop_supply_water_temperature_reset_required?(plant_loop)
|
10
10
|
reset_required = false
|
11
11
|
return reset_required
|
@@ -4,7 +4,7 @@ class CBES < Standard
|
|
4
4
|
# Baseline infiltration rate
|
5
5
|
#
|
6
6
|
# @return [Double] the baseline infiltration rate, in cfm/ft^2 exterior above grade wall area at 75 Pa
|
7
|
-
def space_infiltration_rate_75_pa(space)
|
7
|
+
def space_infiltration_rate_75_pa(space = nil)
|
8
8
|
basic_infil_rate_cfm_per_ft2 = 1.8
|
9
9
|
return basic_infil_rate_cfm_per_ft2
|
10
10
|
end
|
@@ -4,7 +4,7 @@ class CBEST242005 < CBES
|
|
4
4
|
# Baseline infiltration rate
|
5
5
|
#
|
6
6
|
# @return [Double] the baseline infiltration rate, in cfm/ft^2 exterior above grade wall area at 75 Pa
|
7
|
-
def space_infiltration_rate_75_pa(space)
|
7
|
+
def space_infiltration_rate_75_pa(space = nil)
|
8
8
|
basic_infil_rate_cfm_per_ft2 = 0.5
|
9
9
|
return basic_infil_rate_cfm_per_ft2
|
10
10
|
end
|
@@ -4,7 +4,7 @@ class CBEST242008 < CBES
|
|
4
4
|
# Baseline infiltration rate
|
5
5
|
#
|
6
6
|
# @return [Double] the baseline infiltration rate, in cfm/ft^2 exterior above grade wall area at 75 Pa
|
7
|
-
def space_infiltration_rate_75_pa(space)
|
7
|
+
def space_infiltration_rate_75_pa(space = nil)
|
8
8
|
basic_infil_rate_cfm_per_ft2 = 0.5
|
9
9
|
return basic_infil_rate_cfm_per_ft2
|
10
10
|
end
|