openstudio-standards 0.7.1 → 0.8.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/geometry/ASHRAE90120162019LargeHotel.json +58 -13
- data/data/geometry/ASHRAELargeHotel.json +58 -13
- data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
- data/data/standards/export_OpenStudio_libraries.rb +2 -2
- data/data/standards/manage_OpenStudio_Standards.rb +6 -6
- data/data/standards/openstudio_standards_duplicates_log.csv +7961 -1
- data/data/standards/test_performance_expected_dd_results.csv +2016 -2004
- data/lib/openstudio-standards/btap/fileio.rb +171 -5
- data/lib/openstudio-standards/constructions/create.rb +38 -4
- data/lib/openstudio-standards/constructions/modify.rb +10 -3
- data/lib/openstudio-standards/create_typical/create_typical.rb +42 -28
- data/lib/openstudio-standards/create_typical/space_type_information.rb +160 -0
- data/lib/openstudio-standards/create_typical/space_type_ratios.rb +16 -19
- data/lib/openstudio-standards/exterior_lighting/create.rb +454 -0
- data/lib/openstudio-standards/exterior_lighting/data/entryways.csv +52 -0
- data/lib/openstudio-standards/exterior_lighting/data/parking.csv +54 -0
- data/lib/openstudio-standards/exterior_lighting/data/typical_exterior_lighting.json +37 -0
- data/lib/openstudio-standards/exterior_lighting/information.rb +202 -0
- data/lib/openstudio-standards/geometry/information.rb +49 -2
- data/lib/openstudio-standards/hvac/components/create.rb +169 -0
- data/lib/openstudio-standards/hvac/components/modify.rb +42 -0
- data/lib/openstudio-standards/hvac/exhaust/create_exhaust_fan.rb +108 -0
- data/lib/openstudio-standards/hvac/exhaust/data/convert_data.rb +86 -0
- data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.csv +18 -0
- data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.json +89 -0
- data/lib/openstudio-standards/infiltration/nist_infiltration.rb +25 -13
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +0 -64
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +0 -25
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +0 -25
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +1 -11
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +5 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -7
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +36 -18
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +121 -239
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +179 -151
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +0 -466
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +18 -2
- data/lib/openstudio-standards/refrigeration/create_case.rb +125 -0
- data/lib/openstudio-standards/refrigeration/create_compressor.rb +78 -0
- data/lib/openstudio-standards/refrigeration/create_compressor_rack.rb +48 -0
- data/lib/openstudio-standards/refrigeration/create_refrigeration_system.rb +74 -0
- data/lib/openstudio-standards/refrigeration/create_typical_refrigeration.rb +161 -0
- data/lib/openstudio-standards/refrigeration/create_walkin.rb +116 -0
- data/lib/openstudio-standards/refrigeration/data/refrigerated_cases.csv +31 -0
- data/lib/openstudio-standards/refrigeration/data/refrigerated_walkins.csv +76 -0
- data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +13 -0
- data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_cases.csv +17 -0
- data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_walkins.csv +53 -0
- data/lib/openstudio-standards/refrigeration/information.rb +130 -0
- data/lib/openstudio-standards/schedules/parametric.rb +1 -1
- data/lib/openstudio-standards/service_water_heating/create_typical.rb +299 -0
- data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +16 -14
- data/lib/openstudio-standards/service_water_heating/data/convert_data.rb +119 -0
- data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.csv +54 -0
- data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.json +810 -0
- data/lib/openstudio-standards/service_water_heating/information.rb +69 -0
- data/lib/openstudio-standards/sql_file/fenestration.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +154 -0
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +35 -12
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +110 -61
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +128 -29
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +103 -38
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +106 -5
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +8 -8
- data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +44 -17
- data/lib/openstudio-standards/standards/Standards.Fan.rb +32 -21
- data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +45 -18
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +14 -9
- data/lib/openstudio-standards/standards/Standards.Model.rb +294 -76
- data/lib/openstudio-standards/standards/Standards.Motor.rb +66 -0
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.Pump.rb +34 -20
- data/lib/openstudio-standards/standards/Standards.ServiceWaterHeating.rb +0 -353
- data/lib/openstudio-standards/standards/Standards.Space.rb +3 -107
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +2 -57
- data/lib/openstudio-standards/standards/Standards.Surface.rb +11 -3
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +1 -120
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.computer_room_acs.json +142 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +1006 -596
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.energy_recovery.json +724 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +1258 -163
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +1070 -140
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +33 -3374
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +1400 -340
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.vrfs.json +769 -0
- 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 +2 -5338
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.computer_room_acs.json +142 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +1006 -596
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.energy_recovery.json +724 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +1258 -163
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +1070 -140
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +15 -3343
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +1840 -372
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.vrfs.json +769 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +20 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +0 -9
- 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 +0 -5382
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.computer_room_acs.json +142 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +1006 -628
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +718 -712
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +1438 -163
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +2552 -182
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +14 -3368
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +2348 -352
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.vrfs.json +769 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +47 -61
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +6 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Motor.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +0 -9
- 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 +2 -5522
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.computer_room_acs.json +142 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +1006 -628
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +1358 -1346
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +1438 -163
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +1359 -189
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +19 -3451
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +2176 -616
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.vrfs.json +616 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +47 -61
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Motor.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +0 -9
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +8 -6055
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.computer_room_acs.json +142 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.economizers.json +1006 -628
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +1188 -1424
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ext_ltg.json +1498 -163
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.motors.json +1769 -189
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +15 -3422
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +1807 -408
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.vrfs.json +1024 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +70 -87
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +9 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Motor.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +0 -9
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +8 -6080
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.computer_room_acs.json +142 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.economizers.json +1006 -628
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +2806 -3296
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ext_ltg.json +1558 -163
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.motors.json +1759 -189
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +16 -3448
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +2758 -422
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.vrfs.json +684 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +14 -3318
- 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 +2 -4786
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.chillers.json +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +953 -207
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.energy_recovery.json +724 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +11 -2858
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirConditionerVariableRefrigerantFlow.rb +13 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +0 -18
- 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 +1 -4739
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.chillers.json +0 -51
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +953 -207
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.energy_recovery.json +724 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +9 -2830
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirConditionerVariableRefrigerantFlow.rb +13 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +0 -18
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.economizers.json +1006 -564
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.energy_recovery.json +1264 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +0 -1079
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +132 -288
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +44 -20
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.economizers.json +1006 -564
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.energy_recovery.json +1264 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +0 -1079
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +137 -288
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +44 -20
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +0 -9
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +12 -10
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +8 -6
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +8 -6
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +9 -3
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +6 -40
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +30 -337
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +4 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +56 -3
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +80 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +0 -10
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +35 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.economizers.json +550 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.energy_recovery.json +724 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.ext_ltg.json +1216 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +225 -245
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.unitary_acs.json +174 -78
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.water_heaters.json +354 -317
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +19 -3
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac.json +185 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac_doas.json +127 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_building.json +121 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_design_specification_outdoor_air.json +49 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_electric_equipment.json +113 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_exterior_lights.json +120 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_space.json +388 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_spacetype.json +367 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_thermal_zone.json +56 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_connections.json +37 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment.json +69 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment_definition.json +37 -0
- data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/data/cbes_pre_1978.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/data/cbes_t24_1978.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/data/cbes_t24_1992.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/data/cbes_t24_2001.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/data/cbes_t24_2005.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/data/cbes_t24_2008.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/data/comstock_deer_2020.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/data/comstock_deer_2025.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/data/comstock_deer_2030.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/data/comstock_deer_2035.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/data/comstock_deer_2040.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/data/comstock_deer_2045.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/data/comstock_deer_2050.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/data/comstock_deer_2055.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/data/comstock_deer_2060.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/data/comstock_deer_2065.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/data/comstock_deer_2070.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/data/comstock_deer_2075.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ext_ltg.json +5 -5
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +10 -1
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/unitary_acs.json +20 -20
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +379 -27
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +1 -4
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +0 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/unitary_acs.json +20 -20
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +34 -22
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +76 -23
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_shw_calculation.xlsx +0 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +6 -2
- data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +26 -24
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -1
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +38 -32
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +215 -18
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +190 -15
- data/lib/openstudio-standards/standards/necb/common/national_carbon_price_sched_feb_2025.json +60 -0
- data/lib/openstudio-standards/standards/necb/common/utility_pricing_2025-02-20.csv +92 -0
- data/lib/openstudio-standards/utilities/ruleset_check.rb +204 -0
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/information.rb +1 -1
- data/lib/openstudio-standards.rb +32 -12
- metadata +78 -80
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.refrigeration.rb +0 -13
- data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.refrigeration.rb +0 -13
- data/lib/openstudio-standards/prototypes/cbes/cbes.refrigeration.rb +0 -13
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +0 -432
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +0 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ext_ltg.json +0 -169
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.ref_lnup.json +0 -562
- 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 +0 -20804
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +0 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ext_ltg.json +0 -169
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ext_ltg.json +0 -169
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ext_ltg.json +0 -169
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ext_ltg.json +0 -169
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ref_cases.json +0 -763
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ext_ltg.json +0 -169
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ref_cases.json +0 -763
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ext_ltg.json +0 -169
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ext_ltg.json +0 -169
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_economizers.json +0 -213
- data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +0 -11
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +0 -11
- data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +0 -11
- data/lib/openstudio-standards/standards/deer/deer.Space.rb +0 -20
- data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_lnup.json +0 -562
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_cases.json +0 -1456
- data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_lnup.json +0 -562
@@ -7,8 +7,9 @@ class Standard
|
|
7
7
|
#
|
8
8
|
# @param coil_cooling_dx_single_speed [OpenStudio::Model::CoilCoolingDXSingleSpeed] coil cooling dx single speed object
|
9
9
|
# @param necb_ref_hp [Boolean] for compatability with NECB ruleset only.
|
10
|
+
# @param equipment_type [String] type of equipment that this coil object belongs to.
|
10
11
|
# @return [Double] capacity in W to be used for find object
|
11
|
-
def coil_cooling_dx_single_speed_find_capacity(coil_cooling_dx_single_speed, necb_ref_hp = false)
|
12
|
+
def coil_cooling_dx_single_speed_find_capacity(coil_cooling_dx_single_speed, necb_ref_hp = false, equipment_type = nil)
|
12
13
|
capacity_w = nil
|
13
14
|
if coil_cooling_dx_single_speed.ratedTotalCoolingCapacity.is_initialized
|
14
15
|
capacity_w = coil_cooling_dx_single_speed.ratedTotalCoolingCapacity.get
|
@@ -21,7 +22,7 @@ class Standard
|
|
21
22
|
|
22
23
|
# If it's a PTAC or PTHP System, we need to divide the capacity by the potential zone multiplier
|
23
24
|
# because the COP is dependent on capacity, and the capacity should be the capacity of a single zone, not all the zones
|
24
|
-
if ['PTAC', 'PTHP'].include?(coil_dx_subcategory(coil_cooling_dx_single_speed))
|
25
|
+
if ['PTAC', 'PTHP'].include?(coil_dx_subcategory(coil_cooling_dx_single_speed)) || ['PTAC', 'PTHP'].include?(equipment_type)
|
25
26
|
mult = 1
|
26
27
|
comp = coil_cooling_dx_single_speed.containingZoneHVACComponent
|
27
28
|
if comp.is_initialized && comp.get.thermalZone.is_initialized
|
@@ -42,24 +43,46 @@ class Standard
|
|
42
43
|
# @param coil_cooling_dx_single_speed [OpenStudio::Model::CoilCoolingDXSingleSpeed] coil cooling dx single speed object
|
43
44
|
# @param rename [Boolean] if true, object will be renamed to include capacity and efficiency level
|
44
45
|
# @param necb_ref_hp [Boolean] for compatability with NECB ruleset only.
|
46
|
+
# @param equipment_type [Boolean] indicate that equipment_type should be in the search criteria.
|
45
47
|
# @return [Double] full load efficiency (COP)
|
46
|
-
def coil_cooling_dx_single_speed_standard_minimum_cop(coil_cooling_dx_single_speed, rename = false, necb_ref_hp = false)
|
47
|
-
search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_single_speed, necb_ref_hp)
|
48
|
+
def coil_cooling_dx_single_speed_standard_minimum_cop(coil_cooling_dx_single_speed, rename = false, necb_ref_hp = false, equipment_type = false)
|
49
|
+
search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_single_speed, necb_ref_hp, equipment_type)
|
48
50
|
cooling_type = search_criteria['cooling_type']
|
49
51
|
heating_type = search_criteria['heating_type']
|
50
52
|
sub_category = search_criteria['subcategory']
|
51
|
-
|
53
|
+
equipment_type = nil
|
54
|
+
|
55
|
+
# Define database
|
56
|
+
if coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
57
|
+
database = standards_data['heat_pumps']
|
58
|
+
else
|
59
|
+
database = standards_data['unitary_acs']
|
60
|
+
end
|
61
|
+
|
62
|
+
# Additional search criteria
|
63
|
+
if database[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
64
|
+
(template == 'BTAP1980TO2010'))
|
65
|
+
if search_criteria.keys.include?('equipment_type')
|
66
|
+
equipment_type = search_criteria['equipment_type']
|
67
|
+
if equipment_type == 'PTAC'
|
68
|
+
search_criteria['application'] = coil_dx_ptac_application(coil_cooling_dx_single_speed)
|
69
|
+
end
|
70
|
+
elsif !coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
71
|
+
search_criteria['equipment_type'] = 'Air Conditioners'
|
72
|
+
end
|
73
|
+
end
|
74
|
+
if database[0].keys.include?('region')
|
75
|
+
search_criteria['region'] = nil # non-nil values are currently used for residential products
|
76
|
+
end
|
77
|
+
|
78
|
+
capacity_w = coil_cooling_dx_single_speed_find_capacity(coil_cooling_dx_single_speed, necb_ref_hp, equipment_type)
|
52
79
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
53
80
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
54
81
|
|
55
82
|
# Look up the efficiency characteristics
|
56
83
|
# Lookup efficiencies depending on whether it is a unitary AC or a heat pump
|
57
84
|
ac_props = nil
|
58
|
-
ac_props =
|
59
|
-
model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
|
60
|
-
else
|
61
|
-
model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
|
62
|
-
end
|
85
|
+
ac_props = model_find_object(database, search_criteria, capacity_btu_per_hr, Date.today)
|
63
86
|
|
64
87
|
# Check to make sure properties were found
|
65
88
|
if ac_props.nil?
|
@@ -92,7 +115,7 @@ class Standard
|
|
92
115
|
# If PTAC, use equations if coefficients are specified
|
93
116
|
ptac_eer_coeff_1 = ac_props['ptac_eer_coefficient_1']
|
94
117
|
ptac_eer_coeff_2 = ac_props['ptac_eer_coefficient_2']
|
95
|
-
if
|
118
|
+
if equipment_type == 'PTAC' && !ptac_eer_coeff_1.nil? && !ptac_eer_coeff_2.nil?
|
96
119
|
# TABLE 6.8.1D
|
97
120
|
# EER = ptac_eer_coeff_1 - (ptac_eer_coeff_2 * Cap / 1000)
|
98
121
|
# Note c: Cap means the rated cooling capacity of the product in Btu/h.
|
@@ -135,6 +158,15 @@ class Standard
|
|
135
158
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
136
159
|
end
|
137
160
|
|
161
|
+
# If specified as SEER2
|
162
|
+
# TODO: assumed to be the same as SEER for now
|
163
|
+
unless ac_props['minimum_seasonal_energy_efficiency_ratio_2'].nil?
|
164
|
+
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio_2']
|
165
|
+
cop = seer_to_cop_no_fan(min_seer)
|
166
|
+
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
167
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
168
|
+
end
|
169
|
+
|
138
170
|
# If specified as EER
|
139
171
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
140
172
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
@@ -143,7 +175,24 @@ class Standard
|
|
143
175
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
144
176
|
end
|
145
177
|
|
146
|
-
#
|
178
|
+
# If specified as EER2
|
179
|
+
# TODO: assumed to be the same as EER for now
|
180
|
+
unless ac_props['minimum_energy_efficiency_ratio_2'].nil?
|
181
|
+
min_eer = ac_props['minimum_energy_efficiency_ratio_2']
|
182
|
+
cop = eer_to_cop_no_fan(min_eer)
|
183
|
+
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
184
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
185
|
+
end
|
186
|
+
|
187
|
+
# If specific as IEER
|
188
|
+
if !ac_props['minimum_integrated_energy_efficiency_ratio'].nil? && cop.nil?
|
189
|
+
min_ieer = ac_props['minimum_integrated_energy_efficiency_ratio']
|
190
|
+
cop = ieer_to_cop_no_fan(min_ieer)
|
191
|
+
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_ieer}IEER"
|
192
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
193
|
+
end
|
194
|
+
|
195
|
+
# If specified as SEER
|
147
196
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
148
197
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
149
198
|
cop = seer_to_cop_no_fan(min_seer)
|
@@ -176,21 +225,40 @@ class Standard
|
|
176
225
|
def coil_cooling_dx_single_speed_apply_efficiency_and_curves(coil_cooling_dx_single_speed, sql_db_vars_map, necb_ref_hp = false)
|
177
226
|
successfully_set_all_properties = true
|
178
227
|
|
179
|
-
# Get
|
180
|
-
|
228
|
+
# Get efficiencies data depending on whether it is a unitary AC or a heat pump
|
229
|
+
coil_efficiency_data = if coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
230
|
+
standards_data['heat_pumps']
|
231
|
+
else
|
232
|
+
standards_data['unitary_acs']
|
233
|
+
end
|
234
|
+
|
235
|
+
# Get the search criteria
|
236
|
+
equipment_type = coil_efficiency_data[0].keys.include?('equipment_type') ? true : false
|
237
|
+
search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_single_speed, necb_ref_hp, equipment_type)
|
238
|
+
|
239
|
+
# Additional search criteria
|
240
|
+
if coil_efficiency_data[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
241
|
+
(template == 'BTAP1980TO2010'))
|
242
|
+
if search_criteria.keys.include?('equipment_type')
|
243
|
+
equipment_type = search_criteria['equipment_type']
|
244
|
+
if equipment_type == 'PTAC'
|
245
|
+
search_criteria['application'] = coil_dx_ptac_application(coil_cooling_dx_single_speed)
|
246
|
+
end
|
247
|
+
elsif !coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
248
|
+
search_criteria['equipment_type'] = 'Air Conditioners'
|
249
|
+
end
|
250
|
+
end
|
251
|
+
if coil_efficiency_data[0].keys.include?('region')
|
252
|
+
search_criteria['region'] = nil # non-nil values are currently used for residential products
|
253
|
+
end
|
181
254
|
|
182
|
-
# Get the capacity
|
183
|
-
capacity_w = coil_cooling_dx_single_speed_find_capacity(coil_cooling_dx_single_speed, necb_ref_hp)
|
255
|
+
# Get the capacity
|
256
|
+
capacity_w = coil_cooling_dx_single_speed_find_capacity(coil_cooling_dx_single_speed, necb_ref_hp, equipment_type)
|
184
257
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
185
258
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
186
259
|
|
187
|
-
# Lookup
|
188
|
-
ac_props =
|
189
|
-
ac_props = if coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
190
|
-
model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
|
191
|
-
else
|
192
|
-
model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
|
193
|
-
end
|
260
|
+
# Lookup efficiency
|
261
|
+
ac_props = model_find_object(coil_efficiency_data, search_criteria, capacity_btu_per_hr, Date.today)
|
194
262
|
|
195
263
|
# Check to make sure properties were found
|
196
264
|
if ac_props.nil?
|
@@ -199,8 +267,15 @@ class Standard
|
|
199
267
|
return sql_db_vars_map
|
200
268
|
end
|
201
269
|
|
270
|
+
equipment_type_field = search_criteria['equipment_type']
|
202
271
|
# Make the COOL-CAP-FT curve
|
203
|
-
cool_cap_ft =
|
272
|
+
cool_cap_ft = nil
|
273
|
+
if ac_props['cool_cap_ft']
|
274
|
+
cool_cap_ft = model_add_curve(coil_cooling_dx_single_speed.model, ac_props['cool_cap_ft'])
|
275
|
+
else
|
276
|
+
cool_cap_ft_curve_name = coil_dx_cap_ft(coil_cooling_dx_single_speed, equipment_type_field)
|
277
|
+
cool_cap_ft = model_add_curve(coil_cooling_dx_single_speed.model, cool_cap_ft_curve_name)
|
278
|
+
end
|
204
279
|
if cool_cap_ft
|
205
280
|
coil_cooling_dx_single_speed.setTotalCoolingCapacityFunctionOfTemperatureCurve(cool_cap_ft)
|
206
281
|
else
|
@@ -209,7 +284,13 @@ class Standard
|
|
209
284
|
end
|
210
285
|
|
211
286
|
# Make the COOL-CAP-FFLOW curve
|
212
|
-
cool_cap_fflow =
|
287
|
+
cool_cap_fflow = nil
|
288
|
+
if ac_props['cool_cap_fflow']
|
289
|
+
cool_cap_fflow = model_add_curve(coil_cooling_dx_single_speed.model, ac_props['cool_cap_fflow'])
|
290
|
+
else
|
291
|
+
cool_cap_fflow_curve_name = coil_dx_cap_fff(coil_cooling_dx_single_speed, equipment_type_field)
|
292
|
+
cool_cap_fflow = model_add_curve(coil_cooling_dx_single_speed.model, cool_cap_fflow_curve_name)
|
293
|
+
end
|
213
294
|
if cool_cap_fflow
|
214
295
|
coil_cooling_dx_single_speed.setTotalCoolingCapacityFunctionOfFlowFractionCurve(cool_cap_fflow)
|
215
296
|
else
|
@@ -218,7 +299,13 @@ class Standard
|
|
218
299
|
end
|
219
300
|
|
220
301
|
# Make the COOL-EIR-FT curve
|
221
|
-
cool_eir_ft =
|
302
|
+
cool_eir_ft = nil
|
303
|
+
if ac_props['cool_eir_ft']
|
304
|
+
cool_eir_ft = model_add_curve(coil_cooling_dx_single_speed.model, ac_props['cool_eir_ft'])
|
305
|
+
else
|
306
|
+
cool_eir_ft_curve_name = coil_dx_eir_ft(coil_cooling_dx_single_speed, equipment_type_field)
|
307
|
+
cool_eir_ft = model_add_curve(coil_cooling_dx_single_speed.model, cool_eir_ft_curve_name)
|
308
|
+
end
|
222
309
|
if cool_eir_ft
|
223
310
|
coil_cooling_dx_single_speed.setEnergyInputRatioFunctionOfTemperatureCurve(cool_eir_ft)
|
224
311
|
else
|
@@ -227,7 +314,13 @@ class Standard
|
|
227
314
|
end
|
228
315
|
|
229
316
|
# Make the COOL-EIR-FFLOW curve
|
230
|
-
cool_eir_fflow =
|
317
|
+
cool_eir_fflow = nil
|
318
|
+
if ac_props['cool_eir_fflow']
|
319
|
+
cool_eir_fflow = model_add_curve(coil_cooling_dx_single_speed.model, ac_props['cool_eir_fflow'])
|
320
|
+
else
|
321
|
+
cool_eir_fflow_curve_name = coil_dx_eir_fff(coil_cooling_dx_single_speed, equipment_type_field)
|
322
|
+
cool_eir_fflow = model_add_curve(coil_cooling_dx_single_speed.model, cool_eir_fflow_curve_name)
|
323
|
+
end
|
231
324
|
if cool_eir_fflow
|
232
325
|
coil_cooling_dx_single_speed.setEnergyInputRatioFunctionOfFlowFractionCurve(cool_eir_fflow)
|
233
326
|
else
|
@@ -236,7 +329,13 @@ class Standard
|
|
236
329
|
end
|
237
330
|
|
238
331
|
# Make the COOL-PLF-FPLR curve
|
239
|
-
cool_plf_fplr =
|
332
|
+
cool_plf_fplr = nil
|
333
|
+
if ac_props['cool_plf_fplr']
|
334
|
+
cool_plf_fplr = model_add_curve(coil_cooling_dx_single_speed.model, ac_props['cool_plf_fplr'])
|
335
|
+
else
|
336
|
+
cool_plf_fplr_curve_name = coil_dx_plf_fplr(coil_cooling_dx_single_speed, equipment_type_field)
|
337
|
+
cool_plf_fplr = model_add_curve(coil_cooling_dx_single_speed.model, cool_plf_fplr_curve_name)
|
338
|
+
end
|
240
339
|
if cool_plf_fplr
|
241
340
|
coil_cooling_dx_single_speed.setPartLoadFractionCorrelationCurve(cool_plf_fplr)
|
242
341
|
else
|
@@ -248,7 +347,7 @@ class Standard
|
|
248
347
|
orig_name = coil_cooling_dx_single_speed.name.to_s
|
249
348
|
|
250
349
|
# Find the minimum COP and rename with efficiency rating
|
251
|
-
cop = coil_cooling_dx_single_speed_standard_minimum_cop(coil_cooling_dx_single_speed, true, necb_ref_hp)
|
350
|
+
cop = coil_cooling_dx_single_speed_standard_minimum_cop(coil_cooling_dx_single_speed, true, necb_ref_hp, equipment_type)
|
252
351
|
|
253
352
|
# Map the original name to the new name
|
254
353
|
sql_db_vars_map[coil_cooling_dx_single_speed.name.to_s] = orig_name
|
@@ -35,13 +35,25 @@ class Standard
|
|
35
35
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
36
36
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
37
37
|
|
38
|
+
# Define database
|
39
|
+
if coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
40
|
+
database = standards_data['heat_pumps']
|
41
|
+
else
|
42
|
+
database = standards_data['unitary_acs']
|
43
|
+
end
|
44
|
+
|
45
|
+
# Additional search criteria
|
46
|
+
if (database[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
47
|
+
(template == 'BTAP1980TO2010'))) && !coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
48
|
+
search_criteria['equipment_type'] = 'Air Conditioners'
|
49
|
+
end
|
50
|
+
if database[0].keys.include?('region')
|
51
|
+
search_criteria['region'] = nil # non-nil values are currently used for residential products
|
52
|
+
end
|
53
|
+
|
38
54
|
# Lookup efficiencies depending on whether it is a unitary AC or a heat pump
|
39
55
|
ac_props = nil
|
40
|
-
ac_props =
|
41
|
-
model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
|
42
|
-
else
|
43
|
-
model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
|
44
|
-
end
|
56
|
+
ac_props = model_find_object(database, search_criteria, capacity_btu_per_hr, Date.today)
|
45
57
|
|
46
58
|
# Check to make sure properties were found
|
47
59
|
if ac_props.nil?
|
@@ -67,6 +79,15 @@ class Standard
|
|
67
79
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
68
80
|
end
|
69
81
|
|
82
|
+
# If specified as SEER2
|
83
|
+
# TODO: assumed to be the same as SEER for now
|
84
|
+
unless ac_props['minimum_seasonal_energy_efficiency_ratio_2'].nil?
|
85
|
+
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio_2']
|
86
|
+
cop = seer_to_cop_no_fan(min_seer)
|
87
|
+
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
88
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
89
|
+
end
|
90
|
+
|
70
91
|
# If specified as EER
|
71
92
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
72
93
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
@@ -75,7 +96,24 @@ class Standard
|
|
75
96
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
76
97
|
end
|
77
98
|
|
78
|
-
#
|
99
|
+
# If specified as EER2
|
100
|
+
# TODO: assumed to be the same as EER for now
|
101
|
+
unless ac_props['minimum_energy_efficiency_ratio_2'].nil?
|
102
|
+
min_eer = ac_props['minimum_energy_efficiency_ratio_2']
|
103
|
+
cop = eer_to_cop_no_fan(min_eer)
|
104
|
+
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
105
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
106
|
+
end
|
107
|
+
|
108
|
+
# If specific as IEER
|
109
|
+
if !ac_props['minimum_integrated_energy_efficiency_ratio'].nil? && cop.nil?
|
110
|
+
min_ieer = ac_props['minimum_integrated_energy_efficiency_ratio']
|
111
|
+
cop = ieer_to_cop_no_fan(min_ieer)
|
112
|
+
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_ieer}IEER"
|
113
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; IEER = #{min_ieer}")
|
114
|
+
end
|
115
|
+
|
116
|
+
# If specified as SEER (heat pump)
|
79
117
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
80
118
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
81
119
|
cop = seer_to_cop_no_fan(min_seer)
|
@@ -115,13 +153,26 @@ class Standard
|
|
115
153
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
116
154
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
117
155
|
|
156
|
+
# Get efficiencies data depending on whether it is a unitary AC or a heat pump
|
157
|
+
coil_efficiency_data = if coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
158
|
+
standards_data['heat_pumps']
|
159
|
+
else
|
160
|
+
standards_data['unitary_acs']
|
161
|
+
end
|
162
|
+
|
163
|
+
# Additional search criteria
|
164
|
+
if (coil_efficiency_data[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
165
|
+
(template == 'BTAP1980TO2010'))) && !coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
166
|
+
search_criteria['equipment_type'] = 'Air Conditioners'
|
167
|
+
end
|
168
|
+
if coil_efficiency_data[0].keys.include?('region')
|
169
|
+
search_criteria['region'] = nil # non-nil values are currently used for residential products
|
170
|
+
end
|
171
|
+
|
172
|
+
# Look up the efficiency characteristics
|
118
173
|
# Lookup efficiencies depending on whether it is a unitary AC or a heat pump
|
119
174
|
ac_props = nil
|
120
|
-
ac_props =
|
121
|
-
model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
|
122
|
-
else
|
123
|
-
model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
|
124
|
-
end
|
175
|
+
ac_props = model_find_object(coil_efficiency_data, search_criteria, capacity_btu_per_hr, Date.today)
|
125
176
|
|
126
177
|
# Check to make sure properties were found
|
127
178
|
if ac_props.nil?
|
@@ -131,34 +182,60 @@ class Standard
|
|
131
182
|
end
|
132
183
|
|
133
184
|
# Make the total COOL-CAP-FT curve
|
134
|
-
|
135
|
-
if
|
136
|
-
coil_cooling_dx_two_speed.
|
185
|
+
cool_cap_ft = nil
|
186
|
+
if ac_props['cool_cap_ft']
|
187
|
+
cool_cap_ft = model_add_curve(coil_cooling_dx_two_speed.model, ac_props['cool_cap_ft'])
|
188
|
+
else
|
189
|
+
cool_cap_ft_curve_name = coil_dx_cap_ft(coil_cooling_dx_two_speed)
|
190
|
+
cool_cap_ft = model_add_curve(coil_cooling_dx_two_speed.model, cool_cap_ft_curve_name)
|
191
|
+
end
|
192
|
+
if cool_cap_ft
|
193
|
+
coil_cooling_dx_two_speed.setTotalCoolingCapacityFunctionOfTemperatureCurve(cool_cap_ft)
|
194
|
+
coil_cooling_dx_two_speed.setLowSpeedTotalCoolingCapacityFunctionOfTemperatureCurve(cool_cap_ft)
|
137
195
|
else
|
138
196
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{coil_cooling_dx_two_speed.name}, cannot find cool_cap_ft curve, will not be set.")
|
139
197
|
successfully_set_all_properties = false
|
140
198
|
end
|
141
199
|
|
142
200
|
# Make the total COOL-CAP-FFLOW curve
|
143
|
-
|
144
|
-
if
|
145
|
-
coil_cooling_dx_two_speed.
|
201
|
+
cool_cap_fflow = nil
|
202
|
+
if ac_props['cool_cap_fflow']
|
203
|
+
cool_cap_fflow = model_add_curve(coil_cooling_dx_two_speed.model, ac_props['cool_cap_fflow'])
|
204
|
+
else
|
205
|
+
cool_cap_fflow_curve_name = coil_dx_cap_fff(coil_cooling_dx_two_speed)
|
206
|
+
cool_cap_fflow = model_add_curve(coil_cooling_dx_two_speed.model, cool_cap_fflow_curve_name)
|
207
|
+
end
|
208
|
+
if cool_cap_fflow
|
209
|
+
coil_cooling_dx_two_speed.setTotalCoolingCapacityFunctionOfFlowFractionCurve(cool_cap_fflow)
|
146
210
|
else
|
147
211
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{coil_cooling_dx_two_speed.name}, cannot find cool_cap_fflow curve, will not be set.")
|
148
212
|
successfully_set_all_properties = false
|
149
213
|
end
|
150
214
|
|
151
215
|
# Make the COOL-EIR-FT curve
|
152
|
-
cool_eir_ft =
|
216
|
+
cool_eir_ft = nil
|
217
|
+
if ac_props['cool_eir_ft']
|
218
|
+
cool_eir_ft = model_add_curve(coil_cooling_dx_two_speed.model, ac_props['cool_eir_ft'])
|
219
|
+
else
|
220
|
+
cool_eir_ft_curve_name = coil_dx_eir_ft(coil_cooling_dx_two_speed)
|
221
|
+
cool_eir_ft = model_add_curve(coil_cooling_dx_two_speed.model, cool_eir_ft_curve_name)
|
222
|
+
end
|
153
223
|
if cool_eir_ft
|
154
224
|
coil_cooling_dx_two_speed.setEnergyInputRatioFunctionOfTemperatureCurve(cool_eir_ft)
|
225
|
+
coil_cooling_dx_two_speed.setLowSpeedEnergyInputRatioFunctionOfTemperatureCurve(cool_eir_ft)
|
155
226
|
else
|
156
227
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{coil_cooling_dx_two_speed.name}, cannot find cool_eir_ft curve, will not be set.")
|
157
228
|
successfully_set_all_properties = false
|
158
229
|
end
|
159
230
|
|
160
231
|
# Make the COOL-EIR-FFLOW curve
|
161
|
-
cool_eir_fflow =
|
232
|
+
cool_eir_fflow = nil
|
233
|
+
if ac_props['cool_eir_fflow']
|
234
|
+
cool_eir_fflow = model_add_curve(coil_cooling_dx_two_speed.model, ac_props['cool_eir_fflow'])
|
235
|
+
else
|
236
|
+
cool_eir_fflow_curve_name = coil_dx_eir_fff(coil_cooling_dx_two_speed)
|
237
|
+
cool_eir_fflow = model_add_curve(coil_cooling_dx_two_speed.model, cool_eir_fflow_curve_name)
|
238
|
+
end
|
162
239
|
if cool_eir_fflow
|
163
240
|
coil_cooling_dx_two_speed.setEnergyInputRatioFunctionOfFlowFractionCurve(cool_eir_fflow)
|
164
241
|
else
|
@@ -167,7 +244,13 @@ class Standard
|
|
167
244
|
end
|
168
245
|
|
169
246
|
# Make the COOL-PLF-FPLR curve
|
170
|
-
cool_plf_fplr =
|
247
|
+
cool_plf_fplr = nil
|
248
|
+
if ac_props['cool_plf_fplr']
|
249
|
+
cool_plf_fplr = model_add_curve(coil_cooling_dx_two_speed.model, ac_props['cool_plf_fplr'])
|
250
|
+
else
|
251
|
+
cool_plf_fplr_curve_name = coil_dx_plf_fplr(coil_cooling_dx_two_speed)
|
252
|
+
cool_plf_fplr = model_add_curve(coil_cooling_dx_two_speed.model, cool_plf_fplr_curve_name)
|
253
|
+
end
|
171
254
|
if cool_plf_fplr
|
172
255
|
coil_cooling_dx_two_speed.setPartLoadFractionCorrelationCurve(cool_plf_fplr)
|
173
256
|
else
|
@@ -175,24 +258,6 @@ class Standard
|
|
175
258
|
successfully_set_all_properties = false
|
176
259
|
end
|
177
260
|
|
178
|
-
# Make the low speed COOL-CAP-FT curve
|
179
|
-
low_speed_cool_cap_ft = model_add_curve(coil_cooling_dx_two_speed.model, ac_props['cool_cap_ft'])
|
180
|
-
if low_speed_cool_cap_ft
|
181
|
-
coil_cooling_dx_two_speed.setLowSpeedTotalCoolingCapacityFunctionOfTemperatureCurve(low_speed_cool_cap_ft)
|
182
|
-
else
|
183
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{coil_cooling_dx_two_speed.name}, cannot find cool_cap_ft curve, will not be set.")
|
184
|
-
successfully_set_all_properties = false
|
185
|
-
end
|
186
|
-
|
187
|
-
# Make the low speed COOL-EIR-FT curve
|
188
|
-
low_speed_cool_eir_ft = model_add_curve(coil_cooling_dx_two_speed.model, ac_props['cool_eir_ft'])
|
189
|
-
if low_speed_cool_eir_ft
|
190
|
-
coil_cooling_dx_two_speed.setLowSpeedEnergyInputRatioFunctionOfTemperatureCurve(low_speed_cool_eir_ft)
|
191
|
-
else
|
192
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{coil_cooling_dx_two_speed.name}, cannot find cool_eir_ft curve, will not be set.")
|
193
|
-
successfully_set_all_properties = false
|
194
|
-
end
|
195
|
-
|
196
261
|
# Preserve the original name
|
197
262
|
orig_name = coil_cooling_dx_two_speed.name.to_s
|
198
263
|
|
@@ -28,11 +28,8 @@ module CoilDX
|
|
28
28
|
|
29
29
|
if coil_dx.airLoopHVAC.empty? && coil_dx.containingZoneHVACComponent.is_initialized
|
30
30
|
containing_comp = coil_dx.containingZoneHVACComponent.get
|
31
|
-
# PTAC
|
32
|
-
if containing_comp.to_ZoneHVACPackagedTerminalAirConditioner.is_initialized
|
33
|
-
sub_category = 'PTAC'
|
34
31
|
# PTHP
|
35
|
-
|
32
|
+
if containing_comp.to_ZoneHVACPackagedTerminalHeatPump.is_initialized
|
36
33
|
sub_category = 'PTHP'
|
37
34
|
end
|
38
35
|
# @todo Add other zone hvac systems
|
@@ -168,8 +165,9 @@ module CoilDX
|
|
168
165
|
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
169
166
|
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
170
167
|
# @param necb_ref_hp [Boolean] for compatability with NECB ruleset only.
|
168
|
+
# @param equipment_type [Boolean] indicate that equipment_type should be in the search criteria.
|
171
169
|
# @return [Hash] has for search criteria to be used for find object
|
172
|
-
def coil_dx_find_search_criteria(coil_dx, necb_ref_hp = false)
|
170
|
+
def coil_dx_find_search_criteria(coil_dx, necb_ref_hp = false, equipment_type = false)
|
173
171
|
search_criteria = {}
|
174
172
|
search_criteria['template'] = template
|
175
173
|
|
@@ -204,6 +202,109 @@ module CoilDX
|
|
204
202
|
# @todo Add other unitary systems
|
205
203
|
end
|
206
204
|
|
205
|
+
# Get the equipment type
|
206
|
+
if equipment_type && coil_dx.airLoopHVAC.empty? && coil_dx.containingZoneHVACComponent.is_initialized
|
207
|
+
containing_comp = coil_dx.containingZoneHVACComponent.get
|
208
|
+
# PTAC
|
209
|
+
if containing_comp.to_ZoneHVACPackagedTerminalAirConditioner.is_initialized
|
210
|
+
search_criteria['equipment_type'] = 'PTAC'
|
211
|
+
search_criteria['subcategory'] = nil
|
212
|
+
unless (template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
213
|
+
(template == 'BTAP1980TO2010')
|
214
|
+
search_criteria['heating_type'] = nil
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
207
219
|
return search_criteria
|
208
220
|
end
|
221
|
+
|
222
|
+
# Determine what application to use for looking up the minimum efficiency requirements of PTACs
|
223
|
+
#
|
224
|
+
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
225
|
+
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
226
|
+
# @return [String] PTAC application
|
227
|
+
def coil_dx_ptac_application(coil_dx)
|
228
|
+
case template
|
229
|
+
when '90.1-2004', '90.1-2007'
|
230
|
+
return 'New Construction'
|
231
|
+
when '90.1-2010', '90.1-2013', '90.1-2016', '90.1-2019'
|
232
|
+
return 'Standard Size'
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
# Determine what capacity curve to use to represent the change of the coil's capacity as a function of changes in temperatures
|
237
|
+
#
|
238
|
+
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
239
|
+
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
240
|
+
# @param equipment_type [String] Type of equipment
|
241
|
+
# @return [String] PTAC application
|
242
|
+
def coil_dx_cap_ft(coil_dx, equipment_type = 'Air Conditioners')
|
243
|
+
case equipment_type
|
244
|
+
when 'PTAC'
|
245
|
+
return 'PSZ-Fine Storage DX Coil Cap-FT'
|
246
|
+
else
|
247
|
+
return 'CoilClgDXQRatio_fTwbToadbSI'
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
# Determine what capacity curve to use to represent the change of the coil's capacity as a function of changes in airflow fraction
|
252
|
+
#
|
253
|
+
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
254
|
+
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
255
|
+
# @param equipment_type [String] Type of equipment
|
256
|
+
# @return [String] PTAC application
|
257
|
+
def coil_dx_cap_fff(coil_dx, equipment_type = 'Air Conditioners')
|
258
|
+
case equipment_type
|
259
|
+
when 'PTAC'
|
260
|
+
return 'DX Coil Cap-FF'
|
261
|
+
else
|
262
|
+
return 'CoilClgDXSnglQRatio_fCFMRatio'
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
# Determine what EIR curve to use to represent the change of the coil's EIR as a function of changes in temperatures
|
267
|
+
#
|
268
|
+
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
269
|
+
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
270
|
+
# @param equipment_type [String] Type of equipment
|
271
|
+
# @return [String] PTAC application
|
272
|
+
def coil_dx_eir_ft(coil_dx, equipment_type = 'Air Conditioners')
|
273
|
+
case equipment_type
|
274
|
+
when 'PTAC'
|
275
|
+
return 'PSZ-AC DX Coil EIR-FT'
|
276
|
+
else
|
277
|
+
return 'CoilClgDXEIRRatio_fTwbToadbSI'
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
# Determine what EIR curve to use to represent the change of the coil's EIR as a function of changes in airflow fraction
|
282
|
+
#
|
283
|
+
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
284
|
+
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
285
|
+
# @param equipment_type [String] Type of equipment
|
286
|
+
# @return [String] PTAC application
|
287
|
+
def coil_dx_eir_fff(coil_dx, equipment_type = 'Air Conditioners')
|
288
|
+
case equipment_type
|
289
|
+
when 'PTAC'
|
290
|
+
return 'Split DX Coil EIR-FF'
|
291
|
+
else
|
292
|
+
return 'CoilClgDXSnglEIRRatio_fCFMRatio'
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
# Determine what PLF curve to use to represent the change of the coil's PLR as a function of changes in PLR
|
297
|
+
#
|
298
|
+
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
299
|
+
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
300
|
+
# @param equipment_type [String] Type of equipment
|
301
|
+
# @return [String] PTAC application
|
302
|
+
def coil_dx_plf_fplr(coil_dx, equipment_type = 'Air Conditioners')
|
303
|
+
case equipment_type
|
304
|
+
when 'PTAC'
|
305
|
+
return 'HPACCOOLPLFFPLR'
|
306
|
+
else
|
307
|
+
return 'CoilClgDXEIRRatio_fQFrac'
|
308
|
+
end
|
309
|
+
end
|
209
310
|
end
|
@@ -55,14 +55,14 @@ class Standard
|
|
55
55
|
htg_stages = coil_heating_gas_multi_stage.stages
|
56
56
|
if htg_stages.last.nominalCapacity.is_initialized
|
57
57
|
capacity_w = htg_stages.last.nominalCapacity.get
|
58
|
-
elsif (htg_stages.size == 1) && coil_heating_gas_multi_stage.
|
59
|
-
capacity_w = coil_heating_gas_multi_stage.
|
60
|
-
elsif (htg_stages.size == 2) && coil_heating_gas_multi_stage.
|
61
|
-
capacity_w = coil_heating_gas_multi_stage.
|
62
|
-
elsif (htg_stages.size == 3) && coil_heating_gas_multi_stage.
|
63
|
-
capacity_w = coil_heating_gas_multi_stage.
|
64
|
-
elsif (htg_stages.size == 4) && coil_heating_gas_multi_stage.
|
65
|
-
capacity_w = coil_heating_gas_multi_stage.
|
58
|
+
elsif (htg_stages.size == 1) && coil_heating_gas_multi_stage.stages[0].autosizedNominalCapacity.is_initialized
|
59
|
+
capacity_w = coil_heating_gas_multi_stage.stages[0].autosizedNominalCapacity.get
|
60
|
+
elsif (htg_stages.size == 2) && coil_heating_gas_multi_stage.stages[1].autosizedNominalCapacity.is_initialized
|
61
|
+
capacity_w = coil_heating_gas_multi_stage.stages[1].autosizedNominalCapacity.get
|
62
|
+
elsif (htg_stages.size == 3) && coil_heating_gas_multi_stage.stages[2].autosizedNominalCapacity.is_initialized
|
63
|
+
capacity_w = coil_heating_gas_multi_stage.stages[2].autosizedNominalCapacity.get
|
64
|
+
elsif (htg_stages.size == 4) && coil_heating_gas_multi_stage.stages[3].autosizedNominalCapacity.is_initialized
|
65
|
+
capacity_w = coil_heating_gas_multi_stage.stages[3].autosizedNominalCapacity.get
|
66
66
|
else
|
67
67
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{coil_heating_gas_multi_stage.name} capacity is not available, cannot apply efficiency standard.")
|
68
68
|
successfully_set_all_properties = false
|