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
@@ -0,0 +1,86 @@
|
|
1
|
+
# These methods convert space type service water heating equipment data to and from .csv for editing.
|
2
|
+
private
|
3
|
+
|
4
|
+
require 'csv'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
# Typical Water Use Equipment Data Schema
|
8
|
+
# equipment_name: The name of the specific piece of equipment. The space name will be prepended, and flow rate and temperature appended to the name.
|
9
|
+
# peak_flow_rate: The peak flow rate in gallons per hour
|
10
|
+
# peak_flow_rate_per_area: The peak flow rate in gallons per hour per ft^2 of floor area. Only used if 'peak_flow_rate' is unspecified.
|
11
|
+
# loop_type: Several options are available.
|
12
|
+
# - 'One Per Space': This water use equipment uses a dedicated loop in each space.
|
13
|
+
# - 'One Per Unit': This water use equipment uses a dedicated loop in each space. Water use equipment flow rates are multiplied by the 'num_units' additional property on the Space object.
|
14
|
+
# - 'Shared': Equipment will use the shared building service hot water loop.
|
15
|
+
# - 'One Per Space Type Adjacent': Not yet supported. Will create a dedicated loop to serve all adjacent equipment of the same space type.
|
16
|
+
# - 'One Per Building Type Adjacent': Not yet supported. Will create a dedicated loop to serve all adjacent equipment of the same building type.
|
17
|
+
# temperature: Target mixed water temperature at the water use, in degrees Fahrenheit
|
18
|
+
# flow_rate_schedule: The name of the flow rate schedule from the schedules .json
|
19
|
+
# sensible_fraction: The fraction of heat content converted to space sensible load
|
20
|
+
# latent_fraction: The fraction of heat content converted to space latent load
|
21
|
+
|
22
|
+
# Future Schema inclusions?
|
23
|
+
# minimum_space_size: Not yet supported. Only add this water use if the space is above this size of floor area.
|
24
|
+
# minimum_tank_volume: Not yet supported. The minimum tank volume to use for dedicated loops. The default is 40 gallons.
|
25
|
+
|
26
|
+
def csv_to_json(input_csv = 'typical_exhaust.csv',
|
27
|
+
output_json = 'typical_exhaust.json')
|
28
|
+
# Initialize the structure
|
29
|
+
result = {
|
30
|
+
space_types: []
|
31
|
+
}
|
32
|
+
|
33
|
+
# Read the CSV file
|
34
|
+
CSV.foreach(input_csv, headers: true, header_converters: :symbol) do |row|
|
35
|
+
space_type = row[:space_type]
|
36
|
+
building_type = row[:building_type]
|
37
|
+
exhaust_per_area = row[:exhaust_per_area]
|
38
|
+
|
39
|
+
space_type_hash = {
|
40
|
+
space_type: space_type,
|
41
|
+
building_type: building_type,
|
42
|
+
exhaust_per_area: exhaust_per_area
|
43
|
+
}
|
44
|
+
|
45
|
+
# Add the space_type_hash to the result array
|
46
|
+
result[:space_types] << space_type_hash
|
47
|
+
end
|
48
|
+
|
49
|
+
# Write to the output JSON file
|
50
|
+
File.write(output_json, JSON.pretty_generate(result))
|
51
|
+
|
52
|
+
puts "Data has been converted to JSON and saved to #{output_json}"
|
53
|
+
end
|
54
|
+
|
55
|
+
# convert to json
|
56
|
+
csv_to_json
|
57
|
+
|
58
|
+
def json_to_csv(input_json = 'typical_exhaust.json',
|
59
|
+
output_csv = 'typical_exhaust.csv')
|
60
|
+
# Read the JSON file
|
61
|
+
data = JSON.parse(File.read(input_json), symbolize_names: true)
|
62
|
+
|
63
|
+
# Prepare the CSV headers
|
64
|
+
headers = [
|
65
|
+
:space_type,
|
66
|
+
:building_type,
|
67
|
+
:exhaust_per_area
|
68
|
+
]
|
69
|
+
|
70
|
+
# Write the CSV file
|
71
|
+
CSV.open(output_csv, 'w', write_headers: true, headers: headers) do |csv|
|
72
|
+
data[:space_types].each do |space_type_entry|
|
73
|
+
space_type = space_type_entry[:space_type]
|
74
|
+
building_type = space_type_entry[:building_type]
|
75
|
+
exhaust_per_area = space_type_entry[:exhaust_per_area]
|
76
|
+
|
77
|
+
csv << [
|
78
|
+
space_type,
|
79
|
+
building_type,
|
80
|
+
exhaust_per_area
|
81
|
+
]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
puts "Data has been converted to CSV and saved to #{output_csv}"
|
86
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
space_type,building_type,exhaust_per_area
|
2
|
+
Kitchen,FullServiceRestaurant,0.7
|
3
|
+
Kitchen,Hospital,0.7
|
4
|
+
Kitchen,LargeHotel,0.7
|
5
|
+
Laundry,LargeHotel,0.7
|
6
|
+
Anesthesia,Outpatient,1.3333
|
7
|
+
MRI,Outpatient,1.0
|
8
|
+
MRI_Control,Outpatient,1.0
|
9
|
+
Soil Work,Outpatient,1.6666
|
10
|
+
Toilet,Outpatient,1.6666
|
11
|
+
Kitchen,PrimarySchool,0.7
|
12
|
+
Restroom,PrimarySchool,0.29
|
13
|
+
Kitchen,QuickServiceRestaurant,0.7
|
14
|
+
Kitchen,SecondarySchool,0.7
|
15
|
+
Restroom,SecondarySchool,0.28
|
16
|
+
PublicRestroom,SmallHotel,1.14
|
17
|
+
Bakery,SuperMarket,1.24
|
18
|
+
Deli,SuperMarket,1.24
|
@@ -0,0 +1,89 @@
|
|
1
|
+
{
|
2
|
+
"space_types": [
|
3
|
+
{
|
4
|
+
"space_type": "Kitchen",
|
5
|
+
"building_type": "FullServiceRestaurant",
|
6
|
+
"exhaust_per_area": "0.7"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"space_type": "Kitchen",
|
10
|
+
"building_type": "Hospital",
|
11
|
+
"exhaust_per_area": "0.7"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"space_type": "Kitchen",
|
15
|
+
"building_type": "LargeHotel",
|
16
|
+
"exhaust_per_area": "0.7"
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"space_type": "Laundry",
|
20
|
+
"building_type": "LargeHotel",
|
21
|
+
"exhaust_per_area": "0.7"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"space_type": "Anesthesia",
|
25
|
+
"building_type": "Outpatient",
|
26
|
+
"exhaust_per_area": "1.3333"
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"space_type": "MRI",
|
30
|
+
"building_type": "Outpatient",
|
31
|
+
"exhaust_per_area": "1.0"
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"space_type": "MRI_Control",
|
35
|
+
"building_type": "Outpatient",
|
36
|
+
"exhaust_per_area": "1.0"
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"space_type": "Soil Work",
|
40
|
+
"building_type": "Outpatient",
|
41
|
+
"exhaust_per_area": "1.6666"
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"space_type": "Toilet",
|
45
|
+
"building_type": "Outpatient",
|
46
|
+
"exhaust_per_area": "1.6666"
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"space_type": "Kitchen",
|
50
|
+
"building_type": "PrimarySchool",
|
51
|
+
"exhaust_per_area": "0.7"
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"space_type": "Restroom",
|
55
|
+
"building_type": "PrimarySchool",
|
56
|
+
"exhaust_per_area": "0.29"
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"space_type": "Kitchen",
|
60
|
+
"building_type": "QuickServiceRestaurant",
|
61
|
+
"exhaust_per_area": "0.7"
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"space_type": "Kitchen",
|
65
|
+
"building_type": "SecondarySchool",
|
66
|
+
"exhaust_per_area": "0.7"
|
67
|
+
},
|
68
|
+
{
|
69
|
+
"space_type": "Restroom",
|
70
|
+
"building_type": "SecondarySchool",
|
71
|
+
"exhaust_per_area": "0.28"
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"space_type": "PublicRestroom",
|
75
|
+
"building_type": "SmallHotel",
|
76
|
+
"exhaust_per_area": "1.14"
|
77
|
+
},
|
78
|
+
{
|
79
|
+
"space_type": "Bakery",
|
80
|
+
"building_type": "SuperMarket",
|
81
|
+
"exhaust_per_area": "1.24"
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"space_type": "Deli",
|
85
|
+
"building_type": "SuperMarket",
|
86
|
+
"exhaust_per_area": "1.24"
|
87
|
+
}
|
88
|
+
]
|
89
|
+
}
|
@@ -35,16 +35,14 @@ module OpenstudioStandards
|
|
35
35
|
end
|
36
36
|
|
37
37
|
case model_building_type
|
38
|
-
when 'Office'
|
39
|
-
# map office building type to small medium or large
|
38
|
+
when 'Office', 'SmallOffice', 'SmallOfficeDetailed', 'MediumOffice', 'MediumOfficeDetailed', 'LargeOffice', 'LargeOfficeDetailed', 'Outpatient', 'OfS', 'OfL', 'SmallDataCenterLowITE', 'SmallDataCenterHighITE', 'LargeDataCenterLowITE', 'LargeDataCenterHighITE'
|
39
|
+
# map office or data center building type to small, medium or large
|
40
40
|
floor_area = model.getBuilding.floorArea
|
41
41
|
if floor_area < 2750.0
|
42
42
|
nist_building_type = 'SmallOffice'
|
43
43
|
else
|
44
44
|
nist_building_type = 'MediumOffice'
|
45
45
|
end
|
46
|
-
when 'LargeOffice', 'Outpatient', 'OfL'
|
47
|
-
nist_building_type = 'MediumOffice'
|
48
46
|
when 'Retail'
|
49
47
|
# map retal building type to RetailStripmall or RetailStandalone based on building name
|
50
48
|
building_name = model.getBuilding.name.get
|
@@ -53,22 +51,33 @@ module OpenstudioStandards
|
|
53
51
|
else
|
54
52
|
nist_building_type = 'RetailStripmall'
|
55
53
|
end
|
56
|
-
when 'StripMall', 'Warehouse', 'QuickServiceRestaurant', 'FullServiceRestaurant', 'RtS', 'RSD', 'RFF', 'SCn', 'SUn', 'WRf'
|
54
|
+
when 'RetailStripmall', 'StripMall', 'Warehouse', 'QuickServiceRestaurant', 'FullServiceRestaurant', 'RtS', 'RSD', 'RFF', 'SCn', 'SUn', 'WRf'
|
57
55
|
nist_building_type = 'RetailStripmall'
|
58
|
-
when 'SuperMarket', 'RtL'
|
56
|
+
when 'RetailStandalone', 'SuperMarket', 'RtL', 'Gro'
|
59
57
|
nist_building_type = 'RetailStandalone'
|
60
|
-
when 'EPr'
|
58
|
+
when 'PrimarySchool', 'EPr'
|
61
59
|
nist_building_type = 'PrimarySchool'
|
62
|
-
when 'ESe'
|
60
|
+
when 'SecondarySchool', 'ESe'
|
63
61
|
nist_building_type = 'SecondarySchool'
|
64
|
-
when 'Mtl'
|
62
|
+
when 'SmallHotel', 'Mtl'
|
65
63
|
nist_building_type = 'SmallHotel'
|
66
|
-
when 'Htl'
|
64
|
+
when 'LargeHotel', 'Htl'
|
67
65
|
nist_building_type = 'LargeHotel'
|
68
|
-
when 'Hsp'
|
66
|
+
when 'Hospital', 'Hsp'
|
69
67
|
nist_building_type = 'Hospital'
|
70
|
-
when '
|
71
|
-
nist_building_type = '
|
68
|
+
when 'MidriseApartment'
|
69
|
+
nist_building_type = 'MidriseApartment'
|
70
|
+
when 'HighriseApartment'
|
71
|
+
nist_building_type = 'HighriseApartment'
|
72
|
+
when 'TallBuilding', 'SuperTallBuilding'
|
73
|
+
nist_building_type = 'LargeHotel'
|
74
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Infiltration', "NIST coefficients aren't available for model building type #{model_building_type}. Since the building type is for a tall building, using nist building type #{nist_building_type} to best represent infiltration coefficients.")
|
75
|
+
when 'College', 'Laboratory'
|
76
|
+
nist_building_type = 'SecondarySchool'
|
77
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Infiltration', "NIST coefficients aren't available for model building type #{model_building_type}. Since the building may involve complex geometry, using nist building type #{nist_building_type} to best represent infiltration coefficients.")
|
78
|
+
when 'Courthouse'
|
79
|
+
nist_building_type = 'MediumOffice'
|
80
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Infiltration', "NIST coefficients aren't available for model building type #{model_building_type}. Using nist building type #{nist_building_type} to best represent infiltration coefficients.")
|
72
81
|
else
|
73
82
|
nist_building_type = model_building_type
|
74
83
|
end
|
@@ -209,6 +218,9 @@ module OpenstudioStandards
|
|
209
218
|
# get climate zone number
|
210
219
|
climate_zone_number = OpenstudioStandards::Weather.model_get_ashrae_climate_zone_number(model)
|
211
220
|
|
221
|
+
# there is no data for climate zone 0, so use data for climate zone 1
|
222
|
+
climate_zone_number = 1 if climate_zone_number == 0
|
223
|
+
|
212
224
|
# get nist building type
|
213
225
|
if nist_building_type.nil?
|
214
226
|
nist_building_type = model_infer_nist_building_type(model)
|
@@ -33,70 +33,6 @@ module LargeHotel
|
|
33
33
|
# add extra equipment for kitchen
|
34
34
|
add_extra_equip_kitchen(model)
|
35
35
|
|
36
|
-
# Add Exhaust Fan
|
37
|
-
space_type_map = define_space_type_map(building_type, climate_zone)
|
38
|
-
exhaust_fan_space_types = []
|
39
|
-
case template
|
40
|
-
when '90.1-2004', '90.1-2007'
|
41
|
-
exhaust_fan_space_types = ['Kitchen', 'Laundry']
|
42
|
-
else
|
43
|
-
exhaust_fan_space_types = ['Banquet', 'Kitchen', 'Laundry']
|
44
|
-
end
|
45
|
-
|
46
|
-
exhaust_fan_space_types.each do |space_type_name|
|
47
|
-
space_type_data = standards_lookup_table_first(table_name: 'space_types', search_criteria: { 'template' => template,
|
48
|
-
'building_type' => building_type,
|
49
|
-
'space_type' => space_type_name })
|
50
|
-
if space_type_data.nil?
|
51
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "Unable to find space type #{template}-#{building_type}-#{space_type_name}")
|
52
|
-
return false
|
53
|
-
end
|
54
|
-
|
55
|
-
exhaust_schedule = model_add_schedule(model, space_type_data['exhaust_availability_schedule'])
|
56
|
-
unless exhaust_schedule
|
57
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "Unable to find Exhaust Schedule for space type #{template}-#{building_type}-#{space_type_name}")
|
58
|
-
return false
|
59
|
-
end
|
60
|
-
|
61
|
-
balanced_exhaust_schedule = model_add_schedule(model, space_type_data['balanced_exhaust_fraction_schedule'])
|
62
|
-
|
63
|
-
space_names = space_type_map[space_type_name]
|
64
|
-
space_names.each do |space_name|
|
65
|
-
space = model.getSpaceByName(space_name).get
|
66
|
-
thermal_zone = space.thermalZone.get
|
67
|
-
|
68
|
-
zone_exhaust_fan = OpenStudio::Model::FanZoneExhaust.new(model)
|
69
|
-
zone_exhaust_fan.setName("#{space.name} Exhaust Fan")
|
70
|
-
zone_exhaust_fan.setAvailabilitySchedule(exhaust_schedule)
|
71
|
-
zone_exhaust_fan.setFanEfficiency(space_type_data['exhaust_fan_efficiency'])
|
72
|
-
zone_exhaust_fan.setPressureRise(space_type_data['exhaust_fan_pressure_rise'])
|
73
|
-
maximum_flow_rate = OpenStudio.convert(space_type_data['exhaust_fan_maximum_flow_rate'], 'cfm', 'm^3/s').get
|
74
|
-
|
75
|
-
zone_exhaust_fan.setMaximumFlowRate(maximum_flow_rate)
|
76
|
-
if balanced_exhaust_schedule.class.to_s != 'NilClass'
|
77
|
-
zone_exhaust_fan.setBalancedExhaustFractionSchedule(balanced_exhaust_schedule)
|
78
|
-
end
|
79
|
-
zone_exhaust_fan.setEndUseSubcategory('Zone Exhaust Fans')
|
80
|
-
zone_exhaust_fan.addToThermalZone(thermal_zone)
|
81
|
-
|
82
|
-
if !space_type_data['exhaust_fan_power'].nil? && space_type_data['exhaust_fan_power'].to_f.nonzero?
|
83
|
-
# Create the electric equipment definition
|
84
|
-
exhaust_fan_equip_def = OpenStudio::Model::ElectricEquipmentDefinition.new(model)
|
85
|
-
exhaust_fan_equip_def.setName("#{space_name} Electric Equipment Definition")
|
86
|
-
exhaust_fan_equip_def.setDesignLevel(space_type_data['exhaust_fan_power'].to_f)
|
87
|
-
exhaust_fan_equip_def.setFractionLatent(0)
|
88
|
-
exhaust_fan_equip_def.setFractionRadiant(0)
|
89
|
-
exhaust_fan_equip_def.setFractionLost(1)
|
90
|
-
|
91
|
-
# Create the electric equipment instance and hook it up to the space type
|
92
|
-
exhaust_fan_elec_equip = OpenStudio::Model::ElectricEquipment.new(exhaust_fan_equip_def)
|
93
|
-
exhaust_fan_elec_equip.setName("#{space_name} Exhaust Fan Equipment")
|
94
|
-
exhaust_fan_elec_equip.setSchedule(exhaust_schedule)
|
95
|
-
exhaust_fan_elec_equip.setSpaceType(space.spaceType.get)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
36
|
# adjust VAV system sizing
|
101
37
|
model.getAirLoopHVACs.each do |air_loop|
|
102
38
|
if air_loop.name.to_s.include? 'VAV WITH REHEAT'
|
@@ -75,31 +75,6 @@ module LargeOffice
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
# set infiltration schedule for plenums
|
79
|
-
# @todo remove once infil_sch in Standards.Space pulls from default building infiltration schedule
|
80
|
-
model.getSpaces.each do |space|
|
81
|
-
next unless space.name.get.to_s.include? 'Plenum'
|
82
|
-
|
83
|
-
# add infiltration if DOE Ref vintage
|
84
|
-
if template == 'DOE Ref 1980-2004' || template == 'DOE Ref Pre-1980'
|
85
|
-
# Create an infiltration rate object for this space
|
86
|
-
infiltration = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(space.model)
|
87
|
-
infiltration.setName("#{space.name} Infiltration")
|
88
|
-
all_ext_infil_m3_per_s_per_m2 = OpenStudio.convert(0.2232, 'ft^3/min*ft^2', 'm^3/s*m^2').get
|
89
|
-
infiltration.setFlowperExteriorSurfaceArea(all_ext_infil_m3_per_s_per_m2)
|
90
|
-
infiltration.setSchedule(model_add_schedule(model, 'Large Office Infil Quarter On'))
|
91
|
-
infiltration.setConstantTermCoefficient(1.0)
|
92
|
-
infiltration.setTemperatureTermCoefficient(0.0)
|
93
|
-
infiltration.setVelocityTermCoefficient(0.0)
|
94
|
-
infiltration.setVelocitySquaredTermCoefficient(0.0)
|
95
|
-
infiltration.setSpace(space)
|
96
|
-
else
|
97
|
-
space.spaceInfiltrationDesignFlowRates.each do |infiltration_object|
|
98
|
-
infiltration_object.setSchedule(model_add_schedule(model, 'OfficeLarge INFIL_SCH_PNNL'))
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
78
|
hp_loop = model.getPlantLoopByName('Heat Pump Loop')
|
104
79
|
if hp_loop.is_initialized
|
105
80
|
hp_loop = hp_loop.get
|
@@ -58,31 +58,6 @@ module MediumOffice
|
|
58
58
|
add_door_infiltration(climate_zone, model)
|
59
59
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Added door infiltration')
|
60
60
|
|
61
|
-
# set infiltration schedule for plenums
|
62
|
-
# @todo remove once infil_sch in Standards.Space pulls from default building infiltration schedule
|
63
|
-
model.getSpaces.each do |space|
|
64
|
-
next unless space.name.get.to_s.include? 'Plenum'
|
65
|
-
|
66
|
-
# add infiltration if DOE Ref vintage
|
67
|
-
if template == 'DOE Ref 1980-2004' || template == 'DOE Ref Pre-1980'
|
68
|
-
# Create an infiltration rate object for this space
|
69
|
-
infiltration = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(space.model)
|
70
|
-
infiltration.setName("#{space.name} Infiltration")
|
71
|
-
all_ext_infil_m3_per_s_per_m2 = OpenStudio.convert(0.2232, 'ft^3/min*ft^2', 'm^3/s*m^2').get
|
72
|
-
infiltration.setFlowperExteriorSurfaceArea(all_ext_infil_m3_per_s_per_m2)
|
73
|
-
infiltration.setSchedule(model_add_schedule(model, 'Medium Office Infil Quarter On'))
|
74
|
-
infiltration.setConstantTermCoefficient(1.0)
|
75
|
-
infiltration.setTemperatureTermCoefficient(0.0)
|
76
|
-
infiltration.setVelocityTermCoefficient(0.0)
|
77
|
-
infiltration.setVelocitySquaredTermCoefficient(0.0)
|
78
|
-
infiltration.setSpace(space)
|
79
|
-
else
|
80
|
-
space.spaceInfiltrationDesignFlowRates.each do |infiltration_object|
|
81
|
-
infiltration_object.setSchedule(model_add_schedule(model, 'OfficeMedium INFIL_SCH_PNNL'))
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
61
|
return true
|
87
62
|
end
|
88
63
|
|
@@ -82,17 +82,7 @@ module Warehouse
|
|
82
82
|
# return [Hash] Door infiltration information
|
83
83
|
def get_building_door_info(model)
|
84
84
|
# Get Bulk storage space infiltration schedule name
|
85
|
-
sch = ''
|
86
|
-
model.getSpaces.sort.each do |space|
|
87
|
-
if space.spaceType.get.standardsSpaceType.get.to_s == 'Bulk'
|
88
|
-
space.spaceInfiltrationDesignFlowRates.each do |infil|
|
89
|
-
infil_sch = infil.schedule.get.to_ScheduleRuleset.get
|
90
|
-
if infil_sch.initialized
|
91
|
-
sch = infil_sch
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
85
|
+
sch = model_add_schedule(model, 'Warehouse INFIL_Door_Opening_SCH')
|
96
86
|
|
97
87
|
if !sch.initialized
|
98
88
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.prototype.Warehouse', 'Could not find Bulk storage schedule.')
|
@@ -61,7 +61,11 @@ class Standard
|
|
61
61
|
vrf_outdoor_unit.setAvailabilitySchedule(availability_schedule)
|
62
62
|
|
63
63
|
# set cops
|
64
|
-
|
64
|
+
if model.version < OpenStudio::VersionString.new('2.9.0')
|
65
|
+
vrf_outdoor_unit.setRatedCoolingCOP(cooling_cop)
|
66
|
+
else
|
67
|
+
vrf_outdoor_unit.setGrossRatedCoolingCOP(cooling_cop)
|
68
|
+
end
|
65
69
|
vrf_outdoor_unit.setRatedHeatingCOP(heating_cop)
|
66
70
|
|
67
71
|
# heat recovery
|
@@ -45,13 +45,6 @@ module PrototypeFan
|
|
45
45
|
allowed_hp = 0.01
|
46
46
|
end
|
47
47
|
|
48
|
-
# Minimum motor size for efficiency lookup
|
49
|
-
# is 1 HP unless the motor serves an exhaust fan,
|
50
|
-
# a powered VAV terminal, or a fan coil unit.
|
51
|
-
if !fan_small_fan?(fan) && allowed_hp < 1.0
|
52
|
-
allowed_hp = 1.01
|
53
|
-
end
|
54
|
-
|
55
48
|
# Find the motor efficiency
|
56
49
|
motor_eff, nominal_hp = fan_standard_minimum_motor_efficiency_and_size(fan, allowed_hp)
|
57
50
|
|
@@ -79,14 +79,27 @@ class Standard
|
|
79
79
|
# @param heat_exchanger_air_to_air_sensible_and_latent [OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent] hx
|
80
80
|
# @return [Boolean] returns true if successful, false if not
|
81
81
|
def heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_efficiency(heat_exchanger_air_to_air_sensible_and_latent)
|
82
|
-
heat_exchanger_air_to_air_sensible_and_latent.
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
82
|
+
if heat_exchanger_air_to_air_sensible_and_latent.model.version < OpenStudio::VersionString.new('3.8.0')
|
83
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(0.7)
|
84
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(0.6)
|
85
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(0.7)
|
86
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(0.6)
|
87
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(0.75)
|
88
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(0.6)
|
89
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(0.75)
|
90
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(0.6)
|
91
|
+
else
|
92
|
+
values = Hash.new{|hash, key| hash[key] = Hash.new}
|
93
|
+
values['Sensible Heating'][0.75] = 0.7
|
94
|
+
values['Sensible Heating'][1.0] = 0.7
|
95
|
+
values['Latent Heating'][0.75] = 0.6
|
96
|
+
values['Latent Heating'][1.0] = 0.6
|
97
|
+
values['Sensible Cooling'][0.75] = 0.75
|
98
|
+
values['Sensible Cooling'][1.0] = 0.75
|
99
|
+
values['Latent Cooling'][0.75] = 0.6
|
100
|
+
values['Latent Cooling'][1.0] = 0.6
|
101
|
+
OpenstudioStandards::HVAC.heat_exchanger_air_to_air_set_effectiveness_values(heat_exchanger_air_to_air_sensible_and_latent, defaults: false, values: values)
|
102
|
+
end
|
90
103
|
|
91
104
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.HeatExchangerAirToAirSensibleAndLatent', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}: Changed sensible and latent effectiveness to ~70% per DOE Prototype assumptions for an enthalpy wheel.")
|
92
105
|
|
@@ -116,24 +129,29 @@ class Standard
|
|
116
129
|
enthalpy_recovery_ratio = enthalpy_recovery_ratio_design_to_typical_adjustment(enthalpy_recovery_ratio, climate_zone)
|
117
130
|
full_htg_sens_eff, full_htg_lat_eff, part_htg_sens_eff, part_htg_lat_eff, full_cool_sens_eff, full_cool_lat_eff, part_cool_sens_eff, part_cool_lat_eff = heat_exchanger_air_to_air_sensible_and_latent_enthalpy_recovery_ratio_to_effectiveness(enthalpy_recovery_ratio, design_conditions)
|
118
131
|
end
|
119
|
-
|
120
|
-
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(full_htg_sens_eff)
|
121
|
-
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(full_htg_lat_eff)
|
122
|
-
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(full_cool_sens_eff)
|
123
|
-
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(full_cool_lat_eff)
|
124
132
|
if heat_exchanger_air_to_air_sensible_and_latent.model.version < OpenStudio::VersionString.new('3.8.0')
|
133
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(full_htg_sens_eff)
|
134
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(full_htg_lat_eff)
|
135
|
+
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(full_cool_sens_eff)
|
136
|
+
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(full_cool_lat_eff)
|
125
137
|
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(part_htg_sens_eff)
|
126
138
|
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(part_htg_lat_eff)
|
127
139
|
heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(part_cool_sens_eff)
|
128
140
|
heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(part_cool_lat_eff)
|
129
141
|
else
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
142
|
+
values = Hash.new{|hash, key| hash[key] = Hash.new}
|
143
|
+
values['Sensible Heating'][0.75] = part_htg_sens_eff
|
144
|
+
values['Sensible Heating'][1.0] = full_htg_sens_eff
|
145
|
+
values['Latent Heating'][0.75] = part_htg_lat_eff
|
146
|
+
values['Latent Heating'][1.0] = full_htg_lat_eff
|
147
|
+
values['Sensible Cooling'][0.75] = part_cool_sens_eff
|
148
|
+
values['Sensible Cooling'][1.0] = full_cool_sens_eff
|
149
|
+
values['Latent Cooling'][0.75] = part_cool_lat_eff
|
150
|
+
values['Latent Cooling'][1.0] = full_cool_lat_eff
|
151
|
+
OpenstudioStandards::HVAC.heat_exchanger_air_to_air_set_effectiveness_values(heat_exchanger_air_to_air_sensible_and_latent, defaults: false, values: values)
|
134
152
|
end
|
135
153
|
|
136
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.HeatExchangerSensLat', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}: Set sensible and latent effectiveness calculated by using
|
154
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.HeatExchangerSensLat', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}: Set sensible and latent effectiveness calculated by using Enthalpy Recovery Ratio.")
|
137
155
|
return true
|
138
156
|
end
|
139
157
|
end
|
@@ -421,7 +421,7 @@ class Standard
|
|
421
421
|
system['condenser_fan_pwr_curve_name'],
|
422
422
|
thermal_zones[0])
|
423
423
|
|
424
|
-
# When multiple cases and walk-ins
|
424
|
+
# When multiple cases and walk-ins assigned to a system
|
425
425
|
when 'Refrigeration_system'
|
426
426
|
model_add_refrigeration_system(model,
|
427
427
|
system['compressor_type'],
|