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,13 @@
|
|
1
|
+
curve_name,template,operation_type,curve_type,coefficient1,coefficient2,coefficient3,coefficient4,coefficient5,coefficient6,coefficient7,coefficient8,coefficient9,coefficient10,min_val_x,max_val_x,min_val_y,max_val_y
|
2
|
+
Old_Low_Temp_Comp_Pwr_Curve,old,LT,Power,29669.27106,1027.632052,18.10662623,-442.1997136,11.13352877,-20.38045192,0.139980653,-0.058866918,-0.218451538,0.203858467,-40,-17.8,4.4,54.4
|
3
|
+
Old_Med_Temp_Comp_Pwr_Curve,old,MT,Power,7438.922294,-269.5975647,-9.856104461,553.5732602,-3.385889614,14.86578782,-0.100796292,0.009822793,0.097362356,-0.039675217,-23.3,7.2,10,60
|
4
|
+
New_Low_Temp_Comp_Pwr_Curve,new,LT,Power,170751.8339,6102.903702,78.2619862,-2959.432648,19.78765887,-90.95810147,0.435964768,-0.041157653,-0.60884596,0.459133262,-40,-17.8,4.4,54.4
|
5
|
+
New_Med_Temp_Comp_Pwr_Curve,new,MT,Power,7438.922294,-269.5975647,-9.856104461,553.5732602,-3.385889614,14.86578782,-0.100796292,0.009822793,0.097362356,-0.039675217,-23.3,7.2,10,60
|
6
|
+
Advanced_Low_Temp_Comp_Pwr_Curve,advanced,LT,Power,170751.8339,6102.903702,78.2619862,-2959.432648,19.78765887,-90.95810147,0.435964768,-0.041157653,-0.60884596,0.459133262,-40,-17.8,4.4,54.4
|
7
|
+
Advanced_Med_Temp_Comp_Pwr_Curve,advanced,MT,Power,7438.922294,-269.5975647,-9.856104461,553.5732602,-3.385889614,14.86578782,-0.100796292,0.009822793,0.097362356,-0.039675217,-23.3,7.2,10,60
|
8
|
+
Old_Low_Temp_Comp_Cap_Curve,old,LT,Capacity,170751.8339,6102.903702,78.2619862,-2959.432648,19.78765887,-90.95810147,0.435964768,-0.041157653,-0.60884596,0.459133262,-40,-17.8,4.4,54.4
|
9
|
+
Old_Med_Temp_Comp_Cap_Curve,old,MT,Capacity,151166.4362,5266.347888,60.67271508,-1851.559382,5.731327549,-46.92771731,0.136401203,-0.035697884,-0.403053994,-0.039290478,-23.3,7.2,10,60
|
10
|
+
New_Low_Temp_Comp_Cap_Curve,new,LT,Capacity,58336.86118,1561.7435,6.606812861,-283.6500679,-0.120234941,-12.49574858,-0.116278559,0.002277001,-0.118148325,0.032839613,-40,-17.8,4.4,54.4
|
11
|
+
New_Med_Temp_Comp_Cap_Curve,new,MT,Capacity,61412.17466,1570.851906,13.53344913,-500.1952361,8.16391243,-3.689538504,0.054485574,-0.088096805,0.006381584,-0.037503058,-23.3,7.2,10,60
|
12
|
+
Advanced_Low_Temp_Comp_Cap_Curve,advanced,LT,Capacity,58336.86118,1561.7435,6.606812861,-283.6500679,-0.120234941,-12.49574858,-0.116278559,0.002277001,-0.118148325,0.032839613,-40,-17.8,4.4,54.4
|
13
|
+
Advanced_Med_Temp_Comp_Cap_Curve,advanced,MT,Capacity,61412.17466,1570.851906,13.53344913,-500.1952361,8.16391243,-3.689538504,0.054485574,-0.088096805,0.006381584,-0.037503058,-23.3,7.2,10,60
|
@@ -0,0 +1,17 @@
|
|
1
|
+
building_type,space_type,case_type,length_ft,reference_space_type_area_ft2
|
2
|
+
SuperMarket,Sales,Coffin - Frozen Food,80,27500
|
3
|
+
SuperMarket,Sales,Coffin - Ice Cream,20,27500
|
4
|
+
SuperMarket,Sales,Reach-in - Ice Cream,187,27500
|
5
|
+
SuperMarket,Sales,Reach-in - Frozen Food,52,27500
|
6
|
+
SuperMarket,Sales,Reach-in - Dairy Deli Beverage Case,320,27500
|
7
|
+
SuperMarket,Sales,Service - Meat Deli Bakery,85,27500
|
8
|
+
SuperMarket,Sales,Island - Deli Produce,18,27500
|
9
|
+
SuperMarket,Sales,Vertical Open - All,82,27500
|
10
|
+
Gro,GrocSales,Coffin - Frozen Food,80,40000
|
11
|
+
Gro,GrocSales,Coffin - Ice Cream,20,40000
|
12
|
+
Gro,GrocSales,Reach-in - Ice Cream,187,40000
|
13
|
+
Gro,GrocSales,Reach-in - Frozen Food,52,40000
|
14
|
+
Gro,GrocSales,Reach-in - Dairy Deli Beverage Case,320,40000
|
15
|
+
Gro,GrocSales,Service - Meat Deli Bakery,85,40000
|
16
|
+
Gro,GrocSales,Island - Deli Produce,18,40000
|
17
|
+
Gro,GrocSales,Vertical Open - All,82,40000
|
@@ -0,0 +1,53 @@
|
|
1
|
+
building_type,space_type,walkin_name,walkin_type,size_ft2,reference_space_type_area_ft2,notes
|
2
|
+
PrimarySchool,Kitchen,Walk-in Cooler,Walk-in Cooler,120,1800,
|
3
|
+
PrimarySchool,Kitchen,Walk-in Freezer,Walk-in Freezer,120,1800,
|
4
|
+
SecondarySchool,Kitchen,Walk-in Cooler,Walk-in Cooler,240,2325,
|
5
|
+
SecondarySchool,Kitchen,Walk-in Freezer,Walk-in Freezer,240,2325,
|
6
|
+
QuickServiceRestaurant,Kitchen,Walk-in Cooler,Walk-in Cooler,100,1250,
|
7
|
+
QuickServiceRestaurant,Kitchen,Walk-in Freezer,Walk-in Freezer,100,1250,
|
8
|
+
FullServiceRestaurant,Kitchen,Walk-in Cooler,Walk-in Cooler,100,1500,
|
9
|
+
FullServiceRestaurant,Kitchen,Walk-in Freezer,Walk-in Freezer,100,1500,
|
10
|
+
LargeHotel,Kitchen,Walk-in Cooler,Walk-in Cooler,120,1110,
|
11
|
+
LargeHotel,Kitchen,Walk-in Freezer,Walk-in Freezer,120,1110,
|
12
|
+
Hospital,Kitchen,Walk-in Cooler,Walk-in Cooler,360,10000,
|
13
|
+
Hospital,Kitchen,Walk-in Freezer,Walk-in Freezer,360,10000,
|
14
|
+
SuperMarket,DryStorage,Bakery Cooler,Walk-in Cooler,120,4500,
|
15
|
+
SuperMarket,DryStorage,Bakery Freezer,Walk-in Freezer,150,4500,
|
16
|
+
SuperMarket,DryStorage,Beer Cooler,Walk-in Cooler,320,4500,
|
17
|
+
SuperMarket,DryStorage,Dairy Cooler,Walk-in Cooler,240,4500,
|
18
|
+
SuperMarket,DryStorage,Floral Cooler,Walk-in Cooler,80,4500,
|
19
|
+
SuperMarket,DryStorage,Grocery Freezer,Walk-in Freezer,240,4500,
|
20
|
+
SuperMarket,DryStorage,Kitchen Cooler,Walk-in Cooler,290,4500,
|
21
|
+
SuperMarket,DryStorage,Kitchen Freezer,Walk-in Freezer,96,4500,
|
22
|
+
SuperMarket,DryStorage,Meat Cooler,Walk-in Cooler,570,4500,
|
23
|
+
SuperMarket,DryStorage,Meat Freezer,Walk-in Freezer,60,4500,
|
24
|
+
SuperMarket,DryStorage,Prep Cooler 1,Walk-in Cooler,480,4500,
|
25
|
+
SuperMarket,DryStorage,Prep Cooler 2,Walk-in Cooler,480,4500,
|
26
|
+
SuperMarket,DryStorage,Produce Cooler,Walk-in Cooler,620,4500,
|
27
|
+
SuperMarket,DryStorage,Specialty Cooler,Walk-in Cooler,72,4500,
|
28
|
+
EPr,Kitchen,Walk-in Cooler,Walk-in Cooler,120,1750,
|
29
|
+
EPr,Kitchen,Walk-in Freezer,Walk-in Freezer,120,1750,
|
30
|
+
ESe,Kitchen,Walk-in Cooler,Walk-in Cooler,240,2630,
|
31
|
+
ESe,Kitchen,Walk-in Freezer,Walk-in Freezer,240,2630,
|
32
|
+
RFF,StockRoom,Walk-in Cooler,Walk-in Cooler,100,800,
|
33
|
+
RFF,StockRoom,Walk-in Freezer,Walk-in Freezer,100,800,
|
34
|
+
RSD,StockRoom,Walk-in Cooler,Walk-in Cooler,100,1600,
|
35
|
+
RSD,StockRoom,Walk-in Freezer,Walk-in Freezer,100,5000,
|
36
|
+
Htl,Kitchen,Walk-in Cooler,Walk-in Cooler,120,1000,
|
37
|
+
Htl,Kitchen,Walk-in Freezer,Walk-in Freezer,120,1000,
|
38
|
+
Hsp,Kitchen,Walk-in Cooler,Walk-in Cooler,360,1875,
|
39
|
+
Hsp,Kitchen,Walk-in Freezer,Walk-in Freezer,360,1875,
|
40
|
+
Gro,GrocSales,Bakery Cooler,Walk-in Cooler,120,40000,
|
41
|
+
Gro,GrocSales,Bakery Freezer,Walk-in Freezer,150,40000,
|
42
|
+
Gro,GrocSales,Beer Cooler,Walk-in Cooler,320,40000,
|
43
|
+
Gro,GrocSales,Dairy Cooler,Walk-in Cooler,240,40000,
|
44
|
+
Gro,GrocSales,Floral Cooler,Walk-in Cooler,80,40000,
|
45
|
+
Gro,GrocSales,Grocery Freezer,Walk-in Freezer,240,40000,
|
46
|
+
Gro,GrocSales,Kitchen Cooler,Walk-in Cooler,290,40000,
|
47
|
+
Gro,GrocSales,Kitchen Freezer,Walk-in Freezer,96,40000,
|
48
|
+
Gro,GrocSales,Meat Cooler,Walk-in Cooler,570,40000,
|
49
|
+
Gro,GrocSales,Meat Freezer,Walk-in Freezer,60,40000,
|
50
|
+
Gro,GrocSales,Prep Cooler 1,Walk-in Cooler,480,40000,
|
51
|
+
Gro,GrocSales,Prep Cooler 2,Walk-in Cooler,480,40000,
|
52
|
+
Gro,GrocSales,Produce Cooler,Walk-in Cooler,620,40000,
|
53
|
+
Gro,GrocSales,Specialty Cooler,Walk-in Cooler,72,40000,
|
@@ -0,0 +1,130 @@
|
|
1
|
+
module OpenstudioStandards
|
2
|
+
# The Refrigeration module provides methods to create, modify, and get information about refrigeration
|
3
|
+
module Refrigeration
|
4
|
+
# @!group Information
|
5
|
+
# Methods to get information about model refrigeration
|
6
|
+
|
7
|
+
# Find the thermal zone that is best for adding refrigerated display cases into.
|
8
|
+
# First, check for space types that typically have refrigeration.
|
9
|
+
# Fall back to largest zone in the model if no typical space types are found.
|
10
|
+
#
|
11
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
12
|
+
# @return [OpenStudio::Model::ThermalZone] returns a thermal zone if found, nil if not.
|
13
|
+
def self.refrigeration_case_zone(model)
|
14
|
+
# load refrigeration cases data
|
15
|
+
cases_csv = "#{__dir__}/data/typical_refrigerated_cases.csv"
|
16
|
+
unless File.exist?(cases_csv)
|
17
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Refrigeration', "Unable to find file: #{cases_csv}")
|
18
|
+
return nil
|
19
|
+
end
|
20
|
+
cases_tbl = CSV.table(cases_csv, encoding: 'ISO8859-1:utf-8')
|
21
|
+
cases_hsh = cases_tbl.map(&:to_hash)
|
22
|
+
|
23
|
+
# Look for one of the space types that would typically have refrigeration
|
24
|
+
display_case_zone = nil
|
25
|
+
display_case_zone_area_m2 = 0.0
|
26
|
+
model.getThermalZones.each do |zone|
|
27
|
+
space_type = OpenstudioStandards::ThermalZone.thermal_zone_get_space_type(zone)
|
28
|
+
next if space_type.empty?
|
29
|
+
|
30
|
+
space_type = space_type.get
|
31
|
+
next if space_type.standardsSpaceType.empty?
|
32
|
+
next if space_type.standardsBuildingType.empty?
|
33
|
+
|
34
|
+
stds_spc_type = space_type.standardsSpaceType.get
|
35
|
+
stds_bldg_type = space_type.standardsBuildingType.get
|
36
|
+
cases = cases_hsh.select { |r| (r[:building_type] == stds_bldg_type) && (r[:space_type] == stds_spc_type) }
|
37
|
+
unless cases.empty?
|
38
|
+
if zone.floorArea > display_case_zone_area_m2
|
39
|
+
display_case_zone = zone
|
40
|
+
display_case_zone_area_m2 = zone.floorArea
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
unless display_case_zone.nil?
|
46
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Refrigeration', "Display case zone is #{display_case_zone.name}, the largest zone with a space type typical for display cases.")
|
47
|
+
return display_case_zone
|
48
|
+
end
|
49
|
+
|
50
|
+
# If no typical space type was found, choose the largest zone in the model.
|
51
|
+
display_case_zone = nil
|
52
|
+
display_case_zone_area_m2 = 0
|
53
|
+
model.getThermalZones.each do |zone|
|
54
|
+
if zone.floorArea > display_case_zone_area_m2
|
55
|
+
display_case_zone = zone
|
56
|
+
display_case_zone_area_m2 = zone.floorArea
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
unless display_case_zone.nil?
|
61
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Refrigeration', "No space types typical for display cases were found, so the display cases will be placed in #{display_case_zone.name}, the largest zone.")
|
62
|
+
return display_case_zone
|
63
|
+
end
|
64
|
+
|
65
|
+
return display_case_zone
|
66
|
+
end
|
67
|
+
|
68
|
+
# Find the thermal zone that is best for adding refrigerated walkins into.
|
69
|
+
# First, check for space types that typically have refrigeration.
|
70
|
+
# Fall back to largest zone in the model if no typical space types are found.
|
71
|
+
#
|
72
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
73
|
+
# @return [OpenStudio::Model::ThermalZone] returns a thermal zone if found, nil if not.
|
74
|
+
def self.refrigeration_walkin_zone(model)
|
75
|
+
# load refrigeration walkin data
|
76
|
+
walkins_csv = "#{__dir__}/data/typical_refrigerated_walkins.csv"
|
77
|
+
unless File.exist?(walkins_csv)
|
78
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Refrigeration', "Unable to find file: #{walkins_csv}")
|
79
|
+
return nil
|
80
|
+
end
|
81
|
+
walkins_tbl = CSV.table(walkins_csv, encoding: 'ISO8859-1:utf-8')
|
82
|
+
walkins_hsh = walkins_tbl.map(&:to_hash)
|
83
|
+
|
84
|
+
# Look for one of the space types that would typically have walkins
|
85
|
+
walkin_zone = nil
|
86
|
+
walkin_zone_area_m2 = 0.0
|
87
|
+
model.getThermalZones.each do |zone|
|
88
|
+
space_type = OpenstudioStandards::ThermalZone.thermal_zone_get_space_type(zone)
|
89
|
+
next if space_type.empty?
|
90
|
+
|
91
|
+
space_type = space_type.get
|
92
|
+
next if space_type.standardsSpaceType.empty?
|
93
|
+
next if space_type.standardsBuildingType.empty?
|
94
|
+
|
95
|
+
stds_spc_type = space_type.standardsSpaceType.get
|
96
|
+
stds_bldg_type = space_type.standardsBuildingType.get
|
97
|
+
walkins = walkins_hsh.select { |r| (r[:building_type] == stds_bldg_type) && (r[:space_type] == stds_spc_type) }
|
98
|
+
unless walkins.empty?
|
99
|
+
if zone.floorArea > walkin_zone_area_m2
|
100
|
+
walkin_zone = zone
|
101
|
+
walkin_zone_area_m2 = zone.floorArea
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
unless walkin_zone.nil?
|
107
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Refrigeration', "Walkin zone is #{walkin_zone.name}, the largest zone with a space type typical for walkins.")
|
108
|
+
return walkin_zone
|
109
|
+
end
|
110
|
+
|
111
|
+
# If no typical space type was found,
|
112
|
+
# choose the largest zone in the model.
|
113
|
+
walkin_zone = nil
|
114
|
+
walkin_zone_area_m2 = 0
|
115
|
+
model.getThermalZones.each do |zone|
|
116
|
+
if zone.floorArea > walkin_zone_area_m2
|
117
|
+
walkin_zone = zone
|
118
|
+
walkin_zone_area_m2 = zone.floorArea
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
unless walkin_zone.nil?
|
123
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Refrigeration', "No space types typical for walkins were found, so the walkins will be placed in #{walkin_zone.name}, the largest zone.")
|
124
|
+
return walkin_zone
|
125
|
+
end
|
126
|
+
|
127
|
+
return walkin_zone
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -315,7 +315,7 @@ module OpenstudioStandards
|
|
315
315
|
|
316
316
|
opt_space = water_use_equipment.space
|
317
317
|
if opt_space.is_initialized
|
318
|
-
space =
|
318
|
+
space = opt_space.get
|
319
319
|
hours_of_operation = OpenstudioStandards::Space.space_hours_of_operation(space)
|
320
320
|
OpenstudioStandards::Schedules.schedule_ruleset_get_parametric_inputs(schedule, water_use_equipment, parametric_inputs, hours_of_operation, gather_data_only: gather_data_only, hoo_var_method: hoo_var_method)
|
321
321
|
else
|
@@ -0,0 +1,299 @@
|
|
1
|
+
module OpenstudioStandards
|
2
|
+
# The ServiceWaterHeating module provides methods to create, modify, and get information about service water heating
|
3
|
+
module ServiceWaterHeating
|
4
|
+
# @!group Create Typical
|
5
|
+
# Methods to add typical service water heating depending on space types
|
6
|
+
|
7
|
+
# add typical swh demand and supply to model
|
8
|
+
#
|
9
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
10
|
+
# @param water_heating_fuel [String] water heater fuel. Valid choices are NaturalGas, Electricity, and HeatPump.
|
11
|
+
# If not supplied, a smart default will be determined based on building type and loop type.
|
12
|
+
# @param circulating [Boolean] determine whether the system is circulating (true), noncirculating (false).
|
13
|
+
# A nil value will default based on the standards building type
|
14
|
+
# @return [Array<OpenStudio::Model::PlantLoop>] array of service hot water loops
|
15
|
+
# @todo add support for other loop configurations, such as by space type, space type adjacent, or building type
|
16
|
+
def self.create_typical_service_water_heating(model,
|
17
|
+
water_heating_fuel: nil,
|
18
|
+
circulating: nil)
|
19
|
+
# array of service hot water loops
|
20
|
+
swh_systems = []
|
21
|
+
|
22
|
+
# water use equipment on the building loop
|
23
|
+
shared_water_use_equipment = []
|
24
|
+
booster_water_use_equipment = []
|
25
|
+
|
26
|
+
# @todo remove once model_add_schedule is refactored
|
27
|
+
std = Standard.build('90.1-2013')
|
28
|
+
|
29
|
+
# loop through space types adding demand side of swh
|
30
|
+
model.getSpaces.sort.each do |space|
|
31
|
+
next unless space.spaceType.is_initialized
|
32
|
+
|
33
|
+
total_space_floor_area_m2 = space.floorArea * space.multiplier
|
34
|
+
total_space_floor_area_ft2 = OpenStudio.convert(total_space_floor_area_m2, 'm^2', 'ft^2').get
|
35
|
+
space_type = space.spaceType.get
|
36
|
+
|
37
|
+
next unless space_type.standardsSpaceType.is_initialized
|
38
|
+
next unless space_type.standardsBuildingType.is_initialized
|
39
|
+
|
40
|
+
standards_space_type = space_type.standardsSpaceType.get
|
41
|
+
standards_building_type = space_type.standardsBuildingType.get
|
42
|
+
|
43
|
+
# load typical water use equipment data
|
44
|
+
data = JSON.parse(File.read("#{__dir__}/data/typical_water_use_equipment.json"), symbolize_names: true)
|
45
|
+
space_type_properties = data[:space_types].select { |hash| (hash[:space_type] == standards_space_type) && (hash[:building_type] == standards_building_type) }
|
46
|
+
|
47
|
+
# skip spaces with no equipment defined
|
48
|
+
next if space_type_properties.empty?
|
49
|
+
|
50
|
+
water_use_equipment = space_type_properties[0][:water_use_equipment]
|
51
|
+
|
52
|
+
# store one per unit equipment
|
53
|
+
space_water_use_equipment = []
|
54
|
+
|
55
|
+
if space.hasAdditionalProperties && space.additionalProperties.hasFeature('num_units')
|
56
|
+
num_units = space.additionalProperties.getFeatureAsInteger('num_units').get
|
57
|
+
else # assume 1 space is 1 unit
|
58
|
+
num_units = space.multiplier
|
59
|
+
end
|
60
|
+
|
61
|
+
# loop through and add water use equipment to space
|
62
|
+
water_use_equipment.each do |w|
|
63
|
+
# get water use equipment properties
|
64
|
+
water_use_name = w[:equipment_name]
|
65
|
+
peak_flow_rate_gal_per_hr = w[:peak_flow_rate].to_f
|
66
|
+
peak_flow_rate_gal_per_hr_per_ft2 = w[:peak_flow_rate_per_area].to_f
|
67
|
+
loop_type = w[:loop_type]
|
68
|
+
temperature = w[:temperature]
|
69
|
+
flow_rate_schedule = w[:flow_rate_schedule]
|
70
|
+
sensible_fraction = w[:sensible_fraction]
|
71
|
+
latent_fraction = w[:latent_fraction]
|
72
|
+
|
73
|
+
# derived from equipment properties
|
74
|
+
is_booster = water_use_name && water_use_name.downcase.include?('booster')
|
75
|
+
water_use_name = water_use_name ? "#{space.name} #{water_use_name}" : "#{space.name} Water Use"
|
76
|
+
service_water_temperature_c = OpenStudio.convert(temperature, 'F', 'C').get
|
77
|
+
|
78
|
+
# @todo replace this line once model_add_schedule is refactored to not require a standard
|
79
|
+
flow_rate_schedule = std.model_add_schedule(model, flow_rate_schedule)
|
80
|
+
|
81
|
+
# skip undefined equipment
|
82
|
+
next unless peak_flow_rate_gal_per_hr > 0.0 || peak_flow_rate_gal_per_hr_per_ft2 > 0.0
|
83
|
+
|
84
|
+
# If there is no SWH schedule, assume no SWH use for this space type.
|
85
|
+
unless flow_rate_schedule
|
86
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ServiceWaterHeating', "No service water heating schedule was specified for space type #{space_type.name} with standards space type #{standards_space_type}. Assuming an always off schedule.")
|
87
|
+
flow_rate_schedule = model.alwaysOffDiscreteSchedule
|
88
|
+
end
|
89
|
+
|
90
|
+
# Determine the peak flow rate and default water heating fuel
|
91
|
+
case loop_type
|
92
|
+
when 'One Per Unit'
|
93
|
+
# calculate peak flow rate
|
94
|
+
if peak_flow_rate_gal_per_hr.zero? && peak_flow_rate_gal_per_hr_per_ft2 > 0.0
|
95
|
+
peak_flow_rate_gal_per_hr = num_units * peak_flow_rate_gal_per_hr_per_ft2 * total_space_floor_area_ft2
|
96
|
+
else
|
97
|
+
peak_flow_rate_gal_per_hr *= num_units
|
98
|
+
end
|
99
|
+
|
100
|
+
# update water use name
|
101
|
+
water_use_name = "#{water_use_name} #{num_units} unit(s)"
|
102
|
+
else
|
103
|
+
# calculate peak flow rate
|
104
|
+
if peak_flow_rate_gal_per_hr.zero? && peak_flow_rate_gal_per_hr_per_ft2 > 0.0
|
105
|
+
peak_flow_rate_gal_per_hr = peak_flow_rate_gal_per_hr_per_ft2 * total_space_floor_area_ft2
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# convert to SI
|
110
|
+
peak_flow_rate_m3_per_s = OpenStudio.convert(peak_flow_rate_gal_per_hr, 'gal/hr', 'm^3/s').get
|
111
|
+
|
112
|
+
# create water use equipment
|
113
|
+
water_use_equip = OpenstudioStandards::ServiceWaterHeating.create_water_use(model,
|
114
|
+
name: water_use_name,
|
115
|
+
flow_rate: peak_flow_rate_m3_per_s,
|
116
|
+
flow_rate_fraction_schedule: flow_rate_schedule,
|
117
|
+
water_use_temperature: service_water_temperature_c,
|
118
|
+
sensible_fraction: sensible_fraction,
|
119
|
+
latent_fraction: latent_fraction,
|
120
|
+
space: space)
|
121
|
+
|
122
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ServiceWaterHeating', "Added water use equipment #{water_use_equip.name}")
|
123
|
+
|
124
|
+
# create service hot water loop for 'One Per Space' and 'One Per Unit' dedicated equipment
|
125
|
+
case loop_type
|
126
|
+
when 'Shared'
|
127
|
+
if is_booster
|
128
|
+
booster_water_use_equipment << water_use_equip
|
129
|
+
else
|
130
|
+
shared_water_use_equipment << water_use_equip
|
131
|
+
end
|
132
|
+
when 'One Per Space', 'One Per Unit'
|
133
|
+
space_water_use_equipment << water_use_equip
|
134
|
+
else
|
135
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ServiceWaterHeating', "Water use equipment service loop type #{loop_type} not recognized. Cannot attach equipment to a loop.")
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
# create water loop for 'One Per Space' and 'One Per Unit' equipment
|
140
|
+
unless space_water_use_equipment.empty?
|
141
|
+
water_heater_capacity_w = num_units * OpenStudio.convert(20.0, 'kBtu/hr', 'W').get
|
142
|
+
water_heater_volume_m3 = num_units * OpenStudio.convert(50.0, 'gal', 'm^3').get
|
143
|
+
num_water_heaters = num_units
|
144
|
+
|
145
|
+
# default to electricity for single units
|
146
|
+
dedicated_water_heating_fuel = water_heating_fuel || 'Electricity'
|
147
|
+
|
148
|
+
# @todo add method to get service water temperature as max of space_water_use_equipment
|
149
|
+
service_water_temperature_c = OpenStudio.convert(140.0, 'F', 'C').get
|
150
|
+
|
151
|
+
# add service water loop with water heater
|
152
|
+
swh_loop = OpenstudioStandards::ServiceWaterHeating.create_service_water_heating_loop(model,
|
153
|
+
system_name: "#{space.name} Service Water Loop",
|
154
|
+
service_water_temperature: service_water_temperature_c,
|
155
|
+
service_water_pump_head: 0.01,
|
156
|
+
service_water_pump_motor_efficiency: 1.0,
|
157
|
+
water_heater_capacity: water_heater_capacity_w,
|
158
|
+
water_heater_volume: water_heater_volume_m3,
|
159
|
+
water_heater_fuel: dedicated_water_heating_fuel,
|
160
|
+
number_of_water_heaters: num_water_heaters,
|
161
|
+
add_piping_losses: true,
|
162
|
+
floor_area: total_space_floor_area_m2,
|
163
|
+
number_of_stories: 1)
|
164
|
+
|
165
|
+
# add loop to array
|
166
|
+
swh_systems << swh_loop
|
167
|
+
|
168
|
+
# Attach water use equipment to the loop
|
169
|
+
space_water_use_equipment.each do |water_use_equip|
|
170
|
+
swh_connection = water_use_equip.waterUseConnections
|
171
|
+
swh_loop.addDemandBranchForComponent(swh_connection.get) if swh_connection.is_initialized
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
############################################################################
|
177
|
+
|
178
|
+
# default to gas for shared system types and booster systems
|
179
|
+
shared_water_heating_fuel = water_heating_fuel || 'NaturalGas'
|
180
|
+
booster_water_heating_fuel = water_heating_fuel || 'Electricity'
|
181
|
+
|
182
|
+
# @todo get maximum service water temperature from shared_water_use_equipment
|
183
|
+
water_heater_temp_f = 140.0
|
184
|
+
water_heater_temp_c = OpenStudio.convert(water_heater_temp_f, 'F', 'C').get
|
185
|
+
|
186
|
+
# defaults for circulating or noncirculating systems
|
187
|
+
# @todo Remove hard-coded building-type-based lookups for circulating vs. non-circulating SWH systems
|
188
|
+
if circulating.nil?
|
189
|
+
if model.getBuilding.standardsBuildingType.is_initialized
|
190
|
+
circulating = OpenstudioStandards::ServiceWaterHeating.circulating_building_type?(model.getBuilding.standardsBuildingType.get)
|
191
|
+
else
|
192
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ServiceWaterHeating', 'Unable to determine the standards building type. Assuming the building does not have a circulating service water heating loop.')
|
193
|
+
circulating = false
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
# create a shared water loop
|
198
|
+
unless shared_water_use_equipment.empty? && booster_water_use_equipment.empty?
|
199
|
+
if circulating
|
200
|
+
# Table A.2 in PrototypeModelEnhancements_2014_0.pdf shows 10ft on everything except SecondarySchool which has 11.4ft
|
201
|
+
service_water_pump_head_pa = OpenStudio.convert(10.0, 'ftH_{2}O', 'Pa').get
|
202
|
+
service_water_pump_motor_efficiency = 0.3
|
203
|
+
else
|
204
|
+
service_water_pump_head_pa = 0.01
|
205
|
+
service_water_pump_motor_efficiency = 1.0
|
206
|
+
end
|
207
|
+
|
208
|
+
water_heater_sizing = OpenstudioStandards::ServiceWaterHeating.water_heater_sizing_from_water_use_equipment(shared_water_use_equipment)
|
209
|
+
water_heater_capacity_w = water_heater_sizing[:water_heater_capacity]
|
210
|
+
water_heater_volume_m3 = water_heater_sizing[:water_heater_volume]
|
211
|
+
|
212
|
+
# Add a shared service water heating loop with water heater
|
213
|
+
shared_swh_loop = OpenstudioStandards::ServiceWaterHeating.create_service_water_heating_loop(model,
|
214
|
+
system_name: 'Shared Service Water Loop',
|
215
|
+
service_water_temperature: water_heater_temp_c,
|
216
|
+
service_water_pump_head: service_water_pump_head_pa,
|
217
|
+
service_water_pump_motor_efficiency: service_water_pump_motor_efficiency,
|
218
|
+
water_heater_capacity: water_heater_capacity_w,
|
219
|
+
water_heater_volume: water_heater_volume_m3,
|
220
|
+
water_heater_fuel: shared_water_heating_fuel,
|
221
|
+
add_piping_losses: true)
|
222
|
+
|
223
|
+
# Add loop to array
|
224
|
+
swh_systems << shared_swh_loop
|
225
|
+
|
226
|
+
# Attach all water use equipment to the shared loop
|
227
|
+
shared_water_use_equipment.sort.each do |water_use_equip|
|
228
|
+
swh_connection = water_use_equip.waterUseConnections
|
229
|
+
shared_swh_loop.addDemandBranchForComponent(swh_connection.get) if swh_connection.is_initialized
|
230
|
+
end
|
231
|
+
|
232
|
+
# Attach booster water heater loop to shared loop
|
233
|
+
unless booster_water_use_equipment.empty?
|
234
|
+
# find_water_heater_capacity_volume_and_parasitic
|
235
|
+
booster_water_heater_sizing = OpenstudioStandards::ServiceWaterHeating.water_heater_sizing_from_water_use_equipment(booster_water_use_equipment,
|
236
|
+
water_heater_efficiency: 1.0,
|
237
|
+
inlet_temperature: 140.0,
|
238
|
+
supply_temperature: 180.0)
|
239
|
+
|
240
|
+
# Note that booster water heaters are always assumed to be electric resistance
|
241
|
+
booster_water_temperature_c = OpenStudio.convert(180.0, 'F', 'C').get
|
242
|
+
swh_booster_loop = OpenstudioStandards::ServiceWaterHeating.create_booster_water_heating_loop(model,
|
243
|
+
system_name: 'Booster Water Loop',
|
244
|
+
water_heater_capacity: booster_water_heater_sizing[:water_heater_capacity],
|
245
|
+
service_water_temperature: booster_water_temperature_c,
|
246
|
+
service_water_loop: shared_swh_loop)
|
247
|
+
|
248
|
+
# Add loop to array
|
249
|
+
swh_systems << swh_booster_loop
|
250
|
+
|
251
|
+
# Attach booster water use equipment to the booster loop
|
252
|
+
booster_water_use_equipment.each do |booster_equip|
|
253
|
+
booster_swh_connection = booster_equip.waterUseConnections
|
254
|
+
swh_booster_loop.addDemandBranchForComponent(booster_swh_connection.get) if booster_swh_connection.is_initialized
|
255
|
+
end
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
return swh_systems
|
260
|
+
end
|
261
|
+
|
262
|
+
# Check if the standards building type tends to have a circulating system by default
|
263
|
+
#
|
264
|
+
# @param standards_building_type [String] standard building type
|
265
|
+
# @return [Boolean] return true if the building has a circulating system, false if not
|
266
|
+
def self.circulating_building_type?(standards_building_type)
|
267
|
+
circulating_bldg_types = [
|
268
|
+
# DOE building types
|
269
|
+
'Office',
|
270
|
+
'PrimarySchool',
|
271
|
+
'Outpatient',
|
272
|
+
'Hospital',
|
273
|
+
'SmallHotel',
|
274
|
+
'LargeHotel',
|
275
|
+
'FullServiceRestaurant',
|
276
|
+
'HighriseApartment',
|
277
|
+
# DEER building types
|
278
|
+
'Asm', # 'Assembly'
|
279
|
+
'ECC', # 'Education - Community College'
|
280
|
+
'EPr', # 'Education - Primary School'
|
281
|
+
'ERC', # 'Education - Relocatable Classroom'
|
282
|
+
'ESe', # 'Education - Secondary School'
|
283
|
+
'EUn', # 'Education - University'
|
284
|
+
'Gro', # 'Grocery'
|
285
|
+
'Hsp', # 'Health/Medical - Hospital'
|
286
|
+
'Htl', # 'Lodging - Hotel'
|
287
|
+
'MBT', # 'Manufacturing Biotech'
|
288
|
+
'MFm', # 'Residential Multi-family'
|
289
|
+
'Mtl', # 'Lodging - Motel'
|
290
|
+
'Nrs', # 'Health/Medical - Nursing Home'
|
291
|
+
'OfL', # 'Office - Large'
|
292
|
+
# 'RFF', # 'Restaurant - Fast-Food'
|
293
|
+
'RSD' # 'Restaurant - Sit-Down'
|
294
|
+
]
|
295
|
+
|
296
|
+
return circulating_bldg_types.include?(standards_building_type)
|
297
|
+
end
|
298
|
+
end
|
299
|
+
end
|
@@ -119,19 +119,19 @@ module OpenstudioStandards
|
|
119
119
|
use_ems_control: false)
|
120
120
|
else
|
121
121
|
OpenstudioStandards::ServiceWaterHeating.create_water_heater(model,
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
122
|
+
water_heater_capacity: water_heater_capacity,
|
123
|
+
water_heater_volume: water_heater_volume,
|
124
|
+
water_heater_fuel: water_heater_fuel,
|
125
|
+
on_cycle_parasitic_fuel_consumption_rate: on_cycle_parasitic_fuel_consumption_rate,
|
126
|
+
off_cycle_parasitic_fuel_consumption_rate: off_cycle_parasitic_fuel_consumption_rate,
|
127
|
+
service_water_temperature: service_water_temperature,
|
128
|
+
service_water_temperature_schedule: swh_temp_sch,
|
129
|
+
set_peak_use_flowrate: false,
|
130
|
+
peak_flowrate: 0.0,
|
131
|
+
flowrate_schedule: nil,
|
132
|
+
water_heater_thermal_zone: water_heater_thermal_zone,
|
133
|
+
number_of_water_heaters: number_of_water_heaters,
|
134
|
+
service_water_loop: service_water_loop)
|
135
135
|
end
|
136
136
|
|
137
137
|
# add pipe losses if requested
|
@@ -166,6 +166,7 @@ module OpenstudioStandards
|
|
166
166
|
# Creates a booster water heater on its own loop and attaches it to the main service water heating loop.
|
167
167
|
#
|
168
168
|
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
169
|
+
# @param system_name [String] the name of the system. nil results in the default.
|
169
170
|
# @param water_heater_capacity [Double] water heater capacity, in W. Defaults to 8 kW / 27.283 kBtu/hr
|
170
171
|
# @param water_heater_volume [Double] water heater volume, in m^3. Defaults to 0.0227 m^3 / 6 gal
|
171
172
|
# @param water_heater_fuel [String] water heating fuel. Valid choices are 'NaturalGas', 'Electricity'.
|
@@ -179,6 +180,7 @@ module OpenstudioStandards
|
|
179
180
|
# @param service_water_loop [OpenStudio::Model::PlantLoop] if provided, add the water heater to this loop
|
180
181
|
# @return [OpenStudio::Model::PlantLoop] The booster water loop OpenStudio PlantLoop object
|
181
182
|
def self.create_booster_water_heating_loop(model,
|
183
|
+
system_name: 'Booster Water Loop',
|
182
184
|
water_heater_capacity: 8000.0,
|
183
185
|
water_heater_volume: OpenStudio.convert(6.0, 'gal', 'm^3').get,
|
184
186
|
water_heater_fuel: 'Electricity',
|
@@ -189,7 +191,7 @@ module OpenstudioStandards
|
|
189
191
|
water_heater_thermal_zone: nil,
|
190
192
|
service_water_loop: nil)
|
191
193
|
if service_water_loop.nil?
|
192
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.ServiceWaterHeating', "#{
|
194
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.ServiceWaterHeating', "#{__method__} requires the service_water_loop argument to couple the booster water heating loop with a heat exchanger.")
|
193
195
|
return nil
|
194
196
|
else
|
195
197
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.ServiceWaterHeating', "Adding booster water heater to #{service_water_loop.name}")
|