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
@@ -37,12 +37,17 @@ Standard.class_eval do
|
|
37
37
|
OpenstudioStandards::Weather.model_set_building_location(model, climate_zone: climate_zone)
|
38
38
|
model_custom_geometry_tweaks(model, building_type, climate_zone, @prototype_input)
|
39
39
|
model.getThermostatSetpointDualSetpoints(&:remove)
|
40
|
+
|
41
|
+
# set building name and standards building type
|
40
42
|
model.getBuilding.setName(self.class.to_s)
|
43
|
+
unless model.getBuilding.standardsBuildingType.is_initialized
|
44
|
+
model.getBuilding.setStandardsBuildingType(@instvarbuilding_type)
|
45
|
+
end
|
46
|
+
|
41
47
|
# save new basefile to new geometry folder as class name.
|
42
48
|
model.getBuilding.setName("-#{@instvarbuilding_type}-#{climate_zone} created: #{Time.new}")
|
43
49
|
model_add_loads(model)
|
44
|
-
|
45
|
-
model_modify_infiltration_coefficients(model, @instvarbuilding_type, climate_zone)
|
50
|
+
OpenstudioStandards::Infiltration.model_set_nist_infiltration(model)
|
46
51
|
model_add_door_infiltration(model, climate_zone)
|
47
52
|
model_modify_surface_convection_algorithm(model)
|
48
53
|
model_create_thermal_zones(model, @space_multiplier_map)
|
@@ -55,7 +60,7 @@ Standard.class_eval do
|
|
55
60
|
end
|
56
61
|
model_add_constructions(model, @instvarbuilding_type, climate_zone)
|
57
62
|
model_fenestration_orientation(model, climate_zone)
|
58
|
-
model_custom_hvac_tweaks(model,
|
63
|
+
model_custom_hvac_tweaks(model, @instvarbuilding_type, climate_zone, @prototype_input)
|
59
64
|
model_add_transfer_air(model)
|
60
65
|
model_add_internal_mass(model, @instvarbuilding_type)
|
61
66
|
model_add_swh(model, @instvarbuilding_type, @prototype_input)
|
@@ -64,7 +69,7 @@ Standard.class_eval do
|
|
64
69
|
model_add_daylight_savings(model)
|
65
70
|
model_apply_sizing_parameters(model, @instvarbuilding_type)
|
66
71
|
model.yearDescription.get.setDayofWeekforStartDay('Sunday')
|
67
|
-
model.getBuilding.setStandardsBuildingType(
|
72
|
+
model.getBuilding.setStandardsBuildingType(@instvarbuilding_type)
|
68
73
|
model_add_lights_shutoff(model)
|
69
74
|
# Perform a sizing model_run(model)
|
70
75
|
return false if model_run_sizing_run(model, "#{sizing_run_dir}/SR1") == false
|
@@ -76,7 +81,7 @@ Standard.class_eval do
|
|
76
81
|
# Apply the prototype HVAC assumptions
|
77
82
|
# which include sizing the fan pressure rises based
|
78
83
|
# on the flow rate of the system.
|
79
|
-
model_apply_prototype_hvac_assumptions(model,
|
84
|
+
model_apply_prototype_hvac_assumptions(model, @instvarbuilding_type, climate_zone)
|
80
85
|
# custom economizer controls
|
81
86
|
# For 90.1-2010 Outpatient, AHU1 doesn't have economizer and AHU2 set minimum outdoor air flow rate as 0
|
82
87
|
model_modify_oa_controller(model)
|
@@ -87,6 +92,8 @@ Standard.class_eval do
|
|
87
92
|
# Apply prototype changes that supersede the HVAC efficiency standard
|
88
93
|
model_apply_prototype_hvac_efficiency_adjustments(model)
|
89
94
|
model_custom_swh_tweaks(model, @instvarbuilding_type, climate_zone, @prototype_input)
|
95
|
+
# adjust infiltration schedules to match HVAC operating schedule
|
96
|
+
OpenstudioStandards::Infiltration.model_set_nist_infiltration_schedules(model)
|
90
97
|
# Fix EMS references.
|
91
98
|
# Temporary workaround for OS issue #2598
|
92
99
|
model_temp_fix_ems_references(model)
|
@@ -94,7 +101,7 @@ Standard.class_eval do
|
|
94
101
|
# only four zones in large hotel have daylighting controls
|
95
102
|
# @todo YXC to merge to the main function
|
96
103
|
model_add_daylighting_controls(model)
|
97
|
-
model_custom_daylighting_tweaks(model,
|
104
|
+
model_custom_daylighting_tweaks(model, @instvarbuilding_type, climate_zone, @prototype_input)
|
98
105
|
model_update_exhaust_fan_efficiency(model)
|
99
106
|
model_update_fan_efficiency(model)
|
100
107
|
# rename air loop and plant loop nodes for readability
|
@@ -220,7 +227,7 @@ Standard.class_eval do
|
|
220
227
|
# Adds the loads and associated schedules for each space type
|
221
228
|
# as defined in the OpenStudio_Standards_space_types.json file.
|
222
229
|
# This includes lights, plug loads, occupants, ventilation rate requirements,
|
223
|
-
#
|
230
|
+
# gas equipment (for kitchens, etc.) and typical schedules for each.
|
224
231
|
# Some loads are governed by the standard, others are typical values
|
225
232
|
# pulled from sources such as the DOE Reference and DOE Prototype Buildings.
|
226
233
|
#
|
@@ -235,10 +242,10 @@ Standard.class_eval do
|
|
235
242
|
space_type_apply_rendering_color(space_type)
|
236
243
|
|
237
244
|
# Loads
|
238
|
-
space_type_apply_internal_loads(space_type, true, true, true, true, true
|
245
|
+
space_type_apply_internal_loads(space_type, true, true, true, true, true)
|
239
246
|
|
240
247
|
# Schedules
|
241
|
-
space_type_apply_internal_load_schedules(space_type, true, true, true, true, true, true
|
248
|
+
space_type_apply_internal_load_schedules(space_type, true, true, true, true, true, true)
|
242
249
|
end
|
243
250
|
|
244
251
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished applying space types (loads)')
|
@@ -677,35 +684,48 @@ Standard.class_eval do
|
|
677
684
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished creating thermal zones')
|
678
685
|
end
|
679
686
|
|
680
|
-
#
|
681
|
-
# If kitchen_makeup is "None" then exhaust will be modeled in every kitchen zone without makeup air
|
682
|
-
# If kitchen_makeup is "Adjacent" then exhaust will be modeled in every kitchen zone. Makeup air will be provided when there as an adjacent dining,cafe, or cafeteria zone of the same building type.
|
683
|
-
# If kitchen_makeup is "Largest Zone" then exhaust will only be modeled in the largest kitchen zone, but the flow rate will be based on the kitchen area for all zones. Makeup air will be modeled in the largest dining,cafe, or cafeteria zone of the same building type.
|
687
|
+
# Add exhaust fans and makeup air to the model
|
684
688
|
#
|
685
|
-
# @param
|
686
|
-
#
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
689
|
+
# @param makeup_source [String] Valid choices are 'None', 'Adjacent'
|
690
|
+
# 'None' (default) does not add makeup air
|
691
|
+
# 'Adjacent' makeup air provided from the thermal zone of the largest adjacent dining, cafe, or cafeteria space of the same building type
|
692
|
+
# @param remove_existing_exhaust_fans [Boolean] remove existing exhaust fans
|
693
|
+
# @return [Array<OpenStudio::Model::FanZoneExhaust>] Array of zone exhuast fans
|
694
|
+
def model_add_exhaust(model,
|
695
|
+
makeup_source: 'None',
|
696
|
+
remove_existing_exhaust_fans: true)
|
697
|
+
# remove existing exhaust fans
|
698
|
+
if remove_existing_exhaust_fans
|
699
|
+
model.getThermalZones.sort.each do |thermal_zone|
|
700
|
+
thermal_zone.equipment.each { |equip| equip.remove if equip.to_FanZoneExhaust.is_initialized }
|
701
|
+
end
|
702
|
+
end
|
703
|
+
|
704
|
+
# placeholder for zone exhaust fans
|
705
|
+
zone_exhaust_fans = []
|
706
|
+
|
707
|
+
# populate standard_space_types_with_makup_air
|
708
|
+
standard_space_types_with_makup_air = {}
|
709
|
+
standard_space_types_with_makup_air[['FullServiceRestaurant', 'Kitchen']] = ['FullServiceRestaurant', 'Dining']
|
710
|
+
standard_space_types_with_makup_air[['QuickServiceRestaurant', 'Kitchen']] = ['QuickServiceRestaurant', 'Dining']
|
711
|
+
standard_space_types_with_makup_air[['Hospital', 'Kitchen']] = ['Hospital', 'Dining']
|
712
|
+
standard_space_types_with_makup_air[['SecondarySchool', 'Kitchen']] = ['SecondarySchool', 'Cafeteria']
|
713
|
+
standard_space_types_with_makup_air[['PrimarySchool', 'Kitchen']] = ['PrimarySchool', 'Cafeteria']
|
714
|
+
standard_space_types_with_makup_air[['LargeHotel', 'Kitchen']] = ['LargeHotel', 'Cafe']
|
705
715
|
|
716
|
+
# apply make up air kitchen spaces
|
717
|
+
if makeup_source == 'Adjacent'
|
718
|
+
# loop through thermal zones and add exhaust
|
706
719
|
model.getThermalZones.sort.each do |thermal_zone|
|
707
|
-
|
708
|
-
|
720
|
+
has_exhaust_fan = false
|
721
|
+
thermal_zone.equipment.each { |equip| has_exhaust_fan = true if equip.to_FanZoneExhaust.is_initialized }
|
722
|
+
|
723
|
+
if has_exhaust_fan
|
724
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Prototype.Model', "Thermal zone #{thermal_zone.name} already has an exhaust fan. None will be added.")
|
725
|
+
next
|
726
|
+
end
|
727
|
+
|
728
|
+
# loop through space types and add exhaust fans to kitchen spaces
|
709
729
|
thermal_zone.spaces.each do |space|
|
710
730
|
next unless space.spaceType.is_initialized
|
711
731
|
next unless space.partofTotalFloorArea
|
@@ -714,182 +734,81 @@ Standard.class_eval do
|
|
714
734
|
next unless space_type.standardsBuildingType.is_initialized
|
715
735
|
next unless space_type.standardsSpaceType.is_initialized
|
716
736
|
|
717
|
-
|
718
|
-
|
719
|
-
space_type_hash[space_type] = {}
|
720
|
-
space_type_hash[space_type][:effective_floor_area] = 0.0
|
721
|
-
space_type_hash[space_type][:standards_array] = [space_type.standardsBuildingType.get, space_type.standardsSpaceType.get]
|
722
|
-
if kitchen_makeup == 'Adjacent'
|
723
|
-
space_type_hash[space_type][:adjacent_zones] = []
|
724
|
-
end
|
725
|
-
end
|
726
|
-
|
727
|
-
# populate floor area
|
728
|
-
space_type_hash[space_type][:effective_floor_area] += space.floorArea * space.multiplier
|
737
|
+
standards_building_type = space_type.standardsBuildingType.get
|
738
|
+
standards_space_type = space_type.standardsSpaceType.get
|
729
739
|
|
730
|
-
#
|
731
|
-
|
732
|
-
|
733
|
-
end
|
740
|
+
# get makeup air source
|
741
|
+
makeup_target_space_type = [standards_building_type, standards_space_type]
|
742
|
+
makeup_source_space_type = standard_space_types_with_makup_air[makeup_target_space_type]
|
734
743
|
|
735
|
-
#
|
736
|
-
|
737
|
-
zones_by_standards[space_type_hash[space_type][:standards_array]] = {}
|
738
|
-
end
|
739
|
-
zones_by_standards[space_type_hash[space_type][:standards_array]][thermal_zone] = space_type_hash
|
740
|
-
end
|
741
|
-
end
|
744
|
+
# skip if nil
|
745
|
+
next if makeup_source_space_type.nil?
|
742
746
|
|
743
|
-
|
747
|
+
# get largest adjacent zone matching the makeup_source_space_type
|
748
|
+
makeup_space = nil
|
749
|
+
adjacent_zones = OpenstudioStandards::Geometry.thermal_zone_get_adjacent_zones_with_shared_walls(thermal_zone)
|
750
|
+
adjacent_zones.each do |adjacent_zone|
|
751
|
+
adjacent_zone.spaces.each do |adjacent_space|
|
752
|
+
next unless adjacent_space.spaceType.is_initialized
|
753
|
+
next unless adjacent_space.partofTotalFloorArea
|
744
754
|
|
745
|
-
|
755
|
+
adjacent_space_type = adjacent_space.spaceType.get
|
756
|
+
next unless adjacent_space_type.standardsBuildingType.is_initialized
|
757
|
+
next unless adjacent_space_type.standardsSpaceType.is_initialized
|
746
758
|
|
747
|
-
|
748
|
-
|
749
|
-
# hash to manage lookups
|
750
|
-
markup_target_effective_floor_area = {}
|
751
|
-
markup_source_effective_floor_area = {}
|
759
|
+
adjacent_standards_building_type = adjacent_space_type.standardsBuildingType.get
|
760
|
+
adjacent_standards_space_type = adjacent_space_type.standardsSpaceType.get
|
752
761
|
|
753
|
-
|
762
|
+
# filter out adjacent spaces not matching the makeup_source_space_type criteria
|
763
|
+
next unless (makeup_source_space_type[0] == adjacent_standards_building_type) && (makeup_source_space_type[1] == adjacent_standards_space_type)
|
754
764
|
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
space_type_hash.each do |space_type, hash|
|
759
|
-
effective_floor_area += space_type_hash[space_type][:effective_floor_area]
|
765
|
+
# set makeup_space if not set or if adjacent space is larger
|
766
|
+
if makeup_space.nil? || (adjacent_space.floorArea > makeup_space.floorArea)
|
767
|
+
makeup_space = adjacent_space
|
760
768
|
end
|
761
|
-
markup_target_effective_floor_area[thermal_zone] = effective_floor_area
|
762
769
|
end
|
763
|
-
|
764
|
-
# find zone with largest effective area of this space type
|
765
|
-
largest_target_zone = markup_target_effective_floor_area.key(markup_target_effective_floor_area.values.max)
|
766
|
-
|
767
|
-
# find total effective area to calculate exhaust, then divide by zone multiplier when add exhaust
|
768
|
-
target_effective_floor_area = markup_target_effective_floor_area.values.reduce(0, :+)
|
769
|
-
|
770
|
-
# find zones that match makeup_target with makeup_source
|
771
|
-
if zones_by_standards.key?(makeup_source)
|
772
|
-
|
773
|
-
# process zones of each makeup_source
|
774
|
-
zones_by_standards[makeup_source].each do |thermal_zone, space_type_hash|
|
775
|
-
effective_floor_area = 0.0
|
776
|
-
space_type_hash.each do |space_type, hash|
|
777
|
-
effective_floor_area += space_type_hash[space_type][:effective_floor_area]
|
778
|
-
end
|
779
|
-
|
780
|
-
markup_source_effective_floor_area[thermal_zone] = effective_floor_area
|
781
|
-
end
|
782
|
-
# find zone with largest effective area of this space type
|
783
|
-
largest_source_zone = markup_source_effective_floor_area.key(markup_source_effective_floor_area.values.max)
|
784
|
-
else
|
785
|
-
|
786
|
-
# issue warning that makeup air wont be made but still make exhaust
|
787
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Model', "Model has zone with #{makeup_target} but not #{makeup_source}. Exhaust will be added, but no makeup air.")
|
788
|
-
next
|
789
|
-
|
790
|
-
end
|
791
|
-
|
792
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "Largest #{makeup_target} is #{largest_target_zone.name} which will provide exhaust for #{target_effective_floor_area} m^2")
|
793
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "Largest #{makeup_source} is #{largest_source_zone.name} which will provide makeup air for #{makeup_target}")
|
794
|
-
|
795
|
-
# add in extra arguments for makeup air
|
796
|
-
exhaust_makeup_inputs = {}
|
797
|
-
exhaust_makeup_inputs[makeup_target] = {} # for now only one makeup target per zone, but method could have multiple
|
798
|
-
exhaust_makeup_inputs[makeup_target][:target_effective_floor_area] = target_effective_floor_area
|
799
|
-
exhaust_makeup_inputs[makeup_target][:source_zone] = largest_source_zone
|
800
|
-
|
801
|
-
# add exhaust
|
802
|
-
next if zones_applied.include?(largest_target_zone) # would only hit this if zone has two space types each requesting makeup air
|
803
|
-
|
804
|
-
zone_exhaust_hash = thermal_zone_add_exhaust(largest_target_zone, exhaust_makeup_inputs)
|
805
|
-
zones_applied << largest_target_zone
|
806
|
-
zone_exhaust_fans.merge!(zone_exhaust_hash)
|
807
|
-
|
808
770
|
end
|
809
|
-
end
|
810
|
-
|
811
|
-
# add exhaust to zones that did not contain space types with standard_space_types_with_makup_air
|
812
|
-
zones_by_standards.each do |standards_array, zones_hash|
|
813
|
-
next if standard_space_types_with_makup_air.key?(standards_array)
|
814
771
|
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
zone_exhaust_hash = thermal_zone_add_exhaust(thermal_zone)
|
821
|
-
zones_applied << thermal_zone
|
822
|
-
zone_exhaust_fans.merge!(zone_exhaust_hash)
|
772
|
+
if makeup_space.nil?
|
773
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Prototype.Model', "Model has zone #{thermal_zone.name} with standards types #{makeup_target_space_type} but no adjacent zone with #{makeup_source_space_type}. Exhaust will be added, but no makeup air.")
|
774
|
+
makeup_thermal_zone = nil
|
775
|
+
else
|
776
|
+
makeup_thermal_zone = makeup_space.thermalZone.get
|
823
777
|
end
|
824
|
-
end
|
825
|
-
|
826
|
-
else # kitchen_makeup == "Adjacent"
|
827
778
|
|
828
|
-
|
779
|
+
zone_exhaust_fan = OpenstudioStandards::HVAC.create_exhaust_fan(thermal_zone, make_up_air_source_zone: makeup_thermal_zone)
|
780
|
+
unless zone_exhaust_fan.nil?
|
781
|
+
# set fan pressure rise
|
782
|
+
fan_zone_exhaust_apply_prototype_fan_pressure_rise(zone_exhaust_fan)
|
829
783
|
|
830
|
-
|
831
|
-
|
832
|
-
# process zones of each makeup_target
|
833
|
-
zones_by_standards[makeup_target].each do |thermal_zone, space_type_hash|
|
834
|
-
# get adjacent zones
|
835
|
-
adjacent_zones = OpenstudioStandards::Geometry.thermal_zone_get_adjacent_zones_with_shared_walls(thermal_zone)
|
836
|
-
|
837
|
-
# find adjacent zones matching key and value from standard_space_types_with_makup_air
|
838
|
-
first_adjacent_makeup_source = nil
|
839
|
-
adjacent_zones.each do |adjacent_zone|
|
840
|
-
next unless first_adjacent_makeup_source.nil?
|
841
|
-
|
842
|
-
if zones_by_standards.key?(makeup_source) && zones_by_standards[makeup_source].key?(adjacent_zone)
|
843
|
-
first_adjacent_makeup_source = adjacent_zone
|
844
|
-
|
845
|
-
# @todo add in extra arguments for makeup air
|
846
|
-
exhaust_makeup_inputs = {}
|
847
|
-
exhaust_makeup_inputs[makeup_target] = {} # for now only one makeup target per zone, but method could have multiple
|
848
|
-
exhaust_makeup_inputs[makeup_target][:source_zone] = first_adjacent_makeup_source
|
849
|
-
|
850
|
-
# add exhaust
|
851
|
-
zone_exhaust_hash = thermal_zone_add_exhaust(thermal_zone, exhaust_makeup_inputs)
|
852
|
-
zones_applied << thermal_zone
|
853
|
-
zone_exhaust_fans.merge!(zone_exhaust_hash)
|
854
|
-
end
|
855
|
-
end
|
856
|
-
|
857
|
-
if first_adjacent_makeup_source.nil?
|
858
|
-
|
859
|
-
# issue warning that makeup air wont be made but still make exhaust
|
860
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Model', "Model has zone with #{makeup_target} but no adjacent zone with #{makeup_source}. Exhaust will be added, but no makeup air.")
|
861
|
-
|
862
|
-
# add exhaust
|
863
|
-
zone_exhaust_hash = thermal_zone_add_exhaust(thermal_zone)
|
864
|
-
zones_applied << thermal_zone
|
865
|
-
zone_exhaust_fans.merge!(zone_exhaust_hash)
|
866
|
-
|
867
|
-
end
|
868
|
-
end
|
784
|
+
# update efficiency and pressure rise
|
785
|
+
prototype_fan_apply_prototype_fan_efficiency(zone_exhaust_fan)
|
869
786
|
|
787
|
+
zone_exhaust_fans << zone_exhaust_fan
|
870
788
|
end
|
871
789
|
end
|
790
|
+
end
|
791
|
+
end
|
872
792
|
|
873
|
-
|
874
|
-
|
875
|
-
|
793
|
+
# loop through thermal zones and add exhaust fans
|
794
|
+
model.getThermalZones.sort.each do |thermal_zone|
|
795
|
+
has_exhaust_fan = false
|
796
|
+
thermal_zone.equipment.each { |equip| has_exhaust_fan = true if equip.to_FanZoneExhaust.is_initialized }
|
876
797
|
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
end
|
881
|
-
end
|
882
|
-
else
|
883
|
-
if kitchen_makeup != 'None'
|
884
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Model', "#{kitchen_makeup} is an unexpected value for kitchen_makup arg, will use None.")
|
798
|
+
if has_exhaust_fan
|
799
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Prototype.Model', "Thermal zone #{thermal_zone.name} already has an exhaust fan. None will be added.")
|
800
|
+
next
|
885
801
|
end
|
886
802
|
|
887
|
-
|
888
|
-
|
889
|
-
|
803
|
+
zone_exhaust_fan = OpenstudioStandards::HVAC.create_exhaust_fan(thermal_zone)
|
804
|
+
unless zone_exhaust_fan.nil?
|
805
|
+
# set fan pressure rise
|
806
|
+
fan_zone_exhaust_apply_prototype_fan_pressure_rise(zone_exhaust_fan)
|
890
807
|
|
891
|
-
#
|
892
|
-
|
808
|
+
# update efficiency and pressure rise
|
809
|
+
prototype_fan_apply_prototype_fan_efficiency(zone_exhaust_fan)
|
810
|
+
|
811
|
+
zone_exhaust_fans << zone_exhaust_fan
|
893
812
|
end
|
894
813
|
end
|
895
814
|
|
@@ -1395,51 +1314,6 @@ Standard.class_eval do
|
|
1395
1314
|
return true
|
1396
1315
|
end
|
1397
1316
|
|
1398
|
-
# Changes the infiltration coefficients for the prototype vintages.
|
1399
|
-
#
|
1400
|
-
# @param (see #add_constructions)
|
1401
|
-
# @return [Boolean] returns true if successful, false if not
|
1402
|
-
# @todo Consistency - make prototype and reference vintages consistent
|
1403
|
-
def model_modify_infiltration_coefficients(model, building_type, climate_zone)
|
1404
|
-
# Select the terrain type, which
|
1405
|
-
# impacts wind speed, and in turn infiltration
|
1406
|
-
terrain = 'City'
|
1407
|
-
case template
|
1408
|
-
when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', '90.1-2016', '90.1-2019', 'NREL ZNE Ready 2017'
|
1409
|
-
case building_type
|
1410
|
-
when 'Warehouse'
|
1411
|
-
terrain = 'Urban'
|
1412
|
-
when 'SmallHotel'
|
1413
|
-
terrain = 'Suburbs'
|
1414
|
-
end
|
1415
|
-
end
|
1416
|
-
# Set the terrain type
|
1417
|
-
model.getSite.setTerrain(terrain)
|
1418
|
-
|
1419
|
-
# modify the infiltration coefficients
|
1420
|
-
case template
|
1421
|
-
when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
|
1422
|
-
# @todo make this consistent with newer prototypes
|
1423
|
-
const_coeff = 1.0
|
1424
|
-
temp_coeff = 0.0
|
1425
|
-
velo_coeff = 0.0
|
1426
|
-
velo_sq_coeff = 0.0
|
1427
|
-
else
|
1428
|
-
# Includes a wind-velocity-based term
|
1429
|
-
const_coeff = 0.0
|
1430
|
-
temp_coeff = 0.0
|
1431
|
-
velo_coeff = 0.224
|
1432
|
-
velo_sq_coeff = 0.0
|
1433
|
-
end
|
1434
|
-
|
1435
|
-
model.getSpaceInfiltrationDesignFlowRates.sort.each do |infiltration|
|
1436
|
-
infiltration.setConstantTermCoefficient(const_coeff)
|
1437
|
-
infiltration.setTemperatureTermCoefficient(temp_coeff)
|
1438
|
-
infiltration.setVelocityTermCoefficient(velo_coeff)
|
1439
|
-
infiltration.setVelocitySquaredTermCoefficient(velo_sq_coeff)
|
1440
|
-
end
|
1441
|
-
end
|
1442
|
-
|
1443
1317
|
# Sets the inside and outside convection algorithms for different vintages
|
1444
1318
|
#
|
1445
1319
|
# @param (see #add_constructions)
|
@@ -1632,9 +1506,9 @@ Standard.class_eval do
|
|
1632
1506
|
oa_cfm_per_ft2 = 0.0578940512546562
|
1633
1507
|
oa_m3_per_m2 = OpenStudio.convert(OpenStudio.convert(oa_cfm_per_ft2, 'cfm', 'm^3/s').get, '1/ft^2', '1/m^2').get
|
1634
1508
|
if has_erv
|
1635
|
-
model_add_residential_erv(model, zone, oa_m3_per_m2)
|
1509
|
+
model_add_residential_erv(model, [zone], oa_m3_per_m2)
|
1636
1510
|
else
|
1637
|
-
model_add_residential_ventilator(model, zone, oa_m3_per_m2)
|
1511
|
+
model_add_residential_ventilator(model, [zone], oa_m3_per_m2)
|
1638
1512
|
end
|
1639
1513
|
|
1640
1514
|
# Shut-off air loop level OA intake
|
@@ -2057,6 +1931,9 @@ Standard.class_eval do
|
|
2057
1931
|
econ_max_70_pct_oa_sch.defaultDaySchedule.setName('Economizer Max OA Fraction 70 pct Default')
|
2058
1932
|
econ_max_70_pct_oa_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0.7)
|
2059
1933
|
|
1934
|
+
# Store original climate zones
|
1935
|
+
climate_zone_code = climate_zone
|
1936
|
+
|
2060
1937
|
# Check each airloop
|
2061
1938
|
model.getAirLoopHVACs.sort.each do |air_loop|
|
2062
1939
|
economizer_required = false
|
@@ -2088,6 +1965,11 @@ Standard.class_eval do
|
|
2088
1965
|
# specified, economizer requirements were aimed at comfort
|
2089
1966
|
# cooling, not computer room cooling (as per input from the MSC).
|
2090
1967
|
|
1968
|
+
# Process climate zone:
|
1969
|
+
# Moisture regime is not needed for climate zone 8
|
1970
|
+
climate_zone = climate_zone.split('-')[-1]
|
1971
|
+
climate_zone = '8' if climate_zone.include?('8')
|
1972
|
+
|
2091
1973
|
# Get the size threshold requirement
|
2092
1974
|
search_criteria = {
|
2093
1975
|
'template' => template,
|
@@ -2095,7 +1977,7 @@ Standard.class_eval do
|
|
2095
1977
|
'data_center' => true
|
2096
1978
|
}
|
2097
1979
|
econ_limits = model_find_object(standards_data['economizers'], search_criteria)
|
2098
|
-
minimum_capacity_btu_per_hr = econ_limits['
|
1980
|
+
minimum_capacity_btu_per_hr = econ_limits['minimum_capacity']
|
2099
1981
|
economizer_required = !minimum_capacity_btu_per_hr.nil?
|
2100
1982
|
elsif @instvarbuilding_type == 'LargeOffice' && air_loop_hvac_include_wshp?(air_loop)
|
2101
1983
|
# WSHP serving the IT closets are assumed to always be too
|
@@ -2108,7 +1990,7 @@ Standard.class_eval do
|
|
2108
1990
|
if economizer_required
|
2109
1991
|
# If an economizer is required, determine the economizer type
|
2110
1992
|
# in the prototype buildings, which depends on climate zone.
|
2111
|
-
economizer_type = model_economizer_type(model,
|
1993
|
+
economizer_type = model_economizer_type(model, climate_zone_code)
|
2112
1994
|
|
2113
1995
|
# Set the economizer type
|
2114
1996
|
# Get the OA system and OA controller
|
@@ -2125,7 +2007,7 @@ Standard.class_eval do
|
|
2125
2007
|
|
2126
2008
|
# Check that the economizer type set by the prototypes
|
2127
2009
|
# is not prohibited by code. If it is, change to no economizer.
|
2128
|
-
unless air_loop_hvac_economizer_type_allowable?(air_loop,
|
2010
|
+
unless air_loop_hvac_economizer_type_allowable?(air_loop, climate_zone_code)
|
2129
2011
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.prototype.Model', "#{air_loop.name} is required to have an economizer, but the type chosen, #{economizer_type} is prohibited by code for climate zone #{climate_zone}. Economizer type will be switched to No Economizer.")
|
2130
2012
|
oa_control.setEconomizerControlType('NoEconomizer')
|
2131
2013
|
end
|