openstudio-standards 0.2.10 → 0.2.11.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/data/geometry/ASHRAE90120042007LargeHotel.osm +101 -0
- data/data/geometry/ASHRAE90120042007RetailStandalone.osm +220 -0
- data/data/geometry/ASHRAE9012010LargeHotel.osm +101 -0
- data/data/geometry/ASHRAE9012010RetailStandalone.osm +218 -32
- data/data/geometry/ASHRAE9012013FullServiceRestaurant.osm +17 -0
- data/data/geometry/ASHRAE9012013Hospital.osm +288 -0
- data/data/geometry/ASHRAE9012013LargeHotel.osm +113 -12
- data/data/geometry/ASHRAE9012013LargeOffice.osm +205 -1
- data/data/geometry/ASHRAE9012013MediumOffice.osm +103 -1
- data/data/geometry/ASHRAE9012013Outpatient.osm +390 -102
- data/data/geometry/ASHRAE9012013PrimarySchool.osm +424 -0
- data/data/geometry/ASHRAE9012013QuickServiceRestaurant.osm +16 -0
- data/data/geometry/ASHRAE9012013RetailStandalone.osm +220 -0
- data/data/geometry/ASHRAE9012013SecondarySchool.osm +543 -0
- data/data/geometry/ASHRAE9012013SmallHotel.osm +50 -0
- data/data/geometry/ASHRAE9012013SmallOffice.osm +33 -0
- data/data/geometry/ASHRAE9012013Warehouse.osm +475 -238
- data/data/geometry/ASHRAEFullServiceRestaurant.osm +16 -0
- data/data/geometry/ASHRAEHospital.osm +288 -0
- data/data/geometry/ASHRAELargeOffice.osm +205 -1
- data/data/geometry/ASHRAELargeOfficeDetailed.osm +32 -32
- data/data/geometry/ASHRAEMediumOffice.osm +103 -1
- data/data/geometry/ASHRAEOutpatient.osm +390 -102
- data/data/geometry/ASHRAEPrimarySchool.osm +424 -0
- data/data/geometry/ASHRAEQuickServiceRestaurant.osm +16 -0
- data/data/geometry/ASHRAESecondarySchool.osm +1011 -162
- data/data/geometry/ASHRAESmallHotel.osm +50 -0
- data/data/geometry/ASHRAESmallOffice.osm +33 -0
- data/data/geometry/ASHRAEWarehouse.osm +476 -238
- data/data/standards/manage_OpenStudio_Standards.rb +1 -1
- data/data/standards/openstudio_standards_duplicates_log.csv +16 -0
- data/data/standards/test_performance_expected_dd_results.csv +1216 -1216
- data/data/weather/ARE_Abu.Dhabi.412170_IWEC.ddy +536 -0
- data/data/weather/ARE_Abu.Dhabi.412170_IWEC.epw +8768 -0
- data/data/weather/ARE_Abu.Dhabi.412170_IWEC.stat +544 -0
- data/data/weather/ARE_Dubai.Intl.AP.411940_IWEC2.ddy +533 -0
- data/data/weather/ARE_Dubai.Intl.AP.411940_IWEC2.epw +8768 -0
- data/data/weather/ARE_Dubai.Intl.AP.411940_IWEC2.stat +553 -0
- data/data/weather/VNM_Hanoi.488200_IWEC.ddy +533 -0
- data/data/weather/VNM_Hanoi.488200_IWEC.epw +8768 -0
- data/data/weather/VNM_Hanoi.488200_IWEC.stat +544 -0
- data/data/weather/VNM_Ho.Chi.Minh.City-Tan.Son.Nhat.AP.489000_IWEC2.ddy +533 -0
- data/data/weather/VNM_Ho.Chi.Minh.City-Tan.Son.Nhat.AP.489000_IWEC2.epw +8768 -0
- data/data/weather/VNM_Ho.Chi.Minh.City-Tan.Son.Nhat.AP.489000_IWEC2.stat +546 -0
- data/lib/openstudio-standards.rb +27 -0
- data/lib/openstudio-standards/btap/btap.model.rb +4 -4
- data/lib/openstudio-standards/btap/btap_result.rb +8 -8
- data/lib/openstudio-standards/btap/economics.rb +11 -11
- data/lib/openstudio-standards/btap/envelope.rb +5 -5
- data/lib/openstudio-standards/btap/hvac.rb +55 -11
- data/lib/openstudio-standards/btap/measures.rb +7 -7
- data/lib/openstudio-standards/btap/spaceloads.rb +4 -4
- data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +105 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.ControllerOutdoorAir.rb +2 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +0 -8
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +0 -8
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +0 -8
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +0 -8
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +6 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.HeatExchangerAirToAirSensibleAndLatent.rb +9 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +3 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +22 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanConstantVolume.rb +32 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanOnOff.rb +33 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanVariableVolume.rb +32 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerAirToAirSensibleAndLatent.rb +9 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.elevators.rb +25 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +35 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.hvac_systems.rb +11 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +17 -3
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +9 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +9 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +22 -3
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +9 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +9 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +107 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +9 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +3 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +9 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +0 -8
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +2 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +15 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +45 -5
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +21 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +251 -364
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +4 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +4 -5
- data/lib/openstudio-standards/refs/references.rb +4 -0
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +283 -97
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +5 -5
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +3 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Construction.rb +53 -45
- data/lib/openstudio-standards/standards/Standards.Fan.rb +10 -2
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.Model.rb +39 -18
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +8 -8
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +12 -12
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.Space.rb +190 -181
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +36 -59
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +3 -3
- data/lib/openstudio-standards/standards/Standards.Surface.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +16 -12
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +16 -5
- 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/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +159 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.spc_typ.json +1354 -1075
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +557 -17
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +28 -28
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ground_temperatures.json +36 -36
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +233 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +159 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +1356 -1077
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +480 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +28 -28
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ground_temperatures.json +36 -36
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +241 -14
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +12 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +159 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +1367 -1087
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +480 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ground_temperatures.json +36 -36
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +233 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +20 -27
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +8 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +159 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +1432 -1138
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +480 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ground_temperatures.json +36 -36
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +241 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.climate_zone_sets.json +37 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.climate_zones.json +39 -15
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +489 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +250 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.fans.json +12 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.materials.json +1920 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +5265 -9
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +159 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +2441 -1925
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.construction_properties.json +16658 -2578
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +212 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +11 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +159 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +2403 -1889
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.construction_properties.json +16664 -2584
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +209 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +11 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.construction_properties.json +4113 -513
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.construction_sets.json +40 -40
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.elevators.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.ground_temperatures.json +650 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.heat_pumps.json +90 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.heat_pumps_heating.json +25 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +1909 -32
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.water_heaters.json +8 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +147 -155
- 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.HeatExchangerSensLat.rb +29 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +45 -73
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.ZoneHVACComponent.rb +4 -72
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.boilers.json +20 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.chillers.json +400 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.construction_properties.json +4444 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.construction_sets.json +391 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.economizers.json +536 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.elevators.json +36 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ext_ltg.json +169 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ground_temperatures.json +650 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.heat_pumps.json +290 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.heat_pumps_heating.json +164 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.heat_rejection.json +40 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.motors.json +274 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.prototype_inputs.json +704 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.refrigeration_compressors.json +22 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +6424 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.unitary_acs.json +142 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.water_heaters.json +72 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.water_source_heat_pumps.json +31 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.water_source_heat_pumps_heating.json +13 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +829 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +24 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTower.rb +19 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerSingleSpeed.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerTwoSpeed.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +16 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.FanVariableVolume.rb +37 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +34 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +80 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +68 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +146 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.ThermalZone.rb +23 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.ZoneHVACComponent.rb +8 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.rb +16 -0
- data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.economizers.json +18 -0
- data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.heat_pumps_heating.json +1 -1
- data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.heat_pumps_heating.json +5 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +5 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +5 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +5 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +8 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +12 -12
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +4 -0
- metadata +102 -18
- data/data/standards/OpenStudio_Standards-ashrae_90_1(space_types).xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/OpenStudio_Standards-cbes(space_types).xlsx +0 -0
- data/data/standards/OpenStudio_Standards-cbes.xlsx +0 -0
- data/data/standards/OpenStudio_Standards-deer(space_types).xlsx +0 -0
- data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
- data/data/standards/OpenStudio_Standards-deer.xlsx +0 -0
- data/data/standards/OpenStudio_Standards_LA100.xlsx +0 -0
- data/data/standards/junk/legacy_dd_results - Copy.csv +0 -960
- data/data/standards/junk/legacy_dd_results.csv +0 -960
- data/data/standards/junk/legacy_dd_results_new - Copy.csv +0 -960
- data/data/standards/junk/legacy_dd_results_new.csv +0 -960
- data/data/standards/junk/legacy_dd_results_original.csv +0 -960
- data/lib/openstudio-standards/standards/necb/NECB2011/newway.json +0 -8102
@@ -0,0 +1,24 @@
|
|
1
|
+
class ZEAEDGMultifamily < ASHRAE901
|
2
|
+
# @!group AirTerminalSingleDuctVAVReheat
|
3
|
+
|
4
|
+
# Specifies the minimum damper position for VAV dampers.
|
5
|
+
# For terminals with hot water heat and DDC, the minimum is 20%,
|
6
|
+
# otherwise the minimum is 30%.
|
7
|
+
#
|
8
|
+
# @param has_ddc [Bool] whether or not there is DDC control of the VAV terminal in question
|
9
|
+
def air_terminal_single_duct_vav_reheat_minimum_damper_position(air_terminal_single_duct_vav_reheat, has_ddc = true)
|
10
|
+
min_damper_position = nil
|
11
|
+
case air_terminal_single_duct_vav_reheat_reheat_type(air_terminal_single_duct_vav_reheat)
|
12
|
+
when 'HotWater'
|
13
|
+
min_damper_position = if has_ddc
|
14
|
+
0.2
|
15
|
+
else
|
16
|
+
0.3
|
17
|
+
end
|
18
|
+
when 'Electricity', 'NaturalGas'
|
19
|
+
min_damper_position = 0.3
|
20
|
+
end
|
21
|
+
|
22
|
+
return min_damper_position
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# A variety of cooling tower methods that are the same regardless of type.
|
2
|
+
# These methods are available to CoolingTowerSingleSpeed, CoolingTowerTwoSpeed, and CoolingTowerVariableSpeed
|
3
|
+
module ZEAEDGMultifamilyCoolingTower
|
4
|
+
# @!group CoolingTower
|
5
|
+
|
6
|
+
# Above this point, centrifugal fan cooling towers must meet the limits
|
7
|
+
# of propeller or axial cooling towers instead.
|
8
|
+
# 90.1 6.5.5.3 Limit on Centrifugal Fan Open Circuit Cooling Towers.
|
9
|
+
# is 1,100 gallons per minute.
|
10
|
+
#
|
11
|
+
# @param cooling_tower [OpenStudio::Model::CoolingTowerSingleSpeed,
|
12
|
+
# OpenStudio::Model::CoolingTowerTwoSpeed,
|
13
|
+
# OpenStudio::Model::CoolingTowerVariableSpeed] the cooling tower
|
14
|
+
# @return [Double] the limit, in gallons per minute. Return nil for no limit.
|
15
|
+
def cooling_tower_apply_minimum_power_per_flow_gpm_limit(cooling_tower)
|
16
|
+
gpm_limit = 1100
|
17
|
+
return gpm_limit
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class ZEAEDGMultifamily < ASHRAE901
|
2
|
+
# @!group CoolingTowerVariableSpeed
|
3
|
+
|
4
|
+
include ZEAEDGMultifamilyCoolingTower
|
5
|
+
|
6
|
+
# Apply the efficiency, plus Multicell heat rejection with VSD per 90.1-2013 6.5.2.2
|
7
|
+
#
|
8
|
+
# @param cooling_tower_variable_speed [OpenStudio::Model::CoolingTowerVariableSpeed] the cooling tower
|
9
|
+
def cooling_tower_variable_speed_apply_efficiency_and_curves(cooling_tower_variable_speed)
|
10
|
+
cooling_tower_apply_minimum_power_per_flow(cooling_tower_variable_speed)
|
11
|
+
|
12
|
+
cooling_tower_variable_speed.setCellControl('MaximalCell')
|
13
|
+
|
14
|
+
return true
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class ZEAEDGMultifamily < ASHRAE901
|
2
|
+
# @!group FanVariableVolume
|
3
|
+
|
4
|
+
# The threhold horsepower below which part load control is not required.
|
5
|
+
# Per 90.1-2013, table 6.5.3.2.1: the fan motor size for chiller-water
|
6
|
+
# and evaporative cooling is 0.25 hp as of 1/1/2014 instead of 5 hp
|
7
|
+
#
|
8
|
+
# @param fan_variable_volume [OpenStudio::Model::FanVariableVolume] the fan
|
9
|
+
# @return [Double] the limit, in horsepower. Return nil for no limit by default.
|
10
|
+
def fan_variable_volume_part_load_fan_power_limitation_hp_limit(fan_variable_volume)
|
11
|
+
hp_limit = case fan_variable_volume_cooling_system_type(fan_variable_volume)
|
12
|
+
when 'dx'
|
13
|
+
0.0
|
14
|
+
when 'chw'
|
15
|
+
0.25
|
16
|
+
when 'evap'
|
17
|
+
0.25
|
18
|
+
end
|
19
|
+
|
20
|
+
return hp_limit
|
21
|
+
end
|
22
|
+
|
23
|
+
# The threhold capacity below which part load control is not required.
|
24
|
+
# Per 90.1-2013, table 6.5.3.2.1: the cooling capacity threshold is 75000
|
25
|
+
# instead of 110000 as of 1/1/2014
|
26
|
+
#
|
27
|
+
# @param fan_variable_volume [OpenStudio::Model::FanVariableVolume] the fan
|
28
|
+
# @return [Double] the limit, in Btu/hr. Return nil for no limit by default.
|
29
|
+
def fan_variable_volume_part_load_fan_power_limitation_capacity_limit(fan_variable_volume)
|
30
|
+
cap_limit_btu_per_hr = case fan_variable_volume_cooling_system_type(fan_variable_volume)
|
31
|
+
when 'dx'
|
32
|
+
110_000
|
33
|
+
end
|
34
|
+
|
35
|
+
return cap_limit_btu_per_hr
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class ZEAEDGMultifamily < ASHRAE901
|
2
|
+
# @!group HeatExchangerSensLat
|
3
|
+
|
4
|
+
# Sets the minimum effectiveness of the heat exchanger
|
5
|
+
def heat_exchanger_air_to_air_sensible_and_latent_apply_efficiency(heat_exchanger_air_to_air_sensible_and_latent)
|
6
|
+
# Assumed to be sensible and latent at all flow
|
7
|
+
heat_exchanger_type = heat_exchanger_air_to_air_sensible_and_latent.heatExchangerType
|
8
|
+
|
9
|
+
if heat_exchanger_type == 'Plate'
|
10
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(0.755)
|
11
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(0.564)
|
12
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(0.791)
|
13
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(0.625)
|
14
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(0.755)
|
15
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(0.564)
|
16
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(0.791)
|
17
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(0.625)
|
18
|
+
heat_exchanger_air_to_air_sensible_and_latent.setNominalElectricPower(0.0)
|
19
|
+
else # Rotary
|
20
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(0.75)
|
21
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(0.74)
|
22
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(0.79)
|
23
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(0.79)
|
24
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(0.75)
|
25
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(0.74)
|
26
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(0.78)
|
27
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(0.78)
|
28
|
+
end
|
29
|
+
|
30
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.ze_aedg_multifamily.HeatExchangerAirToAirSensibleAndLatent', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}, set sensible and latent effectiveness to #{heat_exchanger_type} values.")
|
31
|
+
|
32
|
+
return true
|
33
|
+
end
|
34
|
+
end
|
data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
class ZEAEDGMultifamily < ASHRAE901
|
2
|
+
# @!group Model
|
3
|
+
|
4
|
+
# Applies the HVAC parts of the template to all objects in the model using the the template specified in the model.
|
5
|
+
def model_apply_hvac_efficiency_standard(model, climate_zone, apply_controls: true)
|
6
|
+
sql_db_vars_map = {}
|
7
|
+
|
8
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started applying HVAC efficiency standards for nrel_zne_ready_2017 template.')
|
9
|
+
|
10
|
+
# Air Loop Controls
|
11
|
+
if apply_controls.nil? || apply_controls == true
|
12
|
+
model.getAirLoopHVACs.sort.each { |obj| air_loop_hvac_apply_standard_controls(obj, climate_zone) unless air_loop_hvac_unitary_system?(obj) }
|
13
|
+
end
|
14
|
+
|
15
|
+
# Plant Loop Controls
|
16
|
+
|
17
|
+
# Zone HVAC Controls
|
18
|
+
model.getZoneHVACComponents.sort.each { |obj| zone_hvac_component_apply_standard_controls(obj) }
|
19
|
+
|
20
|
+
##### Apply equipment efficiencies
|
21
|
+
|
22
|
+
# Fans
|
23
|
+
model.getFanVariableVolumes.sort.each { |obj| fan_apply_standard_minimum_motor_efficiency(obj, fan_brake_horsepower(obj)) }
|
24
|
+
model.getFanConstantVolumes.sort.each { |obj| fan_apply_standard_minimum_motor_efficiency(obj, fan_brake_horsepower(obj)) }
|
25
|
+
model.getFanOnOffs.sort.each { |obj| fan_apply_standard_minimum_motor_efficiency(obj, fan_brake_horsepower(obj)) }
|
26
|
+
model.getFanZoneExhausts.sort.each { |obj| fan_apply_standard_minimum_motor_efficiency(obj, fan_brake_horsepower(obj)) }
|
27
|
+
model.getZoneHVACComponents.sort.each { |obj| zone_hvac_component_apply_prm_baseline_fan_power(obj) }
|
28
|
+
|
29
|
+
# Pumps
|
30
|
+
model.getPumpConstantSpeeds.sort.each { |obj| pump_apply_standard_minimum_motor_efficiency(obj) }
|
31
|
+
model.getPumpVariableSpeeds.sort.each { |obj| pump_apply_standard_minimum_motor_efficiency(obj) }
|
32
|
+
model.getHeaderedPumpsConstantSpeeds.sort.each { |obj| pump_apply_standard_minimum_motor_efficiency(obj) }
|
33
|
+
model.getHeaderedPumpsVariableSpeeds.sort.each { |obj| pump_apply_standard_minimum_motor_efficiency(obj) }
|
34
|
+
model.getPlantLoops.sort.each { |obj| plant_loop_apply_prm_baseline_pumping_type(obj) unless plant_loop_swh_loop?(obj) }
|
35
|
+
|
36
|
+
# Unitary HPs
|
37
|
+
# set DX HP coils before DX clg coils because when DX HP coils need to first
|
38
|
+
# pull the capacities of their paired DX clg coils, and this does not work
|
39
|
+
# correctly if the DX clg coil efficiencies have been set because they are renamed.
|
40
|
+
model.getCoilHeatingDXSingleSpeeds.sort.each { |obj| sql_db_vars_map = coil_heating_dx_single_speed_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
41
|
+
|
42
|
+
# Unitary ACs
|
43
|
+
model.getCoilCoolingDXTwoSpeeds.sort.each { |obj| sql_db_vars_map = coil_cooling_dx_two_speed_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
44
|
+
model.getCoilCoolingDXSingleSpeeds.sort.each { |obj| sql_db_vars_map = coil_cooling_dx_single_speed_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
45
|
+
|
46
|
+
# WSHPs
|
47
|
+
# set WSHP heating coils before cooling coils to get cooling coil capacities before they are renamed
|
48
|
+
model.getCoilHeatingWaterToAirHeatPumpEquationFits.sort.each { |obj| sql_db_vars_map = coil_heating_water_to_air_heat_pump_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
49
|
+
model.getCoilCoolingWaterToAirHeatPumpEquationFits.sort.each { |obj| sql_db_vars_map = coil_cooling_water_to_air_heat_pump_apply_efficiency_and_curves(obj, sql_db_vars_map) }
|
50
|
+
|
51
|
+
# Chillers
|
52
|
+
clg_tower_objs = model.getCoolingTowerSingleSpeeds
|
53
|
+
model.getChillerElectricEIRs.sort.each { |obj| chiller_electric_eir_apply_efficiency_and_curves(obj, clg_tower_objs) }
|
54
|
+
|
55
|
+
# Boilers
|
56
|
+
model.getBoilerHotWaters.sort.each { |obj| boiler_hot_water_apply_efficiency_and_curves(obj) }
|
57
|
+
|
58
|
+
# Water Heaters
|
59
|
+
model.getWaterHeaterMixeds.sort.each { |obj| water_heater_mixed_apply_efficiency(obj) }
|
60
|
+
|
61
|
+
# Cooling Towers
|
62
|
+
model.getCoolingTowerSingleSpeeds.sort.each { |obj| cooling_tower_single_speed_apply_efficiency_and_curves(obj) }
|
63
|
+
model.getCoolingTowerTwoSpeeds.sort.each { |obj| cooling_tower_two_speed_apply_efficiency_and_curves(obj) }
|
64
|
+
model.getCoolingTowerVariableSpeeds.sort.each { |obj| cooling_tower_variable_speed_apply_efficiency_and_curves(obj) }
|
65
|
+
|
66
|
+
# Fluid Coolers
|
67
|
+
model.getFluidCoolerSingleSpeeds.sort.each { |obj| fluid_cooler_apply_minimum_power_per_flow(obj) }
|
68
|
+
model.getFluidCoolerTwoSpeeds.sort.each { |obj| fluid_cooler_apply_minimum_power_per_flow(obj) }
|
69
|
+
model.getEvaporativeFluidCoolerSingleSpeeds.sort.each { |obj| fluid_cooler_apply_minimum_power_per_flow(obj) }
|
70
|
+
model.getEvaporativeFluidCoolerTwoSpeeds.sort.each { |obj| fluid_cooler_apply_minimum_power_per_flow(obj) }
|
71
|
+
|
72
|
+
# ERVs
|
73
|
+
model.getHeatExchangerAirToAirSensibleAndLatents.each { |obj| heat_exchanger_air_to_air_sensible_and_latent_apply_efficiency(obj) }
|
74
|
+
|
75
|
+
# Gas Heaters
|
76
|
+
model.getCoilHeatingGass.sort.each { |obj| coil_heating_gas_apply_efficiency_and_curves(obj) }
|
77
|
+
|
78
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished applying HVAC efficiency standards for ZE AEDG Multifamily template.')
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
class ZEAEDGMultifamily < ASHRAE901
|
2
|
+
# @!group PlantLoop
|
3
|
+
|
4
|
+
# Applies the chilled water pumping controls to the loop
|
5
|
+
def plant_loop_apply_prm_baseline_chilled_water_pumping_type(plant_loop)
|
6
|
+
pri_control_type = 'VSD DP Reset'
|
7
|
+
sec_control_type = 'VSD DP Reset'
|
8
|
+
has_secondary_pump = false
|
9
|
+
|
10
|
+
# Modify all the secondary pumps
|
11
|
+
plant_loop.demandComponents.each do |sc|
|
12
|
+
if sc.to_PumpVariableSpeed.is_initialized
|
13
|
+
pump = sc.to_PumpVariableSpeed.get
|
14
|
+
pump_variable_speed_set_control_type(pump, sec_control_type)
|
15
|
+
has_secondary_pump = true
|
16
|
+
elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
|
17
|
+
pump = sc.to_HeaderedPumpsVariableSpeed.get
|
18
|
+
headered_pump_variable_speed_set_control_type(pump, control_type)
|
19
|
+
has_secondary_pump = true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Primary is constant flow if primary/secondary setup
|
24
|
+
pri_control_type = 'Constant Flow' if has_secondary_pump
|
25
|
+
|
26
|
+
# Modify all the primary pumps
|
27
|
+
plant_loop.supplyComponents.each do |sc|
|
28
|
+
if sc.to_PumpVariableSpeed.is_initialized
|
29
|
+
pump = sc.to_PumpVariableSpeed.get
|
30
|
+
pump_variable_speed_set_control_type(pump, pri_control_type)
|
31
|
+
elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
|
32
|
+
pump = sc.to_HeaderedPumpsVariableSpeed.get
|
33
|
+
headered_pump_variable_speed_set_control_type(pump, control_type)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Report out the pumping type
|
38
|
+
unless pri_control_type.nil?
|
39
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{plant_loop.name}, primary pump type is #{pri_control_type}.")
|
40
|
+
end
|
41
|
+
|
42
|
+
if has_secondary_pump
|
43
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{plant_loop.name}, secondary pump type is #{sec_control_type}.")
|
44
|
+
end
|
45
|
+
|
46
|
+
return true
|
47
|
+
end
|
48
|
+
|
49
|
+
# Applies the hot water pumping controls to the loop
|
50
|
+
def plant_loop_apply_prm_baseline_hot_water_pumping_type(plant_loop)
|
51
|
+
control_type = 'VSD DP Reset'
|
52
|
+
|
53
|
+
# Modify all the primary pumps
|
54
|
+
plant_loop.supplyComponents.each do |sc|
|
55
|
+
if sc.to_PumpVariableSpeed.is_initialized
|
56
|
+
pump = sc.to_PumpVariableSpeed.get
|
57
|
+
pump_variable_speed_set_control_type(pump, control_type)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Report out the pumping type
|
62
|
+
unless control_type.nil?
|
63
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.PlantLoop', "For #{plant_loop.name}, pump type is #{control_type}.")
|
64
|
+
end
|
65
|
+
|
66
|
+
return true
|
67
|
+
end
|
68
|
+
end
|
data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
class ZEAEDGMultifamily < ASHRAE901
|
2
|
+
# @!group Space
|
3
|
+
|
4
|
+
# Determines the method used to extend the daylighted area horizontally
|
5
|
+
# next to a window. If the method is 'fixed', 2 ft is added to the
|
6
|
+
# width of each window. If the method is 'proportional', a distance
|
7
|
+
# equal to half of the head height of the window is added. If the method is 'none',
|
8
|
+
# no additional width is added.
|
9
|
+
#
|
10
|
+
# @return [String] returns 'fixed' or 'proportional'
|
11
|
+
def space_daylighted_area_window_width(space)
|
12
|
+
method = 'proportional'
|
13
|
+
return method
|
14
|
+
end
|
15
|
+
|
16
|
+
# Determine if the space requires daylighting controls for
|
17
|
+
# toplighting, primary sidelighting, and secondary sidelighting.
|
18
|
+
# Defaults to false for all types.
|
19
|
+
#
|
20
|
+
# @param space [OpenStudio::Model::Space] the space in question
|
21
|
+
# @param areas [Hash] a hash of daylighted areas
|
22
|
+
# @return [Array<Bool>] req_top_ctrl, req_pri_ctrl, req_sec_ctrl
|
23
|
+
def space_daylighting_control_required?(space, areas)
|
24
|
+
req_top_ctrl = true
|
25
|
+
req_pri_ctrl = true
|
26
|
+
req_sec_ctrl = true
|
27
|
+
|
28
|
+
# Get the LPD of the space
|
29
|
+
space_lpd_w_per_m2 = space.lightingPowerPerFloorArea
|
30
|
+
|
31
|
+
# Primary Sidelighting
|
32
|
+
# Check if the primary sidelit area contains less than 150W of lighting
|
33
|
+
if areas['primary_sidelighted_area'] == 0.0
|
34
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.model.Space', "For #{space.name}, primary sidelighting control not required because primary sidelighted area = 0ft2 per 9.4.1.1(e).")
|
35
|
+
req_pri_ctrl = false
|
36
|
+
elsif areas['primary_sidelighted_area'] * space_lpd_w_per_m2 < 150.0
|
37
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Space', "For #{space.name}, primary sidelighting control not required because less than 150W of lighting are present in the primary daylighted area per 9.4.1.1(e).")
|
38
|
+
req_pri_ctrl = false
|
39
|
+
else
|
40
|
+
# Check the size of the windows
|
41
|
+
if areas['total_window_area'] < OpenStudio.convert(20.0, 'ft^2', 'm^2').get
|
42
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Space', "For #{space.name}, primary sidelighting control not required because there are less than 20ft2 of window per 9.4.1.1(e) Exception 2.")
|
43
|
+
req_pri_ctrl = false
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# Secondary Sidelighting
|
48
|
+
# Check if the primary and secondary sidelit areas contains less than 300W of lighting
|
49
|
+
if areas['secondary_sidelighted_area'] == 0.0
|
50
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.model.Space', "For #{space.name}, secondary sidelighting control not required because secondary sidelighted area = 0ft2 per 9.4.1.1(e).")
|
51
|
+
req_sec_ctrl = false
|
52
|
+
elsif (areas['primary_sidelighted_area'] + areas['secondary_sidelighted_area']) * space_lpd_w_per_m2 < 300
|
53
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Space', "For #{space.name}, secondary sidelighting control not required because less than 300W of lighting are present in the combined primary and secondary daylighted areas per 9.4.1.1(e).")
|
54
|
+
req_sec_ctrl = false
|
55
|
+
else
|
56
|
+
# Check the size of the windows
|
57
|
+
if areas['total_window_area'] < OpenStudio.convert(20.0, 'ft^2', 'm^2').get
|
58
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Space', "For #{space.name}, secondary sidelighting control not required because there are less than 20ft2 of window per 9.4.1.1(e) Exception 2.")
|
59
|
+
req_sec_ctrl = false
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Toplighting
|
64
|
+
# Check if the toplit area contains less than 150W of lighting
|
65
|
+
if areas['toplighted_area'] == 0.0
|
66
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.model.Space', "For #{space.name}, toplighting control not required because toplighted area = 0ft2 per 9.4.1.1(f).")
|
67
|
+
req_top_ctrl = false
|
68
|
+
elsif areas['toplighted_area'] * space_lpd_w_per_m2 < 150
|
69
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Space', "For #{space.name}, toplighting control not required because less than 150W of lighting are present in the toplighted area per 9.4.1.1(f).")
|
70
|
+
req_top_ctrl = false
|
71
|
+
end
|
72
|
+
|
73
|
+
return [req_top_ctrl, req_pri_ctrl, req_sec_ctrl]
|
74
|
+
end
|
75
|
+
|
76
|
+
# Determine the fraction controlled by each sensor and which
|
77
|
+
# window each sensor should go near.
|
78
|
+
#
|
79
|
+
# @param space [OpenStudio::Model::Space] the space with the daylighting
|
80
|
+
# @param sorted_windows [Hash] a hash of windows, sorted by priority
|
81
|
+
# @param sorted_skylights [Hash] a hash of skylights, sorted by priority
|
82
|
+
# @param req_top_ctrl [Bool] if toplighting controls are required
|
83
|
+
# @param req_pri_ctrl [Bool] if primary sidelighting controls are required
|
84
|
+
# @param req_sec_ctrl [Bool] if secondary sidelighting controls are required
|
85
|
+
def space_daylighting_fractions_and_windows(space,
|
86
|
+
areas,
|
87
|
+
sorted_windows,
|
88
|
+
sorted_skylights,
|
89
|
+
req_top_ctrl,
|
90
|
+
req_pri_ctrl,
|
91
|
+
req_sec_ctrl)
|
92
|
+
sensor_1_frac = 0.0
|
93
|
+
sensor_2_frac = 0.0
|
94
|
+
sensor_1_window = nil
|
95
|
+
sensor_2_window = nil
|
96
|
+
|
97
|
+
# Get the area of the space
|
98
|
+
space_area_m2 = space.floorArea
|
99
|
+
|
100
|
+
if req_top_ctrl && req_pri_ctrl && req_sec_ctrl
|
101
|
+
# Sensor 1 controls toplighted area
|
102
|
+
sensor_1_frac = areas['toplighted_area'] / space_area_m2
|
103
|
+
sensor_1_window = sorted_skylights[0]
|
104
|
+
# Sensor 2 controls primary + secondary area
|
105
|
+
sensor_2_frac = (areas['primary_sidelighted_area'] + areas['secondary_sidelighted_area']) / space_area_m2
|
106
|
+
sensor_2_window = sorted_windows[0]
|
107
|
+
elsif !req_top_ctrl && req_pri_ctrl && req_sec_ctrl
|
108
|
+
# Sensor 1 controls primary area
|
109
|
+
sensor_1_frac = areas['primary_sidelighted_area'] / space_area_m2
|
110
|
+
sensor_1_window = sorted_windows[0]
|
111
|
+
# Sensor 2 controls secondary area
|
112
|
+
sensor_2_frac = (areas['secondary_sidelighted_area'] / space_area_m2)
|
113
|
+
sensor_2_window = sorted_windows[0]
|
114
|
+
elsif req_top_ctrl && !req_pri_ctrl && req_sec_ctrl
|
115
|
+
# Sensor 1 controls toplighted area
|
116
|
+
sensor_1_frac = areas['toplighted_area'] / space_area_m2
|
117
|
+
sensor_1_window = sorted_skylights[0]
|
118
|
+
# Sensor 2 controls secondary area
|
119
|
+
sensor_2_frac = (areas['secondary_sidelighted_area'] / space_area_m2)
|
120
|
+
sensor_2_window = sorted_windows[0]
|
121
|
+
elsif req_top_ctrl && !req_pri_ctrl && !req_sec_ctrl
|
122
|
+
# Sensor 1 controls toplighted area
|
123
|
+
sensor_1_frac = areas['toplighted_area'] / space_area_m2
|
124
|
+
sensor_1_window = sorted_skylights[0]
|
125
|
+
elsif !req_top_ctrl && req_pri_ctrl && !req_sec_ctrl
|
126
|
+
# Sensor 1 controls primary area
|
127
|
+
sensor_1_frac = areas['primary_sidelighted_area'] / space_area_m2
|
128
|
+
sensor_1_window = sorted_windows[0]
|
129
|
+
elsif !req_top_ctrl && !req_pri_ctrl && req_sec_ctrl
|
130
|
+
# Sensor 1 controls secondary area
|
131
|
+
sensor_1_frac = areas['secondary_sidelighted_area'] / space_area_m2
|
132
|
+
sensor_1_window = sorted_windows[0]
|
133
|
+
end
|
134
|
+
|
135
|
+
return [sensor_1_frac, sensor_2_frac, sensor_1_window, sensor_2_window]
|
136
|
+
end
|
137
|
+
|
138
|
+
# Determine the base infiltration rate at 75 PA.
|
139
|
+
#
|
140
|
+
# @return [Double] the baseline infiltration rate, in cfm/ft^2
|
141
|
+
# defaults to no infiltration.
|
142
|
+
def space_infiltration_rate_75_pa(space)
|
143
|
+
basic_infil_rate_cfm_per_ft2 = 0.5 # Half of 90.1-2013
|
144
|
+
return basic_infil_rate_cfm_per_ft2
|
145
|
+
end
|
146
|
+
end
|