openstudio-standards 0.2.10 → 0.2.11.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 +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,142 @@
|
|
1
|
+
{
|
2
|
+
"unitary_acs": [
|
3
|
+
{
|
4
|
+
"template": "ZE AEDG Multifamily",
|
5
|
+
"cooling_type": "AirCooled",
|
6
|
+
"heating_type": "All Other",
|
7
|
+
"subcategory": "PTAC",
|
8
|
+
"minimum_capacity": 0.0,
|
9
|
+
"maximum_capacity": 9999999.0,
|
10
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
11
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
12
|
+
"minimum_seasonal_energy_efficiency_ratio": null,
|
13
|
+
"minimum_energy_efficiency_ratio": null,
|
14
|
+
"minimum_integrated_part_load_value": null,
|
15
|
+
"minimum_integrated_energy_efficiency_ratio": null,
|
16
|
+
"ptac_eer_coefficient_1": 14.0,
|
17
|
+
"ptac_eer_coefficient_2": 0.3,
|
18
|
+
"minimum_scop": null,
|
19
|
+
"cool_cap_ft": "PSZ-Fine Storage DX Coil Cap-FT",
|
20
|
+
"cool_cap_fflow": "DX Coil Cap-FF",
|
21
|
+
"cool_eir_ft": "PSZ-AC DX Coil EIR-FT",
|
22
|
+
"cool_eir_fflow": "Split DX Coil EIR-FF",
|
23
|
+
"cool_plf_fplr": "HPACCOOLPLFFPLR",
|
24
|
+
"notes": " From 90.1-2016 Table 6.8.1-4"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"template": "ZE AEDG Multifamily",
|
28
|
+
"cooling_type": "AirCooled",
|
29
|
+
"heating_type": "All Other",
|
30
|
+
"subcategory": "Single Package",
|
31
|
+
"minimum_capacity": 0.0,
|
32
|
+
"maximum_capacity": 9999999.0,
|
33
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
34
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
35
|
+
"minimum_seasonal_energy_efficiency_ratio": null,
|
36
|
+
"minimum_energy_efficiency_ratio": 11.2,
|
37
|
+
"minimum_integrated_part_load_value": null,
|
38
|
+
"minimum_integrated_energy_efficiency_ratio": 12.9,
|
39
|
+
"ptac_eer_coefficient_1": null,
|
40
|
+
"ptac_eer_coefficient_2": null,
|
41
|
+
"minimum_scop": null,
|
42
|
+
"cool_cap_ft": "CoilClgDXQRatio_fTwbToadbSI",
|
43
|
+
"cool_cap_fflow": "CoilClgDXDblQRatio_fCFMRatio",
|
44
|
+
"cool_eir_ft": "CoilClgDXEIRRatio_fTwbToadbSI",
|
45
|
+
"cool_eir_fflow": "CoilClgDXDblEIRRatio_fCFMRatio",
|
46
|
+
"cool_plf_fplr": "CoilClgDXEIRRatio_fQFrac",
|
47
|
+
"notes": " From 90.1-2016 Table 6.8.1-4"
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"template": "ZE AEDG Multifamily",
|
51
|
+
"cooling_type": "AirCooled",
|
52
|
+
"heating_type": "All Other",
|
53
|
+
"subcategory": "Split System",
|
54
|
+
"minimum_capacity": 0.0,
|
55
|
+
"maximum_capacity": 9999999.0,
|
56
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
57
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
58
|
+
"minimum_seasonal_energy_efficiency_ratio": null,
|
59
|
+
"minimum_energy_efficiency_ratio": 11.2,
|
60
|
+
"minimum_integrated_part_load_value": null,
|
61
|
+
"minimum_integrated_energy_efficiency_ratio": 12.9,
|
62
|
+
"ptac_eer_coefficient_1": null,
|
63
|
+
"ptac_eer_coefficient_2": null,
|
64
|
+
"minimum_scop": null,
|
65
|
+
"cool_cap_ft": "CoilClgDXQRatio_fTwbToadbSI",
|
66
|
+
"cool_cap_fflow": "CoilClgDXDblQRatio_fCFMRatio",
|
67
|
+
"cool_eir_ft": "CoilClgDXEIRRatio_fTwbToadbSI",
|
68
|
+
"cool_eir_fflow": "CoilClgDXDblEIRRatio_fCFMRatio",
|
69
|
+
"cool_plf_fplr": "CoilClgDXEIRRatio_fQFrac",
|
70
|
+
"notes": " From 90.1-2016 Table 6.8.1-4"
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"template": "ZE AEDG Multifamily",
|
74
|
+
"cooling_type": "AirCooled",
|
75
|
+
"heating_type": "Electric Resistance or None",
|
76
|
+
"subcategory": "PTAC",
|
77
|
+
"minimum_capacity": 0.0,
|
78
|
+
"maximum_capacity": 9999999.0,
|
79
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
80
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
81
|
+
"minimum_seasonal_energy_efficiency_ratio": null,
|
82
|
+
"minimum_energy_efficiency_ratio": null,
|
83
|
+
"minimum_integrated_part_load_value": null,
|
84
|
+
"minimum_integrated_energy_efficiency_ratio": null,
|
85
|
+
"ptac_eer_coefficient_1": 14.0,
|
86
|
+
"ptac_eer_coefficient_2": 0.3,
|
87
|
+
"minimum_scop": null,
|
88
|
+
"cool_cap_ft": "PSZ-Fine Storage DX Coil Cap-FT",
|
89
|
+
"cool_cap_fflow": "DX Coil Cap-FF",
|
90
|
+
"cool_eir_ft": "PSZ-AC DX Coil EIR-FT",
|
91
|
+
"cool_eir_fflow": "Split DX Coil EIR-FF",
|
92
|
+
"cool_plf_fplr": "HPACCOOLPLFFPLR",
|
93
|
+
"notes": " From 90.1-2016 Table 6.8.1-4"
|
94
|
+
},
|
95
|
+
{
|
96
|
+
"template": "ZE AEDG Multifamily",
|
97
|
+
"cooling_type": "AirCooled",
|
98
|
+
"heating_type": "Electric Resistance or None",
|
99
|
+
"subcategory": "Single Package",
|
100
|
+
"minimum_capacity": 0.0,
|
101
|
+
"maximum_capacity": 9999999.0,
|
102
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
103
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
104
|
+
"minimum_seasonal_energy_efficiency_ratio": null,
|
105
|
+
"minimum_energy_efficiency_ratio": 11.2,
|
106
|
+
"minimum_integrated_part_load_value": null,
|
107
|
+
"minimum_integrated_energy_efficiency_ratio": 12.9,
|
108
|
+
"ptac_eer_coefficient_1": null,
|
109
|
+
"ptac_eer_coefficient_2": null,
|
110
|
+
"minimum_scop": null,
|
111
|
+
"cool_cap_ft": "CoilClgDXQRatio_fTwbToadbSI",
|
112
|
+
"cool_cap_fflow": "CoilClgDXDblQRatio_fCFMRatio",
|
113
|
+
"cool_eir_ft": "CoilClgDXEIRRatio_fTwbToadbSI",
|
114
|
+
"cool_eir_fflow": "CoilClgDXDblEIRRatio_fCFMRatio",
|
115
|
+
"cool_plf_fplr": "CoilClgDXEIRRatio_fQFrac",
|
116
|
+
"notes": " From 90.1-2016 Table 6.8.1-4"
|
117
|
+
},
|
118
|
+
{
|
119
|
+
"template": "ZE AEDG Multifamily",
|
120
|
+
"cooling_type": "AirCooled",
|
121
|
+
"heating_type": "Electric Resistance or None",
|
122
|
+
"subcategory": "Split System",
|
123
|
+
"minimum_capacity": 0.0,
|
124
|
+
"maximum_capacity": 9999999.0,
|
125
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
126
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
127
|
+
"minimum_seasonal_energy_efficiency_ratio": null,
|
128
|
+
"minimum_energy_efficiency_ratio": 11.2,
|
129
|
+
"minimum_integrated_part_load_value": null,
|
130
|
+
"minimum_integrated_energy_efficiency_ratio": 12.9,
|
131
|
+
"ptac_eer_coefficient_1": null,
|
132
|
+
"ptac_eer_coefficient_2": null,
|
133
|
+
"minimum_scop": null,
|
134
|
+
"cool_cap_ft": "CoilClgDXQRatio_fTwbToadbSI",
|
135
|
+
"cool_cap_fflow": "CoilClgDXDblQRatio_fCFMRatio",
|
136
|
+
"cool_eir_ft": "CoilClgDXEIRRatio_fTwbToadbSI",
|
137
|
+
"cool_eir_fflow": "CoilClgDXDblEIRRatio_fCFMRatio",
|
138
|
+
"cool_plf_fplr": "CoilClgDXEIRRatio_fQFrac",
|
139
|
+
"notes": " From 90.1-2016 Table 6.8.1-4"
|
140
|
+
}
|
141
|
+
]
|
142
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
{
|
2
|
+
"water_heaters": [
|
3
|
+
{
|
4
|
+
"template": "ZE AEDG Multifamily",
|
5
|
+
"fuel_type": "Electricity",
|
6
|
+
"minimum_capacity": 0.0,
|
7
|
+
"maximum_capacity": 40945.99,
|
8
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
9
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
10
|
+
"energy_factor_base": 0.97,
|
11
|
+
"energy_factor_volume_derate": "",
|
12
|
+
"standby_loss_base": null,
|
13
|
+
"standby_loss_capacity_allowance": null,
|
14
|
+
"standby_loss_volume_allowance": null,
|
15
|
+
"hourly_loss_base": null,
|
16
|
+
"hourly_loss_volume_allowance": null,
|
17
|
+
"thermal_efficiency": null,
|
18
|
+
"notes": "Code of Federal Regulations 10 CFR Part 430."
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"template": "ZE AEDG Multifamily",
|
22
|
+
"fuel_type": "Electricity",
|
23
|
+
"minimum_capacity": 40946.0,
|
24
|
+
"maximum_capacity": 99999999.0,
|
25
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
26
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
27
|
+
"energy_factor_base": null,
|
28
|
+
"energy_factor_volume_derate": null,
|
29
|
+
"standby_loss_base": 20.0,
|
30
|
+
"standby_loss_capacity_allowance": null,
|
31
|
+
"standby_loss_volume_allowance": 35.0,
|
32
|
+
"hourly_loss_base": null,
|
33
|
+
"hourly_loss_volume_allowance": null,
|
34
|
+
"thermal_efficiency": null,
|
35
|
+
"notes": "From 90.1-2016 Table 7.8"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"template": "ZE AEDG Multifamily",
|
39
|
+
"fuel_type": "NaturalGas",
|
40
|
+
"minimum_capacity": 0.0,
|
41
|
+
"maximum_capacity": 74999.99,
|
42
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
43
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
44
|
+
"energy_factor_base": 0.67,
|
45
|
+
"energy_factor_volume_derate": "",
|
46
|
+
"standby_loss_base": null,
|
47
|
+
"standby_loss_capacity_allowance": null,
|
48
|
+
"standby_loss_volume_allowance": null,
|
49
|
+
"hourly_loss_base": null,
|
50
|
+
"hourly_loss_volume_allowance": null,
|
51
|
+
"thermal_efficiency": null,
|
52
|
+
"notes": "Code of Federal Regulations 10 CFR Part 430."
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"template": "ZE AEDG Multifamily",
|
56
|
+
"fuel_type": "NaturalGas",
|
57
|
+
"minimum_capacity": 75000.0,
|
58
|
+
"maximum_capacity": 99999999.0,
|
59
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
60
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
61
|
+
"energy_factor_base": null,
|
62
|
+
"energy_factor_volume_derate": null,
|
63
|
+
"standby_loss_base": null,
|
64
|
+
"standby_loss_capacity_allowance": 799.0,
|
65
|
+
"standby_loss_volume_allowance": 16.6,
|
66
|
+
"hourly_loss_base": null,
|
67
|
+
"hourly_loss_volume_allowance": null,
|
68
|
+
"thermal_efficiency": 0.8,
|
69
|
+
"notes": "From 90.1-2016 Table 7.8"
|
70
|
+
}
|
71
|
+
]
|
72
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
{
|
2
|
+
"water_source_heat_pumps": [
|
3
|
+
{
|
4
|
+
"template": "ZE AEDG Multifamily",
|
5
|
+
"minimum_capacity": 0.0,
|
6
|
+
"maximum_capacity": 16999.0,
|
7
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
8
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
9
|
+
"minimum_full_load_efficiency": 18.2,
|
10
|
+
"notes": "From ZE AEDG Multifamily Committee"
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"template": "ZE AEDG Multifamily",
|
14
|
+
"minimum_capacity": 17000.0,
|
15
|
+
"maximum_capacity": 64999.0,
|
16
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
17
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
18
|
+
"minimum_full_load_efficiency": 18.2,
|
19
|
+
"notes": "From ZE AEDG Multifamily Committee"
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"template": "ZE AEDG Multifamily",
|
23
|
+
"minimum_capacity": 65000.0,
|
24
|
+
"maximum_capacity": 134999.0,
|
25
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
26
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
27
|
+
"minimum_full_load_efficiency": 18.2,
|
28
|
+
"notes": "From ZE AEDG Multifamily Committee"
|
29
|
+
}
|
30
|
+
]
|
31
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"water_source_heat_pumps_heating": [
|
3
|
+
{
|
4
|
+
"template": "ZE AEDG Multifamily",
|
5
|
+
"minimum_capacity": 0.0,
|
6
|
+
"maximum_capacity": 9999999.0,
|
7
|
+
"start_date": "1919-09-09T00:00:00+00:00",
|
8
|
+
"end_date": "2999-09-09T00:00:00+00:00",
|
9
|
+
"minimum_coefficient_of_performance_heating": 5.4,
|
10
|
+
"notes": "From ZE AEDG Multifamily Committee"
|
11
|
+
}
|
12
|
+
]
|
13
|
+
}
|
@@ -0,0 +1,829 @@
|
|
1
|
+
class ZEAEDGMultifamily < ASHRAE901
|
2
|
+
# @!group AirLoopHVAC
|
3
|
+
|
4
|
+
# Same as 90.1-2013
|
5
|
+
# Determine the limits for the type of economizer present on the AirLoopHVAC, if any.
|
6
|
+
# @return [Array<Double>] [drybulb_limit_f, enthalpy_limit_btu_per_lb, dewpoint_limit_f]
|
7
|
+
def air_loop_hvac_economizer_limits(air_loop_hvac, climate_zone)
|
8
|
+
drybulb_limit_f = nil
|
9
|
+
enthalpy_limit_btu_per_lb = nil
|
10
|
+
dewpoint_limit_f = nil
|
11
|
+
|
12
|
+
# Get the OA system and OA controller
|
13
|
+
oa_sys = air_loop_hvac.airLoopHVACOutdoorAirSystem
|
14
|
+
if oa_sys.is_initialized
|
15
|
+
oa_sys = oa_sys.get
|
16
|
+
else
|
17
|
+
return [nil, nil, nil] # No OA system
|
18
|
+
end
|
19
|
+
oa_control = oa_sys.getControllerOutdoorAir
|
20
|
+
economizer_type = oa_control.getEconomizerControlType
|
21
|
+
oa_control.resetEconomizerMinimumLimitDryBulbTemperature
|
22
|
+
|
23
|
+
case economizer_type
|
24
|
+
when 'NoEconomizer'
|
25
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name} no economizer")
|
26
|
+
return [nil, nil, nil]
|
27
|
+
when 'FixedDryBulb'
|
28
|
+
case climate_zone
|
29
|
+
when 'ASHRAE 169-2006-0B',
|
30
|
+
'ASHRAE 169-2006-1B',
|
31
|
+
'ASHRAE 169-2006-2B',
|
32
|
+
'ASHRAE 169-2006-3B',
|
33
|
+
'ASHRAE 169-2006-3C',
|
34
|
+
'ASHRAE 169-2006-4B',
|
35
|
+
'ASHRAE 169-2006-4C',
|
36
|
+
'ASHRAE 169-2006-5B',
|
37
|
+
'ASHRAE 169-2006-5C',
|
38
|
+
'ASHRAE 169-2006-6B',
|
39
|
+
'ASHRAE 169-2006-7A',
|
40
|
+
'ASHRAE 169-2006-7B',
|
41
|
+
'ASHRAE 169-2006-8A',
|
42
|
+
'ASHRAE 169-2006-8B',
|
43
|
+
'ASHRAE 169-2013-0B',
|
44
|
+
'ASHRAE 169-2013-1B',
|
45
|
+
'ASHRAE 169-2013-2B',
|
46
|
+
'ASHRAE 169-2013-3B',
|
47
|
+
'ASHRAE 169-2013-3C',
|
48
|
+
'ASHRAE 169-2013-4B',
|
49
|
+
'ASHRAE 169-2013-4C',
|
50
|
+
'ASHRAE 169-2013-5B',
|
51
|
+
'ASHRAE 169-2013-5C',
|
52
|
+
'ASHRAE 169-2013-6B',
|
53
|
+
'ASHRAE 169-2013-7A',
|
54
|
+
'ASHRAE 169-2013-7B',
|
55
|
+
'ASHRAE 169-2013-8A',
|
56
|
+
'ASHRAE 169-2013-8B'
|
57
|
+
drybulb_limit_f = 75.0
|
58
|
+
when 'ASHRAE 169-2006-5A',
|
59
|
+
'ASHRAE 169-2006-6A',
|
60
|
+
'ASHRAE 169-2013-5A',
|
61
|
+
'ASHRAE 169-2013-6A'
|
62
|
+
drybulb_limit_f = 70.0
|
63
|
+
end
|
64
|
+
when 'FixedEnthalpy'
|
65
|
+
enthalpy_limit_btu_per_lb = 28.0
|
66
|
+
when 'FixedDewPointAndDryBulb'
|
67
|
+
drybulb_limit_f = 75.0
|
68
|
+
dewpoint_limit_f = 55.0
|
69
|
+
when 'DifferentialDryBulb', 'DifferentialEnthalpy'
|
70
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Economizer type = #{economizer_type}, no limits defined.")
|
71
|
+
end
|
72
|
+
|
73
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Economizer type = #{economizer_type}, limits [#{drybulb_limit_f},#{enthalpy_limit_btu_per_lb},#{dewpoint_limit_f}]")
|
74
|
+
|
75
|
+
return [drybulb_limit_f, enthalpy_limit_btu_per_lb, dewpoint_limit_f]
|
76
|
+
end
|
77
|
+
|
78
|
+
# Same as 90.1-2013
|
79
|
+
# Determine if the system economizer must be integrated or not.
|
80
|
+
# All economizers must be integrated in NREL ZNE Ready 2017
|
81
|
+
def air_loop_hvac_integrated_economizer_required?(air_loop_hvac, climate_zone)
|
82
|
+
integrated_economizer_required = true
|
83
|
+
return integrated_economizer_required
|
84
|
+
end
|
85
|
+
|
86
|
+
# Same as 90.1-2013
|
87
|
+
# Check the economizer type currently specified in the ControllerOutdoorAir object on this air loop
|
88
|
+
# is acceptable per the standard.
|
89
|
+
#
|
90
|
+
# @param (see #economizer_required?)
|
91
|
+
# @return [Bool] Returns true if allowable, if the system has no economizer or no OA system.
|
92
|
+
# Returns false if the economizer type is not allowable.
|
93
|
+
def air_loop_hvac_economizer_type_allowable?(air_loop_hvac, climate_zone)
|
94
|
+
# EnergyPlus economizer types
|
95
|
+
# 'NoEconomizer'
|
96
|
+
# 'FixedDryBulb'
|
97
|
+
# 'FixedEnthalpy'
|
98
|
+
# 'DifferentialDryBulb'
|
99
|
+
# 'DifferentialEnthalpy'
|
100
|
+
# 'FixedDewPointAndDryBulb'
|
101
|
+
# 'ElectronicEnthalpy'
|
102
|
+
# 'DifferentialDryBulbAndEnthalpy'
|
103
|
+
|
104
|
+
# Get the OA system and OA controller
|
105
|
+
oa_sys = air_loop_hvac.airLoopHVACOutdoorAirSystem
|
106
|
+
if oa_sys.is_initialized
|
107
|
+
oa_sys = oa_sys.get
|
108
|
+
else
|
109
|
+
return true # No OA system
|
110
|
+
end
|
111
|
+
oa_control = oa_sys.getControllerOutdoorAir
|
112
|
+
economizer_type = oa_control.getEconomizerControlType
|
113
|
+
|
114
|
+
# Return true if no economizer is present
|
115
|
+
if economizer_type == 'NoEconomizer'
|
116
|
+
return true
|
117
|
+
end
|
118
|
+
|
119
|
+
# Determine the prohibited types
|
120
|
+
prohibited_types = []
|
121
|
+
case climate_zone
|
122
|
+
when 'ASHRAE 169-2006-0B',
|
123
|
+
'ASHRAE 169-2006-1B',
|
124
|
+
'ASHRAE 169-2006-2B',
|
125
|
+
'ASHRAE 169-2006-3B',
|
126
|
+
'ASHRAE 169-2006-3C',
|
127
|
+
'ASHRAE 169-2006-4B',
|
128
|
+
'ASHRAE 169-2006-4C',
|
129
|
+
'ASHRAE 169-2006-5B',
|
130
|
+
'ASHRAE 169-2006-6B',
|
131
|
+
'ASHRAE 169-2006-7A',
|
132
|
+
'ASHRAE 169-2006-7B',
|
133
|
+
'ASHRAE 169-2006-8A',
|
134
|
+
'ASHRAE 169-2006-8B',
|
135
|
+
'ASHRAE 169-2013-0B',
|
136
|
+
'ASHRAE 169-2013-1B',
|
137
|
+
'ASHRAE 169-2013-2B',
|
138
|
+
'ASHRAE 169-2013-3B',
|
139
|
+
'ASHRAE 169-2013-3C',
|
140
|
+
'ASHRAE 169-2013-4B',
|
141
|
+
'ASHRAE 169-2013-4C',
|
142
|
+
'ASHRAE 169-2013-5B',
|
143
|
+
'ASHRAE 169-2013-6B',
|
144
|
+
'ASHRAE 169-2013-7A',
|
145
|
+
'ASHRAE 169-2013-7B',
|
146
|
+
'ASHRAE 169-2013-8A',
|
147
|
+
'ASHRAE 169-2013-8B'
|
148
|
+
prohibited_types = ['FixedEnthalpy']
|
149
|
+
when 'ASHRAE 169-2006-0A',
|
150
|
+
'ASHRAE 169-2006-1A',
|
151
|
+
'ASHRAE 169-2006-2A',
|
152
|
+
'ASHRAE 169-2006-3A',
|
153
|
+
'ASHRAE 169-2006-4A',
|
154
|
+
'ASHRAE 169-2013-0A',
|
155
|
+
'ASHRAE 169-2013-1A',
|
156
|
+
'ASHRAE 169-2013-2A',
|
157
|
+
'ASHRAE 169-2013-3A',
|
158
|
+
'ASHRAE 169-2013-4A'
|
159
|
+
prohibited_types = ['FixedDryBulb', 'DifferentialDryBulb']
|
160
|
+
when 'ASHRAE 169-2006-5A',
|
161
|
+
'ASHRAE 169-2006-6A',
|
162
|
+
'ASHRAE 169-2013-5A',
|
163
|
+
'ASHRAE 169-2013-6A'
|
164
|
+
prohibited_types = []
|
165
|
+
end
|
166
|
+
|
167
|
+
# Check if the specified type is allowed
|
168
|
+
economizer_type_allowed = true
|
169
|
+
if prohibited_types.include?(economizer_type)
|
170
|
+
economizer_type_allowed = false
|
171
|
+
end
|
172
|
+
|
173
|
+
return economizer_type_allowed
|
174
|
+
end
|
175
|
+
|
176
|
+
# Same as 90.1-2013
|
177
|
+
# Determine if multizone vav optimization is required.
|
178
|
+
#
|
179
|
+
# @param (see #economizer_required?)
|
180
|
+
# @return [Bool] Returns true if required, false if not.
|
181
|
+
# @todo Add exception logic for
|
182
|
+
# systems with AIA healthcare ventilation requirements
|
183
|
+
# dual duct systems
|
184
|
+
def air_loop_hvac_multizone_vav_optimization_required?(air_loop_hvac, climate_zone)
|
185
|
+
multizone_opt_required = false
|
186
|
+
|
187
|
+
# Not required for systems with fan-powered terminals
|
188
|
+
num_fan_powered_terminals = 0
|
189
|
+
air_loop_hvac.demandComponents.each do |comp|
|
190
|
+
if comp.to_AirTerminalSingleDuctParallelPIUReheat.is_initialized || comp.to_AirTerminalSingleDuctSeriesPIUReheat.is_initialized
|
191
|
+
num_fan_powered_terminals += 1
|
192
|
+
end
|
193
|
+
end
|
194
|
+
if num_fan_powered_terminals > 0
|
195
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}, multizone vav optimization is not required because the system has #{num_fan_powered_terminals} fan-powered terminals.")
|
196
|
+
return multizone_opt_required
|
197
|
+
end
|
198
|
+
|
199
|
+
# Not required for systems that require an ERV
|
200
|
+
if air_loop_hvac_energy_recovery?(air_loop_hvac)
|
201
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: multizone vav optimization is not required because the system has Energy Recovery.")
|
202
|
+
return multizone_opt_required
|
203
|
+
end
|
204
|
+
|
205
|
+
# Get the OA intake
|
206
|
+
controller_oa = nil
|
207
|
+
controller_mv = nil
|
208
|
+
oa_system = nil
|
209
|
+
if air_loop_hvac.airLoopHVACOutdoorAirSystem.is_initialized
|
210
|
+
oa_system = air_loop_hvac.airLoopHVACOutdoorAirSystem.get
|
211
|
+
controller_oa = oa_system.getControllerOutdoorAir
|
212
|
+
controller_mv = controller_oa.controllerMechanicalVentilation
|
213
|
+
else
|
214
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}, multizone optimization is not applicable because system has no OA intake.")
|
215
|
+
return multizone_opt_required
|
216
|
+
end
|
217
|
+
|
218
|
+
# Get the AHU design supply air flow rate
|
219
|
+
dsn_flow_m3_per_s = nil
|
220
|
+
if air_loop_hvac.designSupplyAirFlowRate.is_initialized
|
221
|
+
dsn_flow_m3_per_s = air_loop_hvac.designSupplyAirFlowRate.get
|
222
|
+
elsif air_loop_hvac.autosizedDesignSupplyAirFlowRate.is_initialized
|
223
|
+
dsn_flow_m3_per_s = air_loop_hvac.autosizedDesignSupplyAirFlowRate.get
|
224
|
+
else
|
225
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name} design supply air flow rate is not available, cannot apply efficiency standard.")
|
226
|
+
return multizone_opt_required
|
227
|
+
end
|
228
|
+
dsn_flow_cfm = OpenStudio.convert(dsn_flow_m3_per_s, 'm^3/s', 'cfm').get
|
229
|
+
|
230
|
+
# Get the minimum OA flow rate
|
231
|
+
min_oa_flow_m3_per_s = nil
|
232
|
+
if controller_oa.minimumOutdoorAirFlowRate.is_initialized
|
233
|
+
min_oa_flow_m3_per_s = controller_oa.minimumOutdoorAirFlowRate.get
|
234
|
+
elsif controller_oa.autosizedMinimumOutdoorAirFlowRate.is_initialized
|
235
|
+
min_oa_flow_m3_per_s = controller_oa.autosizedMinimumOutdoorAirFlowRate.get
|
236
|
+
else
|
237
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "For #{controller_oa.name}: minimum OA flow rate is not available, cannot apply efficiency standard.")
|
238
|
+
return multizone_opt_required
|
239
|
+
end
|
240
|
+
min_oa_flow_cfm = OpenStudio.convert(min_oa_flow_m3_per_s, 'm^3/s', 'cfm').get
|
241
|
+
|
242
|
+
# Calculate the percent OA at design airflow
|
243
|
+
pct_oa = min_oa_flow_m3_per_s / dsn_flow_m3_per_s
|
244
|
+
|
245
|
+
# Not required for systems where
|
246
|
+
# exhaust is more than 70% of the total OA intake.
|
247
|
+
if pct_oa > 0.7
|
248
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{controller_oa.name}: multizone optimization is not applicable because system is more than 70% OA.")
|
249
|
+
return multizone_opt_required
|
250
|
+
end
|
251
|
+
|
252
|
+
# TODO: Not required for dual-duct systems
|
253
|
+
# if self.isDualDuct
|
254
|
+
# OpenStudio::logFree(OpenStudio::Info, "openstudio.standards.AirLoopHVAC", "For #{controller_oa.name}: multizone optimization is not applicable because it is a dual duct system")
|
255
|
+
# return multizone_opt_required
|
256
|
+
# end
|
257
|
+
|
258
|
+
# If here, multizone vav optimization is required
|
259
|
+
multizone_opt_required = true
|
260
|
+
|
261
|
+
return multizone_opt_required
|
262
|
+
end
|
263
|
+
|
264
|
+
# Determines the OA flow rates above which an economizer is required.
|
265
|
+
# Two separate rates, one for systems with an economizer and another
|
266
|
+
# for systems without.
|
267
|
+
# are zero for both types.
|
268
|
+
# @return [Array<Double>] [min_oa_without_economizer_cfm, min_oa_with_economizer_cfm]
|
269
|
+
def air_loop_hvac_demand_control_ventilation_limits(air_loop_hvac)
|
270
|
+
min_oa_without_economizer_cfm = 1500.0 # half the 90.1-2013 requirement
|
271
|
+
min_oa_with_economizer_cfm = 375.0 # half the 90.1-2013 requirement
|
272
|
+
return [min_oa_without_economizer_cfm, min_oa_with_economizer_cfm]
|
273
|
+
end
|
274
|
+
|
275
|
+
# Determine if the standard has an exception for demand control ventilation when an energy recovery device is present.
|
276
|
+
# DCV and an ERV may be used in conjunction.
|
277
|
+
def air_loop_hvac_dcv_required_when_erv(air_loop_hvac)
|
278
|
+
dcv_required_when_erv_present = true
|
279
|
+
return dcv_required_when_erv_present
|
280
|
+
end
|
281
|
+
|
282
|
+
# Same as 90.1-2013
|
283
|
+
# Determine the air flow and number of story limits for whether motorized OA damper is required.
|
284
|
+
# @return [Array<Double>] [minimum_oa_flow_cfm, maximum_stories]
|
285
|
+
def air_loop_hvac_motorized_oa_damper_limits(air_loop_hvac, climate_zone)
|
286
|
+
case climate_zone
|
287
|
+
when 'ASHRAE 169-2006-0A',
|
288
|
+
'ASHRAE 169-2006-0B',
|
289
|
+
'ASHRAE 169-2006-1A',
|
290
|
+
'ASHRAE 169-2006-1B',
|
291
|
+
'ASHRAE 169-2006-2A',
|
292
|
+
'ASHRAE 169-2006-2B',
|
293
|
+
'ASHRAE 169-2006-3A',
|
294
|
+
'ASHRAE 169-2006-3B',
|
295
|
+
'ASHRAE 169-2006-3C',
|
296
|
+
'ASHRAE 169-2013-0A',
|
297
|
+
'ASHRAE 169-2013-0B',
|
298
|
+
'ASHRAE 169-2013-1A',
|
299
|
+
'ASHRAE 169-2013-1B',
|
300
|
+
'ASHRAE 169-2013-2A',
|
301
|
+
'ASHRAE 169-2013-2B',
|
302
|
+
'ASHRAE 169-2013-3A',
|
303
|
+
'ASHRAE 169-2013-3B',
|
304
|
+
'ASHRAE 169-2013-3C'
|
305
|
+
minimum_oa_flow_cfm = 0
|
306
|
+
maximum_stories = 999 # Any number of stories
|
307
|
+
else
|
308
|
+
minimum_oa_flow_cfm = 0
|
309
|
+
maximum_stories = 0
|
310
|
+
end
|
311
|
+
|
312
|
+
return [minimum_oa_flow_cfm, maximum_stories]
|
313
|
+
end
|
314
|
+
|
315
|
+
# Same as 90.1-2013
|
316
|
+
# Determine the number of stages that should be used as controls for single zone DX systems.
|
317
|
+
# 90.1-2013 depends on the cooling capacity of the system.
|
318
|
+
#
|
319
|
+
# @return [Integer] the number of stages: 0, 1, 2
|
320
|
+
def air_loop_hvac_single_zone_controls_num_stages(air_loop_hvac, climate_zone)
|
321
|
+
min_clg_cap_btu_per_hr = 65_000
|
322
|
+
clg_cap_btu_per_hr = OpenStudio.convert(air_loop_hvac_total_cooling_capacity(air_loop_hvac), 'W', 'Btu/hr').get
|
323
|
+
if clg_cap_btu_per_hr >= min_clg_cap_btu_per_hr
|
324
|
+
num_stages = 2
|
325
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: two-stage control is required since cooling capacity of #{clg_cap_btu_per_hr.round} Btu/hr exceeds the minimum of #{min_clg_cap_btu_per_hr.round} Btu/hr .")
|
326
|
+
else
|
327
|
+
num_stages = 1
|
328
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: two-stage control is not required since cooling capacity of #{clg_cap_btu_per_hr.round} Btu/hr is less than the minimum of #{min_clg_cap_btu_per_hr.round} Btu/hr .")
|
329
|
+
end
|
330
|
+
|
331
|
+
return num_stages
|
332
|
+
end
|
333
|
+
|
334
|
+
# Same as 90.1-2013
|
335
|
+
# Determine if the system required supply air temperature (SAT) reset.
|
336
|
+
# For 90.1-2013, SAT reset requirements are based on climate zone.
|
337
|
+
#
|
338
|
+
# @param (see #economizer_required?)
|
339
|
+
# @return [Bool] Returns true if required, false if not.
|
340
|
+
def air_loop_hvac_supply_air_temperature_reset_required?(air_loop_hvac, climate_zone)
|
341
|
+
is_sat_reset_required = false
|
342
|
+
|
343
|
+
# Only required for multizone VAV systems
|
344
|
+
unless air_loop_hvac_multizone_vav_system?(air_loop_hvac)
|
345
|
+
return is_sat_reset_required
|
346
|
+
end
|
347
|
+
|
348
|
+
case climate_zone
|
349
|
+
when 'ASHRAE 169-2006-0A',
|
350
|
+
'ASHRAE 169-2006-1A',
|
351
|
+
'ASHRAE 169-2006-2A',
|
352
|
+
'ASHRAE 169-2006-3A',
|
353
|
+
'ASHRAE 169-2013-0A',
|
354
|
+
'ASHRAE 169-2013-1A',
|
355
|
+
'ASHRAE 169-2013-2A',
|
356
|
+
'ASHRAE 169-2013-3A'
|
357
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Supply air temperature reset is not required per 6.5.3.4 Exception 1, the system is located in climate zone #{climate_zone}.")
|
358
|
+
return is_sat_reset_required
|
359
|
+
when 'ASHRAE 169-2006-0B',
|
360
|
+
'ASHRAE 169-2006-1B',
|
361
|
+
'ASHRAE 169-2006-2B',
|
362
|
+
'ASHRAE 169-2006-3B',
|
363
|
+
'ASHRAE 169-2006-3C',
|
364
|
+
'ASHRAE 169-2006-4A',
|
365
|
+
'ASHRAE 169-2006-4B',
|
366
|
+
'ASHRAE 169-2006-4C',
|
367
|
+
'ASHRAE 169-2006-5A',
|
368
|
+
'ASHRAE 169-2006-5B',
|
369
|
+
'ASHRAE 169-2006-5C',
|
370
|
+
'ASHRAE 169-2006-6A',
|
371
|
+
'ASHRAE 169-2006-6B',
|
372
|
+
'ASHRAE 169-2006-7A',
|
373
|
+
'ASHRAE 169-2006-7B',
|
374
|
+
'ASHRAE 169-2006-8A',
|
375
|
+
'ASHRAE 169-2006-8B',
|
376
|
+
'ASHRAE 169-2013-0B',
|
377
|
+
'ASHRAE 169-2013-1B',
|
378
|
+
'ASHRAE 169-2013-2B',
|
379
|
+
'ASHRAE 169-2013-3B',
|
380
|
+
'ASHRAE 169-2013-3C',
|
381
|
+
'ASHRAE 169-2013-4A',
|
382
|
+
'ASHRAE 169-2013-4B',
|
383
|
+
'ASHRAE 169-2013-4C',
|
384
|
+
'ASHRAE 169-2013-5A',
|
385
|
+
'ASHRAE 169-2013-5B',
|
386
|
+
'ASHRAE 169-2013-5C',
|
387
|
+
'ASHRAE 169-2013-6A',
|
388
|
+
'ASHRAE 169-2013-6B',
|
389
|
+
'ASHRAE 169-2013-7A',
|
390
|
+
'ASHRAE 169-2013-7B',
|
391
|
+
'ASHRAE 169-2013-8A',
|
392
|
+
'ASHRAE 169-2013-8B'
|
393
|
+
is_sat_reset_required = true
|
394
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Supply air temperature reset is required.")
|
395
|
+
return is_sat_reset_required
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
# Default occupancy fraction threshold for determining if the spaces on the air loop are occupied
|
400
|
+
def air_loop_hvac_unoccupied_threshold
|
401
|
+
return 0.05
|
402
|
+
end
|
403
|
+
|
404
|
+
# Same as Standards method but with no DCV exception
|
405
|
+
# Check if ERV is required on this airloop.
|
406
|
+
#
|
407
|
+
# @return [Bool] Returns true if required, false if not.
|
408
|
+
def air_loop_hvac_energy_recovery_ventilator_required?(air_loop_hvac, climate_zone)
|
409
|
+
|
410
|
+
if air_loop_hvac.airLoopHVACOutdoorAirSystem.is_initialized
|
411
|
+
oa_system = air_loop_hvac.airLoopHVACOutdoorAirSystem.get
|
412
|
+
controller_oa = oa_system.getControllerOutdoorAir
|
413
|
+
controller_mv = controller_oa.controllerMechanicalVentilation
|
414
|
+
else
|
415
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}, ERV not applicable because it has no OA intake.")
|
416
|
+
return false
|
417
|
+
end
|
418
|
+
|
419
|
+
# Get the AHU design supply air flow rate
|
420
|
+
dsn_flow_m3_per_s = nil
|
421
|
+
if air_loop_hvac.designSupplyAirFlowRate.is_initialized
|
422
|
+
dsn_flow_m3_per_s = air_loop_hvac.designSupplyAirFlowRate.get
|
423
|
+
elsif air_loop_hvac.autosizedDesignSupplyAirFlowRate.is_initialized
|
424
|
+
dsn_flow_m3_per_s = air_loop_hvac.autosizedDesignSupplyAirFlowRate.get
|
425
|
+
else
|
426
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name} design supply air flow rate is not available, cannot apply efficiency standard.")
|
427
|
+
return false
|
428
|
+
end
|
429
|
+
dsn_flow_cfm = OpenStudio.convert(dsn_flow_m3_per_s, 'm^3/s', 'cfm').get
|
430
|
+
|
431
|
+
# Get the minimum OA flow rate
|
432
|
+
min_oa_flow_m3_per_s = nil
|
433
|
+
if controller_oa.minimumOutdoorAirFlowRate.is_initialized
|
434
|
+
min_oa_flow_m3_per_s = controller_oa.minimumOutdoorAirFlowRate.get
|
435
|
+
elsif controller_oa.autosizedMinimumOutdoorAirFlowRate.is_initialized
|
436
|
+
min_oa_flow_m3_per_s = controller_oa.autosizedMinimumOutdoorAirFlowRate.get
|
437
|
+
else
|
438
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "For #{controller_oa.name}: minimum OA flow rate is not available, cannot apply efficiency standard.")
|
439
|
+
return false
|
440
|
+
end
|
441
|
+
min_oa_flow_cfm = OpenStudio.convert(min_oa_flow_m3_per_s, 'm^3/s', 'cfm').get
|
442
|
+
|
443
|
+
# Calculate the percent OA at design airflow
|
444
|
+
pct_oa = min_oa_flow_m3_per_s / dsn_flow_m3_per_s
|
445
|
+
|
446
|
+
# Determine the airflow limit
|
447
|
+
erv_cfm = air_loop_hvac_energy_recovery_ventilator_flow_limit(air_loop_hvac, climate_zone, pct_oa)
|
448
|
+
|
449
|
+
# Determine if an ERV is required
|
450
|
+
if erv_cfm.nil?
|
451
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}, ERV not required based on #{(pct_oa * 100).round}% OA flow, design supply air flow of #{dsn_flow_cfm.round}cfm, and climate zone #{climate_zone}.")
|
452
|
+
erv_required = false
|
453
|
+
elsif dsn_flow_cfm < erv_cfm
|
454
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}, ERV not required based on #{(pct_oa * 100).round}% OA flow, design supply air flow of #{dsn_flow_cfm.round}cfm, and climate zone #{climate_zone}. Does not exceed minimum flow requirement of #{erv_cfm}cfm.")
|
455
|
+
erv_required = false
|
456
|
+
else
|
457
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}, ERV required based on #{(pct_oa * 100).round}% OA flow, design supply air flow of #{dsn_flow_cfm.round}cfm, and climate zone #{climate_zone}. Exceeds minimum flow requirement of #{erv_cfm}cfm.")
|
458
|
+
erv_required = true
|
459
|
+
end
|
460
|
+
|
461
|
+
return erv_required
|
462
|
+
end
|
463
|
+
|
464
|
+
# Same as 90.1-2016
|
465
|
+
# Determine the airflow limits that govern whether or not an ERV is required.
|
466
|
+
# Based on climate zone and % OA, plus the number of operating hours the system has.
|
467
|
+
# @return [Double] the flow rate above which an ERV is required.
|
468
|
+
# if nil, ERV is never required.
|
469
|
+
def air_loop_hvac_energy_recovery_ventilator_flow_limit(air_loop_hvac, climate_zone, pct_oa)
|
470
|
+
# Calculate the number of system operating hours
|
471
|
+
# based on the availability schedule.
|
472
|
+
ann_op_hrs = 0.0
|
473
|
+
avail_sch = air_loop_hvac.availabilitySchedule
|
474
|
+
if avail_sch == air_loop_hvac.model.alwaysOnDiscreteSchedule
|
475
|
+
ann_op_hrs = 8760.0
|
476
|
+
elsif avail_sch.to_ScheduleRuleset.is_initialized
|
477
|
+
avail_sch = avail_sch.to_ScheduleRuleset.get
|
478
|
+
ann_op_hrs = schedule_ruleset_annual_hours_above_value(avail_sch, 0.0)
|
479
|
+
else
|
480
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: could not determine annual operating hours. Assuming less than 8,000 for ERV determination.")
|
481
|
+
end
|
482
|
+
|
483
|
+
if ann_op_hrs < 8000.0
|
484
|
+
# Table 6.5.6.1-1, less than 8000 hrs
|
485
|
+
case climate_zone
|
486
|
+
when 'ASHRAE 169-2006-3B',
|
487
|
+
'ASHRAE 169-2006-3C',
|
488
|
+
'ASHRAE 169-2006-4B',
|
489
|
+
'ASHRAE 169-2006-4C',
|
490
|
+
'ASHRAE 169-2006-5B',
|
491
|
+
'ASHRAE 169-2013-3B',
|
492
|
+
'ASHRAE 169-2013-3C',
|
493
|
+
'ASHRAE 169-2013-4B',
|
494
|
+
'ASHRAE 169-2013-4C',
|
495
|
+
'ASHRAE 169-2013-5B'
|
496
|
+
if pct_oa < 0.1
|
497
|
+
erv_cfm = nil
|
498
|
+
elsif pct_oa >= 0.1 && pct_oa < 0.2
|
499
|
+
erv_cfm = nil
|
500
|
+
elsif pct_oa >= 0.2 && pct_oa < 0.3
|
501
|
+
erv_cfm = nil
|
502
|
+
elsif pct_oa >= 0.3 && pct_oa < 0.4
|
503
|
+
erv_cfm = nil
|
504
|
+
elsif pct_oa >= 0.4 && pct_oa < 0.5
|
505
|
+
erv_cfm = nil
|
506
|
+
elsif pct_oa >= 0.5 && pct_oa < 0.6
|
507
|
+
erv_cfm = nil
|
508
|
+
elsif pct_oa >= 0.6 && pct_oa < 0.7
|
509
|
+
erv_cfm = nil
|
510
|
+
elsif pct_oa >= 0.7 && pct_oa < 0.8
|
511
|
+
erv_cfm = nil
|
512
|
+
elsif pct_oa >= 0.8
|
513
|
+
erv_cfm = nil
|
514
|
+
end
|
515
|
+
when 'ASHRAE 169-2006-0B',
|
516
|
+
'ASHRAE 169-2006-1B',
|
517
|
+
'ASHRAE 169-2006-2B',
|
518
|
+
'ASHRAE 169-2006-5C',
|
519
|
+
'ASHRAE 169-2013-0B',
|
520
|
+
'ASHRAE 169-2013-1B',
|
521
|
+
'ASHRAE 169-2013-2B',
|
522
|
+
'ASHRAE 169-2013-5C'
|
523
|
+
if pct_oa < 0.1
|
524
|
+
erv_cfm = nil
|
525
|
+
elsif pct_oa >= 0.1 && pct_oa < 0.2
|
526
|
+
erv_cfm = nil
|
527
|
+
elsif pct_oa >= 0.2 && pct_oa < 0.3
|
528
|
+
erv_cfm = nil
|
529
|
+
elsif pct_oa >= 0.3 && pct_oa < 0.4
|
530
|
+
erv_cfm = nil
|
531
|
+
elsif pct_oa >= 0.4 && pct_oa < 0.5
|
532
|
+
erv_cfm = nil
|
533
|
+
elsif pct_oa >= 0.5 && pct_oa < 0.6
|
534
|
+
erv_cfm = 26_000
|
535
|
+
elsif pct_oa >= 0.6 && pct_oa < 0.7
|
536
|
+
erv_cfm = 12_000
|
537
|
+
elsif pct_oa >= 0.7 && pct_oa < 0.8
|
538
|
+
erv_cfm = 5000
|
539
|
+
elsif pct_oa >= 0.8
|
540
|
+
erv_cfm = 4000
|
541
|
+
end
|
542
|
+
when 'ASHRAE 169-2006-6B',
|
543
|
+
'ASHRAE 169-2013-6B'
|
544
|
+
if pct_oa < 0.1
|
545
|
+
erv_cfm = nil
|
546
|
+
elsif pct_oa >= 0.1 && pct_oa < 0.2
|
547
|
+
erv_cfm = 28_000
|
548
|
+
elsif pct_oa >= 0.2 && pct_oa < 0.3
|
549
|
+
erv_cfm = 26_500
|
550
|
+
elsif pct_oa >= 0.3 && pct_oa < 0.4
|
551
|
+
erv_cfm = 11_000
|
552
|
+
elsif pct_oa >= 0.4 && pct_oa < 0.5
|
553
|
+
erv_cfm = 5500
|
554
|
+
elsif pct_oa >= 0.5 && pct_oa < 0.6
|
555
|
+
erv_cfm = 4500
|
556
|
+
elsif pct_oa >= 0.6 && pct_oa < 0.7
|
557
|
+
erv_cfm = 3500
|
558
|
+
elsif pct_oa >= 0.7 && pct_oa < 0.8
|
559
|
+
erv_cfm = 2500
|
560
|
+
elsif pct_oa >= 0.8
|
561
|
+
erv_cfm = 1500
|
562
|
+
end
|
563
|
+
when 'ASHRAE 169-2006-0A',
|
564
|
+
'ASHRAE 169-2006-1A',
|
565
|
+
'ASHRAE 169-2006-2A',
|
566
|
+
'ASHRAE 169-2006-3A',
|
567
|
+
'ASHRAE 169-2006-4A',
|
568
|
+
'ASHRAE 169-2006-5A',
|
569
|
+
'ASHRAE 169-2006-6A',
|
570
|
+
'ASHRAE 169-2013-0A',
|
571
|
+
'ASHRAE 169-2006-1A',
|
572
|
+
'ASHRAE 169-2013-2A',
|
573
|
+
'ASHRAE 169-2013-3A',
|
574
|
+
'ASHRAE 169-2013-4A',
|
575
|
+
'ASHRAE 169-2013-5A',
|
576
|
+
'ASHRAE 169-2013-6A'
|
577
|
+
if pct_oa < 0.1
|
578
|
+
erv_cfm = nil
|
579
|
+
elsif pct_oa >= 0.1 && pct_oa < 0.2
|
580
|
+
erv_cfm = 26_000
|
581
|
+
elsif pct_oa >= 0.2 && pct_oa < 0.3
|
582
|
+
erv_cfm = 16_000
|
583
|
+
elsif pct_oa >= 0.3 && pct_oa < 0.4
|
584
|
+
erv_cfm = 5500
|
585
|
+
elsif pct_oa >= 0.4 && pct_oa < 0.5
|
586
|
+
erv_cfm = 4500
|
587
|
+
elsif pct_oa >= 0.5 && pct_oa < 0.6
|
588
|
+
erv_cfm = 3500
|
589
|
+
elsif pct_oa >= 0.6 && pct_oa < 0.7
|
590
|
+
erv_cfm = 2000
|
591
|
+
elsif pct_oa >= 0.7 && pct_oa < 0.8
|
592
|
+
erv_cfm = 1000
|
593
|
+
elsif pct_oa >= 0.8
|
594
|
+
erv_cfm = 120
|
595
|
+
end
|
596
|
+
when 'ASHRAE 169-2006-7A',
|
597
|
+
'ASHRAE 169-2006-7B',
|
598
|
+
'ASHRAE 169-2006-8A',
|
599
|
+
'ASHRAE 169-2006-8B',
|
600
|
+
'ASHRAE 169-2013-7A',
|
601
|
+
'ASHRAE 169-2013-7B',
|
602
|
+
'ASHRAE 169-2013-8A',
|
603
|
+
'ASHRAE 169-2013-8B'
|
604
|
+
if pct_oa < 0.1
|
605
|
+
erv_cfm = nil
|
606
|
+
elsif pct_oa >= 0.1 && pct_oa < 0.2
|
607
|
+
erv_cfm = 4500
|
608
|
+
elsif pct_oa >= 0.2 && pct_oa < 0.3
|
609
|
+
erv_cfm = 4000
|
610
|
+
elsif pct_oa >= 0.3 && pct_oa < 0.4
|
611
|
+
erv_cfm = 2500
|
612
|
+
elsif pct_oa >= 0.4 && pct_oa < 0.5
|
613
|
+
erv_cfm = 1000
|
614
|
+
elsif pct_oa >= 0.5 && pct_oa < 0.6
|
615
|
+
erv_cfm = 140
|
616
|
+
elsif pct_oa >= 0.6 && pct_oa < 0.7
|
617
|
+
erv_cfm = 120
|
618
|
+
elsif pct_oa >= 0.7 && pct_oa < 0.8
|
619
|
+
erv_cfm = 100
|
620
|
+
elsif pct_oa >= 0.8
|
621
|
+
erv_cfm = 80
|
622
|
+
end
|
623
|
+
end
|
624
|
+
else
|
625
|
+
# Table 6.5.6.1-2, above 8000 hrs
|
626
|
+
case climate_zone
|
627
|
+
when 'ASHRAE 169-2006-3C',
|
628
|
+
'ASHRAE 169-2013-3C'
|
629
|
+
erv_cfm = nil
|
630
|
+
when 'ASHRAE 169-2006-0B',
|
631
|
+
'ASHRAE 169-2006-1B',
|
632
|
+
'ASHRAE 169-2006-2B',
|
633
|
+
'ASHRAE 169-2006-3B',
|
634
|
+
'ASHRAE 169-2006-4C',
|
635
|
+
'ASHRAE 169-2006-5C',
|
636
|
+
'ASHRAE 169-2013-0B',
|
637
|
+
'ASHRAE 169-2013-1B',
|
638
|
+
'ASHRAE 169-2013-2B',
|
639
|
+
'ASHRAE 169-2013-3B',
|
640
|
+
'ASHRAE 169-2013-4C',
|
641
|
+
'ASHRAE 169-2013-5C'
|
642
|
+
if pct_oa < 0.1
|
643
|
+
erv_cfm = nil
|
644
|
+
elsif pct_oa >= 0.1 && pct_oa < 0.2
|
645
|
+
erv_cfm = nil
|
646
|
+
elsif pct_oa >= 0.2 && pct_oa < 0.3
|
647
|
+
erv_cfm = 19_500
|
648
|
+
elsif pct_oa >= 0.3 && pct_oa < 0.4
|
649
|
+
erv_cfm = 9000
|
650
|
+
elsif pct_oa >= 0.4 && pct_oa < 0.5
|
651
|
+
erv_cfm = 5000
|
652
|
+
elsif pct_oa >= 0.5 && pct_oa < 0.6
|
653
|
+
erv_cfm = 4000
|
654
|
+
elsif pct_oa >= 0.6 && pct_oa < 0.7
|
655
|
+
erv_cfm = 3000
|
656
|
+
elsif pct_oa >= 0.7 && pct_oa < 0.8
|
657
|
+
erv_cfm = 1500
|
658
|
+
elsif pct_oa >= 0.8
|
659
|
+
erv_cfm = 120
|
660
|
+
end
|
661
|
+
when 'ASHRAE 169-2006-0A',
|
662
|
+
'ASHRAE 169-2006-1A',
|
663
|
+
'ASHRAE 169-2006-2A',
|
664
|
+
'ASHRAE 169-2006-3A',
|
665
|
+
'ASHRAE 169-2006-4B',
|
666
|
+
'ASHRAE 169-2006-5B',
|
667
|
+
'ASHRAE 169-2013-0A',
|
668
|
+
'ASHRAE 169-2013-1A',
|
669
|
+
'ASHRAE 169-2013-2A',
|
670
|
+
'ASHRAE 169-2013-3A',
|
671
|
+
'ASHRAE 169-2013-4B',
|
672
|
+
'ASHRAE 169-2013-5B'
|
673
|
+
if pct_oa < 0.1
|
674
|
+
erv_cfm = nil
|
675
|
+
elsif pct_oa >= 0.1 && pct_oa < 0.2
|
676
|
+
erv_cfm = 2500
|
677
|
+
elsif pct_oa >= 0.2 && pct_oa < 0.3
|
678
|
+
erv_cfm = 2000
|
679
|
+
elsif pct_oa >= 0.3 && pct_oa < 0.4
|
680
|
+
erv_cfm = 1000
|
681
|
+
elsif pct_oa >= 0.4 && pct_oa < 0.5
|
682
|
+
erv_cfm = 500
|
683
|
+
elsif pct_oa >= 0.5 && pct_oa < 0.6
|
684
|
+
erv_cfm = 140
|
685
|
+
elsif pct_oa >= 0.6 && pct_oa < 0.7
|
686
|
+
erv_cfm = 120
|
687
|
+
elsif pct_oa >= 0.7 && pct_oa < 0.8
|
688
|
+
erv_cfm = 100
|
689
|
+
elsif pct_oa >= 0.8
|
690
|
+
erv_cfm = 80
|
691
|
+
end
|
692
|
+
when 'ASHRAE 169-2006-4A',
|
693
|
+
'ASHRAE 169-2006-5A',
|
694
|
+
'ASHRAE 169-2006-6A',
|
695
|
+
'ASHRAE 169-2006-6B',
|
696
|
+
'ASHRAE 169-2006-7A',
|
697
|
+
'ASHRAE 169-2006-7B',
|
698
|
+
'ASHRAE 169-2006-8A',
|
699
|
+
'ASHRAE 169-2006-8B',
|
700
|
+
'ASHRAE 169-2013-4A',
|
701
|
+
'ASHRAE 169-2013-5A',
|
702
|
+
'ASHRAE 169-2013-6A',
|
703
|
+
'ASHRAE 169-2013-6B',
|
704
|
+
'ASHRAE 169-2013-7A',
|
705
|
+
'ASHRAE 169-2013-7B',
|
706
|
+
'ASHRAE 169-2013-8A',
|
707
|
+
'ASHRAE 169-2013-8B'
|
708
|
+
if pct_oa < 0.1
|
709
|
+
erv_cfm = nil
|
710
|
+
elsif pct_oa >= 0.1 && pct_oa < 0.2
|
711
|
+
erv_cfm = 200
|
712
|
+
elsif pct_oa >= 0.2 && pct_oa < 0.3
|
713
|
+
erv_cfm = 130
|
714
|
+
elsif pct_oa >= 0.3 && pct_oa < 0.4
|
715
|
+
erv_cfm = 100
|
716
|
+
elsif pct_oa >= 0.4 && pct_oa < 0.5
|
717
|
+
erv_cfm = 80
|
718
|
+
elsif pct_oa >= 0.5 && pct_oa < 0.6
|
719
|
+
erv_cfm = 70
|
720
|
+
elsif pct_oa >= 0.6 && pct_oa < 0.7
|
721
|
+
erv_cfm = 60
|
722
|
+
elsif pct_oa >= 0.7 && pct_oa < 0.8
|
723
|
+
erv_cfm = 50
|
724
|
+
elsif pct_oa >= 0.8
|
725
|
+
erv_cfm = 40
|
726
|
+
end
|
727
|
+
end
|
728
|
+
end
|
729
|
+
|
730
|
+
return erv_cfm
|
731
|
+
end
|
732
|
+
|
733
|
+
# Determine whether to apply an Energy Recovery Ventilator 'ERV' or a Heat Recovery Ventilator 'HRV' depending on the climate zone
|
734
|
+
# Defaults to ERV.
|
735
|
+
# @return [String] the ERV type
|
736
|
+
def air_loop_hvac_energy_recovery_ventilator_type(air_loop_hvac, climate_zone)
|
737
|
+
erv_type = 'ERV'
|
738
|
+
return erv_type
|
739
|
+
end
|
740
|
+
|
741
|
+
# Determine whether to use a Plate-Frame or Rotary Wheel style ERV depending on air loop outdoor air flow rate
|
742
|
+
# Defaults to Rotary.
|
743
|
+
# @return [String] the ERV type
|
744
|
+
def air_loop_hvac_energy_recovery_ventilator_heat_exchanger_type(air_loop_hvac)
|
745
|
+
# Get the OA system
|
746
|
+
if air_loop_hvac.airLoopHVACOutdoorAirSystem.is_initialized
|
747
|
+
oa_system = air_loop_hvac.airLoopHVACOutdoorAirSystem.get
|
748
|
+
controller_oa = oa_system.getControllerOutdoorAir
|
749
|
+
else
|
750
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.nrel_zne_ready_2017.AirLoopHVAC', "For #{air_loop_hvac.name}, ERV type not applicable because it has no OA intake.")
|
751
|
+
return false
|
752
|
+
end
|
753
|
+
|
754
|
+
# Get the minimum OA flow rate
|
755
|
+
if controller_oa.maximumOutdoorAirFlowRate.is_initialized
|
756
|
+
max_oa_flow_m3_per_s = controller_oa.maximumOutdoorAirFlowRate.get
|
757
|
+
elsif controller_oa.autosizedMaximumOutdoorAirFlowRate.is_initialized
|
758
|
+
max_oa_flow_m3_per_s = controller_oa.autosizedMaximumOutdoorAirFlowRate.get
|
759
|
+
else
|
760
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.nrel_zne_ready_2017.AirLoopHVAC', "For #{controller_oa.name}: maximum OA flow rate is not available, cannot determine ERV type.")
|
761
|
+
return false
|
762
|
+
end
|
763
|
+
max_oa_flow_cfm = OpenStudio.convert(max_oa_flow_m3_per_s, 'm^3/s', 'cfm').get
|
764
|
+
|
765
|
+
# Use a 500 cfm threshold
|
766
|
+
if max_oa_flow_cfm < 500.0
|
767
|
+
heat_exchanger_type = 'Plate'
|
768
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.nrel_zne_ready_2017.AirLoopHVAC', "For #{air_loop_hvac.name}, maximum outdoor air flow rate is less than 500 cfm, assuming a plate and frame heat exchanger.")
|
769
|
+
else
|
770
|
+
heat_exchanger_type = 'Rotary'
|
771
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.nrel_zne_ready_2017.AirLoopHVAC', "For #{air_loop_hvac.name}, maximum outdoor air flow rate is greater than 500 cfm, assuming a rotary wheel heat exchanger.")
|
772
|
+
end
|
773
|
+
|
774
|
+
return heat_exchanger_type
|
775
|
+
end
|
776
|
+
|
777
|
+
# Apply efficiency values to the erv
|
778
|
+
#
|
779
|
+
# @param erv [OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent] erv to apply efficiency values
|
780
|
+
# @param erv_type [String] erv type ERV or HRV
|
781
|
+
# @param heat_exchanger_type [String] heat exchanger type Rotary or Plate
|
782
|
+
# @return erv [OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent] erv to apply efficiency values
|
783
|
+
def air_loop_hvac_apply_energy_recovery_ventilator_efficiency(erv, erv_type: 'ERV', heat_exchanger_type: 'Rotary')
|
784
|
+
if heat_exchanger_type == 'Plate'
|
785
|
+
# based on Zehnder ComfoAir
|
786
|
+
if erv_type == 'HRV'
|
787
|
+
erv.setSensibleEffectivenessat100HeatingAirFlow(0.865)
|
788
|
+
erv.setLatentEffectivenessat100HeatingAirFlow(0.0)
|
789
|
+
erv.setSensibleEffectivenessat75HeatingAirFlow(0.887)
|
790
|
+
erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
|
791
|
+
erv.setSensibleEffectivenessat100CoolingAirFlow(0.865)
|
792
|
+
erv.setLatentEffectivenessat100CoolingAirFlow(0.0)
|
793
|
+
erv.setSensibleEffectivenessat75CoolingAirFlow(0.887)
|
794
|
+
erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
|
795
|
+
else
|
796
|
+
erv.setSensibleEffectivenessat100HeatingAirFlow(0.755)
|
797
|
+
erv.setLatentEffectivenessat100HeatingAirFlow(0.564)
|
798
|
+
erv.setSensibleEffectivenessat75HeatingAirFlow(0.791)
|
799
|
+
erv.setLatentEffectivenessat75HeatingAirFlow(0.625)
|
800
|
+
erv.setSensibleEffectivenessat100CoolingAirFlow(0.755)
|
801
|
+
erv.setLatentEffectivenessat100CoolingAirFlow(0.564)
|
802
|
+
erv.setSensibleEffectivenessat75CoolingAirFlow(0.791)
|
803
|
+
erv.setLatentEffectivenessat75CoolingAirFlow(0.625)
|
804
|
+
end
|
805
|
+
else
|
806
|
+
if erv_type == 'HRV'
|
807
|
+
erv.setSensibleEffectivenessat100HeatingAirFlow(0.75)
|
808
|
+
erv.setLatentEffectivenessat100HeatingAirFlow(0.0)
|
809
|
+
erv.setSensibleEffectivenessat75HeatingAirFlow(0.79)
|
810
|
+
erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
|
811
|
+
erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
|
812
|
+
erv.setLatentEffectivenessat100CoolingAirFlow(0.0)
|
813
|
+
erv.setSensibleEffectivenessat75CoolingAirFlow(0.78)
|
814
|
+
erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
|
815
|
+
else
|
816
|
+
erv.setSensibleEffectivenessat100HeatingAirFlow(0.75)
|
817
|
+
erv.setLatentEffectivenessat100HeatingAirFlow(0.74)
|
818
|
+
erv.setSensibleEffectivenessat75HeatingAirFlow(0.79)
|
819
|
+
erv.setLatentEffectivenessat75HeatingAirFlow(0.79)
|
820
|
+
erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
|
821
|
+
erv.setLatentEffectivenessat100CoolingAirFlow(0.74)
|
822
|
+
erv.setSensibleEffectivenessat75CoolingAirFlow(0.78)
|
823
|
+
erv.setLatentEffectivenessat75CoolingAirFlow(0.78)
|
824
|
+
end
|
825
|
+
end
|
826
|
+
|
827
|
+
return erv
|
828
|
+
end
|
829
|
+
end
|