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
@@ -270,7 +270,11 @@ class ECMS
|
|
270
270
|
outdoor_vrf_unit.setName('VRF Outdoor Unit')
|
271
271
|
outdoor_vrf_unit.setHeatPumpWasteHeatRecovery(true)
|
272
272
|
outdoor_vrf_unit.setRatedHeatingCOP(4.0)
|
273
|
-
|
273
|
+
if model.version < OpenStudio::VersionString.new('2.9.0')
|
274
|
+
outdoor_vrf_unit.setRatedCoolingCOP(4.0)
|
275
|
+
else
|
276
|
+
outdoor_vrf_unit.setGrossRatedCoolingCOP(4.0)
|
277
|
+
end
|
274
278
|
outdoor_vrf_unit.setMinimumOutdoorTemperatureinHeatingMode(-25.0)
|
275
279
|
outdoor_vrf_unit.setHeatingPerformanceCurveOutdoorTemperatureType('WetBulbTemperature')
|
276
280
|
outdoor_vrf_unit.setMasterThermostatPriorityControlType('ThermostatOffsetPriority')
|
@@ -1050,6 +1054,9 @@ class ECMS
|
|
1050
1054
|
when "heatpump_watertowater_equationfit"
|
1051
1055
|
htg_eqpt = OpenStudio::Model::HeatPumpWaterToWaterEquationFitHeating.new(model)
|
1052
1056
|
htg_eqpt.setName("HeatPumpWaterToWaterEquationFitHeating")
|
1057
|
+
when "heatpump_plantloop_eir_heating"
|
1058
|
+
htg_eqpt = OpenStudio::Model::HeatPumpPlantLoopEIRHeating.new(model)
|
1059
|
+
htg_eqpt.setName("HeatPumpPlantLoopEIRHeating")
|
1053
1060
|
end
|
1054
1061
|
|
1055
1062
|
return htg_eqpt
|
@@ -1070,6 +1077,9 @@ class ECMS
|
|
1070
1077
|
when "heatpump_watertowater_equationfit"
|
1071
1078
|
clg_eqpt = OpenStudio::Model::HeatPumpWaterToWaterEquationFitCooling.new(model)
|
1072
1079
|
clg_eqpt.setName("HeatPumpWaterToWaterEquationFitCooling")
|
1080
|
+
when "heatpump_plantloop_eir_cooling"
|
1081
|
+
clg_eqpt = OpenStudio::Model::HeatPumpPlantLoopEIRCooling.new(model)
|
1082
|
+
clg_eqpt.setName("HeatPumpPlantLoopEIRCooling")
|
1073
1083
|
end
|
1074
1084
|
|
1075
1085
|
return clg_eqpt
|
@@ -1317,6 +1327,8 @@ class ECMS
|
|
1317
1327
|
backup_coil = icomp.to_CoilHeatingElectric.get
|
1318
1328
|
elsif icomp.to_CoilHeatingGas.is_initialized
|
1319
1329
|
backup_coil = icomp.to_CoilHeatingGas.get
|
1330
|
+
elsif icomp.to_CoilHeatingWater.is_initialized
|
1331
|
+
backup_coil = icomp.to_CoilHeatingWater.get
|
1320
1332
|
elsif icomp.to_FanConstantVolume.is_initialized
|
1321
1333
|
fans << icomp.to_FanConstantVolume.get
|
1322
1334
|
elsif icomp.to_FanVariableVolume.is_initialized
|
@@ -1362,12 +1374,24 @@ class ECMS
|
|
1362
1374
|
end
|
1363
1375
|
htg_dx_coil_init_name = get_hvac_comp_init_name(htg_dx_coil, false)
|
1364
1376
|
htg_dx_coil.setName(htg_dx_coil_init_name)
|
1365
|
-
if backup_coil.
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1377
|
+
if (backup_coil.class.name.to_s.include? "CoilHeatingGas") || (backup_coil.class.name.to_s.include? "CoilHeatingElectric")
|
1378
|
+
if backup_coil.nominalCapacity.is_initialized
|
1379
|
+
backup_coil_cap = backup_coil.nominalCapacity.to_f
|
1380
|
+
elsif backup_coil.autosizedNominalCapacity.is_initialized
|
1381
|
+
backup_coil_cap = backup_coil.autosizedNominalCapacity.to_f
|
1382
|
+
else
|
1383
|
+
raise "Nominal capacity is undefiled for coil #{backup_coil.name.to_s}"
|
1384
|
+
end
|
1385
|
+
elsif backup_coil.class.name.to_s.include? "CoilHeatingWater"
|
1386
|
+
if backup_coil.ratedCapacity.is_initialized
|
1387
|
+
backup_coil_cap = backup_coil.ratedCapacity.to_f
|
1388
|
+
elsif backup_coil.autosizedRatedCapacity.is_initialized
|
1389
|
+
backup_coil_cap = backup_coil.autosizedRatedCapacity.to_f
|
1390
|
+
else
|
1391
|
+
raise "Rated capacity is undefiled for coil #{backup_coil.name.to_s}"
|
1392
|
+
end
|
1369
1393
|
else
|
1370
|
-
raise
|
1394
|
+
raise("Backup coil type is not supported")
|
1371
1395
|
end
|
1372
1396
|
# Set the DX capacities to the maximum of the fraction of the backup coil capacity or the cooling capacity needed
|
1373
1397
|
dx_cap = fr_backup_coil_cap_as_dx_coil_cap * backup_coil_cap
|
@@ -1646,6 +1670,8 @@ class ECMS
|
|
1646
1670
|
backup_coil = icomp.to_CoilHeatingElectric.get
|
1647
1671
|
elsif icomp.to_CoilHeatingGas.is_initialized
|
1648
1672
|
backup_coil = icomp.to_CoilHeatingGas.get
|
1673
|
+
elsif icomp.to_CoilHeatingWater.is_initialized
|
1674
|
+
backup_coil = icomp.to_CoilHeatingWater.get
|
1649
1675
|
end
|
1650
1676
|
end
|
1651
1677
|
if clg_dx_coil && htg_dx_coil && backup_coil
|
@@ -1661,12 +1687,24 @@ class ECMS
|
|
1661
1687
|
end
|
1662
1688
|
htg_dx_coil_init_name = get_hvac_comp_init_name(htg_dx_coil, true)
|
1663
1689
|
htg_dx_coil.setName(htg_dx_coil_init_name)
|
1664
|
-
if backup_coil.
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1690
|
+
if (backup_coil.class.name.include? "CoilHeatingElectric") || (backup_coil.class.name.include? "CoilHeatingGas")
|
1691
|
+
if backup_coil.nominalCapacity.is_initialized
|
1692
|
+
backup_coil_cap = backup_coil.nominalCapacity.to_f
|
1693
|
+
elsif backup_coil.autosizedNominalCapacity.is_initialized
|
1694
|
+
backup_coil_cap = backup_coil.autosizedNominalCapacity.to_f
|
1695
|
+
else
|
1696
|
+
raise "Nominal capacity is undefined for coil #{backup_coil.name.to_s}"
|
1697
|
+
end
|
1698
|
+
elsif backup_coil.class.name.include? "CoilHeatingWater"
|
1699
|
+
if backup_coil.ratedCapacity.is_initialized
|
1700
|
+
backup_coil_cap = backup_coil.ratedCapacity.to_f
|
1701
|
+
elsif backup_coil.autosizedRatedCapacity.is_initialized
|
1702
|
+
backup_coil_cap = backup_coil.autosizedRatedCapacity.to_f
|
1703
|
+
else
|
1704
|
+
raise "Rated capacity is undefined for coil #{backup_coil.name.to_s}"
|
1705
|
+
end
|
1668
1706
|
else
|
1669
|
-
raise
|
1707
|
+
raise("Backup coil type is not supported")
|
1670
1708
|
end
|
1671
1709
|
# set the DX capacities to the maximum of the fraction of the backup coil capacity or the cooling capacity needed
|
1672
1710
|
dx_cap = fr_backup_coil_cap_as_dx_coil_cap * backup_coil_cap
|
@@ -1793,11 +1831,19 @@ class ECMS
|
|
1793
1831
|
else
|
1794
1832
|
raise("Can not find curve hpowerf for #{hw_loop_htg_eqpt.name}")
|
1795
1833
|
end
|
1796
|
-
boiler
|
1797
|
-
boiler.
|
1834
|
+
# Add one boiler if the primary and backup boiler fuel types are the same. Add two boilers if the primary and
|
1835
|
+
# secondary boiler fuel types differ.
|
1836
|
+
boiler_fuels = []
|
1837
|
+
boiler_fuels[0] = standard.fuel_type_set.boiler_fueltype
|
1838
|
+
boiler_fuels[1] = standard.fuel_type_set.backup_boiler_fueltype unless standard.fuel_type_set.backup_boiler_fueltype == boiler_fuels[0]
|
1798
1839
|
hw_loop_htg_eqpt_outlet_node = hw_loop_htg_eqpt.supplyOutletModelObject.get.to_Node.get
|
1799
|
-
|
1800
|
-
|
1840
|
+
hw_boilers = []
|
1841
|
+
boiler_fuels.each do |boiler_fuel|
|
1842
|
+
boiler = OpenStudio::Model::BoilerHotWater.new(model)
|
1843
|
+
boiler.setFuelType(boiler_fuel)
|
1844
|
+
hw_boilers << boiler
|
1845
|
+
end
|
1846
|
+
hw_boilers.reverse().each {|boiler| boiler.addToNode(hw_loop_htg_eqpt_outlet_node)}
|
1801
1847
|
# add chilled-water loop
|
1802
1848
|
chw_loop,chw_loop_clg_eqpt = add_plantloop(model: model,
|
1803
1849
|
loop_htg_eqpt_type: 'none',
|
@@ -1839,7 +1885,7 @@ class ECMS
|
|
1839
1885
|
heat_rej_loop.addDemandBranchForComponent(hw_loop_htg_eqpt)
|
1840
1886
|
heat_rej_loop.addDemandBranchForComponent(chw_loop_clg_eqpt)
|
1841
1887
|
|
1842
|
-
# add output variables
|
1888
|
+
# add output variables for district heating and cooling
|
1843
1889
|
model.getOutputVariables.each {|ivar| ivar.remove}
|
1844
1890
|
dist_htg_var = OpenStudio::Model::OutputVariable.new("District Heating Water Rate",model)
|
1845
1891
|
dist_htg_var.setReportingFrequency("hourly")
|
@@ -1860,7 +1906,7 @@ class ECMS
|
|
1860
1906
|
hw_loops = model.getPlantLoops.select {|loop| loop.sizingPlant.loopType.to_s.downcase == 'heating'}
|
1861
1907
|
hw_heatpump_loop = nil
|
1862
1908
|
hw_heatpump = nil
|
1863
|
-
|
1909
|
+
hw_boilers = nil
|
1864
1910
|
hw_loops.each do |hw_loop|
|
1865
1911
|
hw_heatpumps = hw_loop.supplyComponents.select {|comp| comp.to_HeatPumpWaterToWaterEquationFitHeating.is_initialized}
|
1866
1912
|
if !hw_heatpumps.empty?
|
@@ -1868,8 +1914,7 @@ class ECMS
|
|
1868
1914
|
hw_heatpump = hw_heatpumps[0].to_HeatPumpWaterToWaterEquationFitHeating.get
|
1869
1915
|
end
|
1870
1916
|
hw_boilers = hw_loop.supplyComponents.select {|comp| comp.to_BoilerHotWater.is_initialized}
|
1871
|
-
|
1872
|
-
break if !hw_heatpump_loop.nil? && !hw_heatpump.nil? && !hw_boiler.nil?
|
1917
|
+
break if !hw_heatpump_loop.nil? && !hw_heatpump.nil? && !hw_boilers.empty?
|
1873
1918
|
end
|
1874
1919
|
raise("apply_efficiency_ecm_hs14_cgshp_fancoils: no water-source heat pump found in heating loop #{hw_loops.name.to_s}") if hw_heatpump.nil?
|
1875
1920
|
cw_loop = model.getPlantLoops.select {|loop| loop.sizingPlant.loopType.to_s.downcase == 'condenser'}[0]
|
@@ -1898,13 +1943,22 @@ class ECMS
|
|
1898
1943
|
cap = hw_heatpump.autosizedRatedHeatingCapacity.to_f
|
1899
1944
|
elsif hw_heatpump.ratedHeatingCapacity.is_initialized
|
1900
1945
|
cap = hw_heatpump.ratedHeatingCapacity.to_f
|
1901
|
-
elsif hw_heatpump.autosizedRatedHeatingCapacity.is_initialized
|
1902
|
-
cap = hw_heatpump.autosizedRatedHeatingCapacity.to_f
|
1903
1946
|
else
|
1904
1947
|
raise("apply_efficiency_ecm_hs14_cgshp_fancoils: capacity of water-source heat pump #{hw_heatpump.name.to_s} is not defined")
|
1905
1948
|
end
|
1906
1949
|
hw_heatpump.setRatedHeatingCapacity(heatpump_siz_f*cap)
|
1907
|
-
|
1950
|
+
# If two boilers are present set their capacities by multiplying the capacity not handled by the GSHP by the defined
|
1951
|
+
# primary and secondary boiler capacity ratios, respectively. If one boiler is defined then set its capacity to the
|
1952
|
+
# amount not handled by the GSHP.
|
1953
|
+
tot_hw_boiler_cap = (1.0-heatpump_siz_f)*cap
|
1954
|
+
hw_boiler_cap = [ 1.0 ]
|
1955
|
+
if hw_boilers.size > 1
|
1956
|
+
standard.fuel_type_set.primary_boiler_cap_frac.nil? ? hw_boiler_cap[0] = 0.75 : hw_boiler_cap[0] = standard.fuel_type_set.primary_boiler_cap_frac
|
1957
|
+
standard.fuel_type_set.secondary_boiler_cap_frac.nil? ? hw_boiler_cap[1] = 1.0 - hw_boiler_cap[0] : hw_boiler_cap[1] = standard.fuel_type_set.secondary_boiler_cap_frac
|
1958
|
+
end
|
1959
|
+
hw_boilers.each_with_index do |hw_boiler, boiler_index|
|
1960
|
+
hw_boiler.to_BoilerHotWater.get.setNominalCapacity((tot_hw_boiler_cap*hw_boiler_cap[boiler_index]))
|
1961
|
+
end
|
1908
1962
|
# set cooling capacity of chillers
|
1909
1963
|
chillers = chw_loop.supplyComponents.select {|comp| comp.to_ChillerElectricEIR.is_initialized}
|
1910
1964
|
chiller_water_cooled = nil
|
@@ -1921,8 +1975,6 @@ class ECMS
|
|
1921
1975
|
cap = chiller_water_cooled.autosizedReferenceCapacity.to_f
|
1922
1976
|
elsif chiller_water_cooled.referenceCapacity.is_initialized
|
1923
1977
|
cap = chiller_water_cooled.referenceCapacity.to_f
|
1924
|
-
elsif chiller_water_cooled.autosizedReferenceCapacity.is_initialized
|
1925
|
-
cap = chiller_water_cooled.autosizedReferenceCapacity.to_f
|
1926
1978
|
else
|
1927
1979
|
raise("apply_efficiency_ecm_hs14_cgshp_fancoils: cooling capacity of chiller #{chiller_water_cooled.name.to_s} is not defined")
|
1928
1980
|
end
|
@@ -2007,6 +2059,302 @@ class ECMS
|
|
2007
2059
|
dist_clg_eqpt.setNominalCapacity(max_clg_load)
|
2008
2060
|
end
|
2009
2061
|
|
2062
|
+
#=============================================================================================================================
|
2063
|
+
# Add equipment for ECM "hs15_cawhp_fancoils"
|
2064
|
+
# -Constant volume DOAS with hydronic htg and clg coils served by central air-to-water heat pump.
|
2065
|
+
# -Zonal terminal fan coil (4-pipe) connected to central air-to-water heat pump.
|
2066
|
+
# -Plant has a heating loop with air-to-water heat pump with one or two backup boiler(s).
|
2067
|
+
def add_ecm_hs15_cawhp_fancoils(model:,
|
2068
|
+
system_zones_map:,
|
2069
|
+
system_doas_flags:,
|
2070
|
+
ecm_system_zones_map_option:,
|
2071
|
+
standard:,
|
2072
|
+
sys_htg_eqpt_type: 'coil_hw',
|
2073
|
+
sys_clg_eqpt_type: 'coil_chw',
|
2074
|
+
sys_supp_htg_eqpt_type: 'none')
|
2075
|
+
# Update system zones map if needed
|
2076
|
+
system_zones_map = update_system_zones_map_keys(system_zones_map,'sys_1')
|
2077
|
+
system_zones_map = update_system_zones_map(model,system_zones_map,ecm_system_zones_map_option,'sys_1') if ecm_system_zones_map_option != 'NECB_Default'
|
2078
|
+
# Update system doas flags
|
2079
|
+
system_doas_flags = {}
|
2080
|
+
system_zones_map.keys.each { |sname| system_doas_flags[sname] = true }
|
2081
|
+
# generate new air system and zonal equipment
|
2082
|
+
systems = []
|
2083
|
+
system_zones_map.sort.each do |sys_name, zones|
|
2084
|
+
sys_info = air_sys_comps_assumptions(sys_name: sys_name,
|
2085
|
+
zones: zones,
|
2086
|
+
system_doas_flags: system_doas_flags)
|
2087
|
+
airloop,clg_coil,htg_coil,return_fan = add_air_system(model: model,
|
2088
|
+
zones: zones,
|
2089
|
+
sys_abbr: sys_info['sys_abbr'],
|
2090
|
+
sys_vent_type: sys_info['sys_vent_type'],
|
2091
|
+
sys_heat_rec_type: sys_info['sys_heat_rec_type'],
|
2092
|
+
sys_htg_eqpt_type: sys_htg_eqpt_type,
|
2093
|
+
sys_supp_htg_eqpt_type: sys_supp_htg_eqpt_type,
|
2094
|
+
sys_clg_eqpt_type: sys_clg_eqpt_type,
|
2095
|
+
sys_supp_fan_type: sys_info['sys_supp_fan_type'],
|
2096
|
+
sys_ret_fan_type: sys_info['sys_ret_fan_type'],
|
2097
|
+
sys_setpoint_mgr_type: 'warmest')
|
2098
|
+
if sys_htg_eqpt_type == 'ashp' && sys_clg_eqpt_type == 'ashp'
|
2099
|
+
eqpt_name = 'NECB2015_ASHP'
|
2100
|
+
coil_cooling_dx_single_speed_apply_curves(clg_coil,eqpt_name)
|
2101
|
+
coil_heating_dx_single_speed_apply_curves(htg_coil,eqpt_name)
|
2102
|
+
end
|
2103
|
+
# add zone fan coil equipment and diffuser
|
2104
|
+
zone_htg_eqpt_type = 'fancoil_4pipe'
|
2105
|
+
zone_clg_eqpt_type = 'fancoil_4pipe'
|
2106
|
+
zone_supp_htg_eqpt_type = 'none'
|
2107
|
+
zone_fan_type = 'on_off'
|
2108
|
+
add_zone_eqpt(model: model,
|
2109
|
+
airloop: airloop,
|
2110
|
+
zones: zones,
|
2111
|
+
outdoor_unit: nil,
|
2112
|
+
zone_diffuser_type: sys_info['zone_diffuser_type'],
|
2113
|
+
zone_htg_eqpt_type: zone_htg_eqpt_type,
|
2114
|
+
zone_supp_htg_eqpt_type: zone_supp_htg_eqpt_type,
|
2115
|
+
zone_clg_eqpt_type: zone_clg_eqpt_type,
|
2116
|
+
zone_fan_type: zone_fan_type)
|
2117
|
+
return_fan.addToNode(airloop.returnAirNode.get) if return_fan
|
2118
|
+
systems << airloop
|
2119
|
+
end
|
2120
|
+
# add hot-water loop with heat pump for heating
|
2121
|
+
hw_loop,hw_loop_htg_eqpt = add_plantloop(model: model,
|
2122
|
+
loop_htg_eqpt_type: 'HeatPump_PlantLoop_EIR_Heating',
|
2123
|
+
loop_clg_eqpt_type: 'none',
|
2124
|
+
loop_heat_rej_eqpt_type: 'none',
|
2125
|
+
loop_pump_type: 'variable_speed',
|
2126
|
+
loop_spm_type: 'Scheduled',
|
2127
|
+
loop_setpoint: 50.0,
|
2128
|
+
loop_temp_diff: 5.0)
|
2129
|
+
# set additional parameters for heating heat pump
|
2130
|
+
hw_loop_htg_eqpt.setCondenserType('AirSoure')
|
2131
|
+
hw_loop_htg_eqpt.setMinimumSourceInletTemperature(-15.0)
|
2132
|
+
hw_loop_htg_eqpt.setReferenceCoefficientofPerformance(3.0)
|
2133
|
+
hw_loop_htg_eqpt.setHeatPumpSizingMethod('CoolingCapacity')
|
2134
|
+
hw_loop_htg_eqpt.setHeatPumpDefrostControl('OnDemand')
|
2135
|
+
hw_loop_htg_eqpt.setFlowMode('VariableSpeedPumping')
|
2136
|
+
hw_loop_htg_eqpt.setControlType('Setpoint')
|
2137
|
+
hw_loop_htg_eqpt.setMinimumPartLoadRatio(0.2)
|
2138
|
+
hw_loop.setLoadDistributionScheme('SequentialLoad')
|
2139
|
+
model.getCoilHeatingWaters.sort.each {|coil| hw_loop.addDemandBranchForComponent(coil)}
|
2140
|
+
# add one boiler if the primary and backup boiler fuel types are the same. Add two boilers if the primary and
|
2141
|
+
# secondary boiler fuel types differ.
|
2142
|
+
hw_loop_htg_eqpt_outlet_node = hw_loop_htg_eqpt.supplyOutletModelObject.get.to_Node.get
|
2143
|
+
boiler_fuels = []
|
2144
|
+
boiler_fuels[0] = standard.fuel_type_set.boiler_fueltype
|
2145
|
+
boiler_fuels[1] = standard.fuel_type_set.backup_boiler_fueltype unless standard.fuel_type_set.backup_boiler_fueltype == boiler_fuels[0]
|
2146
|
+
hw_boilers = []
|
2147
|
+
boiler_fuels.each do |boiler_fuel|
|
2148
|
+
boiler = OpenStudio::Model::BoilerHotWater.new(model)
|
2149
|
+
boiler.setFuelType(boiler_fuel)
|
2150
|
+
hw_boilers << boiler
|
2151
|
+
end
|
2152
|
+
hw_boilers.reverse().each {|boiler| boiler.addToNode(hw_loop_htg_eqpt_outlet_node)}
|
2153
|
+
# add setpoint manager at the exit of the heat pump heating comp
|
2154
|
+
sch = OpenStudio::Model::ScheduleConstant.new(model)
|
2155
|
+
sch.setValue(50.0)
|
2156
|
+
spm = OpenStudio::Model::SetpointManagerScheduled.new(model,sch)
|
2157
|
+
spm.setName("HeatPumpHtgSetpointManager")
|
2158
|
+
spm.addToNode(hw_loop_htg_eqpt_outlet_node)
|
2159
|
+
# add chilled-water loop with heat pump for cooling
|
2160
|
+
chw_loop,chw_loop_clg_eqpt = add_plantloop(model: model,
|
2161
|
+
loop_htg_eqpt_type: 'none',
|
2162
|
+
loop_clg_eqpt_type: 'HeatPump_PlantLoop_EIR_Cooling',
|
2163
|
+
loop_heat_rej_eqpt_type: 'none',
|
2164
|
+
loop_pump_type: 'variable_speed',
|
2165
|
+
loop_spm_type: 'Scheduled',
|
2166
|
+
loop_setpoint: 7.0,
|
2167
|
+
loop_temp_diff: 6.0)
|
2168
|
+
# set additional parameter for heat pump for cooling
|
2169
|
+
chw_loop_clg_eqpt.setCondenserType('AirSource')
|
2170
|
+
chw_loop_clg_eqpt.setFlowMode('VariableSpeedPumping')
|
2171
|
+
chw_loop_clg_eqpt.setReferenceCoefficientofPerformance(3.0)
|
2172
|
+
chw_loop_clg_eqpt.setFlowMode('VariableSpeedPumping')
|
2173
|
+
chw_loop_clg_eqpt.setControlType('Load')
|
2174
|
+
chw_loop_clg_eqpt.setMinimumPartLoadRatio(0.2)
|
2175
|
+
hw_loop_htg_eqpt.setCompanionCoolingHeatPump(chw_loop_clg_eqpt)
|
2176
|
+
model.getCoilCoolingWaters.sort.each {|coil| chw_loop.addDemandBranchForComponent(coil)}
|
2177
|
+
# use performance curves given in one of the E+ examples for a central air-to-water heat pump from Trane
|
2178
|
+
# heating capft curve
|
2179
|
+
hcapft = OpenStudio::Model::CurveBiquadratic.new(model)
|
2180
|
+
hcapft.setCoefficient1Constant(0.794900878202383)
|
2181
|
+
hcapft.setCoefficient2x(0.00388524034840032)
|
2182
|
+
hcapft.setCoefficient3xPOW2(-0.0000575169230965453)
|
2183
|
+
hcapft.setCoefficient4y(0.0278109488428528)
|
2184
|
+
hcapft.setCoefficient5yPOW2(0.000318168)
|
2185
|
+
hcapft.setCoefficient6xTIMESY(-0.000130572089253355)
|
2186
|
+
hcapft.setMinimumValueofx(15.0)
|
2187
|
+
hcapft.setMaximumValueofx(70.0)
|
2188
|
+
hcapft.setMinimumValueofy(-17.0)
|
2189
|
+
hcapft.setMaximumValueofy(37.22)
|
2190
|
+
hcapft.setMinimumCurveOutput(0.0)
|
2191
|
+
hcapft.setMaximumCurveOutput(1.55)
|
2192
|
+
hw_loop_htg_eqpt.setCapacityModifierFunctionofTemperatureCurve(hcapft)
|
2193
|
+
# heating eirft curve
|
2194
|
+
heirft = OpenStudio::Model::CurveBiquadratic.new(model)
|
2195
|
+
heirft.setCoefficient1Constant(0.530730392560108)
|
2196
|
+
heirft.setCoefficient2x(0.00655164780603528)
|
2197
|
+
heirft.setCoefficient3xPOW2(0.000263599226028026)
|
2198
|
+
heirft.setCoefficient4y(-0.03620668194737)
|
2199
|
+
heirft.setCoefficient5yPOW2(0.00126617163409192)
|
2200
|
+
heirft.setCoefficient6xTIMESY(-0.000791224057761721)
|
2201
|
+
heirft.setMinimumValueofx(15.0)
|
2202
|
+
heirft.setMaximumValueofx(70.0)
|
2203
|
+
heirft.setMinimumValueofy(-17.0)
|
2204
|
+
heirft.setMaximumValueofy(37.22)
|
2205
|
+
heirft.setMinimumCurveOutput(0.4)
|
2206
|
+
heirft.setMaximumCurveOutput(1.48)
|
2207
|
+
hw_loop_htg_eqpt.setElectricInputtoOutputRatioModifierFunctionofTemperatureCurve(heirft)
|
2208
|
+
# cooling capft curves
|
2209
|
+
ccapft = OpenStudio::Model::CurveBiquadratic.new(model)
|
2210
|
+
ccapft.setCoefficient1Constant(1.06722728893252)
|
2211
|
+
ccapft.setCoefficient2x(0.0460678063570057)
|
2212
|
+
ccapft.setCoefficient3xPOW2(0.00034604993757372)
|
2213
|
+
ccapft.setCoefficient4y(-0.0069704934525177)
|
2214
|
+
ccapft.setCoefficient5yPOW2(-0.0000288618548923695)
|
2215
|
+
ccapft.setCoefficient6xTIMESY(-0.000475762640861958)
|
2216
|
+
ccapft.setMinimumValueofx(2.0)
|
2217
|
+
ccapft.setMaximumValueofx(20.0)
|
2218
|
+
ccapft.setMinimumValueofy(4.2)
|
2219
|
+
ccapft.setMaximumValueofy(37.0)
|
2220
|
+
ccapft.setMinimumCurveOutput(0.0)
|
2221
|
+
ccapft.setMaximumCurveOutput(1.55)
|
2222
|
+
chw_loop_clg_eqpt.setCapacityModifierFunctionofTemperatureCurve(ccapft)
|
2223
|
+
# cooling eirft curve
|
2224
|
+
ceirft = OpenStudio::Model::CurveBiquadratic.new(model)
|
2225
|
+
ceirft.setCoefficient1Constant(0.440305821838175)
|
2226
|
+
ceirft.setCoefficient2x(-0.0241323110030793)
|
2227
|
+
ceirft.setCoefficient3xPOW2(0.000537914626055751)
|
2228
|
+
ceirft.setCoefficient4y(0.0118716162533228)
|
2229
|
+
ceirft.setCoefficient5yPOW2(0.000305785618883187)
|
2230
|
+
ceirft.setCoefficient6xTIMESY(-0.000617329632749052)
|
2231
|
+
ceirft.setMinimumValueofx(2.0)
|
2232
|
+
ceirft.setMaximumValueofx(20.0)
|
2233
|
+
ceirft.setMinimumValueofy(4.2)
|
2234
|
+
ceirft.setMaximumValueofy(37.0)
|
2235
|
+
ceirft.setMinimumCurveOutput(0.4)
|
2236
|
+
ceirft.setMaximumCurveOutput(1.48)
|
2237
|
+
chw_loop_clg_eqpt.setElectricInputtoOutputRatioModifierFunctionofTemperatureCurve(ceirft)
|
2238
|
+
return
|
2239
|
+
end
|
2240
|
+
|
2241
|
+
#=============================================================================================================================
|
2242
|
+
# Apply efficiency for ECM 'hs15_cawhp_fancoils'
|
2243
|
+
def apply_efficiency_ecm_hs15_cawhp_fancoils(model, standard)
|
2244
|
+
heatpump_siz_f = 0.4 # heating heat pump sizing fraction
|
2245
|
+
# get heat pump heating and boiler objects
|
2246
|
+
hw_loop = model.getPlantLoops.select {|loop| loop.sizingPlant.loopType.to_s.downcase == 'heating'}
|
2247
|
+
raise("apply_efficiency_ecm_hs15_cawhp_fancoils: no hot-water loop is found") if hw_loop.empty?
|
2248
|
+
hw_loop = hw_loop[0].to_PlantLoop.get
|
2249
|
+
heatpump_htg = hw_loop.supplyComponents.select {|comp| comp.to_HeatPumpPlantLoopEIRHeating.is_initialized}
|
2250
|
+
hw_boilers = hw_loop.supplyComponents.select {|comp| comp.to_BoilerHotWater.is_initialized}
|
2251
|
+
raise("apply_efficiency_ecm_hs15_cawhp_fancoils: no air-source heat pump found on hot-water loop #{hw_loop.name.to_s}") if heatpump_htg.empty?
|
2252
|
+
raise("apply_efficiency_ecm_hs15_cawhp_fancoils: no boiler found on hot-water loop #{hw_loop.name.to_s}") if hw_boilers.empty?
|
2253
|
+
heatpump_htg = heatpump_htg[0].to_HeatPumpPlantLoopEIRHeating.get
|
2254
|
+
primary_boiler = hw_boilers[0].to_BoilerHotWater.get
|
2255
|
+
# boiler total capacity
|
2256
|
+
if primary_boiler.autosizedNominalCapacity.is_initialized
|
2257
|
+
tot_hw_boiler_cap = primary_boiler.autosizedNominalCapacity.to_f
|
2258
|
+
elsif primary_boiler.nominalCapacity.is_initialized
|
2259
|
+
tot_hw_boiler_cap = primary_boiler.nominalCapacity.to_f
|
2260
|
+
else
|
2261
|
+
raise("apply_efficiency_ecm_hs15_cawhp_fancoils: capacity of boiler #{primary_boiler.name.to_s} is not defined")
|
2262
|
+
end
|
2263
|
+
# If two boilers are present set their capacities by multiplying the total capacity by the defined primary and secondary
|
2264
|
+
# boiler capacity ratios, respectively.
|
2265
|
+
hw_boiler_cap = [ 1.0 ]
|
2266
|
+
if hw_boilers.size > 1
|
2267
|
+
standard.fuel_type_set.primary_boiler_cap_frac.nil? ? hw_boiler_cap[0] = 0.75 : hw_boiler_cap[0] = standard.fuel_type_set.primary_boiler_cap_frac
|
2268
|
+
standard.fuel_type_set.secondary_boiler_cap_frac.nil? ? hw_boiler_cap[1] = 1.0 - hw_boiler_cap[0] : hw_boiler_cap[1] = standard.fuel_type_set.secondary_boiler_cap_frac
|
2269
|
+
end
|
2270
|
+
hw_boilers.each_with_index do |hw_boiler, boiler_index|
|
2271
|
+
hw_boiler.to_BoilerHotWater.get.setNominalCapacity((tot_hw_boiler_cap*hw_boiler_cap[boiler_index]))
|
2272
|
+
end
|
2273
|
+
# get heat pump cooling object
|
2274
|
+
chw_loop = model.getPlantLoops.select {|loop| loop.sizingPlant.loopType.to_s.downcase == 'cooling'}
|
2275
|
+
raise("apply_efficiency_ecm_hs15_cawhp_fancoils: no chilled-water loop is found") if chw_loop.empty?
|
2276
|
+
chw_loop = chw_loop[0].to_PlantLoop.get
|
2277
|
+
heatpump_clg = chw_loop.supplyComponents.select {|comp| comp.to_HeatPumpPlantLoopEIRCooling.is_initialized}
|
2278
|
+
raise("apply_efficiency_ecm_hs15_cawhp_fancoils: no heat pump on chilled-water loop #{chw_loop.name} is found") if heatpump_clg.empty?
|
2279
|
+
heatpump_clg = heatpump_clg[0].to_HeatPumpPlantLoopEIRCooling.get
|
2280
|
+
# get cooling capacity of air-source heat pump
|
2281
|
+
if heatpump_clg.autosizedReferenceCapacity.is_initialized
|
2282
|
+
hp_clg_cap = heatpump_clg.autosizedReferenceCapacity.to_f
|
2283
|
+
elsif heatpump_clg.ratedReferenceCapacity.is_initialized
|
2284
|
+
hp_clg_cap = heatpump_clg.ratedReferenceCapacity.to_f
|
2285
|
+
else
|
2286
|
+
raise("apply_efficiency_ecm_hs15_cawhp_fancoils: capacity of air-source heat pump #{heatpump_htg.name.to_s} is not defined")
|
2287
|
+
end
|
2288
|
+
# set final heating capacity and cooling capacities of air-source heat pump
|
2289
|
+
hp_htg_cap = heatpump_siz_f*tot_hw_boiler_cap
|
2290
|
+
hp_htg_cap = hp_clg_cap if hp_clg_cap > hp_htg_cap
|
2291
|
+
heatpump_htg.setReferenceCapacity(hp_htg_cap)
|
2292
|
+
heatpump_clg.setReferenceCapacity(hp_htg_cap)
|
2293
|
+
# sensor for heat pump cooling load side heat transfer
|
2294
|
+
heatpump_clg_load_s = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Heat Pump Load Side Heat Transfer Rate')
|
2295
|
+
heatpump_clg_load_s.setName('HeatPumpClgLoad')
|
2296
|
+
heatpump_clg_load_s.setKeyName(heatpump_clg.name.to_s)
|
2297
|
+
# actuator for heat pump heating outlet node setpoint schedule
|
2298
|
+
heatpump_htg_outlet_node = heatpump_htg.supplyOutletModelObject.get.to_Node.get
|
2299
|
+
heatpump_htg_sch = heatpump_htg_outlet_node.setpointManagers[0].to_SetpointManagerScheduled.get.schedule.to_ScheduleConstant.get
|
2300
|
+
heatpump_htg_sch_a = OpenStudio::Model::EnergyManagementSystemActuator.new(heatpump_htg_sch, 'Schedule:Constant', 'Schedule Value')
|
2301
|
+
heatpump_htg_sch_a.setName('heatpump_htg_sch_a')
|
2302
|
+
# energy management program to turn off heat pump heating side when the cooling side is on
|
2303
|
+
heatpump_cltr_prg = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
|
2304
|
+
heatpump_cltr_prg.setName('HeatPumpCtrlPrg')
|
2305
|
+
body = <<-EMS
|
2306
|
+
IF (HeatPumpClgLoad > 0.0)
|
2307
|
+
SET heatpump_htg_sch_a = -99.0
|
2308
|
+
ELSE
|
2309
|
+
SET heatpump_htg_sch_a = 50.0
|
2310
|
+
ENDIF
|
2311
|
+
EMS
|
2312
|
+
heatpump_cltr_prg.setBody(body)
|
2313
|
+
heat_pump_ctlr_pcm = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
|
2314
|
+
heat_pump_ctlr_pcm.setName('HeatPumpCtrlPCM')
|
2315
|
+
heat_pump_ctlr_pcm.setCallingPoint('InsideHVACSystemIterationLoop')
|
2316
|
+
heat_pump_ctlr_pcm.addProgram(heatpump_cltr_prg)
|
2317
|
+
|
2318
|
+
return
|
2319
|
+
end
|
2320
|
+
|
2321
|
+
#=============================================================================================================================
|
2322
|
+
# Add equipment for ECM "hs16_ashp_cawhp_fancoils"
|
2323
|
+
# -Constant volume DOAS with ashp for heating and cooling with a backup heating coil.
|
2324
|
+
# -Zonal terminal fan coil (4-pipe) connected to central air-to-water heat pump.
|
2325
|
+
# -Plant has a heating loop with air-to-water heat pump with one or two backup boiler(s).
|
2326
|
+
def add_ecm_hs16_ashp_cawhp_fancoils(model:,
|
2327
|
+
system_zones_map:,
|
2328
|
+
system_doas_flags:,
|
2329
|
+
ecm_system_zones_map_option:,
|
2330
|
+
standard:)
|
2331
|
+
# Get the heating fuel type from the system fuels object defined by the standards object
|
2332
|
+
heating_fuel = standard.fuel_type_set.ecm_fueltype
|
2333
|
+
# Set supplemental heaing for airloop
|
2334
|
+
sys_supp_htg_eqpt_type = 'coil_electric'
|
2335
|
+
sys_supp_htg_eqpt_type = 'coil_gas' if heating_fuel == 'NaturalGas'
|
2336
|
+
# call ecm HS15 to add the air loop
|
2337
|
+
add_ecm_hs15_cawhp_fancoils(model: model,
|
2338
|
+
system_zones_map: system_zones_map,
|
2339
|
+
system_doas_flags: system_doas_flags,
|
2340
|
+
ecm_system_zones_map_option: ecm_system_zones_map_option,
|
2341
|
+
standard: standard,
|
2342
|
+
sys_htg_eqpt_type: 'ashp',
|
2343
|
+
sys_clg_eqpt_type: 'ashp',
|
2344
|
+
sys_supp_htg_eqpt_type: sys_supp_htg_eqpt_type)
|
2345
|
+
return
|
2346
|
+
end
|
2347
|
+
|
2348
|
+
#=============================================================================================================================
|
2349
|
+
# Apply efficiency for ECM 'hs16_ashp_cawhp_fancoils'
|
2350
|
+
def apply_efficiency_ecm_hs16_ashp_cawhp_fancoils(model, standard)
|
2351
|
+
# The air loop is the same as in ECM HS12
|
2352
|
+
apply_efficiency_ecm_hs12_ashp_baseboard(model, standard)
|
2353
|
+
# The plant loop is the same as in ECM HS15
|
2354
|
+
apply_efficiency_ecm_hs15_cawhp_fancoils(model, standard)
|
2355
|
+
return
|
2356
|
+
end
|
2357
|
+
|
2010
2358
|
# =============================================================================================================================
|
2011
2359
|
# Applies the performance curves "CoilCoolingDXSingleSpeed" object.
|
2012
2360
|
def coil_cooling_dx_single_speed_apply_curves(coil_cooling_dx_single_speed, eqpt_name)
|
@@ -2028,7 +2376,6 @@ class ECMS
|
|
2028
2376
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standard.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name}, cannot find efficiency info using #{search_criteria}, cannot apply efficiency.")
|
2029
2377
|
successfully_set_all_properties = false
|
2030
2378
|
end
|
2031
|
-
|
2032
2379
|
# Make the COOL-CAP-FT curve
|
2033
2380
|
cool_cap_ft = model_add_curve(coil_cooling_dx_single_speed.model, ac_props['cool_cap_ft'])
|
2034
2381
|
|
@@ -2946,8 +3293,13 @@ class ECMS
|
|
2946
3293
|
end
|
2947
3294
|
|
2948
3295
|
# Set COP
|
2949
|
-
|
2950
|
-
|
3296
|
+
unless cop.nil?
|
3297
|
+
if airconditioner_variablerefrigerantflow.model.version < OpenStudio::VersionString.new('2.9.0')
|
3298
|
+
airconditioner_variablerefrigerantflow.setRatedCoolingCOP(cop.to_f)
|
3299
|
+
else
|
3300
|
+
airconditioner_variablerefrigerantflow.setGrossRatedCoolingCOP(cop.to_f)
|
3301
|
+
end
|
3302
|
+
end
|
2951
3303
|
end
|
2952
3304
|
|
2953
3305
|
# =============================================================================================================================
|
@@ -94,8 +94,6 @@ class NECB2011
|
|
94
94
|
# Organizes Zones and assigns them to appropriate systems according to NECB 2011-17 systems spacetype rules in Sec 8.
|
95
95
|
# requires requires fuel type to be assigned for each system aspect. Defaults to gas hydronic.
|
96
96
|
def apply_systems(model:,
|
97
|
-
primary_heating_fuel:,
|
98
|
-
swh_fuel:,
|
99
97
|
sizing_run_dir:,
|
100
98
|
shw_scale:,
|
101
99
|
baseline_system_zones_map_option:)
|
@@ -181,7 +179,6 @@ class NECB2011
|
|
181
179
|
mau_type: self.fuel_type_set.mau_type
|
182
180
|
)
|
183
181
|
model_add_swh(model: model,
|
184
|
-
swh_fueltype: swh_fuel,
|
185
182
|
shw_scale: shw_scale)
|
186
183
|
model_apply_sizing_parameters(model)
|
187
184
|
# set a larger tolerance for unmet hours from default 0.2 to 1.0C
|
@@ -751,7 +748,7 @@ class NECB2011
|
|
751
748
|
new_spacetype.setStandardsSpaceType(new_spacetype_name)
|
752
749
|
new_spacetype.setName("#{space.spaceType.get.standardsBuildingType.get} #{new_spacetype_name}")
|
753
750
|
space_type_apply_internal_loads(space_type: new_spacetype, lights_type: lights_type, lights_scale: lights_scale)
|
754
|
-
space_type_apply_internal_load_schedules(new_spacetype, true, true, true, true, true, true
|
751
|
+
space_type_apply_internal_load_schedules(new_spacetype, true, true, true, true, true, true)
|
755
752
|
end
|
756
753
|
space.setSpaceType(new_spacetype)
|
757
754
|
# sanity check.
|