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
@@ -30,7 +30,7 @@ module ASHRAEPRMCoilDX
|
|
30
30
|
when 'PTHP'
|
31
31
|
sub_category = 'PTHP'
|
32
32
|
when 'PTAC'
|
33
|
-
sub_category =
|
33
|
+
sub_category = nil
|
34
34
|
when 'PSZ_HP'
|
35
35
|
if capacity < 65000
|
36
36
|
sub_category = 'Single Package'
|
@@ -38,7 +38,7 @@ module ASHRAEPRMCoilDX
|
|
38
38
|
sub_category = 'Split-system and single package'
|
39
39
|
end
|
40
40
|
else
|
41
|
-
sub_category = '
|
41
|
+
sub_category = 'Single Package'
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
@@ -64,7 +64,13 @@ module ASHRAEPRMCoilDX
|
|
64
64
|
end
|
65
65
|
|
66
66
|
if coil_dx.iddObjectType.valueName.to_s != 'OS_Coil_Heating_DX_SingleSpeed'
|
67
|
-
search_criteria['heating_type'] = '
|
67
|
+
search_criteria['heating_type'] = 'Any'
|
68
|
+
end
|
69
|
+
|
70
|
+
if sys_type == 'PTAC'
|
71
|
+
search_criteria['equipment_type'] = sys_type
|
72
|
+
elsif sys_type == 'PSZ_AC'
|
73
|
+
search_criteria['equipment_type'] = 'Air Conditioners'
|
68
74
|
end
|
69
75
|
|
70
76
|
return search_criteria
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module ASHRAE901PRMFan
|
4
4
|
# Determines the minimum fan motor efficiency and nominal size for a given motor bhp.
|
5
5
|
# This should be the total brake horsepower with any desired safety factor already included.
|
6
|
-
# This method picks the next nominal motor
|
6
|
+
# This method picks the next nominal motor category larger than the required brake horsepower,
|
7
7
|
# and the efficiency is based on that size.
|
8
8
|
# For example, if the bhp = 6.3, the nominal size will be 7.5HP and the efficiency
|
9
9
|
# for 90.1-2010 will be 91.7% from Table 10.8B.
|
@@ -15,7 +15,6 @@ module ASHRAE901PRMFan
|
|
15
15
|
# @return [Array<Double>] minimum motor efficiency (0.0 to 1.0), nominal horsepower
|
16
16
|
def fan_standard_minimum_motor_efficiency_and_size(fan, motor_bhp)
|
17
17
|
fan_motor_eff = 0.85
|
18
|
-
nominal_hp = motor_bhp
|
19
18
|
|
20
19
|
# Don't attempt to look up motor efficiency
|
21
20
|
# for zero-hp fans, which may occur when there is no
|
@@ -26,47 +25,14 @@ module ASHRAE901PRMFan
|
|
26
25
|
|
27
26
|
# Lookup the minimum motor efficiency
|
28
27
|
motors = standards_data['motors']
|
29
|
-
|
30
|
-
# Assuming all fan motors are 4-pole ODP
|
31
|
-
search_criteria = {
|
32
|
-
'template' => template,
|
33
|
-
'number_of_poles' => 4.0,
|
34
|
-
'type' => 'Enclosed'
|
35
|
-
}
|
36
|
-
|
37
|
-
# Exception for small fans, including
|
38
|
-
# zone exhaust, fan coil, and fan powered terminals.
|
39
|
-
# In this case, use the 0.5 HP for the lookup.
|
40
|
-
if fan_small_fan?(fan)
|
41
|
-
nominal_hp = 0.5
|
42
|
-
else
|
43
|
-
motor_properties = model_find_object(motors, search_criteria, capacity = nil, date = nil, area = nil, num_floors = nil, fan_motor_bhp = motor_bhp)
|
44
|
-
if motor_properties.nil?
|
45
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Fan', "For #{fan.name}, could not find motor properties using search criteria: #{search_criteria}, motor_bhp = #{motor_bhp} hp.")
|
46
|
-
return [fan_motor_eff, nominal_hp]
|
47
|
-
end
|
48
|
-
|
49
|
-
# If the biggest fan motor size is hit, use the highest category efficiency
|
50
|
-
if nominal_hp > 9998.0
|
51
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Fan', "For #{fan.name}, there is no greater nominal HP. Use the efficiency of the largest motor category.")
|
52
|
-
nominal_hp = motor_bhp
|
53
|
-
end
|
54
|
-
|
55
|
-
# Round to nearest whole HP for niceness
|
56
|
-
if nominal_hp >= 2
|
57
|
-
nominal_hp = nominal_hp.round
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# Get the efficiency based on the nominal horsepower
|
62
|
-
motor_properties = model_find_object(motors, search_criteria, fan_motor_bhp = motor_bhp)
|
63
|
-
|
28
|
+
motor_properties = model_find_object(motors, {}, capacity = nil, date = nil, area = nil, num_floors = nil, fan_motor_bhp = motor_bhp)
|
64
29
|
if motor_properties.nil?
|
65
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Fan', "For #{fan.name}, could not find
|
66
|
-
return [fan_motor_eff,
|
30
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Fan', "For #{fan.name}, could not find motor properties using search criteria: motor_bhp = #{motor_bhp} bhp. Use #{fan_motor_eff} as a placeholder.")
|
31
|
+
return [fan_motor_eff, motor_bhp.round]
|
67
32
|
end
|
33
|
+
|
34
|
+
nominal_hp = motor_properties['maximum_capacity'].round
|
68
35
|
fan_motor_eff = motor_properties['nominal_full_load_efficiency']
|
69
|
-
nominal_hp = motor_properties['maximum_capacity'].round(1)
|
70
36
|
|
71
37
|
return [fan_motor_eff, nominal_hp]
|
72
38
|
end
|
@@ -1,6 +1,12 @@
|
|
1
1
|
class ASHRAE901PRM < Standard
|
2
2
|
# @!group Model
|
3
3
|
|
4
|
+
# Returns the PRM building envelope infiltration rate at a pressure differential of 75 Pa in cfm per ft^2
|
5
|
+
# @return [Double] infiltration rate in cfm per ft^2 at 75 Pa
|
6
|
+
def prm_building_envelope_infiltration_rate
|
7
|
+
return 1.0
|
8
|
+
end
|
9
|
+
|
4
10
|
# Determines which system number is used for the baseline system.
|
5
11
|
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
6
12
|
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
@@ -104,36 +110,11 @@ class ASHRAE901PRM < Standard
|
|
104
110
|
return fan_type
|
105
111
|
end
|
106
112
|
|
107
|
-
#
|
108
|
-
#
|
109
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
110
|
-
# @return [Double] Building envelope area in m2
|
111
|
-
def model_building_envelope_area(model)
|
112
|
-
# Get the space building envelope area
|
113
|
-
# According to the 90.1 definition, building envelope include:
|
114
|
-
# - "the elements of a building that separate conditioned spaces from the exterior"
|
115
|
-
# - "the elements of a building that separate conditioned space from unconditioned
|
116
|
-
# space or that enclose semiheated spaces through which thermal energy may be
|
117
|
-
# transferred to or from the exterior, to or from unconditioned spaces or to or
|
118
|
-
# from conditioned spaces."
|
119
|
-
building_envelope_area_m2 = 0
|
120
|
-
model.getSpaces.each do |space|
|
121
|
-
building_envelope_area_m2 += OpenstudioStandards::Geometry.space_get_envelope_area(space)
|
122
|
-
end
|
123
|
-
if building_envelope_area_m2 < 0.01
|
124
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', 'Calculated building envelope area is 0 m2, no infiltration will be added.')
|
125
|
-
return 0.0
|
126
|
-
end
|
127
|
-
|
128
|
-
return building_envelope_area_m2
|
129
|
-
end
|
130
|
-
|
131
|
-
# This method creates customized infiltration objects for each
|
132
|
-
# space and removes the SpaceType-level infiltration objects.
|
113
|
+
# This method creates customized infiltration objects for each space and removes the SpaceType-level infiltration objects.
|
133
114
|
# @param model [OpenStudio::Model::Model] openstudio model
|
134
|
-
# @param
|
115
|
+
# @param infiltration_rate [Double] space infiltration rate at a pressure differential of 75 Pa in cfm per ft^2
|
135
116
|
# @return [Boolean] true if successful, false if not
|
136
|
-
def model_apply_standard_infiltration(model,
|
117
|
+
def model_apply_standard_infiltration(model, infiltration_rate: prm_building_envelope_infiltration_rate)
|
137
118
|
# Model shouldn't use SpaceInfiltrationEffectiveLeakageArea
|
138
119
|
# Excerpt from the EnergyPlus Input/Output reference manual:
|
139
120
|
# "This model is based on work by Sherman and Grimsrud (1980)
|
@@ -148,16 +129,15 @@ class ASHRAE901PRM < Standard
|
|
148
129
|
end
|
149
130
|
|
150
131
|
# Get the space building envelope area
|
151
|
-
building_envelope_area_m2 =
|
132
|
+
building_envelope_area_m2 = OpenstudioStandards::Geometry.model_get_envelope_area(model)
|
152
133
|
prm_raise(building_envelope_area_m2 > 0.0, @sizing_run_dir, 'Calculated building envelope area is 0 m2, Please check model inputs.')
|
153
134
|
|
154
135
|
# Calculate current model air leakage rate @ 75 Pa and report it
|
155
136
|
curr_tot_infil_m3_per_s_per_envelope_area = model_current_building_envelope_infiltration_at_75pa(model, building_envelope_area_m2)
|
156
137
|
OpenStudio.logFree(OpenStudio::Info, 'prm.log', "The model's I_75Pa is estimated to be #{curr_tot_infil_m3_per_s_per_envelope_area} m3/s per m2 of total building envelope.")
|
157
138
|
|
158
|
-
# Calculate building adjusted building envelope
|
159
|
-
|
160
|
-
tot_infil_m3_per_s = model_adjusted_building_envelope_infiltration(building_envelope_area_m2, specific_space_infiltration_rate_75_pa)
|
139
|
+
# Calculate building adjusted building envelope air infiltration following the 90.1 PRM rules
|
140
|
+
tot_infil_m3_per_s = model_adjusted_building_envelope_infiltration(building_envelope_area_m2, infiltration_rate: infiltration_rate)
|
161
141
|
|
162
142
|
# Find infiltration method used in the model, if any.
|
163
143
|
#
|
@@ -193,7 +173,7 @@ class ASHRAE901PRM < Standard
|
|
193
173
|
unless space.spaceInfiltrationDesignFlowRates.empty?
|
194
174
|
old_infil = space.spaceInfiltrationDesignFlowRates[0]
|
195
175
|
old_infil_method = old_infil.designFlowRateCalculationMethod.to_s
|
196
|
-
# Return flow per space floor area if method is
|
176
|
+
# Return flow per space floor area if method is inconsistent in proposed model
|
197
177
|
return 'Flow/Area' if infil_method != old_infil_method && !infil_method.nil?
|
198
178
|
|
199
179
|
infil_method = old_infil_method
|
@@ -236,7 +216,7 @@ class ASHRAE901PRM < Standard
|
|
236
216
|
vel = old_infil.velocityTermCoefficient
|
237
217
|
vel_2 = old_infil.velocitySquaredTermCoefficient
|
238
218
|
old_infil_coeffs = [cst, temp, vel, vel_2] if !(cst.nil? && temp.nil? && vel.nil? && vel_2.nil?)
|
239
|
-
# Return flow per space floor area if method is
|
219
|
+
# Return flow per space floor area if method is inconsistent in proposed model
|
240
220
|
return [0.0, 0.0, 0.224, 0.0] if infil_coeffs != old_infil_coeffs && !(infil_coeffs[0].nil? &&
|
241
221
|
infil_coeffs[1].nil? &&
|
242
222
|
infil_coeffs[2].nil? &&
|
@@ -246,7 +226,7 @@ class ASHRAE901PRM < Standard
|
|
246
226
|
end
|
247
227
|
|
248
228
|
# Infiltration at the space type level
|
249
|
-
if infil_coeffs == [nil, nil, nil, nil] && space.spaceType.is_initialized
|
229
|
+
if (infil_coeffs == [nil, nil, nil, nil]) && space.spaceType.is_initialized
|
250
230
|
space_type = space.spaceType.get
|
251
231
|
unless space_type.spaceInfiltrationDesignFlowRates.empty?
|
252
232
|
old_infil = space_type.spaceInfiltrationDesignFlowRates[0]
|
@@ -255,7 +235,7 @@ class ASHRAE901PRM < Standard
|
|
255
235
|
vel = old_infil.velocityTermCoefficient
|
256
236
|
vel_2 = old_infil.velocitySquaredTermCoefficient
|
257
237
|
old_infil_coeffs = [cst, temp, vel, vel_2] if !(cst.nil? && temp.nil? && vel.nil? && vel_2.nil?)
|
258
|
-
# Return flow per space floor area if method is
|
238
|
+
# Return flow per space floor area if method is inconsistent in proposed model
|
259
239
|
return [0.0, 0.0, 0.224, 0.0] unless infil_coeffs != old_infil_coeffs && !(infil_coeffs[0].nil? &&
|
260
240
|
infil_coeffs[1].nil? &&
|
261
241
|
infil_coeffs[2].nil? &&
|
@@ -308,32 +288,22 @@ class ASHRAE901PRM < Standard
|
|
308
288
|
bldg_air_leakage_rate += model_get_space_air_leakage(space)
|
309
289
|
end
|
310
290
|
|
311
|
-
# adjust_infiltration_to_prototype_building_conditions(1) corresponds
|
312
|
-
# to the 0.112 shown in G3.1.1.4
|
291
|
+
# adjust_infiltration_to_prototype_building_conditions(1) corresponds to the 0.112 shown in G3.1.1.4
|
313
292
|
curr_tot_infil_m3_per_s_per_envelope_area = bldg_air_leakage_rate / OpenstudioStandards::Infiltration.adjust_infiltration_to_prototype_building_conditions(1) / building_envelope_area_m2
|
314
293
|
return curr_tot_infil_m3_per_s_per_envelope_area
|
315
294
|
end
|
316
295
|
|
317
|
-
#
|
318
|
-
# this approach uses the 90.1 PRM rules
|
296
|
+
# Determine the total building baseline infiltration rate in cfm per ft2 of the building envelope at 75 Pa per the 90.1 PRM rules.
|
319
297
|
#
|
320
298
|
# @param building_envelope_area_m2 [Double] Building envelope area as per 90.1 in m^2
|
321
|
-
# @param
|
299
|
+
# @param infiltration_rate [Double] Specific space infiltration rate at 75 pa in cfm per ft2
|
322
300
|
# @return [Double] building envelope infiltration
|
323
|
-
def model_adjusted_building_envelope_infiltration(building_envelope_area_m2,
|
324
|
-
# Determine the total building baseline infiltration rate in cfm per ft2 of the building envelope at 75 Pa
|
325
|
-
if specific_space_infiltration_rate_75_pa.nil?
|
326
|
-
basic_infil_rate_cfm_per_ft2 = space_infiltration_rate_75_pa
|
327
|
-
else
|
328
|
-
basic_infil_rate_cfm_per_ft2 = specific_space_infiltration_rate_75_pa
|
329
|
-
end
|
330
|
-
|
301
|
+
def model_adjusted_building_envelope_infiltration(building_envelope_area_m2, infiltration_rate: prm_building_envelope_infiltration_rate)
|
331
302
|
# Conversion factor
|
332
303
|
conv_fact = OpenStudio.convert(1.0, 'm^3/s', 'ft^3/min').get / OpenStudio.convert(1.0, 'm^2', 'ft^2').get
|
333
304
|
|
334
305
|
# Adjust the infiltration rate to the average pressure for the prototype buildings.
|
335
|
-
|
336
|
-
adj_infil_rate_cfm_per_ft2 = OpenstudioStandards::Infiltration.adjust_infiltration_to_prototype_building_conditions(basic_infil_rate_cfm_per_ft2)
|
306
|
+
adj_infil_rate_cfm_per_ft2 = OpenstudioStandards::Infiltration.adjust_infiltration_to_prototype_building_conditions(infiltration_rate)
|
337
307
|
adj_infil_rate_m3_per_s_per_m2 = adj_infil_rate_cfm_per_ft2 / conv_fact
|
338
308
|
|
339
309
|
# Calculate the total infiltration
|
@@ -342,286 +312,6 @@ class ASHRAE901PRM < Standard
|
|
342
312
|
return tot_infil_m3_per_s
|
343
313
|
end
|
344
314
|
|
345
|
-
# Apply the standard construction to each surface in the model, based on the construction type currently assigned.
|
346
|
-
#
|
347
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
348
|
-
# @param climate_zone [String] ASHRAE climate zone, e.g. 'ASHRAE 169-2013-4A'
|
349
|
-
# @param wwr_building_type [String] building type used for defining window to wall ratio, e.g. 'Office > 50,000 sq ft'
|
350
|
-
# @param wwr_info [Hash] A map that maps each building area type to its correspondent wwr.
|
351
|
-
# @return [Boolean] returns true if successful, false if not
|
352
|
-
def model_apply_standard_constructions(model, climate_zone, wwr_building_type: nil, wwr_info: {})
|
353
|
-
types_to_modify = []
|
354
|
-
|
355
|
-
# Possible boundary conditions are
|
356
|
-
# Adiabatic
|
357
|
-
# Surface
|
358
|
-
# Outdoors
|
359
|
-
# Ground
|
360
|
-
# Foundation
|
361
|
-
# GroundFCfactorMethod
|
362
|
-
# OtherSideCoefficients
|
363
|
-
# OtherSideConditionsModel
|
364
|
-
# GroundSlabPreprocessorAverage
|
365
|
-
# GroundSlabPreprocessorCore
|
366
|
-
# GroundSlabPreprocessorPerimeter
|
367
|
-
# GroundBasementPreprocessorAverageWall
|
368
|
-
# GroundBasementPreprocessorAverageFloor
|
369
|
-
# GroundBasementPreprocessorUpperWall
|
370
|
-
# GroundBasementPreprocessorLowerWall
|
371
|
-
|
372
|
-
# Possible surface types are
|
373
|
-
# Floor
|
374
|
-
# Wall
|
375
|
-
# RoofCeiling
|
376
|
-
# FixedWindow
|
377
|
-
# OperableWindow
|
378
|
-
# Door
|
379
|
-
# GlassDoor
|
380
|
-
# OverheadDoor
|
381
|
-
# Skylight
|
382
|
-
# TubularDaylightDome
|
383
|
-
# TubularDaylightDiffuser
|
384
|
-
|
385
|
-
# Create an array of surface types
|
386
|
-
types_to_modify << ['Outdoors', 'Floor']
|
387
|
-
types_to_modify << ['Outdoors', 'Wall']
|
388
|
-
types_to_modify << ['Outdoors', 'RoofCeiling']
|
389
|
-
types_to_modify << ['Outdoors', 'FixedWindow']
|
390
|
-
types_to_modify << ['Outdoors', 'OperableWindow']
|
391
|
-
types_to_modify << ['Outdoors', 'Door']
|
392
|
-
types_to_modify << ['Outdoors', 'GlassDoor']
|
393
|
-
types_to_modify << ['Outdoors', 'OverheadDoor']
|
394
|
-
types_to_modify << ['Outdoors', 'Skylight']
|
395
|
-
types_to_modify << ['Surface', 'Floor']
|
396
|
-
types_to_modify << ['Surface', 'Wall']
|
397
|
-
types_to_modify << ['Surface', 'RoofCeiling']
|
398
|
-
types_to_modify << ['Surface', 'FixedWindow']
|
399
|
-
types_to_modify << ['Surface', 'OperableWindow']
|
400
|
-
types_to_modify << ['Surface', 'Door']
|
401
|
-
types_to_modify << ['Surface', 'GlassDoor']
|
402
|
-
types_to_modify << ['Surface', 'OverheadDoor']
|
403
|
-
types_to_modify << ['Ground', 'Floor']
|
404
|
-
types_to_modify << ['Ground', 'Wall']
|
405
|
-
types_to_modify << ['Foundation', 'Wall']
|
406
|
-
types_to_modify << ['GroundFCfactorMethod', 'Wall']
|
407
|
-
types_to_modify << ['OtherSideCoefficients', 'Wall']
|
408
|
-
types_to_modify << ['OtherSideConditionsModel', 'Wall']
|
409
|
-
types_to_modify << ['GroundBasementPreprocessorAverageWall', 'Wall']
|
410
|
-
types_to_modify << ['GroundBasementPreprocessorUpperWall', 'Wall']
|
411
|
-
types_to_modify << ['GroundBasementPreprocessorLowerWall', 'Wall']
|
412
|
-
types_to_modify << ['Foundation', 'Floor']
|
413
|
-
types_to_modify << ['GroundFCfactorMethod', 'Floor']
|
414
|
-
types_to_modify << ['OtherSideCoefficients', 'Floor']
|
415
|
-
types_to_modify << ['OtherSideConditionsModel', 'Floor']
|
416
|
-
types_to_modify << ['GroundSlabPreprocessorAverage', 'Floor']
|
417
|
-
types_to_modify << ['GroundSlabPreprocessorCore', 'Floor']
|
418
|
-
types_to_modify << ['GroundSlabPreprocessorPerimeter', 'Floor']
|
419
|
-
|
420
|
-
# Find just those surfaces
|
421
|
-
surfaces_to_modify = []
|
422
|
-
surface_category = {}
|
423
|
-
org_surface_boundary_conditions = {}
|
424
|
-
types_to_modify.each do |boundary_condition, surface_type|
|
425
|
-
# Surfaces
|
426
|
-
model.getSurfaces.sort.each do |surf|
|
427
|
-
next unless surf.outsideBoundaryCondition == boundary_condition
|
428
|
-
next unless surf.surfaceType == surface_type
|
429
|
-
|
430
|
-
# Check if surface is adjacent to an unenclosed or unconditioned space (e.g. attic or parking garage)
|
431
|
-
if surf.outsideBoundaryCondition == 'Surface'
|
432
|
-
adj_space = surf.adjacentSurface.get.space.get
|
433
|
-
adj_space_cond_type = space_conditioning_category(adj_space)
|
434
|
-
if adj_space_cond_type == 'Unconditioned'
|
435
|
-
# Get adjacent surface
|
436
|
-
adjacent_surf = surf.adjacentSurface.get
|
437
|
-
|
438
|
-
# Store original boundary condition type
|
439
|
-
org_surface_boundary_conditions[surf.name.to_s] = adjacent_surf
|
440
|
-
|
441
|
-
# Identify this surface as exterior
|
442
|
-
surface_category[surf] = 'ExteriorSurface'
|
443
|
-
|
444
|
-
# Temporary change the surface's boundary condition to 'Outdoors' so it can be assigned a baseline construction
|
445
|
-
surf.setOutsideBoundaryCondition('Outdoors')
|
446
|
-
adjacent_surf.setOutsideBoundaryCondition('Outdoors')
|
447
|
-
end
|
448
|
-
end
|
449
|
-
|
450
|
-
if boundary_condition == 'Outdoors'
|
451
|
-
surface_category[surf] = 'ExteriorSurface'
|
452
|
-
elsif ['Ground', 'Foundation', 'GroundFCfactorMethod', 'OtherSideCoefficients', 'OtherSideConditionsModel', 'GroundSlabPreprocessorAverage', 'GroundSlabPreprocessorCore', 'GroundSlabPreprocessorPerimeter', 'GroundBasementPreprocessorAverageWall', 'GroundBasementPreprocessorAverageFloor', 'GroundBasementPreprocessorUpperWall', 'GroundBasementPreprocessorLowerWall'].include?(boundary_condition)
|
453
|
-
surface_category[surf] = 'GroundSurface'
|
454
|
-
else
|
455
|
-
surface_category[surf] = 'NA'
|
456
|
-
end
|
457
|
-
surfaces_to_modify << surf
|
458
|
-
end
|
459
|
-
|
460
|
-
# SubSurfaces
|
461
|
-
model.getSubSurfaces.sort.each do |surf|
|
462
|
-
next unless surf.outsideBoundaryCondition == boundary_condition
|
463
|
-
next unless surf.subSurfaceType == surface_type
|
464
|
-
|
465
|
-
surface_category[surf] = 'ExteriorSubSurface'
|
466
|
-
surfaces_to_modify << surf
|
467
|
-
end
|
468
|
-
end
|
469
|
-
|
470
|
-
# Modify these surfaces
|
471
|
-
prev_created_consts = {}
|
472
|
-
surfaces_to_modify.sort.each do |surf|
|
473
|
-
# Get space conditioning
|
474
|
-
space = surf.space.get
|
475
|
-
space_cond_type = space_conditioning_category(space)
|
476
|
-
|
477
|
-
# Do not modify constructions for unconditioned spaces
|
478
|
-
prev_created_consts = planar_surface_apply_standard_construction(surf, climate_zone, prev_created_consts, wwr_building_type, wwr_info, surface_category[surf]) unless space_cond_type == 'Unconditioned'
|
479
|
-
|
480
|
-
# Reset boundary conditions to original if they were temporary modified
|
481
|
-
if org_surface_boundary_conditions.include?(surf.name.to_s)
|
482
|
-
surf.setAdjacentSurface(org_surface_boundary_conditions[surf.name.to_s])
|
483
|
-
end
|
484
|
-
end
|
485
|
-
|
486
|
-
# List the unique array of constructions
|
487
|
-
if prev_created_consts.empty?
|
488
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Model', 'None of the constructions in your proposed model have both Intended Surface Type and Standards Construction Type')
|
489
|
-
else
|
490
|
-
prev_created_consts.each do |surf_type, construction|
|
491
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Model', "For #{surf_type.join(' ')}, applied #{construction.name}.")
|
492
|
-
end
|
493
|
-
end
|
494
|
-
|
495
|
-
return true
|
496
|
-
end
|
497
|
-
|
498
|
-
# Go through the default construction sets and hard-assigned constructions.
|
499
|
-
# Clone the existing constructions and set their intended surface type and standards construction type per the PRM.
|
500
|
-
# For some standards, this will involve making modifications. For others, it will not.
|
501
|
-
# 90.1-2019
|
502
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
503
|
-
# @return [Boolean] returns true if successful, false if not
|
504
|
-
def model_apply_prm_construction_types(model)
|
505
|
-
types_to_modify = []
|
506
|
-
|
507
|
-
# Possible boundary conditions are
|
508
|
-
# Adiabatic
|
509
|
-
# Surface
|
510
|
-
# Outdoors
|
511
|
-
# Ground
|
512
|
-
# Foundation
|
513
|
-
# GroundFCfactorMethod
|
514
|
-
# OtherSideCoefficients
|
515
|
-
# OtherSideConditionsModel
|
516
|
-
# GroundSlabPreprocessorAverage
|
517
|
-
# GroundSlabPreprocessorCore
|
518
|
-
# GroundSlabPreprocessorPerimeter
|
519
|
-
# GroundBasementPreprocessorAverageWall
|
520
|
-
# GroundBasementPreprocessorAverageFloor
|
521
|
-
# GroundBasementPreprocessorUpperWall
|
522
|
-
# GroundBasementPreprocessorLowerWall
|
523
|
-
|
524
|
-
# Possible surface types are
|
525
|
-
# AtticFloor
|
526
|
-
# AtticWall
|
527
|
-
# AtticRoof
|
528
|
-
# DemisingFloor
|
529
|
-
# DemisingWall
|
530
|
-
# DemisingRoof
|
531
|
-
# ExteriorFloor
|
532
|
-
# ExteriorWall
|
533
|
-
# ExteriorRoof
|
534
|
-
# ExteriorWindow
|
535
|
-
# ExteriorDoor
|
536
|
-
# GlassDoor
|
537
|
-
# GroundContactFloor
|
538
|
-
# GroundContactWall
|
539
|
-
# GroundContactRoof
|
540
|
-
# InteriorFloor
|
541
|
-
# InteriorWall
|
542
|
-
# InteriorCeiling
|
543
|
-
# InteriorPartition
|
544
|
-
# InteriorWindow
|
545
|
-
# InteriorDoor
|
546
|
-
# OverheadDoor
|
547
|
-
# Skylight
|
548
|
-
# TubularDaylightDome
|
549
|
-
# TubularDaylightDiffuser
|
550
|
-
|
551
|
-
# Possible standards construction types
|
552
|
-
# Mass
|
553
|
-
# SteelFramed
|
554
|
-
# WoodFramed
|
555
|
-
# IEAD
|
556
|
-
# View
|
557
|
-
# Daylight
|
558
|
-
# Swinging
|
559
|
-
# NonSwinging
|
560
|
-
# Heated
|
561
|
-
# Unheated
|
562
|
-
# RollUp
|
563
|
-
# Sliding
|
564
|
-
# Metal
|
565
|
-
# Nonmetal framing (all)
|
566
|
-
# Metal framing (curtainwall/storefront)
|
567
|
-
# Metal framing (entrance door)
|
568
|
-
# Metal framing (all other)
|
569
|
-
# Metal Building
|
570
|
-
# Attic and Other
|
571
|
-
# Glass with Curb
|
572
|
-
# Plastic with Curb
|
573
|
-
# Without Curb
|
574
|
-
|
575
|
-
# Create an array of types
|
576
|
-
types_to_modify << ['Outdoors', 'ExteriorWall', 'SteelFramed']
|
577
|
-
types_to_modify << ['Outdoors', 'ExteriorRoof', 'IEAD']
|
578
|
-
types_to_modify << ['Outdoors', 'ExteriorFloor', 'SteelFramed']
|
579
|
-
types_to_modify << ['Outdoors', 'ExteriorWindow', 'Any Vertical Glazing']
|
580
|
-
types_to_modify << ['Outdoors', 'GlassDoor', 'Any Vertical Glazing']
|
581
|
-
types_to_modify << ['Outdoors', 'ExteriorDoor', 'NonSwinging']
|
582
|
-
types_to_modify << ['Outdoors', 'ExteriorDoor', 'Swinging']
|
583
|
-
types_to_modify << ['Ground', 'GroundContactFloor', 'Unheated']
|
584
|
-
types_to_modify << ['Ground', 'GroundContactWall', 'Mass']
|
585
|
-
|
586
|
-
# Foundation
|
587
|
-
types_to_modify << ['Foundation', 'GroundContactFloor', 'Unheated']
|
588
|
-
types_to_modify << ['Foundation', 'GroundContactWall', 'Mass']
|
589
|
-
|
590
|
-
# F/C-Factor methods
|
591
|
-
types_to_modify << ['GroundFCfactorMethod', 'GroundContactFloor', 'Unheated']
|
592
|
-
types_to_modify << ['GroundFCfactorMethod', 'GroundContactWall', 'Mass']
|
593
|
-
|
594
|
-
# Other side coefficients
|
595
|
-
types_to_modify << ['OtherSideCoefficients', 'GroundContactFloor', 'Unheated']
|
596
|
-
types_to_modify << ['OtherSideConditionsModel', 'GroundContactFloor', 'Unheated']
|
597
|
-
types_to_modify << ['OtherSideCoefficients', 'GroundContactWall', 'Mass']
|
598
|
-
types_to_modify << ['OtherSideConditionsModel', 'GroundContactWall', 'Mass']
|
599
|
-
|
600
|
-
# Slab preprocessor
|
601
|
-
types_to_modify << ['GroundSlabPreprocessorAverage', 'GroundContactFloor', 'Unheated']
|
602
|
-
types_to_modify << ['GroundSlabPreprocessorCore', 'GroundContactFloor', 'Unheated']
|
603
|
-
types_to_modify << ['GroundSlabPreprocessorPerimeter', 'GroundContactFloor', 'Unheated']
|
604
|
-
|
605
|
-
# Basement preprocessor
|
606
|
-
types_to_modify << ['GroundBasementPreprocessorAverageWall', 'GroundContactWall', 'Mass']
|
607
|
-
types_to_modify << ['GroundBasementPreprocessorAverageFloor', 'GroundContactFloor', 'Unheated']
|
608
|
-
types_to_modify << ['GroundBasementPreprocessorUpperWall', 'GroundContactWall', 'Mass']
|
609
|
-
types_to_modify << ['GroundBasementPreprocessorLowerWall', 'GroundContactWall', 'Mass']
|
610
|
-
|
611
|
-
# Modify all constructions of each type
|
612
|
-
types_to_modify.each do |boundary_cond, surf_type, const_type|
|
613
|
-
constructions = OpenstudioStandards::Constructions.model_get_constructions(model, boundary_cond, surf_type)
|
614
|
-
|
615
|
-
constructions.sort.each do |const|
|
616
|
-
standards_info = const.standardsInformation
|
617
|
-
standards_info.setIntendedSurfaceType(surf_type)
|
618
|
-
standards_info.setStandardsConstructionType(const_type)
|
619
|
-
end
|
620
|
-
end
|
621
|
-
|
622
|
-
return true
|
623
|
-
end
|
624
|
-
|
625
315
|
# Reduces the SRR to the values specified by the PRM. SRR reduction will be done by shrinking vertices toward the centroid.
|
626
316
|
#
|
627
317
|
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
@@ -756,8 +446,7 @@ class ASHRAE901PRM < Standard
|
|
756
446
|
elevator_counter_weight_of_car = elevator_weight_of_car + (0.4 * elevator_rated_load)
|
757
447
|
end
|
758
448
|
search_criteria = {
|
759
|
-
'template' => template
|
760
|
-
'type' => 'Any'
|
449
|
+
'template' => template
|
761
450
|
}
|
762
451
|
end
|
763
452
|
elevator_motor_bhp = (elevator_weight_of_car + elevator_rated_load - elevator_counter_weight_of_car) * elevator_speed_of_car / (33000 * elevator_mech_eff) # Lookup the minimum motor efficiency
|
@@ -1230,7 +919,7 @@ class ASHRAE901PRM < Standard
|
|
1230
919
|
standards_data['userdata_airloop_hvac'].each do |row|
|
1231
920
|
next unless row['name'].to_s.downcase.strip == air_loop_hvac.name.to_s.downcase.strip
|
1232
921
|
|
1233
|
-
if row['dcv_exception_airloop']
|
922
|
+
if row['dcv_exception_airloop']
|
1234
923
|
dcv_airloop_user_exception = true
|
1235
924
|
break
|
1236
925
|
end
|
@@ -1251,7 +940,7 @@ class ASHRAE901PRM < Standard
|
|
1251
940
|
standards_data['userdata_thermal_zone'].each do |row|
|
1252
941
|
next unless row['name'].to_s.downcase.strip == thermal_zone.name.to_s.downcase.strip
|
1253
942
|
|
1254
|
-
if row['dcv_exception_thermal_zone']
|
943
|
+
if row['dcv_exception_thermal_zone']
|
1255
944
|
dcv_zone_user_exception = true
|
1256
945
|
break
|
1257
946
|
end
|
@@ -2312,10 +2001,10 @@ class ASHRAE901PRM < Standard
|
|
2312
2001
|
'prm.log',
|
2313
2002
|
"User data in the userdata_building.csv indicate building #{building_name} is exempted from rotation. Update the run to a single orientation PRM generation.")
|
2314
2003
|
# @todo need to use user data enums later.
|
2315
|
-
run_orients_flag = user_buildings[user_building_index]['is_exempt_from_rotations']
|
2004
|
+
run_orients_flag = user_buildings[user_building_index]['is_exempt_from_rotations']
|
2316
2005
|
end
|
2317
2006
|
end
|
2318
|
-
|
2007
|
+
run_orients_flag
|
2319
2008
|
end
|
2320
2009
|
|
2321
2010
|
# Function that extract the total fenestration area from a model by orientations.
|
@@ -3342,6 +3031,10 @@ class ASHRAE901PRM < Standard
|
|
3342
3031
|
return heat_type_props['heat_type']
|
3343
3032
|
end
|
3344
3033
|
|
3034
|
+
def has_space_conditioning_category
|
3035
|
+
true
|
3036
|
+
end
|
3037
|
+
|
3345
3038
|
private
|
3346
3039
|
|
3347
3040
|
# Check if the PRM process uses user data. The function returns a hash when
|
@@ -87,11 +87,10 @@ class ASHRAE901PRM < Standard
|
|
87
87
|
infiltration.setFlowperSpaceFloorArea(adj_infil_flow_area.round(13)) if space.exteriorArea > 0
|
88
88
|
end
|
89
89
|
infiltration.setSchedule(infil_sch)
|
90
|
-
infiltration.setConstantTermCoefficient(infil_coefficients[0])
|
91
|
-
infiltration.setTemperatureTermCoefficient(infil_coefficients[1])
|
92
|
-
infiltration.setVelocityTermCoefficient(infil_coefficients[2])
|
93
|
-
infiltration.setVelocitySquaredTermCoefficient(infil_coefficients[3])
|
94
|
-
|
90
|
+
infiltration.setConstantTermCoefficient(infil_coefficients[0]) unless infil_coefficients[0].nil?
|
91
|
+
infiltration.setTemperatureTermCoefficient(infil_coefficients[1]) unless infil_coefficients[1].nil?
|
92
|
+
infiltration.setVelocityTermCoefficient(infil_coefficients[2]) unless infil_coefficients[2].nil?
|
93
|
+
infiltration.setVelocitySquaredTermCoefficient(infil_coefficients[3]) unless infil_coefficients[3].nil?
|
95
94
|
infiltration.setSpace(space)
|
96
95
|
end
|
97
96
|
|
@@ -17,9 +17,8 @@ class ASHRAE901PRM < Standard
|
|
17
17
|
# @param set_electric_equipment [Boolean] if true, set the electric equipment density
|
18
18
|
# @param set_gas_equipment [Boolean] if true, set the gas equipment density
|
19
19
|
# @param set_ventilation [Boolean] if true, set the ventilation rates (per-person and per-area)
|
20
|
-
# @param set_infiltration [Boolean] if true, set the infiltration rates
|
21
20
|
# @return [Boolean] returns true if successful, false if not
|
22
|
-
def space_type_apply_internal_loads(space_type, set_people, set_lights, set_electric_equipment, set_gas_equipment, set_ventilation
|
21
|
+
def space_type_apply_internal_loads(space_type, set_people, set_lights, set_electric_equipment, set_gas_equipment, set_ventilation)
|
23
22
|
# Skip plenums
|
24
23
|
# Check if the space type name
|
25
24
|
# contains the word plenum.
|