openstudio-standards 0.4.0 → 0.5.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/inventory/thermal_bridging.csv +90 -0
- data/data/standards/OpenStudio_Standards-deer-comstock.xlsx +0 -0
- data/data/standards/manage_OpenStudio_Standards.rb +1 -1
- data/data/standards/test_performance_expected_dd_results.csv +2014 -1891
- data/lib/openstudio-standards/btap/analysis.rb +8 -8
- data/lib/openstudio-standards/btap/bridging.rb +664 -645
- data/lib/openstudio-standards/btap/btap.model.rb +14 -14
- data/lib/openstudio-standards/btap/btap.rb +7 -7
- data/lib/openstudio-standards/btap/btap_result.rb +1 -1
- data/lib/openstudio-standards/btap/economics.rb +23 -23
- data/lib/openstudio-standards/btap/envelope.rb +8 -8
- data/lib/openstudio-standards/btap/equest.rb +1 -1
- data/lib/openstudio-standards/btap/geometry.rb +2 -2
- data/lib/openstudio-standards/btap/mpc.rb +7 -7
- data/lib/openstudio-standards/btap/schedules.rb +1 -1
- data/lib/openstudio-standards/btap/simmanager.rb +4 -4
- data/lib/openstudio-standards/btap/spaceloads.rb +26 -26
- data/lib/openstudio-standards/btap/utilities.rb +6 -6
- data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
- data/lib/openstudio-standards/constructions/information.rb +83 -0
- data/lib/openstudio-standards/constructions/materials/modify.rb +72 -0
- data/lib/openstudio-standards/constructions/modify.rb +80 -0
- data/lib/openstudio-standards/create_typical/create_typical.rb +983 -0
- data/lib/openstudio-standards/create_typical/enumerations.rb +484 -0
- data/lib/openstudio-standards/create_typical/space_type_blend.rb +791 -0
- data/lib/openstudio-standards/create_typical/space_type_ratios.rb +494 -0
- data/lib/openstudio-standards/daylighting/space.rb +47 -0
- data/lib/openstudio-standards/geometry/create.rb +801 -0
- data/lib/openstudio-standards/geometry/create_bar.rb +2171 -0
- data/lib/openstudio-standards/geometry/information.rb +462 -0
- data/lib/openstudio-standards/geometry/modify.rb +48 -0
- data/lib/openstudio-standards/hvac/air_loop/information.rb +79 -0
- data/lib/openstudio-standards/hvac/cbecs_hvac.rb +616 -0
- data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +91 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +2 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.hvac_systems.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -36
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -36
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +3 -3
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.elevators.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.elevators.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +14 -14
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +9 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +16 -16
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +11 -11
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +9 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +11 -11
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +9 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +19 -19
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +10 -10
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +13 -13
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +9 -9
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +8 -8
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +11 -11
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +10 -10
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +19 -19
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +18 -18
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +957 -957
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +84 -16
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +61 -10
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +43 -30
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +18 -11
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +774 -117
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +340 -481
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +3 -3
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +3 -3
- data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +22 -22
- data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
- data/lib/openstudio-standards/qaqc/calibration.rb +131 -0
- data/lib/openstudio-standards/qaqc/create_results.rb +983 -0
- data/lib/openstudio-standards/qaqc/envelope.rb +399 -0
- data/lib/openstudio-standards/qaqc/eui.rb +213 -0
- data/lib/openstudio-standards/qaqc/hvac.rb +1943 -0
- data/lib/openstudio-standards/qaqc/internal_loads.rb +568 -0
- data/lib/openstudio-standards/qaqc/reporting.rb +141 -0
- data/lib/openstudio-standards/qaqc/schedules.rb +129 -0
- data/lib/openstudio-standards/qaqc/service_water_heating.rb +273 -0
- data/lib/openstudio-standards/qaqc/weather_files.rb +497 -0
- data/lib/openstudio-standards/qaqc/zone_conditions.rb +278 -0
- data/lib/openstudio-standards/schedules/create.rb +364 -0
- data/lib/openstudio-standards/schedules/information.rb +169 -0
- data/lib/openstudio-standards/schedules/modify.rb +445 -0
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +110 -71
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +16 -10
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +5 -5
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Construction.rb +17 -18
- data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +6 -6
- data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Fan.rb +6 -12
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +3 -3
- data/lib/openstudio-standards/standards/Standards.Model.rb +411 -261
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +94 -29
- data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +14 -14
- data/lib/openstudio-standards/standards/Standards.Space.rb +37 -30
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +38 -29
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +7 -7
- data/lib/openstudio-standards/standards/Standards.Surface.rb +13 -13
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +109 -66
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +11 -4
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +5 -21
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +36 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/comstock_ashrae_90_1_2016.AirLoopHVAC.rb +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +53 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/comstock_ashrae_90_1_2019.AirLoopHVAC.rb +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +211 -211
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +14 -14
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +14 -14
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +22 -28
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +1 -74
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +7 -59
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +1 -21
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.DesignSpecificationOutdoorAir.rb +101 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +643 -526
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +8 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +17 -77
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +74 -16
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +96 -44
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +18 -6
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +328 -74
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +0 -118
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +2 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_rejection.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_outdoor_air.md +35 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +228 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +131 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes.AirLoopHVAC.rb +5 -5
- data/lib/openstudio-standards/standards/cbes/cbes.Model.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes.PlantLoop.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +1 -1
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +109 -27
- data/lib/openstudio-standards/standards/deer/deer.Space.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.economizers.json +246 -4
- data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +18 -5
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +18 -18
- data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.heat_pumps.json +2 -2
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.economizers.json +260 -0
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.economizers.json +248 -6
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +3 -3
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.economizers.json +246 -4
- data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/space_types.json +447 -223
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +1 -1
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/space_types.json +447 -223
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +5 -2
- data/lib/openstudio-standards/standards/necb/ECMS/data/chiller_types.json +25 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/chillers.json +44 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +225 -0
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +2 -2
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +193 -73
- data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +10 -4
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +7 -7
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +4 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chiller_types.json +32 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +36 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +7 -7
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +47587 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +49764 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Warehouse.osm +283 -297
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_type_unit_definitions.txt +2 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +447 -223
- data/lib/openstudio-standards/standards/necb/NECB2011/data/standards_data.rb +3 -3
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +49 -27
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +400 -202
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -4
- data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +637 -318
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +18 -1
- data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +3 -3
- data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +637 -318
- data/lib/openstudio-standards/standards/necb/NECB2017/hvac_systems.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +3 -3
- data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +615 -307
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +4 -4
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +10 -5
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +1 -1
- data/lib/openstudio-standards/utilities/assertion.rb +128 -0
- data/lib/openstudio-standards/utilities/logging.rb +2 -3
- data/lib/openstudio-standards/utilities/object_info.rb +39 -18
- data/lib/openstudio-standards/utilities/schedule_translator.rb +8 -6
- data/lib/openstudio-standards/utilities/simulation.rb +24 -11
- data/lib/openstudio-standards/utilities/sqlfile.rb +10 -5
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +8 -9
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +3 -3
- data/lib/openstudio-standards/weather/information.rb +35 -0
- data/lib/openstudio-standards.rb +69 -5
- metadata +52 -16
- data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +0 -59
- data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingWater.rb +0 -13
- data/lib/openstudio-standards/hvac_sizing/Siz.HVACComponent.rb +0 -36
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +0 -898
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +0 -126
- data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +0 -356
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +0 -35
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +0 -110
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +0 -5
|
@@ -201,8 +201,8 @@ class Standard
|
|
|
201
201
|
|
|
202
202
|
# Get appropriate construction object based on type of surface or subsurface
|
|
203
203
|
# @author: Doug Maddox, PNNL
|
|
204
|
-
# @param: surface_category [
|
|
205
|
-
# @param: surface_type [
|
|
204
|
+
# @param: surface_category [String type of surface: this is not an OpenStudio string
|
|
205
|
+
# @param: surface_type [String SubSurfaceType: this is an OpenStudio string
|
|
206
206
|
# @param: cons_set [object] DefaultSubSurfaceConstructions object
|
|
207
207
|
# @return: [object] Construction object
|
|
208
208
|
def get_default_surface_cons_from_surface_type(surface_category, surface_type, cons_set)
|
|
@@ -5,7 +5,7 @@ class Standard
|
|
|
5
5
|
#
|
|
6
6
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
7
7
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
8
|
-
# @return [
|
|
8
|
+
# @return [Boolean] returns true if successful, false if not
|
|
9
9
|
def plant_loop_apply_standard_controls(plant_loop, climate_zone)
|
|
10
10
|
# Supply water temperature reset
|
|
11
11
|
# plant_loop_enable_supply_water_temperature_reset(plant_loop) if plant_loop_supply_water_temperature_reset_required?(plant_loop)
|
|
@@ -17,7 +17,7 @@ class Standard
|
|
|
17
17
|
# @param chilled_water_loop [OpenStudio::Model::PlantLoop] chilled water loop
|
|
18
18
|
# @param dsgn_sup_wtr_temp [Double] design chilled water supply T
|
|
19
19
|
# @param dsgn_sup_wtr_temp_delt [Double] design chilled water supply delta T
|
|
20
|
-
# @return [
|
|
20
|
+
# @return [Boolean] returns true if successful, false if not
|
|
21
21
|
def chw_sizing_control(model, chilled_water_loop, dsgn_sup_wtr_temp, dsgn_sup_wtr_temp_delt)
|
|
22
22
|
# chilled water loop sizing and controls
|
|
23
23
|
if dsgn_sup_wtr_temp.nil?
|
|
@@ -62,7 +62,7 @@ class Standard
|
|
|
62
62
|
# Returns true if primary and/or secondary pumps are variable speed.
|
|
63
63
|
#
|
|
64
64
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
65
|
-
# @return [
|
|
65
|
+
# @return [Boolean] returns true if variable flow, false if not
|
|
66
66
|
def plant_loop_variable_flow_system?(plant_loop)
|
|
67
67
|
variable_flow = false
|
|
68
68
|
|
|
@@ -89,7 +89,7 @@ class Standard
|
|
|
89
89
|
# you could set at 0.9 and just calculate the pressure rise to have your 19 W/GPM or whatever
|
|
90
90
|
#
|
|
91
91
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
92
|
-
# @return [
|
|
92
|
+
# @return [Boolean] returns true if successful, false if not
|
|
93
93
|
def plant_loop_apply_prm_baseline_pump_power(plant_loop)
|
|
94
94
|
# Determine the pumping power per
|
|
95
95
|
# flow based on loop type.
|
|
@@ -104,7 +104,7 @@ class Standard
|
|
|
104
104
|
|
|
105
105
|
has_district_heating = false
|
|
106
106
|
plant_loop.supplyComponents.each do |sc|
|
|
107
|
-
if sc.
|
|
107
|
+
if sc.iddObjectType.valueName.to_s.include?('DistrictHeating')
|
|
108
108
|
has_district_heating = true
|
|
109
109
|
end
|
|
110
110
|
end
|
|
@@ -187,7 +187,7 @@ class Standard
|
|
|
187
187
|
# Applies the temperatures to the plant loop based on Appendix G.
|
|
188
188
|
#
|
|
189
189
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
190
|
-
# @return [
|
|
190
|
+
# @return [Boolean] returns true if successful, false if not
|
|
191
191
|
def plant_loop_apply_prm_baseline_temperatures(plant_loop)
|
|
192
192
|
sizing_plant = plant_loop.sizingPlant
|
|
193
193
|
loop_type = sizing_plant.loopType
|
|
@@ -206,7 +206,7 @@ class Standard
|
|
|
206
206
|
# Applies the hot water temperatures to the plant loop based on Appendix G.
|
|
207
207
|
#
|
|
208
208
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
209
|
-
# @return [
|
|
209
|
+
# @return [Boolean] returns true if successful, false if not
|
|
210
210
|
def plant_loop_apply_prm_baseline_hot_water_temperatures(plant_loop)
|
|
211
211
|
sizing_plant = plant_loop.sizingPlant
|
|
212
212
|
|
|
@@ -243,7 +243,7 @@ class Standard
|
|
|
243
243
|
# Applies the chilled water temperatures to the plant loop based on Appendix G.
|
|
244
244
|
#
|
|
245
245
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
246
|
-
# @return [
|
|
246
|
+
# @return [Boolean] returns true if successful, false if not
|
|
247
247
|
def plant_loop_apply_prm_baseline_chilled_water_temperatures(plant_loop)
|
|
248
248
|
sizing_plant = plant_loop.sizingPlant
|
|
249
249
|
|
|
@@ -286,7 +286,7 @@ class Standard
|
|
|
286
286
|
# Applies the condenser water temperatures to the plant loop based on Appendix G.
|
|
287
287
|
#
|
|
288
288
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
289
|
-
# @return [
|
|
289
|
+
# @return [Boolean] returns true if successful, false if not
|
|
290
290
|
def plant_loop_apply_prm_baseline_condenser_water_temperatures(plant_loop)
|
|
291
291
|
sizing_plant = plant_loop.sizingPlant
|
|
292
292
|
loop_type = sizing_plant.loopType
|
|
@@ -447,7 +447,7 @@ class Standard
|
|
|
447
447
|
# Required if heating or cooling capacity is greater than 300,000 Btu/hr.
|
|
448
448
|
#
|
|
449
449
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
450
|
-
# @return [
|
|
450
|
+
# @return [Boolean] returns true if required, false if not
|
|
451
451
|
def plant_loop_supply_water_temperature_reset_required?(plant_loop)
|
|
452
452
|
reset_required = false
|
|
453
453
|
|
|
@@ -488,7 +488,7 @@ class Standard
|
|
|
488
488
|
# Enable reset of hot or chilled water temperature based on outdoor air temperature.
|
|
489
489
|
#
|
|
490
490
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
491
|
-
# @return [
|
|
491
|
+
# @return [Boolean] returns true if successful, false if not
|
|
492
492
|
def plant_loop_enable_supply_water_temperature_reset(plant_loop)
|
|
493
493
|
# Get the current setpoint manager on the outlet node
|
|
494
494
|
# and determine if already has temperature reset
|
|
@@ -593,7 +593,7 @@ class Standard
|
|
|
593
593
|
else
|
|
594
594
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlantLoop', "For #{plant_loop.name} capacity of #{chiller.name} is not available, total cooling capacity of plant loop will be incorrect when applying standard.")
|
|
595
595
|
end
|
|
596
|
-
|
|
596
|
+
# DistrictCooling
|
|
597
597
|
elsif sc.to_DistrictCooling.is_initialized
|
|
598
598
|
dist_clg = sc.to_DistrictCooling.get
|
|
599
599
|
if dist_clg.nominalCapacity.is_initialized
|
|
@@ -623,8 +623,8 @@ class Standard
|
|
|
623
623
|
# on the plant loop.
|
|
624
624
|
total_heating_capacity_w = 0
|
|
625
625
|
plant_loop.supplyComponents.each do |sc|
|
|
626
|
-
# BoilerHotWater
|
|
627
626
|
if sc.to_BoilerHotWater.is_initialized
|
|
627
|
+
# BoilerHotWater
|
|
628
628
|
boiler = sc.to_BoilerHotWater.get
|
|
629
629
|
if boiler.nominalCapacity.is_initialized
|
|
630
630
|
total_heating_capacity_w += boiler.nominalCapacity.get
|
|
@@ -633,8 +633,8 @@ class Standard
|
|
|
633
633
|
else
|
|
634
634
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlantLoop', "For #{plant_loop.name} capacity of Boiler:HotWater ' #{boiler.name} is not available, total heating capacity of plant loop will be incorrect when applying standard.")
|
|
635
635
|
end
|
|
636
|
-
# WaterHeater:Mixed
|
|
637
636
|
elsif sc.to_WaterHeaterMixed.is_initialized
|
|
637
|
+
# WaterHeater:Mixed
|
|
638
638
|
water_heater = sc.to_WaterHeaterMixed.get
|
|
639
639
|
if water_heater.heaterMaximumCapacity.is_initialized
|
|
640
640
|
total_heating_capacity_w += water_heater.heaterMaximumCapacity.get
|
|
@@ -643,8 +643,8 @@ class Standard
|
|
|
643
643
|
else
|
|
644
644
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlantLoop', "For #{plant_loop.name} capacity of WaterHeater:Mixed #{water_heater.name} is not available, total heating capacity of plant loop will be incorrect when applying standard.")
|
|
645
645
|
end
|
|
646
|
-
# WaterHeater:Stratified
|
|
647
646
|
elsif sc.to_WaterHeaterStratified.is_initialized
|
|
647
|
+
# WaterHeater:Stratified
|
|
648
648
|
water_heater = sc.to_WaterHeaterStratified.get
|
|
649
649
|
if water_heater.heater1Capacity.is_initialized
|
|
650
650
|
total_heating_capacity_w += water_heater.heater1Capacity.get
|
|
@@ -652,9 +652,16 @@ class Standard
|
|
|
652
652
|
if water_heater.heater2Capacity.is_initialized
|
|
653
653
|
total_heating_capacity_w += water_heater.heater2Capacity.get
|
|
654
654
|
end
|
|
655
|
+
elsif sc.iddObjectType.valueName.to_s.include?('DistrictHeating')
|
|
655
656
|
# DistrictHeating
|
|
656
|
-
|
|
657
|
-
|
|
657
|
+
case sc.iddObjectType.valueName.to_s
|
|
658
|
+
when 'OS_DistrictHeating'
|
|
659
|
+
dist_htg = sc.to_DistrictHeating.get
|
|
660
|
+
when 'OS_DistrictHeatingWater'
|
|
661
|
+
dist_htg = sc.to_DistrictHeatingWater.get
|
|
662
|
+
when 'OS_DistrictHeatingSteam'
|
|
663
|
+
dist_htg = sc.to_DistrictHeatingSteam.get
|
|
664
|
+
end
|
|
658
665
|
if dist_htg.nominalCapacity.is_initialized
|
|
659
666
|
total_heating_capacity_w += dist_htg.nominalCapacity.get
|
|
660
667
|
elsif dist_htg.autosizedNominalCapacity.is_initialized
|
|
@@ -743,7 +750,7 @@ class Standard
|
|
|
743
750
|
# Applies the pumping controls to the loop based on Appendix G.
|
|
744
751
|
#
|
|
745
752
|
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
746
|
-
# @return [
|
|
753
|
+
# @return [Boolean] returns true if successful, false if not
|
|
747
754
|
def plant_loop_apply_prm_baseline_pumping_type(plant_loop)
|
|
748
755
|
sizing_plant = plant_loop.sizingPlant
|
|
749
756
|
loop_type = sizing_plant.loopType
|
|
@@ -763,7 +770,7 @@ class Standard
|
|
|
763
770
|
# Applies the chilled water pumping controls to the loop based on Appendix G.
|
|
764
771
|
#
|
|
765
772
|
# @param plant_loop [OpenStudio::Model::PlantLoop] chilled water loop
|
|
766
|
-
# @return [
|
|
773
|
+
# @return [Boolean] returns true if successful, false if not
|
|
767
774
|
def plant_loop_apply_prm_baseline_chilled_water_pumping_type(plant_loop)
|
|
768
775
|
# Determine the pumping type.
|
|
769
776
|
minimum_cap_tons = 300.0
|
|
@@ -835,7 +842,7 @@ class Standard
|
|
|
835
842
|
# Applies the hot water pumping controls to the loop based on Appendix G.
|
|
836
843
|
#
|
|
837
844
|
# @param plant_loop [OpenStudio::Model::PlantLoop] hot water loop
|
|
838
|
-
# @return [
|
|
845
|
+
# @return [Boolean] returns true if successful, false if not
|
|
839
846
|
def plant_loop_apply_prm_baseline_hot_water_pumping_type(plant_loop)
|
|
840
847
|
# Determine the minimum area to determine
|
|
841
848
|
# pumping type.
|
|
@@ -870,7 +877,7 @@ class Standard
|
|
|
870
877
|
# Applies the condenser water pumping controls to the loop based on Appendix G.
|
|
871
878
|
#
|
|
872
879
|
# @param plant_loop [OpenStudio::Model::PlantLoop] condenser water loop
|
|
873
|
-
# @return [
|
|
880
|
+
# @return [Boolean] returns true if successful, false if not
|
|
874
881
|
def plant_loop_apply_prm_baseline_condenser_water_pumping_type(plant_loop)
|
|
875
882
|
# All condenser water loops are constant flow
|
|
876
883
|
control_type = 'Constant Flow'
|
|
@@ -898,7 +905,7 @@ class Standard
|
|
|
898
905
|
# into multiple separate boilers based on Appendix G.
|
|
899
906
|
#
|
|
900
907
|
# @param plant_loop [OpenStudio::Model::PlantLoop] hot water loop
|
|
901
|
-
# @return [
|
|
908
|
+
# @return [Boolean] returns true if successful, false if not
|
|
902
909
|
def plant_loop_apply_prm_number_of_boilers(plant_loop)
|
|
903
910
|
# Skip non-heating plants
|
|
904
911
|
return true unless plant_loop.sizingPlant.loopType == 'Heating'
|
|
@@ -961,8 +968,9 @@ class Standard
|
|
|
961
968
|
# Splits the single chiller used for the initial sizing run
|
|
962
969
|
# into multiple separate chillers based on Appendix G.
|
|
963
970
|
#
|
|
964
|
-
# @param
|
|
965
|
-
# @
|
|
971
|
+
# @param plant_loop [OpenStudio::Model::PlantLoop] chilled water loop
|
|
972
|
+
# @param sizing_run_dir [String] sizing run directory
|
|
973
|
+
# @return [Boolean] returns true if successful, false if not
|
|
966
974
|
def plant_loop_apply_prm_number_of_chillers(plant_loop, sizing_run_dir = nil)
|
|
967
975
|
# Skip non-cooling plants
|
|
968
976
|
return true unless plant_loop.sizingPlant.loopType == 'Cooling'
|
|
@@ -1110,7 +1118,7 @@ class Standard
|
|
|
1110
1118
|
# into multiple separate cooling towers based on Appendix G.
|
|
1111
1119
|
#
|
|
1112
1120
|
# @param plant_loop [OpenStudio::Model::PlantLoop] condenser water loop
|
|
1113
|
-
# @return [
|
|
1121
|
+
# @return [Boolean] returns true if successful, false if not
|
|
1114
1122
|
def plant_loop_apply_prm_number_of_cooling_towers(plant_loop)
|
|
1115
1123
|
# Skip non-cooling plants
|
|
1116
1124
|
return true unless plant_loop.sizingPlant.loopType == 'Condenser'
|
|
@@ -1372,7 +1380,7 @@ class Standard
|
|
|
1372
1380
|
obj_type = component.iddObjectType.valueName.to_s
|
|
1373
1381
|
|
|
1374
1382
|
case obj_type
|
|
1375
|
-
when 'OS_DistrictHeating'
|
|
1383
|
+
when 'OS_DistrictHeating', 'OS_DistrictHeatingWater', 'OS_DistrictHeatingSteam'
|
|
1376
1384
|
primary_fuels << 'DistrictHeating'
|
|
1377
1385
|
combination_system = false
|
|
1378
1386
|
when 'OS_HeatPump_WaterToWater_EquationFit_Heating'
|
|
@@ -1398,7 +1406,13 @@ class Standard
|
|
|
1398
1406
|
# Check the plant loop connection on the source side
|
|
1399
1407
|
if component.secondaryPlantLoop.is_initialized
|
|
1400
1408
|
source_plant_loop = component.secondaryPlantLoop.get
|
|
1401
|
-
|
|
1409
|
+
|
|
1410
|
+
# error if Loop heating fuels method is not available
|
|
1411
|
+
if component.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
1412
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.Standards.PlantLoop', 'Required Loop method .heatingFuelTypes is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
1413
|
+
end
|
|
1414
|
+
|
|
1415
|
+
secondary_fuels += source_plant_loop.heatingFuelTypes.map(&:valueName)
|
|
1402
1416
|
secondary_heating_capacity += plant_loop_total_heating_capacity(source_plant_loop)
|
|
1403
1417
|
end
|
|
1404
1418
|
|
|
@@ -1421,7 +1435,13 @@ class Standard
|
|
|
1421
1435
|
# Check the plant loop connection on the source side
|
|
1422
1436
|
if component.secondaryPlantLoop.is_initialized
|
|
1423
1437
|
source_plant_loop = component.secondaryPlantLoop.get
|
|
1424
|
-
|
|
1438
|
+
|
|
1439
|
+
# error if Loop heating fuels method is not available
|
|
1440
|
+
if component.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
1441
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.Standards.PlantLoop', 'Required Loop method .heatingFuelTypes is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
1442
|
+
end
|
|
1443
|
+
|
|
1444
|
+
secondary_fuels += source_plant_loop.heatingFuelTypes.map(&:valueName)
|
|
1425
1445
|
secondary_heating_capacity += plant_loop_total_heating_capacity(source_plant_loop)
|
|
1426
1446
|
end
|
|
1427
1447
|
|
|
@@ -1436,7 +1456,13 @@ class Standard
|
|
|
1436
1456
|
cooling_hx_control_types.each(&:downcase!)
|
|
1437
1457
|
if !cooling_hx_control_types.include?(hx.controlType.downcase) && hx.secondaryPlantLoop.is_initialized
|
|
1438
1458
|
source_plant_loop = hx.secondaryPlantLoop.get
|
|
1439
|
-
|
|
1459
|
+
|
|
1460
|
+
# error if Loop heating fuels method is not available
|
|
1461
|
+
if component.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
1462
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.Standards.PlantLoop', 'Required Loop method .heatingFuelTypes is not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.')
|
|
1463
|
+
end
|
|
1464
|
+
|
|
1465
|
+
secondary_fuels += source_plant_loop.heatingFuelTypes.map(&:valueName)
|
|
1440
1466
|
secondary_heating_capacity += plant_loop_total_heating_capacity(source_plant_loop)
|
|
1441
1467
|
end
|
|
1442
1468
|
|
|
@@ -1476,4 +1502,43 @@ class Standard
|
|
|
1476
1502
|
plantloop_capacity = plantloop_dt * plantloop_maxflowrate * 1000.0 * 4180.0
|
|
1477
1503
|
return plantloop_capacity
|
|
1478
1504
|
end
|
|
1505
|
+
|
|
1506
|
+
# This methods replaces all indoor or outdoor pipes which model the heat transfer between the pipe and the
|
|
1507
|
+
# environement by adiabatic pipes.
|
|
1508
|
+
#
|
|
1509
|
+
# @param plant_loop [OpenStudio::Model::PlantLoop] plant loop
|
|
1510
|
+
# @return [Boolean] returns true if successful
|
|
1511
|
+
def plant_loop_adiabatic_pipes_only(plant_loop)
|
|
1512
|
+
supply_side_components = plant_loop.supplyComponents
|
|
1513
|
+
demand_side_components = plant_loop.demandComponents
|
|
1514
|
+
plant_loop_components = supply_side_components += demand_side_components
|
|
1515
|
+
plant_loop_components.each do |component|
|
|
1516
|
+
# Get the object type
|
|
1517
|
+
obj_type = component.iddObjectType.valueName.to_s
|
|
1518
|
+
next unless ['OS_Pipe_Indoor', 'OS_Pipe_Outdoor'].include?(obj_type)
|
|
1519
|
+
|
|
1520
|
+
# Get pipe object
|
|
1521
|
+
pipe = nil
|
|
1522
|
+
case obj_type
|
|
1523
|
+
when 'OS_Pipe_Indoor'
|
|
1524
|
+
pipe = component.to_PipeIndoor.get
|
|
1525
|
+
when 'OS_Pipe_Outdoor'
|
|
1526
|
+
pipe = component.to_PipeOutdoor.get
|
|
1527
|
+
end
|
|
1528
|
+
|
|
1529
|
+
# Get pipe node
|
|
1530
|
+
node = prm_get_optional_handler(pipe, @sizing_run_dir, 'to_StraightComponent', 'outletModelObject', 'to_Node')
|
|
1531
|
+
|
|
1532
|
+
# Get pipe and node names
|
|
1533
|
+
node_name = node.name.get
|
|
1534
|
+
pipe_name = pipe.name.get
|
|
1535
|
+
|
|
1536
|
+
# Replace indoor or outdoor pipe by an adiabatic pipe
|
|
1537
|
+
new_pipe = OpenStudio::Model::PipeAdiabatic.new(plant_loop.model)
|
|
1538
|
+
new_pipe.setName(pipe_name)
|
|
1539
|
+
new_pipe.addToNode(node)
|
|
1540
|
+
component.remove
|
|
1541
|
+
end
|
|
1542
|
+
return true
|
|
1543
|
+
end
|
|
1479
1544
|
end
|
|
@@ -9,7 +9,7 @@ module Pump
|
|
|
9
9
|
# @param pump [OpenStudio::Model::StraightComponent] pump object, allowable types:
|
|
10
10
|
# PumpConstantSpeed, PumpVariableSpeed
|
|
11
11
|
# @param target_w_per_gpm [Double] the target power per flow, in W/gpm
|
|
12
|
-
# @return [
|
|
12
|
+
# @return [Boolean] returns true if successful, false if not
|
|
13
13
|
# @author jmarrec
|
|
14
14
|
def pump_apply_prm_pressure_rise_and_motor_efficiency(pump, target_w_per_gpm)
|
|
15
15
|
# Eplus assumes an impeller efficiency of 0.78 to determine the total efficiency
|
|
@@ -94,7 +94,7 @@ module Pump
|
|
|
94
94
|
#
|
|
95
95
|
# @param pump [OpenStudio::Model::StraightComponent] pump object, allowable types:
|
|
96
96
|
# PumpConstantSpeed, PumpVariableSpeed
|
|
97
|
-
# @return [
|
|
97
|
+
# @return [Boolean] returns true if successful, false if not
|
|
98
98
|
def pump_apply_standard_minimum_motor_efficiency(pump)
|
|
99
99
|
# Get the horsepower
|
|
100
100
|
bhp = pump_brake_horsepower(pump)
|
|
@@ -33,8 +33,8 @@ end
|
|
|
33
33
|
# Intended use is for storing fan schedules to hash of ZoneName:SchedArray so schedules
|
|
34
34
|
# can be saved when HVAC objects are deleted
|
|
35
35
|
# @author Doug Maddox, PNNL
|
|
36
|
-
# @param [
|
|
37
|
-
# @param [
|
|
36
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
37
|
+
# @param schedule_constant [OpenStudio::Model::ScheduleConstant] schedule
|
|
38
38
|
# @return [Array<Double>] Array of sequential hourly values for year + 24 hours at end for holiday
|
|
39
39
|
def get_8760_values_from_schedule_constant(model, schedule_constant)
|
|
40
40
|
yd = model.getYearDescription
|
|
@@ -394,13 +394,13 @@ class Standard
|
|
|
394
394
|
end
|
|
395
395
|
|
|
396
396
|
# get values for new default profile
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
397
|
+
new_default_day_schedule = rule_vector[new_default_index].daySchedule
|
|
398
|
+
new_default_day_schedule_values = new_default_day_schedule.values
|
|
399
|
+
new_default_day_schedule_times = new_default_day_schedule.times
|
|
400
400
|
|
|
401
401
|
# update values and times for default profile
|
|
402
|
-
for i in 0..(
|
|
403
|
-
old_default_schedule_day.addValue(
|
|
402
|
+
for i in 0..(new_default_day_schedule_values.size - 1)
|
|
403
|
+
old_default_schedule_day.addValue(new_default_day_schedule_times[i], new_default_day_schedule_values[i])
|
|
404
404
|
end
|
|
405
405
|
|
|
406
406
|
# remove rule object that has become the default. Also try to remove the ScheduleDay
|
|
@@ -415,8 +415,8 @@ class Standard
|
|
|
415
415
|
# @author David Goldwasser
|
|
416
416
|
# @param schedule [OpenStudio::Model::ScheduleRuleset] schedule ruleset object
|
|
417
417
|
# @param ramp_frequency [Double] ramp frequency in minutes
|
|
418
|
-
# @param infer_hoo_for_non_assigned_objects [
|
|
419
|
-
# @param error_on_out_of_order [
|
|
418
|
+
# @param infer_hoo_for_non_assigned_objects [Boolean] attempt to get hoo for objects like swh with and exterior lighting
|
|
419
|
+
# @param error_on_out_of_order [Boolean] true will error if applying formula creates out of order values
|
|
420
420
|
# @return [OpenStudio::Model::ScheduleRuleset] schedule ruleset object
|
|
421
421
|
def schedule_apply_parametric_inputs(schedule, ramp_frequency, infer_hoo_for_non_assigned_objects, error_on_out_of_order, parametric_inputs = nil)
|
|
422
422
|
# Check if parametric inputs were supplied and generate them if not
|
|
@@ -611,7 +611,7 @@ class Standard
|
|
|
611
611
|
# @param sat_end_time [OpenStudio::Time] Saturday end time. If greater than 24:00, hours of operation will wrap over midnight.
|
|
612
612
|
# @param sun_start_time [OpenStudio::Time] Sunday start time. If nil, no change will be made to this day.
|
|
613
613
|
# @param sun_end_time [OpenStudio::Time] Sunday end time. If greater than 24:00, hours of operation will wrap over midnight.
|
|
614
|
-
# @return [
|
|
614
|
+
# @return [Boolean] returns true if successful, false if not
|
|
615
615
|
def schedule_ruleset_set_hours_of_operation(schedule_ruleset, wkdy_start_time: nil, wkdy_end_time: nil, sat_start_time: nil, sat_end_time: nil, sun_start_time: nil, sun_end_time: nil)
|
|
616
616
|
# Default day is assumed to represent weekdays
|
|
617
617
|
if wkdy_start_time && wkdy_end_time
|
|
@@ -645,9 +645,9 @@ class Standard
|
|
|
645
645
|
#
|
|
646
646
|
# Return Array of weekday values from Array of all day values
|
|
647
647
|
# @author Xuechen (Jerry) Lei, PNNL
|
|
648
|
-
# @param model [OpenStudio::
|
|
648
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
649
649
|
# @param values [Array] hourly time-series values of all days
|
|
650
|
-
# @param value_includes_holiday [
|
|
650
|
+
# @param value_includes_holiday [Boolean] whether the input values include a day of holiday at the end of the array
|
|
651
651
|
#
|
|
652
652
|
# @return [Array] hourly time-series values in weekdays
|
|
653
653
|
#
|
|
@@ -721,7 +721,7 @@ class Standard
|
|
|
721
721
|
day_schedule_holiday = schedule_ruleset.to_ScheduleRuleset.get.defaultDaySchedule
|
|
722
722
|
end
|
|
723
723
|
# Currently holidaySchedule is not working in SDK in ScheduleRuleset object
|
|
724
|
-
#
|
|
724
|
+
# @todo enable the following lines when holidaySchedule is available
|
|
725
725
|
# if !schedule_ruleset.isHolidayScheduleDefaulted
|
|
726
726
|
# day_schedule = schedule_ruleset.to_ScheduleRuleset.get.holidaySchedule
|
|
727
727
|
# else
|
|
@@ -974,7 +974,7 @@ class Standard
|
|
|
974
974
|
end
|
|
975
975
|
|
|
976
976
|
# Last day in values array is the holiday schedule
|
|
977
|
-
#
|
|
977
|
+
# @todo add holiday schedule when implemented in OpenStudio SDK
|
|
978
978
|
end
|
|
979
979
|
|
|
980
980
|
# Need to handle design days
|
|
@@ -1186,8 +1186,8 @@ class Standard
|
|
|
1186
1186
|
# @param val_flr [Double] value floor
|
|
1187
1187
|
# @param val_clg [Double] value ceiling
|
|
1188
1188
|
# @param ramp_frequency [Double] ramp frequency in minutes
|
|
1189
|
-
# @param infer_hoo_for_non_assigned_objects [
|
|
1190
|
-
# @param error_on_out_of_order [
|
|
1189
|
+
# @param infer_hoo_for_non_assigned_objects [Boolean] attempt to get hoo for objects like swh with and exterior lighting
|
|
1190
|
+
# @param error_on_out_of_order [Boolean] true will error if applying formula creates out of order values
|
|
1191
1191
|
# @return [OpenStudio::Model::ScheduleDay] schedule day
|
|
1192
1192
|
# @api private
|
|
1193
1193
|
def process_hrs_of_operation_hash(sch_day, hoo_start, hoo_end, val_flr, val_clg, ramp_frequency, infer_hoo_for_non_assigned_objects, error_on_out_of_order)
|
|
@@ -8,7 +8,7 @@ class Standard
|
|
|
8
8
|
# situations. When it fails, it will log warnings/errors for users to see.
|
|
9
9
|
#
|
|
10
10
|
# @param space [OpenStudio::Model::Space] space object
|
|
11
|
-
# @param draw_daylight_areas_for_debugging [
|
|
11
|
+
# @param draw_daylight_areas_for_debugging [Boolean] If this argument is set to true,
|
|
12
12
|
# daylight areas will be added to the model as surfaces for visual debugging.
|
|
13
13
|
# Yellow = toplighted area, Red = primary sidelighted area,
|
|
14
14
|
# Blue = secondary sidelighted area, Light Blue = floor
|
|
@@ -804,9 +804,9 @@ class Standard
|
|
|
804
804
|
|
|
805
805
|
# Default for 2013 and earlier is to Add daylighting controls (sidelighting and toplighting) per the template
|
|
806
806
|
# @param space [OpenStudio::Model::Space] the space with daylighting
|
|
807
|
-
# @param
|
|
808
|
-
# @param
|
|
809
|
-
# @return [
|
|
807
|
+
# @param remove_existing [Boolean] if true, will remove existing controls then add new ones
|
|
808
|
+
# @param draw_areas_for_debug [Boolean] If this argument is set to true,
|
|
809
|
+
# @return [Boolean] returns true if successful, false if not
|
|
810
810
|
def space_set_baseline_daylighting_controls(space, remove_existing = false, draw_areas_for_debug = false)
|
|
811
811
|
added = space_add_daylighting_controls(space, remove_existing, draw_areas_for_debug)
|
|
812
812
|
return added
|
|
@@ -818,12 +818,12 @@ class Standard
|
|
|
818
818
|
# situations. When it fails, it will log warnings/errors for users to see.
|
|
819
819
|
#
|
|
820
820
|
# @param space [OpenStudio::Model::Space] the space with daylighting
|
|
821
|
-
# @param remove_existing_controls [
|
|
822
|
-
# @param draw_daylight_areas_for_debugging [
|
|
821
|
+
# @param remove_existing_controls [Boolean] if true, will remove existing controls then add new ones
|
|
822
|
+
# @param draw_daylight_areas_for_debugging [Boolean] If this argument is set to true,
|
|
823
823
|
# daylight areas will be added to the model as surfaces for visual debugging.
|
|
824
824
|
# Yellow = toplighted area, Red = primary sidelighted area,
|
|
825
825
|
# Blue = secondary sidelighted area, Light Blue = floor
|
|
826
|
-
# @return [
|
|
826
|
+
# @return [Boolean] returns true if successful, false if not
|
|
827
827
|
# @todo add a list of valid choices for template argument
|
|
828
828
|
# @todo add exception for retail spaces
|
|
829
829
|
# @todo add exception 2 for skylights with VT < 0.4
|
|
@@ -1223,9 +1223,9 @@ class Standard
|
|
|
1223
1223
|
# @param areas [Hash] a hash of daylighted areas
|
|
1224
1224
|
# @param sorted_windows [Hash] a hash of windows, sorted by priority
|
|
1225
1225
|
# @param sorted_skylights [Hash] a hash of skylights, sorted by priority
|
|
1226
|
-
# @param req_top_ctrl [
|
|
1227
|
-
# @param req_pri_ctrl [
|
|
1228
|
-
# @param req_sec_ctrl [
|
|
1226
|
+
# @param req_top_ctrl [Boolean] if toplighting controls are required
|
|
1227
|
+
# @param req_pri_ctrl [Boolean] if primary sidelighting controls are required
|
|
1228
|
+
# @param req_sec_ctrl [Boolean] if secondary sidelighting controls are required
|
|
1229
1229
|
# @return [Array] array of 4 items
|
|
1230
1230
|
# [sensor 1 fraction, sensor 2 fraction, sensor 1 window, sensor 2 window]
|
|
1231
1231
|
def space_daylighting_fractions_and_windows(space,
|
|
@@ -1342,7 +1342,7 @@ class Standard
|
|
|
1342
1342
|
#
|
|
1343
1343
|
# @param space [OpenStudio::Model::Space] space object
|
|
1344
1344
|
# @return [Double] the baseline infiltration rate, in cfm/ft^2 exterior above grade wall area at 75 Pa
|
|
1345
|
-
def space_infiltration_rate_75_pa(space)
|
|
1345
|
+
def space_infiltration_rate_75_pa(space = nil)
|
|
1346
1346
|
basic_infil_rate_cfm_per_ft2 = 1.8
|
|
1347
1347
|
return basic_infil_rate_cfm_per_ft2
|
|
1348
1348
|
end
|
|
@@ -1454,7 +1454,7 @@ class Standard
|
|
|
1454
1454
|
|
|
1455
1455
|
# Conditioned space OR semi-heated space <-> unconditioned spaces
|
|
1456
1456
|
unless surf_cnt
|
|
1457
|
-
#
|
|
1457
|
+
# @todo add a case for 'Zone' when supported
|
|
1458
1458
|
if surface.outsideBoundaryCondition == 'Surface'
|
|
1459
1459
|
adj_space = surface.adjacentSurface.get.space.get
|
|
1460
1460
|
adj_space_cond_type = space_conditioning_category(adj_space)
|
|
@@ -1481,7 +1481,7 @@ class Standard
|
|
|
1481
1481
|
# or if the space type name contains the word plenum.
|
|
1482
1482
|
#
|
|
1483
1483
|
# @param space [OpenStudio::Model::Space] space object
|
|
1484
|
-
# return [
|
|
1484
|
+
# return [Boolean] returns true if plenum, false if not
|
|
1485
1485
|
def space_plenum?(space)
|
|
1486
1486
|
plenum_status = false
|
|
1487
1487
|
|
|
@@ -1523,7 +1523,7 @@ class Standard
|
|
|
1523
1523
|
# type of the space below the largest floor in the plenum.
|
|
1524
1524
|
#
|
|
1525
1525
|
# @param space [OpenStudio::Model::Space] space object
|
|
1526
|
-
# return [
|
|
1526
|
+
# return [Boolean] true if residential, false if nonresidential
|
|
1527
1527
|
def space_residential?(space)
|
|
1528
1528
|
is_res = false
|
|
1529
1529
|
|
|
@@ -1596,7 +1596,6 @@ class Standard
|
|
|
1596
1596
|
# Determines whether the space is conditioned per 90.1, which is based on heating and cooling loads.
|
|
1597
1597
|
#
|
|
1598
1598
|
# @param space [OpenStudio::Model::Space] space object
|
|
1599
|
-
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
|
1600
1599
|
# @return [String] NonResConditioned, ResConditioned, Semiheated, Unconditioned
|
|
1601
1600
|
# @todo add logic to detect indirectly-conditioned spaces based on air transfer
|
|
1602
1601
|
def space_conditioning_category(space)
|
|
@@ -1717,7 +1716,7 @@ class Standard
|
|
|
1717
1716
|
#
|
|
1718
1717
|
# @author Andrew Parker, Julien Marrec
|
|
1719
1718
|
# @param space [OpenStudio::Model::Space] space object
|
|
1720
|
-
# @return [
|
|
1719
|
+
# @return [Boolean] returns true if heated, false if not
|
|
1721
1720
|
def space_heated?(space)
|
|
1722
1721
|
# Get the zone this space is inside
|
|
1723
1722
|
zone = space.thermalZone
|
|
@@ -1738,7 +1737,7 @@ class Standard
|
|
|
1738
1737
|
#
|
|
1739
1738
|
# @author Andrew Parker, Julien Marrec
|
|
1740
1739
|
# @param space [OpenStudio::Model::Space] space object
|
|
1741
|
-
# @return [
|
|
1740
|
+
# @return [Boolean] returns true if cooled, false if not
|
|
1742
1741
|
def space_cooled?(space)
|
|
1743
1742
|
# Get the zone this space is inside
|
|
1744
1743
|
zone = space.thermalZone
|
|
@@ -1854,7 +1853,7 @@ class Standard
|
|
|
1854
1853
|
# and fraction lost for equipment
|
|
1855
1854
|
# @author Doug Maddox, PNNL
|
|
1856
1855
|
# @param space object
|
|
1857
|
-
# @param return_noncoincident_value [
|
|
1856
|
+
# @param return_noncoincident_value [Boolean] if true, return value is noncoincident peak; if false, return is array off coincident load
|
|
1858
1857
|
# @return [Double] 8760 array of the design internal load, in W, for this space
|
|
1859
1858
|
def space_internal_load_annual_array(model, space, return_noncoincident_value)
|
|
1860
1859
|
# For each type of load, first convert schedules to 8760 arrays so coincident load can be determined
|
|
@@ -2070,13 +2069,13 @@ class Standard
|
|
|
2070
2069
|
# to determine whether specific zones should be isolated to PSZ based on
|
|
2071
2070
|
# space loads that differ significantly from other zones on the multizone system
|
|
2072
2071
|
#
|
|
2073
|
-
# @param model [OpenStudio::Model::Model]
|
|
2072
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2074
2073
|
# @param space [OpenStudio::Model::Space] the space
|
|
2075
2074
|
# @param equips [object] This is an array of equipment objects in the model
|
|
2076
2075
|
# @param eqp_type [String] string description of the type of equipment object
|
|
2077
2076
|
# @param ppl_total [Numeric] total number of people in the space
|
|
2078
2077
|
# @param load_values [Array] 8760 array of load values for the equipment type
|
|
2079
|
-
# @param return_noncoincident_value [
|
|
2078
|
+
# @param return_noncoincident_value [Boolean] return a single peak value if true; return 8760 gain profile if false
|
|
2080
2079
|
#
|
|
2081
2080
|
# @return [Array] load values array; if return_noncoincident_value is true, array has only one value
|
|
2082
2081
|
#
|
|
@@ -2108,13 +2107,13 @@ class Standard
|
|
|
2108
2107
|
# to determine whether specific zones should be isolated to PSZ based on
|
|
2109
2108
|
# space loads that differ significantly from other zones on the multizone system
|
|
2110
2109
|
#
|
|
2111
|
-
# @param model [OpenStudio::Model::Model]
|
|
2110
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
2112
2111
|
# @param space [OpenStudio::Model::Space] the space
|
|
2113
2112
|
# @param equip [object] This can be any type of equipment object in the space
|
|
2114
2113
|
# @param eqp_type [String] string description of the type of equipment object
|
|
2115
2114
|
# @param ppl_total [Numeric] total number of people in the space
|
|
2116
2115
|
# @param load_values [Array] 8760 array of load values for the equipment type
|
|
2117
|
-
# @param return_noncoincident_value [
|
|
2116
|
+
# @param return_noncoincident_value [Boolean] return a single peak value if true; return 8760 gain profile if false
|
|
2118
2117
|
#
|
|
2119
2118
|
# @return [Array] load values array; if return_noncoincident_value is true, array has only one value
|
|
2120
2119
|
#
|
|
@@ -2216,7 +2215,7 @@ class Standard
|
|
|
2216
2215
|
# will return a sorted array of array of spaces and connected area (Descending)
|
|
2217
2216
|
#
|
|
2218
2217
|
# @param space [OpenStudio::Model::Space] space object
|
|
2219
|
-
# @param same_floor [
|
|
2218
|
+
# @param same_floor [Boolean] only consider spaces on the same floor
|
|
2220
2219
|
# @return [Hash] sorted hash with array of spaces and area
|
|
2221
2220
|
def space_get_adjacent_spaces_with_shared_wall_areas(space, same_floor = true)
|
|
2222
2221
|
same_floor_spaces = []
|
|
@@ -2281,7 +2280,7 @@ class Standard
|
|
|
2281
2280
|
# Find the space that has the most wall area touching this space.
|
|
2282
2281
|
#
|
|
2283
2282
|
# @param space [OpenStudio::Model::Space] space object
|
|
2284
|
-
# @param same_floor [
|
|
2283
|
+
# @param same_floor [Boolean] only consider spaces on the same floor
|
|
2285
2284
|
# @return [OpenStudio::Model::Space] space object
|
|
2286
2285
|
def space_get_adjacent_space_with_most_shared_wall_area(space, same_floor = true)
|
|
2287
2286
|
return get_adjacent_spaces_with_touching_area(same_floor)[0][0]
|
|
@@ -2938,8 +2937,8 @@ class Standard
|
|
|
2938
2937
|
|
|
2939
2938
|
# A function to check whether a space is a return / supply plenum.
|
|
2940
2939
|
# This function only works on spaces used as a AirLoopSupplyPlenum or AirLoopReturnPlenum
|
|
2941
|
-
# @param [OpenStudio::Model::Space]
|
|
2942
|
-
# @return
|
|
2940
|
+
# @param space [OpenStudio::Model::Space]
|
|
2941
|
+
# @return [Boolean] true if it is plenum, else false.
|
|
2943
2942
|
def space_is_plenum(space)
|
|
2944
2943
|
# Get the zone this space is inside
|
|
2945
2944
|
zone = space.thermalZone
|
|
@@ -2970,8 +2969,8 @@ class Standard
|
|
|
2970
2969
|
|
|
2971
2970
|
# Provide the type of daylighting control type
|
|
2972
2971
|
#
|
|
2973
|
-
# @param [OpenStudio::Model::Space] OpenStudio Space object
|
|
2974
|
-
# return [String] daylighting control type
|
|
2972
|
+
# @param space [OpenStudio::Model::Space] OpenStudio Space object
|
|
2973
|
+
# @return [String] daylighting control type
|
|
2975
2974
|
def space_daylighting_control_type(space)
|
|
2976
2975
|
return 'Stepped'
|
|
2977
2976
|
end
|
|
@@ -2979,9 +2978,17 @@ class Standard
|
|
|
2979
2978
|
# Provide the minimum input power fraction for continuous
|
|
2980
2979
|
# dimming daylighting control
|
|
2981
2980
|
#
|
|
2982
|
-
# @param [OpenStudio::Model::Space] OpenStudio Space object
|
|
2983
|
-
# return [
|
|
2981
|
+
# @param space [OpenStudio::Model::Space] OpenStudio Space object
|
|
2982
|
+
# @return [Double] daylighting minimum input power fraction
|
|
2984
2983
|
def space_daylighting_minimum_input_power_fraction(space)
|
|
2985
2984
|
return 0.3
|
|
2986
2985
|
end
|
|
2986
|
+
|
|
2987
|
+
# Create and assign PRM computer room electric equipment schedule
|
|
2988
|
+
#
|
|
2989
|
+
# @param space [OpenStudio::Model::Space] OpenStudio Space object
|
|
2990
|
+
# @return [Boolean] returns true if successful, false if not
|
|
2991
|
+
def space_add_prm_computer_room_equipment_schedule(space)
|
|
2992
|
+
return true
|
|
2993
|
+
end
|
|
2987
2994
|
end
|