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
@@ -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
|