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
|
@@ -255,7 +255,6 @@ class ECMS
|
|
|
255
255
|
end
|
|
256
256
|
end
|
|
257
257
|
max_net_vert_distance = max_vert_distance + min_vert_distance
|
|
258
|
-
max_net_vert_distance = [max_net_vert_distance, 0.000001].max
|
|
259
258
|
|
|
260
259
|
return max_equiv_distance, max_net_vert_distance
|
|
261
260
|
end
|
|
@@ -467,10 +466,10 @@ class ECMS
|
|
|
467
466
|
# =============================================================================================================================
|
|
468
467
|
# The first 5 letters of the air loop name designate the system type (sys_abbr). This method updates the system type designation
|
|
469
468
|
# in the air loop name. At the same time the chosen air loop names are checked to avoid duplicate names from being used in the
|
|
470
|
-
# hash for system to
|
|
469
|
+
# hash for system to zones.
|
|
471
470
|
def update_system_zones_map_keys(system_zones_map,sys_abbr)
|
|
472
471
|
updated_system_zones_map = {}
|
|
473
|
-
system_zones_map.
|
|
472
|
+
system_zones_map.each do |sname,zones|
|
|
474
473
|
updated_sys_name = "#{sys_abbr}#{sname[5..-1]}"
|
|
475
474
|
if !updated_system_zones_map.has_key? updated_sys_name
|
|
476
475
|
updated_system_zones_map[updated_sys_name] = zones
|
|
@@ -595,12 +594,12 @@ class ECMS
|
|
|
595
594
|
|
|
596
595
|
# =============================================================================================================================
|
|
597
596
|
# Apply efficiencies for ECM 'hs08_ccashp_vrf'
|
|
598
|
-
def apply_efficiency_ecm_hs08_ccashp_vrf(model, air_sys_eqpt_type: 'ccashp')
|
|
597
|
+
def apply_efficiency_ecm_hs08_ccashp_vrf(model, standard, air_sys_eqpt_type: 'ccashp')
|
|
599
598
|
# Use same performance data as ECM 'hs09_ccashpsys' for air system
|
|
600
599
|
if air_sys_eqpt_type == 'ccashp'
|
|
601
|
-
apply_efficiency_ecm_hs09_ccashp_baseboard(model)
|
|
600
|
+
apply_efficiency_ecm_hs09_ccashp_baseboard(model,standard)
|
|
602
601
|
elsif air_sys_eqpt_type == 'ashp'
|
|
603
|
-
apply_efficiency_ecm_hs12_ashp_baseboard(model)
|
|
602
|
+
apply_efficiency_ecm_hs12_ashp_baseboard(model,standard)
|
|
604
603
|
end
|
|
605
604
|
# Apply efficiency for VRF units
|
|
606
605
|
eqpt_name = 'Mitsubishi_Hyper_Heating_VRF_Outdoor_Unit'
|
|
@@ -1042,8 +1041,13 @@ class ECMS
|
|
|
1042
1041
|
htg_eqpt = nil
|
|
1043
1042
|
case loop_htg_eqpt_type.downcase
|
|
1044
1043
|
when "district_heating"
|
|
1045
|
-
|
|
1046
|
-
|
|
1044
|
+
if model.version < OpenStudio::VersionString.new('3.7.0')
|
|
1045
|
+
htg_eqpt = OpenStudio::Model::DistrictHeating.new(model)
|
|
1046
|
+
else
|
|
1047
|
+
htg_eqpt = OpenStudio::Model::DistrictHeatingWater.new(model)
|
|
1048
|
+
end
|
|
1049
|
+
htg_eqpt.setName("DistrictHeating")
|
|
1050
|
+
|
|
1047
1051
|
when "heatpump_watertowater_equationfit"
|
|
1048
1052
|
htg_eqpt = OpenStudio::Model::HeatPumpWaterToWaterEquationFitHeating.new(model)
|
|
1049
1053
|
htg_eqpt.setName("HeatPumpWaterToWaterEquationFitHeating")
|
|
@@ -1106,7 +1110,11 @@ class ECMS
|
|
|
1106
1110
|
heat_rej_eqpt = OpenStudio::Model::GroundHeatExchangerVertical.new(model)
|
|
1107
1111
|
heat_rej_eqpt.setName("GroundHeatExchangerVertical")
|
|
1108
1112
|
when "district_heating"
|
|
1109
|
-
|
|
1113
|
+
if model.version < OpenStudio::VersionString.new('3.7.0')
|
|
1114
|
+
heat_rej_eqpt = OpenStudio::Model::DistrictHeating.new(model)
|
|
1115
|
+
else
|
|
1116
|
+
heat_rej_eqpt = OpenStudio::Model::DistrictHeatingWater.new(model)
|
|
1117
|
+
end
|
|
1110
1118
|
heat_rej_eqpt.setName("DistrictHeating")
|
|
1111
1119
|
when "district_cooling"
|
|
1112
1120
|
heat_rej_eqpt = OpenStudio::Model::DistrictCooling.new(model)
|
|
@@ -1253,13 +1261,16 @@ class ECMS
|
|
|
1253
1261
|
coil_cooling_dx_variable_speed_apply_curves(clg_dx_coil, eqpt_name)
|
|
1254
1262
|
coil_heating_dx_variable_speed_apply_curves(htg_dx_coil, eqpt_name)
|
|
1255
1263
|
# add zone equipment and diffuser
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1264
|
+
if sys_info['sys_vent_type'] == 'doas'
|
|
1265
|
+
zone_htg_eqpt_type = 'ptac_electric_off'
|
|
1266
|
+
zone_clg_eqpt_type = 'ptac_electric_off'
|
|
1267
|
+
zone_fan_type = 'constant_volume'
|
|
1268
|
+
else
|
|
1269
|
+
zone_htg_eqpt_type = 'baseboard_electric' if updated_heating_fuel == 'Electricity'
|
|
1270
|
+
zone_htg_eqpt_type = 'baseboard_hotwater' if updated_heating_fuel == 'NaturalGas'
|
|
1271
|
+
zone_clg_eqpt_type = 'none'
|
|
1272
|
+
zone_fan_type = 'none'
|
|
1273
|
+
end
|
|
1263
1274
|
add_zone_eqpt(model: model,
|
|
1264
1275
|
airloop: airloop,
|
|
1265
1276
|
zones: zones,
|
|
@@ -1271,9 +1282,9 @@ class ECMS
|
|
|
1271
1282
|
zone_fan_type: zone_fan_type,
|
|
1272
1283
|
hw_loop: hw_loop)
|
|
1273
1284
|
# for doas use baseboard electric or hotwater as backup for PTAC units
|
|
1274
|
-
zone_htg_eqpt_type = 'baseboard_hotwater' if heating_fuel == 'NaturalGas'
|
|
1275
|
-
zone_htg_eqpt_type = 'baseboard_electric' if heating_fuel == 'Electricity'
|
|
1276
1285
|
if sys_info['sys_vent_type'] == 'doas'
|
|
1286
|
+
zone_htg_eqpt_type = 'baseboard_electric' if updated_heating_fuel == 'Electricity'
|
|
1287
|
+
zone_htg_eqpt_type = 'baseboard_hotwater' if updated_heating_fuel == 'NaturalGas'
|
|
1277
1288
|
add_zone_eqpt(model: model,
|
|
1278
1289
|
airloop: airloop,
|
|
1279
1290
|
zones: zones,
|
|
@@ -1294,7 +1305,7 @@ class ECMS
|
|
|
1294
1305
|
|
|
1295
1306
|
# =============================================================================================================================
|
|
1296
1307
|
# Apply effiencies for ECM "hs09_ccashp_baseboard"
|
|
1297
|
-
def apply_efficiency_ecm_hs09_ccashp_baseboard(model)
|
|
1308
|
+
def apply_efficiency_ecm_hs09_ccashp_baseboard(model,standard)
|
|
1298
1309
|
# fraction of electric backup heating coil capacity assigned to dx heating coil
|
|
1299
1310
|
fr_backup_coil_cap_as_dx_coil_cap = 0.5
|
|
1300
1311
|
model.getAirLoopHVACs.sort.each do |isys|
|
|
@@ -1464,9 +1475,9 @@ class ECMS
|
|
|
1464
1475
|
|
|
1465
1476
|
# =============================================================================================================================
|
|
1466
1477
|
# Apply efficiencies and performance curves for ECM "hs11_ashp_pthp"
|
|
1467
|
-
def apply_efficiency_ecm_hs11_ashp_pthp(model)
|
|
1478
|
+
def apply_efficiency_ecm_hs11_ashp_pthp(model,standard)
|
|
1468
1479
|
fr_backup_coil_cap_as_dx_coil_cap = 0.5 # fraction of electric backup heating coil capacity assigned to dx heating coil
|
|
1469
|
-
apply_efficiency_ecm_hs12_ashp_baseboard(model)
|
|
1480
|
+
apply_efficiency_ecm_hs12_ashp_baseboard(model,standard)
|
|
1470
1481
|
pthp_eqpt_name = 'HS11_PTHP'
|
|
1471
1482
|
model.getAirLoopHVACs.sort.each do |isys|
|
|
1472
1483
|
isys.thermalZones.each do |zone|
|
|
@@ -1576,13 +1587,16 @@ class ECMS
|
|
|
1576
1587
|
coil_cooling_dx_single_speed_apply_curves(clg_dx_coil,eqpt_name)
|
|
1577
1588
|
coil_heating_dx_single_speed_apply_curves(htg_dx_coil,eqpt_name)
|
|
1578
1589
|
# add zone equipment and diffuser
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1590
|
+
if sys_info['sys_vent_type'] == 'doas'
|
|
1591
|
+
zone_htg_eqpt_type = 'ptac_electric_off'
|
|
1592
|
+
zone_clg_eqpt_type = 'ptac_electric_off'
|
|
1593
|
+
zone_fan_type = 'constant_volume'
|
|
1594
|
+
else
|
|
1595
|
+
zone_htg_eqpt_type = 'baseboard_electric' if updated_heating_fuel == 'Electricity'
|
|
1596
|
+
zone_htg_eqpt_type = 'baseboard_hotwater' if updated_heating_fuel == 'NaturalGas'
|
|
1597
|
+
zone_clg_eqpt_type = 'none'
|
|
1598
|
+
zone_fan_type = 'none'
|
|
1599
|
+
end
|
|
1586
1600
|
add_zone_eqpt(model: model,
|
|
1587
1601
|
airloop: airloop,
|
|
1588
1602
|
zones: zones,
|
|
@@ -1595,6 +1609,8 @@ class ECMS
|
|
|
1595
1609
|
hw_loop: hw_loop)
|
|
1596
1610
|
# for doas use baseboard electric or hotwater as backup for PTAC units
|
|
1597
1611
|
if sys_info['sys_vent_type'] == 'doas'
|
|
1612
|
+
zone_htg_eqpt_type = 'baseboard_electric' if updated_heating_fuel == 'Electricity'
|
|
1613
|
+
zone_htg_eqpt_type = 'baseboard_hotwater' if updated_heating_fuel == 'NaturalGas'
|
|
1598
1614
|
add_zone_eqpt(model: model,
|
|
1599
1615
|
airloop: airloop,
|
|
1600
1616
|
zones: zones,
|
|
@@ -1630,7 +1646,7 @@ class ECMS
|
|
|
1630
1646
|
|
|
1631
1647
|
# =============================================================================================================================
|
|
1632
1648
|
# Apply efficiencies and performance curves for ECM "hs12_ashp_baseboard"
|
|
1633
|
-
def apply_efficiency_ecm_hs12_ashp_baseboard(model)
|
|
1649
|
+
def apply_efficiency_ecm_hs12_ashp_baseboard(model,standard)
|
|
1634
1650
|
fr_backup_coil_cap_as_dx_coil_cap = 0.5 # fraction of electric backup heating coil capacity assigned to dx heating coil
|
|
1635
1651
|
ashp_eqpt_name = 'NECB2015_ASHP'
|
|
1636
1652
|
model.getAirLoopHVACs.sort.each do |isys|
|
|
@@ -1706,9 +1722,9 @@ class ECMS
|
|
|
1706
1722
|
|
|
1707
1723
|
# =============================================================================================================================
|
|
1708
1724
|
# Apply efficiencies and performance curves for ECM "hs12_ashp_vrf"
|
|
1709
|
-
def apply_efficiency_ecm_hs13_ashp_vrf(model)
|
|
1725
|
+
def apply_efficiency_ecm_hs13_ashp_vrf(model,standard)
|
|
1710
1726
|
# call method for ECM hs08 with ASHP in air system
|
|
1711
|
-
apply_efficiency_ecm_hs08_ccashp_vrf(model, air_sys_eqpt_type: 'ashp')
|
|
1727
|
+
apply_efficiency_ecm_hs08_ccashp_vrf(model, standard, air_sys_eqpt_type: 'ashp')
|
|
1712
1728
|
end
|
|
1713
1729
|
|
|
1714
1730
|
# =============================================================================================================================
|
|
@@ -1825,7 +1841,7 @@ class ECMS
|
|
|
1825
1841
|
loop_spm_type: 'Scheduled',
|
|
1826
1842
|
loop_setpoint: 50.0,
|
|
1827
1843
|
loop_temp_diff: 5.0)
|
|
1828
|
-
model.getCoilHeatingWaters.each {|coil| hw_loop.addDemandBranchForComponent(coil)}
|
|
1844
|
+
model.getCoilHeatingWaters.sort.each {|coil| hw_loop.addDemandBranchForComponent(coil)}
|
|
1829
1845
|
hcapf_curve_name = "HEATPUMP_WATERTOWATER_HCAPF"
|
|
1830
1846
|
hcapf_curve = model_add_curve(model, hcapf_curve_name)
|
|
1831
1847
|
if hcapf_curve
|
|
@@ -1857,7 +1873,7 @@ class ECMS
|
|
|
1857
1873
|
|
|
1858
1874
|
chw_loop_clg_eqpt.setName('ChillerWaterCooled')
|
|
1859
1875
|
chw_loop_clg_eqpt.setCondenserType("WaterCooled")
|
|
1860
|
-
model.getCoilCoolingWaters.each {|coil| chw_loop.addDemandBranchForComponent(coil)}
|
|
1876
|
+
model.getCoilCoolingWaters.sort.each {|coil| chw_loop.addDemandBranchForComponent(coil)}
|
|
1861
1877
|
sec_chiller = OpenStudio::Model::ChillerElectricEIR.new(model)
|
|
1862
1878
|
chw_loop_clg_eqpt_outlet_node = chw_loop_clg_eqpt.supplyOutletModelObject.get.to_Node.get
|
|
1863
1879
|
sec_chiller.addToNode(chw_loop_clg_eqpt_outlet_node)
|
|
@@ -1900,20 +1916,23 @@ class ECMS
|
|
|
1900
1916
|
|
|
1901
1917
|
#=============================================================================================================================
|
|
1902
1918
|
# Appy efficiencies for ECM "hs14_cgshp_fancoils"
|
|
1903
|
-
def apply_efficiency_ecm_hs14_cgshp_fancoils(model)
|
|
1919
|
+
def apply_efficiency_ecm_hs14_cgshp_fancoils(model,standard)
|
|
1904
1920
|
heatpump_siz_f = 0.4 # sizing factor for water-source heat pump (heating mode)
|
|
1905
1921
|
chiller_siz_f = 0.4 # sizing factor for water-cooled chiller
|
|
1906
|
-
# get water-source heat pump
|
|
1922
|
+
# get water-source heat pump and boiler
|
|
1907
1923
|
hw_loops = model.getPlantLoops.select {|loop| loop.sizingPlant.loopType.to_s.downcase == 'heating'}
|
|
1908
1924
|
hw_heatpump_loop = nil
|
|
1909
1925
|
hw_heatpump = nil
|
|
1926
|
+
hw_boiler = nil
|
|
1910
1927
|
hw_loops.each do |hw_loop|
|
|
1911
1928
|
hw_heatpumps = hw_loop.supplyComponents.select {|comp| comp.to_HeatPumpWaterToWaterEquationFitHeating.is_initialized}
|
|
1912
1929
|
if !hw_heatpumps.empty?
|
|
1913
1930
|
hw_heatpump_loop = hw_loop
|
|
1914
1931
|
hw_heatpump = hw_heatpumps[0].to_HeatPumpWaterToWaterEquationFitHeating.get
|
|
1915
|
-
break
|
|
1916
1932
|
end
|
|
1933
|
+
hw_boilers = hw_loop.supplyComponents.select {|comp| comp.to_BoilerHotWater.is_initialized}
|
|
1934
|
+
hw_boiler = hw_boilers[0].to_BoilerHotWater.get if !hw_boilers.empty?
|
|
1935
|
+
break if !hw_heatpump_loop.nil? && !hw_heatpump.nil? && !hw_boiler.nil?
|
|
1917
1936
|
end
|
|
1918
1937
|
raise("apply_efficiency_ecm_hs14_cgshp_fancoils: no water-source heat pump found in heating loop #{hw_loops.name.to_s}") if hw_heatpump.nil?
|
|
1919
1938
|
cw_loop = model.getPlantLoops.select {|loop| loop.sizingPlant.loopType.to_s.downcase == 'condenser'}[0]
|
|
@@ -1937,8 +1956,10 @@ class ECMS
|
|
|
1937
1956
|
cw_loop.setMaximumLoopFlowRate(cw_loop_max_flow)
|
|
1938
1957
|
cw_loop_pump = cw_loop.supplyComponents.select {|comp| comp.to_PumpVariableSpeed.is_initialized}[0].to_PumpVariableSpeed.get
|
|
1939
1958
|
cw_loop_pump.setRatedFlowRate(cw_loop_max_flow)
|
|
1940
|
-
# set heating capacity of water-source heat pump
|
|
1941
|
-
if hw_heatpump.
|
|
1959
|
+
# set heating capacity of water-source heat pump and boiler
|
|
1960
|
+
if hw_heatpump.autosizedRatedHeatingCapacity.is_initialized
|
|
1961
|
+
cap = hw_heatpump.autosizedRatedHeatingCapacity.to_f
|
|
1962
|
+
elsif hw_heatpump.ratedHeatingCapacity.is_initialized
|
|
1942
1963
|
cap = hw_heatpump.ratedHeatingCapacity.to_f
|
|
1943
1964
|
elsif hw_heatpump.autosizedRatedHeatingCapacity.is_initialized
|
|
1944
1965
|
cap = hw_heatpump.autosizedRatedHeatingCapacity.to_f
|
|
@@ -1946,18 +1967,22 @@ class ECMS
|
|
|
1946
1967
|
raise("apply_efficiency_ecm_hs14_cgshp_fancoils: capacity of water-source heat pump #{hw_heatpump.name.to_s} is not defined")
|
|
1947
1968
|
end
|
|
1948
1969
|
hw_heatpump.setRatedHeatingCapacity(heatpump_siz_f*cap)
|
|
1949
|
-
|
|
1970
|
+
hw_boiler.setNominalCapacity((1.0-heatpump_siz_f)*cap)
|
|
1971
|
+
# set cooling capacity of chillers
|
|
1950
1972
|
chillers = chw_loop.supplyComponents.select {|comp| comp.to_ChillerElectricEIR.is_initialized}
|
|
1951
1973
|
chiller_water_cooled = nil
|
|
1974
|
+
chiller_air_cooled = nil
|
|
1952
1975
|
chillers.each do |comp|
|
|
1953
1976
|
chlr = comp.to_ChillerElectricEIR.get
|
|
1954
|
-
if chlr.name.to_s.include? 'ChillerWaterCooled'
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
end
|
|
1977
|
+
chiller_water_cooled = chlr if chlr.name.to_s.include? 'ChillerWaterCooled'
|
|
1978
|
+
chiller_air_cooled = chlr if chlr.name.to_s.include? 'ChillerAirCooled'
|
|
1979
|
+
break if !chiller_water_cooled.nil? && !chiller_air_cooled.nil?
|
|
1980
|
+
end
|
|
1959
1981
|
raise("apply_efficiency_ecm_hs14_cgshp_fancoils: no water-cooled chiller found in cooling loop #{chw_loop.name.to_s}") if chiller_water_cooled.nil?
|
|
1960
|
-
if
|
|
1982
|
+
raise("apply_efficiency_ecm_hs14_cgshp_fancoils: no air-cooled chiller found in cooling loop #{chw_loop.name.to_s}") if chiller_air_cooled.nil?
|
|
1983
|
+
if chiller_water_cooled.autosizedReferenceCapacity.is_initialized
|
|
1984
|
+
cap = chiller_water_cooled.autosizedReferenceCapacity.to_f
|
|
1985
|
+
elsif chiller_water_cooled.referenceCapacity.is_initialized
|
|
1961
1986
|
cap = chiller_water_cooled.referenceCapacity.to_f
|
|
1962
1987
|
elsif chiller_water_cooled.autosizedReferenceCapacity.is_initialized
|
|
1963
1988
|
cap = chiller_water_cooled.autosizedReferenceCapacity.to_f
|
|
@@ -1965,6 +1990,24 @@ class ECMS
|
|
|
1965
1990
|
raise("apply_efficiency_ecm_hs14_cgshp_fancoils: cooling capacity of chiller #{chiller_water_cooled.name.to_s} is not defined")
|
|
1966
1991
|
end
|
|
1967
1992
|
chiller_water_cooled.setReferenceCapacity(chiller_siz_f*cap)
|
|
1993
|
+
chiller_air_cooled.setReferenceCapacity((1.0-chiller_siz_f)*cap)
|
|
1994
|
+
# call standard efficiency method again for water-cooled chiller
|
|
1995
|
+
new_chlr_name = chiller_water_cooled.name.to_s.chomp!(chiller_water_cooled.name.to_s.split.last).strip
|
|
1996
|
+
new_chlr_name = new_chlr_name.chomp!(new_chlr_name.split.last).strip
|
|
1997
|
+
new_chlr_name = new_chlr_name.chomp!(new_chlr_name.split.last).strip
|
|
1998
|
+
chiller_water_cooled.setName(new_chlr_name)
|
|
1999
|
+
standard.chiller_electric_eir_apply_efficiency_and_curves(chiller_water_cooled,nil)
|
|
2000
|
+
# set curves and cop of air-cooled chiller
|
|
2001
|
+
chlr_cap_w = (1.0-chiller_siz_f)*cap
|
|
2002
|
+
chlr_cap_ton = OpenStudio.convert(chlr_cap_w, 'W', 'ton').get
|
|
2003
|
+
search_criteria = {}
|
|
2004
|
+
search_criteria['cooling_type'] = 'AirCooled'
|
|
2005
|
+
chlr_props = model_find_object(standards_data['tables']['chiller_types_ecm']['table'], search_criteria, chlr_cap_ton)
|
|
2006
|
+
chiller_air_cooled.setName("ChillerAirCooled #{chlr_props['compressor_type']}")
|
|
2007
|
+
search_criteria = {}
|
|
2008
|
+
search_criteria['name'] = 'NECB2020_AirCooledChiller'
|
|
2009
|
+
search_criteria['compressor_type'] = chlr_props['compressor_type']
|
|
2010
|
+
chiller_electric_eir_apply_curves_and_cop(chiller_air_cooled, search_criteria)
|
|
1968
2011
|
end
|
|
1969
2012
|
|
|
1970
2013
|
#=============================================================================================================================
|
|
@@ -1975,11 +2018,20 @@ class ECMS
|
|
|
1975
2018
|
# maximum district cooling rate on the summer design day.
|
|
1976
2019
|
|
|
1977
2020
|
cw_loops = model.getPlantLoops.select{|loop| loop.sizingPlant.loopType.to_s.downcase == 'condenser'}
|
|
1978
|
-
ghx_loops = cw_loops.select {|loop| loop.name.to_s.downcase.include? 'glhx'}
|
|
2021
|
+
ghx_loops = cw_loops.select { |loop| loop.name.to_s.downcase.include? 'glhx' }
|
|
1979
2022
|
return if ghx_loops.empty?
|
|
1980
2023
|
ghx_loop = ghx_loops[0]
|
|
1981
|
-
dist_htg_eqpts = ghx_loop.supplyComponents.select {|comp| comp.
|
|
1982
|
-
|
|
2024
|
+
dist_htg_eqpts = ghx_loop.supplyComponents.select { |comp| comp.iddObjectType.valueName.to_s.include?('DistrictHeating') }
|
|
2025
|
+
if !dist_htg_eqpts.empty?
|
|
2026
|
+
case dist_htg_eqpts[0].iddObjectType.valueName.to_s
|
|
2027
|
+
when 'OS_DistrictHeating'
|
|
2028
|
+
dist_htg_eqpt = dist_htg_eqpts[0].to_DistrictHeating.get
|
|
2029
|
+
when 'OS_DistrictHeatingWater'
|
|
2030
|
+
dist_htg_eqpt = dist_htg_eqpts[0].to_DistrictHeatingWater.get
|
|
2031
|
+
when 'OS_DistrictHeatingSteam'
|
|
2032
|
+
dist_htg_eqpt = dist_htg_eqpts[0].to_DistrictHeatingSteam.get
|
|
2033
|
+
end
|
|
2034
|
+
end
|
|
1983
2035
|
dist_clg_eqpts = ghx_loop.supplyComponents.select {|comp| comp.to_DistrictCooling.is_initialized}
|
|
1984
2036
|
dist_clg_eqpt = dist_clg_eqpts[0].to_DistrictCooling.get if !dist_clg_eqpts.empty?
|
|
1985
2037
|
raise("set_cond_loop_district_cap: condenser loop doesn't have a district heating and district cooling objects") if dist_htg_eqpts.empty? || dist_clg_eqpts.empty?
|
|
@@ -2101,14 +2153,13 @@ class ECMS
|
|
|
2101
2153
|
capacity_w = coil_heating_dx_single_speed_find_capacity(coil_heating_dx_single_speed)
|
|
2102
2154
|
capacity_w = [1.0,capacity_w].max
|
|
2103
2155
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2104
|
-
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
2105
2156
|
|
|
2106
2157
|
# Lookup efficiencies
|
|
2107
2158
|
props = model_find_object(standards_data['tables']['heat_pump_heating_ecm']['table'], search_criteria, capacity_btu_per_hr)
|
|
2108
2159
|
|
|
2109
2160
|
# Check to make sure properties were found
|
|
2110
2161
|
if props.nil?
|
|
2111
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXSingleSpeed', "For #{coil_heating_dx_single_speed.name}, cannot find efficiency info using #{search_criteria}
|
|
2162
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXSingleSpeed', "For #{coil_heating_dx_single_speed.name}, cannot find efficiency info using #{search_criteria}.")
|
|
2112
2163
|
successfully_set_all_properties = false
|
|
2113
2164
|
end
|
|
2114
2165
|
|
|
@@ -2168,6 +2219,62 @@ class ECMS
|
|
|
2168
2219
|
|
|
2169
2220
|
end
|
|
2170
2221
|
|
|
2222
|
+
# =============================================================================================================================
|
|
2223
|
+
# Applies the performance curves "ChillerElectricEIR" object.
|
|
2224
|
+
def chiller_electric_eir_apply_curves_and_cop(chiller_electric_eir, search_criteria)
|
|
2225
|
+
successfully_set_all_properties = true
|
|
2226
|
+
|
|
2227
|
+
# Get the capacity
|
|
2228
|
+
capacity_w = chiller_electric_eir_find_capacity(chiller_electric_eir)
|
|
2229
|
+
capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
|
|
2230
|
+
|
|
2231
|
+
# Lookup performance curves
|
|
2232
|
+
chlr_props = model_find_object(standards_data['tables']['chillers_ecm']['table'], search_criteria, capacity_tons)
|
|
2233
|
+
|
|
2234
|
+
# Check to make sure properties were found
|
|
2235
|
+
if chlr_props.nil?
|
|
2236
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standard.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find efficiency info using #{search_criteria}")
|
|
2237
|
+
successfully_set_all_properties = false
|
|
2238
|
+
end
|
|
2239
|
+
|
|
2240
|
+
# CAP-FT curve
|
|
2241
|
+
capft = model_add_curve(chiller_electric_eir.model, chlr_props['capft'])
|
|
2242
|
+
if capft
|
|
2243
|
+
chiller_electric_eir.setCoolingCapacityFunctionOfTemperature(capft)
|
|
2244
|
+
else
|
|
2245
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standard.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find cap_ft curve, will not be set.")
|
|
2246
|
+
successfully_set_all_properties = false
|
|
2247
|
+
end
|
|
2248
|
+
|
|
2249
|
+
# EIR-FT curve
|
|
2250
|
+
eirft = model_add_curve(chiller_electric_eir.model, chlr_props['eirft'])
|
|
2251
|
+
if eirft
|
|
2252
|
+
chiller_electric_eir.setElectricInputToCoolingOutputRatioFunctionOfTemperature(eirft)
|
|
2253
|
+
else
|
|
2254
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standard.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find eir_ft curve, will not be set.")
|
|
2255
|
+
successfully_set_all_properties = false
|
|
2256
|
+
end
|
|
2257
|
+
|
|
2258
|
+
# EIR-FPLR curve
|
|
2259
|
+
eirfplr = model_add_curve(chiller_electric_eir.model, chlr_props['eirfplr'])
|
|
2260
|
+
if eirfplr
|
|
2261
|
+
chiller_electric_eir.setElectricInputToCoolingOutputRatioFunctionOfPLR(eirfplr)
|
|
2262
|
+
else
|
|
2263
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standard.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find eir_fplr curve, will not be set.")
|
|
2264
|
+
successfully_set_all_properties = false
|
|
2265
|
+
end
|
|
2266
|
+
|
|
2267
|
+
# set COP
|
|
2268
|
+
cop = chlr_props['minimum_coefficient_of_performance_cooling'].to_f
|
|
2269
|
+
if cop
|
|
2270
|
+
chiller_electric_eir.setReferenceCOP(cop)
|
|
2271
|
+
else
|
|
2272
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standard.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find cop, will not be set.")
|
|
2273
|
+
successfully_set_all_properties = false
|
|
2274
|
+
end
|
|
2275
|
+
|
|
2276
|
+
end
|
|
2277
|
+
|
|
2171
2278
|
# =============================================================================================================================
|
|
2172
2279
|
# Applies the performance curves "CoilCoolingDXVariableSpeed" object.
|
|
2173
2280
|
def coil_cooling_dx_variable_speed_apply_curves(coil_cooling_dx_variable_speed, eqpt_name)
|
|
@@ -2177,7 +2284,6 @@ class ECMS
|
|
|
2177
2284
|
capacity_w = coil_cooling_dx_variable_speed_find_capacity(coil_cooling_dx_variable_speed)
|
|
2178
2285
|
capacity_w = [1.0,capacity_w].max
|
|
2179
2286
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2180
|
-
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
2181
2287
|
|
|
2182
2288
|
# Lookup performance curves
|
|
2183
2289
|
search_criteria = {}
|
|
@@ -2250,14 +2356,13 @@ class ECMS
|
|
|
2250
2356
|
capacity_w = coil_heating_dx_variable_speed_find_capacity(coil_heating_dx_variable_speed)
|
|
2251
2357
|
capacity_w = [1.0,capacity_w].max
|
|
2252
2358
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2253
|
-
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
2254
2359
|
|
|
2255
2360
|
# Lookup performance curves
|
|
2256
2361
|
props = model_find_object(standards_data['tables']['heat_pump_heating_ecm']['table'], search_criteria, capacity_btu_per_hr)
|
|
2257
2362
|
|
|
2258
2363
|
# Check to make sure properties were found
|
|
2259
2364
|
if props.nil?
|
|
2260
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{coil_heating_dx_variable_speed.name}, cannot find efficiency info using #{search_criteria}
|
|
2365
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{coil_heating_dx_variable_speed.name}, cannot find efficiency info using #{search_criteria}.")
|
|
2261
2366
|
successfully_set_all_properties = false
|
|
2262
2367
|
end
|
|
2263
2368
|
|
|
@@ -2328,7 +2433,6 @@ class ECMS
|
|
|
2328
2433
|
capacity_w = airconditioner_variablerefrigerantflow_cooling_find_capacity(airconditioner_variablerefrigerantflow)
|
|
2329
2434
|
capacity_w = [1.0,capacity_w].max
|
|
2330
2435
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2331
|
-
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
2332
2436
|
|
|
2333
2437
|
# Lookup performance curves
|
|
2334
2438
|
props = model_find_object(standards_data['tables']['heat_pump_cooling_ecm']['table'], search_criteria, capacity_btu_per_hr)
|
|
@@ -2460,7 +2564,6 @@ class ECMS
|
|
|
2460
2564
|
capacity_w = airconditioner_variablerefrigerantflow_heating_find_capacity(airconditioner_variablerefrigerantflow)
|
|
2461
2565
|
capacity_w = [1.0,capacity_w].max
|
|
2462
2566
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2463
|
-
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
2464
2567
|
|
|
2465
2568
|
# Lookup performance curves
|
|
2466
2569
|
props = model_find_object(standards_data['tables']['heat_pump_heating_ecm']['table'], search_criteria, capacity_btu_per_hr)
|
|
@@ -2587,12 +2690,12 @@ class ECMS
|
|
|
2587
2690
|
|
|
2588
2691
|
# Check to make sure properties were found
|
|
2589
2692
|
if ac_props.nil?
|
|
2590
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name}, cannot find efficiency info using #{search_criteria}
|
|
2693
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name}, cannot find efficiency info using #{search_criteria}.")
|
|
2591
2694
|
successfully_set_all_properties = false
|
|
2592
2695
|
return successfully_set_all_properties
|
|
2593
2696
|
end
|
|
2594
2697
|
|
|
2595
|
-
# Get the minimum efficiency
|
|
2698
|
+
# Get the minimum efficiency
|
|
2596
2699
|
cop = nil
|
|
2597
2700
|
|
|
2598
2701
|
# If specified as SEER
|
|
@@ -2659,12 +2762,12 @@ class ECMS
|
|
|
2659
2762
|
|
|
2660
2763
|
# Check to make sure properties were found
|
|
2661
2764
|
if props.nil?
|
|
2662
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXSingleSpeed', "For #{coil_heating_dx_single_speed.name}, cannot find efficiency info using #{search_criteria}
|
|
2765
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXSingleSpeed', "For #{coil_heating_dx_single_speed.name}, cannot find efficiency info using #{search_criteria}")
|
|
2663
2766
|
successfully_set_all_properties = false
|
|
2664
2767
|
return successfully_set_all_properties
|
|
2665
2768
|
end
|
|
2666
2769
|
|
|
2667
|
-
# Get the minimum efficiency
|
|
2770
|
+
# Get the minimum efficiency
|
|
2668
2771
|
cop = nil
|
|
2669
2772
|
|
|
2670
2773
|
# If specified as EER
|
|
@@ -2723,12 +2826,12 @@ class ECMS
|
|
|
2723
2826
|
|
|
2724
2827
|
# Check to make sure properties were found
|
|
2725
2828
|
if ac_props.nil?
|
|
2726
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXVariableSpeed', "For #{coil_cooling_dx_variable_speed.name}, cannot find efficiency info using #{search_criteria}
|
|
2829
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXVariableSpeed', "For #{coil_cooling_dx_variable_speed.name}, cannot find efficiency info using #{search_criteria}.")
|
|
2727
2830
|
successfully_set_all_properties = false
|
|
2728
2831
|
return successfully_set_all_properties
|
|
2729
2832
|
end
|
|
2730
2833
|
|
|
2731
|
-
# Get the minimum efficiency
|
|
2834
|
+
# Get the minimum efficiency
|
|
2732
2835
|
cop = nil
|
|
2733
2836
|
|
|
2734
2837
|
# If specified as SEER
|
|
@@ -2795,12 +2898,12 @@ class ECMS
|
|
|
2795
2898
|
|
|
2796
2899
|
# Check to make sure properties were found
|
|
2797
2900
|
if props.nil?
|
|
2798
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{coil_heating_dx_variable_speed.name}, cannot find efficiency info using #{search_criteria}
|
|
2901
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{coil_heating_dx_variable_speed.name}, cannot find efficiency info using #{search_criteria}.")
|
|
2799
2902
|
successfully_set_all_properties = false
|
|
2800
2903
|
return successfully_set_all_properties
|
|
2801
2904
|
end
|
|
2802
2905
|
|
|
2803
|
-
# Get the minimum efficiency
|
|
2906
|
+
# Get the minimum efficiency
|
|
2804
2907
|
cop = nil
|
|
2805
2908
|
|
|
2806
2909
|
# If specified as EER
|
|
@@ -2859,12 +2962,12 @@ class ECMS
|
|
|
2859
2962
|
|
|
2860
2963
|
# Check to make sure properties were found
|
|
2861
2964
|
if props.nil?
|
|
2862
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name}, cannot find efficiency info using #{search_criteria}
|
|
2965
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name}, cannot find efficiency info using #{search_criteria}.")
|
|
2863
2966
|
successfully_set_all_properties = false
|
|
2864
2967
|
return successfully_set_all_properties
|
|
2865
2968
|
end
|
|
2866
2969
|
|
|
2867
|
-
# Get the minimum efficiency
|
|
2970
|
+
# Get the minimum efficiency
|
|
2868
2971
|
cop = nil
|
|
2869
2972
|
|
|
2870
2973
|
# If specified as EER
|
|
@@ -2923,12 +3026,12 @@ class ECMS
|
|
|
2923
3026
|
|
|
2924
3027
|
# Check to make sure properties were found
|
|
2925
3028
|
if props.nil?
|
|
2926
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name}, cannot find heating efficiency info using #{search_criteria}
|
|
3029
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name}, cannot find heating efficiency info using #{search_criteria}.")
|
|
2927
3030
|
successfully_set_all_properties = false
|
|
2928
3031
|
return successfully_set_all_properties
|
|
2929
3032
|
end
|
|
2930
3033
|
|
|
2931
|
-
# Get the minimum efficiency
|
|
3034
|
+
# Get the minimum efficiency
|
|
2932
3035
|
cop = nil
|
|
2933
3036
|
|
|
2934
3037
|
# If specified as EER
|
|
@@ -2981,7 +3084,7 @@ class ECMS
|
|
|
2981
3084
|
elsif coil_cooling_dx_variable_speed.autosizedGrossRatedTotalCoolingCapacityAtSelectedNominalSpeedLevel.is_initialized
|
|
2982
3085
|
capacity_w = coil_cooling_dx_variable_speed.autosizedGrossRatedTotalCoolingCapacityAtSelectedNominalSpeedLevel.get
|
|
2983
3086
|
else
|
|
2984
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXVariableSpeed', "For #{coil_cooling_dx_variable_speed.name} capacity is not available
|
|
3087
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXVariableSpeed', "For #{coil_cooling_dx_variable_speed.name} capacity is not available.")
|
|
2985
3088
|
return 0.0
|
|
2986
3089
|
end
|
|
2987
3090
|
|
|
@@ -2997,7 +3100,7 @@ class ECMS
|
|
|
2997
3100
|
elsif coil_heating_dx_variable_speed.autosizedRatedHeatingCapacityAtSelectedNominalSpeedLevel.is_initialized
|
|
2998
3101
|
capacity_w = coil_heating_dx_variable_speed.autosizedRatedHeatingCapacityAtSelectedNominalSpeedLevel.get
|
|
2999
3102
|
else
|
|
3000
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{coil_heating_dx_variable_speed.name} capacity is not available
|
|
3103
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{coil_heating_dx_variable_speed.name} capacity is not available.")
|
|
3001
3104
|
return 0.0
|
|
3002
3105
|
end
|
|
3003
3106
|
|
|
@@ -3014,7 +3117,7 @@ class ECMS
|
|
|
3014
3117
|
capacity_w = airconditioner_variablerefrigerantflow.autosizedRatedTotalCoolingCapacity.get
|
|
3015
3118
|
airconditioner_variablerefrigerantflow.setRatedTotalCoolingCapacity(capacity_w)
|
|
3016
3119
|
else
|
|
3017
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name} cooling capacity is not available
|
|
3120
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name} cooling capacity is not available.")
|
|
3018
3121
|
return 0.0
|
|
3019
3122
|
end
|
|
3020
3123
|
|
|
@@ -3031,7 +3134,24 @@ class ECMS
|
|
|
3031
3134
|
capacity_w = airconditioner_variablerefrigerantflow.autosizedRatedTotalHeatingCapacity.get
|
|
3032
3135
|
airconditioner_variablerefrigerantflow.setRatedTotalHeatingCapacity(capacity_w)
|
|
3033
3136
|
else
|
|
3034
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name} heating capacity is not available
|
|
3137
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name} heating capacity is not available.")
|
|
3138
|
+
return 0.0
|
|
3139
|
+
end
|
|
3140
|
+
|
|
3141
|
+
return capacity_w
|
|
3142
|
+
end
|
|
3143
|
+
|
|
3144
|
+
# =============================================================================================================================
|
|
3145
|
+
# Find cooling capacity for "ChillerElectricEIR" object
|
|
3146
|
+
def chiller_electric_eir_find_capacity(chiller_electric_eir)
|
|
3147
|
+
capacity_w = nil
|
|
3148
|
+
if chiller_electric_eir.referenceCapacity.is_initialized
|
|
3149
|
+
capacity_w = chiller_electric_eir.referenceCapacity.get
|
|
3150
|
+
elsif chiller_electric_eir.autosizedRererenceCapacity.is_initialized
|
|
3151
|
+
capacity_w = chiller_electric_eir.autosizedRerenceCapacity.get
|
|
3152
|
+
chiller_electric_eir.setReferenceCapacity(capacity_w)
|
|
3153
|
+
else
|
|
3154
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name} capacity not available")
|
|
3035
3155
|
return 0.0
|
|
3036
3156
|
end
|
|
3037
3157
|
|
|
@@ -3234,7 +3354,7 @@ class ECMS
|
|
|
3234
3354
|
# If an efficiency is set but is not between 0.01 and 1.0 it returns an error. Otherwise, it looks for mixed water
|
|
3235
3355
|
# heaters. If it finds any it then calls the reset_shw_efficiency method which resets the the shw efficiency and the
|
|
3236
3356
|
# part load curve. It also renames the shw tank with the following pattern:
|
|
3237
|
-
#
|
|
3357
|
+
# {volume}Gal {eff_name} Water Heater - {Capacity}kBtu/hr {efficiency} Therm Eff
|
|
3238
3358
|
def modify_shw_efficiency(model:, shw_eff: nil)
|
|
3239
3359
|
return if shw_eff.nil?
|
|
3240
3360
|
|
|
@@ -3279,7 +3399,7 @@ class ECMS
|
|
|
3279
3399
|
# This method sets the efficiency of the shw heater to whatever is entered in eff["efficiency"]. It then looks for the
|
|
3280
3400
|
# "part_load_curve" value in the curves.json file. If it does not find one it returns an error. If it finds one it
|
|
3281
3401
|
# resets the part load curve to whatever was found. It then renames the shw tank according to the following pattern:
|
|
3282
|
-
#
|
|
3402
|
+
# {volume}Gal {eff_name} Water Heater - {Capacity}kBtu/hr {efficiency} Therm Eff
|
|
3283
3403
|
def reset_shw_efficiency(model:, component:, eff:)
|
|
3284
3404
|
return if component.heaterFuelType.to_s.upcase == 'ELECTRICITY'
|
|
3285
3405
|
|
|
@@ -90,7 +90,7 @@ class ECMS
|
|
|
90
90
|
# Method for calculating footprint of the building model
|
|
91
91
|
def calculate_building_footprint(model:)
|
|
92
92
|
building_footprint_m2_array = []
|
|
93
|
-
lowest_floor = 10000000000.0 # dummy number as initialization to find the lowest floor among spaces #
|
|
93
|
+
lowest_floor = 10000000000.0 # dummy number as initialization to find the lowest floor among spaces # @todo Question:it it fine that it has been assumed that the floor of all lowest spaces are at the same level?
|
|
94
94
|
model.getSpaces.sort.each do |space|
|
|
95
95
|
space.surfaces.sort.select { |surface| (surface.surfaceType == 'Floor') && (surface.outsideBoundaryCondition != 'Surface') && (surface.outsideBoundaryCondition != 'Adiabatic') }.each do |surface|
|
|
96
96
|
floor_vertices = surface.vertices
|
|
@@ -4,7 +4,7 @@ class NECB2011
|
|
|
4
4
|
# e.g. (Prototype.secondary_school.rb) file.
|
|
5
5
|
#
|
|
6
6
|
# @param (see #add_constructions)
|
|
7
|
-
# @return [
|
|
7
|
+
# @return [Boolean] returns true if successful, false if not
|
|
8
8
|
def model_create_thermal_zones(model, space_multiplier_map = nil)
|
|
9
9
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started creating thermal zones')
|
|
10
10
|
space_multiplier_map = {} if space_multiplier_map.nil?
|
|
@@ -193,8 +193,14 @@ class NECB2011
|
|
|
193
193
|
@stored_space_cooling_sizing_loads = {}
|
|
194
194
|
model.getSpaces.sort.each do |space|
|
|
195
195
|
space_type = space.spaceType.get.standardsSpaceType.get
|
|
196
|
-
|
|
197
|
-
|
|
196
|
+
|
|
197
|
+
# error if zone design load methods are not available
|
|
198
|
+
if space.model.version < OpenStudio::VersionString.new('3.6.0')
|
|
199
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.autozone', "Required ThermalZone methods .autosizedHeatingDesignLoad and .autosizedCoolingDesignLoad are not available in pre-OpenStudio 3.6.0 versions. Use a more recent version of OpenStudio.")
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
@stored_space_heating_sizing_loads[space] = space_type == '- undefined -' ? 0.0 : space.thermalZone.get.autosizedHeatingDesignLoad.get / space.floorArea
|
|
203
|
+
@stored_space_cooling_sizing_loads[space] = space_type == '- undefined -' ? 0.0 : space.thermalZone.get.autosizedCoolingDesignLoad.get / space.floorArea
|
|
198
204
|
end
|
|
199
205
|
end
|
|
200
206
|
|
|
@@ -795,7 +801,7 @@ class NECB2011
|
|
|
795
801
|
end
|
|
796
802
|
|
|
797
803
|
# This model determines the dominant NECB schedule type
|
|
798
|
-
# @param model [OpenStudio::
|
|
804
|
+
# @param model [OpenStudio::Model::Model] A model object
|
|
799
805
|
# return s.each [String]
|
|
800
806
|
def determine_dominant_necb_schedule_type(model)
|
|
801
807
|
return determine_dominant_schedule(model.getSpaces)
|