openstudio-standards 0.7.1 → 0.8.0.rc2

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.
Files changed (363) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAE90120162019LargeHotel.json +58 -13
  3. data/data/geometry/ASHRAELargeHotel.json +58 -13
  4. data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
  5. data/data/standards/export_OpenStudio_libraries.rb +2 -2
  6. data/data/standards/manage_OpenStudio_Standards.rb +6 -6
  7. data/data/standards/openstudio_standards_duplicates_log.csv +7961 -1
  8. data/data/standards/test_performance_expected_dd_results.csv +2016 -2004
  9. data/lib/openstudio-standards/btap/fileio.rb +171 -5
  10. data/lib/openstudio-standards/constructions/create.rb +38 -4
  11. data/lib/openstudio-standards/constructions/modify.rb +10 -3
  12. data/lib/openstudio-standards/create_typical/create_typical.rb +42 -28
  13. data/lib/openstudio-standards/create_typical/space_type_information.rb +160 -0
  14. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +22 -21
  15. data/lib/openstudio-standards/exterior_lighting/create.rb +454 -0
  16. data/lib/openstudio-standards/exterior_lighting/data/entryways.csv +52 -0
  17. data/lib/openstudio-standards/exterior_lighting/data/parking.csv +54 -0
  18. data/lib/openstudio-standards/exterior_lighting/data/typical_exterior_lighting.json +37 -0
  19. data/lib/openstudio-standards/exterior_lighting/information.rb +202 -0
  20. data/lib/openstudio-standards/geometry/information.rb +49 -2
  21. data/lib/openstudio-standards/hvac/components/create.rb +169 -0
  22. data/lib/openstudio-standards/hvac/components/modify.rb +42 -0
  23. data/lib/openstudio-standards/hvac/exhaust/create_exhaust_fan.rb +108 -0
  24. data/lib/openstudio-standards/hvac/exhaust/data/convert_data.rb +86 -0
  25. data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.csv +18 -0
  26. data/lib/openstudio-standards/hvac/exhaust/data/typical_exhaust.json +89 -0
  27. data/lib/openstudio-standards/infiltration/nist_infiltration.rb +25 -13
  28. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +0 -64
  29. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +0 -25
  30. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +0 -25
  31. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +1 -11
  32. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +5 -1
  33. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +1 -1
  34. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -7
  35. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +36 -18
  36. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +1 -1
  37. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +121 -239
  38. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +179 -151
  39. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +0 -466
  40. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +18 -2
  41. data/lib/openstudio-standards/refrigeration/create_case.rb +125 -0
  42. data/lib/openstudio-standards/refrigeration/create_compressor.rb +78 -0
  43. data/lib/openstudio-standards/refrigeration/create_compressor_rack.rb +48 -0
  44. data/lib/openstudio-standards/refrigeration/create_refrigeration_system.rb +74 -0
  45. data/lib/openstudio-standards/refrigeration/create_typical_refrigeration.rb +161 -0
  46. data/lib/openstudio-standards/refrigeration/create_walkin.rb +116 -0
  47. data/lib/openstudio-standards/refrigeration/data/refrigerated_cases.csv +31 -0
  48. data/lib/openstudio-standards/refrigeration/data/refrigerated_walkins.csv +76 -0
  49. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +13 -0
  50. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_cases.csv +17 -0
  51. data/lib/openstudio-standards/refrigeration/data/typical_refrigerated_walkins.csv +53 -0
  52. data/lib/openstudio-standards/refrigeration/information.rb +130 -0
  53. data/lib/openstudio-standards/schedules/parametric.rb +1 -1
  54. data/lib/openstudio-standards/service_water_heating/create_typical.rb +299 -0
  55. data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +16 -14
  56. data/lib/openstudio-standards/service_water_heating/data/convert_data.rb +119 -0
  57. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.csv +54 -0
  58. data/lib/openstudio-standards/service_water_heating/data/typical_water_use_equipment.json +810 -0
  59. data/lib/openstudio-standards/service_water_heating/information.rb +69 -0
  60. data/lib/openstudio-standards/sql_file/fenestration.rb +1 -1
  61. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +154 -0
  62. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +35 -12
  63. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +110 -61
  64. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +128 -29
  65. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +103 -38
  66. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  67. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +106 -5
  68. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +8 -8
  69. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +44 -17
  70. data/lib/openstudio-standards/standards/Standards.Fan.rb +32 -21
  71. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +45 -18
  72. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +14 -9
  73. data/lib/openstudio-standards/standards/Standards.Model.rb +294 -76
  74. data/lib/openstudio-standards/standards/Standards.Motor.rb +66 -0
  75. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -1
  76. data/lib/openstudio-standards/standards/Standards.Pump.rb +34 -20
  77. data/lib/openstudio-standards/standards/Standards.ServiceWaterHeating.rb +0 -353
  78. data/lib/openstudio-standards/standards/Standards.Space.rb +3 -107
  79. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +2 -57
  80. data/lib/openstudio-standards/standards/Standards.Surface.rb +11 -3
  81. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +1 -120
  82. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.computer_room_acs.json +142 -0
  83. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.economizers.json +1006 -596
  84. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.energy_recovery.json +724 -0
  85. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.ext_ltg.json +1258 -163
  86. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.motors.json +1070 -140
  87. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +33 -3374
  88. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.unitary_acs.json +1400 -340
  89. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.vrfs.json +769 -0
  90. 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
  91. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.computer_room_acs.json +142 -0
  92. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.economizers.json +1006 -596
  93. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.energy_recovery.json +724 -0
  94. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.ext_ltg.json +1258 -163
  95. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.motors.json +1070 -140
  96. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +15 -3343
  97. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.unitary_acs.json +1840 -372
  98. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.vrfs.json +769 -0
  99. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +20 -10
  100. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +0 -9
  101. 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
  102. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.computer_room_acs.json +142 -0
  103. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.economizers.json +1006 -628
  104. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.energy_recovery.json +718 -712
  105. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.ext_ltg.json +1438 -163
  106. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.motors.json +2552 -182
  107. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +14 -3368
  108. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.unitary_acs.json +2348 -352
  109. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.vrfs.json +769 -0
  110. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +47 -61
  111. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +6 -0
  112. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Motor.rb +11 -0
  113. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +0 -9
  114. 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
  115. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.computer_room_acs.json +142 -0
  116. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.economizers.json +1006 -628
  117. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.energy_recovery.json +1358 -1346
  118. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.ext_ltg.json +1438 -163
  119. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.motors.json +1359 -189
  120. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +19 -3451
  121. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.unitary_acs.json +2176 -616
  122. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.vrfs.json +616 -0
  123. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +47 -61
  124. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +9 -0
  125. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Motor.rb +11 -0
  126. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +0 -9
  127. 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
  128. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.computer_room_acs.json +142 -0
  129. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.economizers.json +1006 -628
  130. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.energy_recovery.json +1188 -1424
  131. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.ext_ltg.json +1498 -163
  132. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.motors.json +1769 -189
  133. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +15 -3422
  134. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.unitary_acs.json +1807 -408
  135. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.vrfs.json +1024 -0
  136. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +70 -87
  137. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +9 -0
  138. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Motor.rb +11 -0
  139. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +0 -9
  140. 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
  141. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.computer_room_acs.json +142 -0
  142. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.economizers.json +1006 -628
  143. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.energy_recovery.json +2806 -3296
  144. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.ext_ltg.json +1558 -163
  145. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.motors.json +1759 -189
  146. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +16 -3448
  147. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.unitary_acs.json +2758 -422
  148. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.vrfs.json +684 -0
  149. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +14 -3318
  150. 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
  151. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.chillers.json +1 -1
  152. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +953 -207
  153. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.energy_recovery.json +724 -0
  154. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.ext_ltg.json +5 -5
  155. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +11 -2858
  156. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirConditionerVariableRefrigerantFlow.rb +13 -0
  157. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +0 -18
  158. 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
  159. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.chillers.json +0 -51
  160. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +953 -207
  161. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.energy_recovery.json +724 -0
  162. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.ext_ltg.json +5 -5
  163. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +9 -2830
  164. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirConditionerVariableRefrigerantFlow.rb +13 -0
  165. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +0 -18
  166. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.economizers.json +1006 -564
  167. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.energy_recovery.json +1264 -0
  168. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.ext_ltg.json +5 -5
  169. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.spc_typ.json +0 -1079
  170. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +132 -288
  171. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.HeatExchangerSensLat.rb +44 -20
  172. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Model.rb +11 -0
  173. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +0 -8
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.economizers.json +1006 -564
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.energy_recovery.json +1264 -0
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.ext_ltg.json +5 -5
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.spc_typ.json +0 -1079
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +137 -288
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.HeatExchangerSensLat.rb +44 -20
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Model.rb +11 -0
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +0 -9
  182. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +12 -10
  183. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +8 -6
  184. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +8 -6
  185. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +9 -3
  186. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +6 -40
  187. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +30 -337
  188. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +4 -5
  189. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -2
  190. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +56 -3
  191. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +80 -0
  192. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +0 -10
  193. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +35 -0
  194. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.economizers.json +550 -0
  195. 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
  196. 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
  197. 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
  198. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +225 -245
  199. 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
  200. 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
  201. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +19 -3
  202. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac.json +185 -0
  203. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_airloop_hvac_doas.json +127 -0
  204. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_building.json +121 -0
  205. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_design_specification_outdoor_air.json +49 -0
  206. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_electric_equipment.json +113 -0
  207. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_exterior_lights.json +120 -0
  208. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_space.json +388 -0
  209. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_spacetype.json +367 -0
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_thermal_zone.json +56 -0
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_connections.json +37 -0
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment.json +69 -0
  213. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_json/userdata_wateruse_equipment_definition.json +37 -0
  214. data/lib/openstudio-standards/standards/cbes/cbes_pre_1978/data/cbes_pre_1978.ext_ltg.json +5 -5
  215. data/lib/openstudio-standards/standards/cbes/cbes_t24_1978/data/cbes_t24_1978.ext_ltg.json +5 -5
  216. data/lib/openstudio-standards/standards/cbes/cbes_t24_1992/data/cbes_t24_1992.ext_ltg.json +5 -5
  217. data/lib/openstudio-standards/standards/cbes/cbes_t24_2001/data/cbes_t24_2001.ext_ltg.json +5 -5
  218. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/data/cbes_t24_2005.ext_ltg.json +5 -5
  219. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/data/cbes_t24_2008.ext_ltg.json +5 -5
  220. data/lib/openstudio-standards/standards/deer/deer_1985/comstock_deer_1985/data/comstock_deer_1985.ext_ltg.json +5 -5
  221. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ext_ltg.json +5 -5
  222. data/lib/openstudio-standards/standards/deer/deer_1996/comstock_deer_1996/data/comstock_deer_1996.ext_ltg.json +5 -5
  223. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ext_ltg.json +5 -5
  224. data/lib/openstudio-standards/standards/deer/deer_2003/comstock_deer_2003/data/comstock_deer_2003.ext_ltg.json +5 -5
  225. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ext_ltg.json +5 -5
  226. data/lib/openstudio-standards/standards/deer/deer_2007/comstock_deer_2007/data/comstock_deer_2007.ext_ltg.json +5 -5
  227. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ext_ltg.json +5 -5
  228. data/lib/openstudio-standards/standards/deer/deer_2011/comstock_deer_2011/data/comstock_deer_2011.ext_ltg.json +5 -5
  229. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ext_ltg.json +5 -5
  230. data/lib/openstudio-standards/standards/deer/deer_2014/comstock_deer_2014/data/comstock_deer_2014.ext_ltg.json +5 -5
  231. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ext_ltg.json +5 -5
  232. data/lib/openstudio-standards/standards/deer/deer_2015/comstock_deer_2015/data/comstock_deer_2015.ext_ltg.json +5 -5
  233. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ext_ltg.json +5 -5
  234. data/lib/openstudio-standards/standards/deer/deer_2017/comstock_deer_2017/data/comstock_deer_2017.ext_ltg.json +5 -5
  235. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ext_ltg.json +5 -5
  236. data/lib/openstudio-standards/standards/deer/deer_2020/comstock_deer_2020/data/comstock_deer_2020.ext_ltg.json +5 -5
  237. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ext_ltg.json +5 -5
  238. data/lib/openstudio-standards/standards/deer/deer_2025/comstock_deer_2025/data/comstock_deer_2025.ext_ltg.json +5 -5
  239. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ext_ltg.json +5 -5
  240. data/lib/openstudio-standards/standards/deer/deer_2030/comstock_deer_2030/data/comstock_deer_2030.ext_ltg.json +5 -5
  241. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ext_ltg.json +5 -5
  242. data/lib/openstudio-standards/standards/deer/deer_2035/comstock_deer_2035/data/comstock_deer_2035.ext_ltg.json +5 -5
  243. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ext_ltg.json +5 -5
  244. data/lib/openstudio-standards/standards/deer/deer_2040/comstock_deer_2040/data/comstock_deer_2040.ext_ltg.json +5 -5
  245. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ext_ltg.json +5 -5
  246. data/lib/openstudio-standards/standards/deer/deer_2045/comstock_deer_2045/data/comstock_deer_2045.ext_ltg.json +5 -5
  247. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ext_ltg.json +5 -5
  248. data/lib/openstudio-standards/standards/deer/deer_2050/comstock_deer_2050/data/comstock_deer_2050.ext_ltg.json +5 -5
  249. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ext_ltg.json +5 -5
  250. data/lib/openstudio-standards/standards/deer/deer_2055/comstock_deer_2055/data/comstock_deer_2055.ext_ltg.json +5 -5
  251. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ext_ltg.json +5 -5
  252. data/lib/openstudio-standards/standards/deer/deer_2060/comstock_deer_2060/data/comstock_deer_2060.ext_ltg.json +5 -5
  253. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ext_ltg.json +5 -5
  254. data/lib/openstudio-standards/standards/deer/deer_2065/comstock_deer_2065/data/comstock_deer_2065.ext_ltg.json +5 -5
  255. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ext_ltg.json +5 -5
  256. data/lib/openstudio-standards/standards/deer/deer_2070/comstock_deer_2070/data/comstock_deer_2070.ext_ltg.json +5 -5
  257. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ext_ltg.json +5 -5
  258. data/lib/openstudio-standards/standards/deer/deer_2075/comstock_deer_2075/data/comstock_deer_2075.ext_ltg.json +5 -5
  259. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ext_ltg.json +5 -5
  260. data/lib/openstudio-standards/standards/deer/deer_pre_1975/comstock_deer_pre_1975/data/comstock_deer_pre_1975.ext_ltg.json +5 -5
  261. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ext_ltg.json +5 -5
  262. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +10 -1
  263. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/unitary_acs.json +20 -20
  264. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +379 -27
  265. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +1 -4
  266. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +0 -1
  267. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +1 -1
  268. data/lib/openstudio-standards/standards/necb/NECB2011/data/unitary_acs.json +20 -20
  269. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +34 -22
  270. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +76 -23
  271. data/lib/openstudio-standards/standards/necb/NECB2011/necb_shw_calculation.xlsx +0 -0
  272. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -5
  273. data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +6 -2
  274. data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +26 -24
  275. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -1
  276. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +38 -32
  277. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +215 -18
  278. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +190 -15
  279. data/lib/openstudio-standards/standards/necb/common/national_carbon_price_sched_feb_2025.json +60 -0
  280. data/lib/openstudio-standards/standards/necb/common/utility_pricing_2025-02-20.csv +92 -0
  281. data/lib/openstudio-standards/utilities/ruleset_check.rb +204 -0
  282. data/lib/openstudio-standards/version.rb +1 -1
  283. data/lib/openstudio-standards/weather/information.rb +1 -1
  284. data/lib/openstudio-standards.rb +32 -12
  285. metadata +78 -80
  286. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.refrigeration.rb +0 -13
  287. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.refrigeration.rb +0 -13
  288. data/lib/openstudio-standards/prototypes/cbes/cbes.refrigeration.rb +0 -13
  289. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +0 -432
  290. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +0 -11
  291. 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
  292. 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
  293. 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
  294. 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
  295. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +0 -11
  296. 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
  297. 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
  298. 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
  299. 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
  300. 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
  301. 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
  302. 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
  303. 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
  304. 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
  305. 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
  306. 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
  307. 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
  308. 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
  309. 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
  310. 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
  311. 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
  312. 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
  313. 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
  314. 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
  315. 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
  316. 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
  317. 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
  318. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +0 -11
  319. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +0 -11
  320. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +0 -11
  321. data/lib/openstudio-standards/standards/deer/deer.Space.rb +0 -20
  322. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_cases.json +0 -1456
  323. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.ref_lnup.json +0 -562
  324. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_cases.json +0 -1456
  325. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.ref_lnup.json +0 -562
  326. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_cases.json +0 -1456
  327. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.ref_lnup.json +0 -562
  328. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_cases.json +0 -1456
  329. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.ref_lnup.json +0 -562
  330. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_cases.json +0 -1456
  331. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.ref_lnup.json +0 -562
  332. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_cases.json +0 -1456
  333. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.ref_lnup.json +0 -562
  334. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_cases.json +0 -1456
  335. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.ref_lnup.json +0 -562
  336. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_cases.json +0 -1456
  337. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.ref_lnup.json +0 -562
  338. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_cases.json +0 -1456
  339. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.ref_lnup.json +0 -562
  340. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_cases.json +0 -1456
  341. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.ref_lnup.json +0 -562
  342. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_cases.json +0 -1456
  343. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.ref_lnup.json +0 -562
  344. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_cases.json +0 -1456
  345. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.ref_lnup.json +0 -562
  346. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_cases.json +0 -1456
  347. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.ref_lnup.json +0 -562
  348. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_cases.json +0 -1456
  349. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.ref_lnup.json +0 -562
  350. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_cases.json +0 -1456
  351. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.ref_lnup.json +0 -562
  352. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_cases.json +0 -1456
  353. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.ref_lnup.json +0 -562
  354. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_cases.json +0 -1456
  355. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.ref_lnup.json +0 -562
  356. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_cases.json +0 -1456
  357. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.ref_lnup.json +0 -562
  358. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_cases.json +0 -1456
  359. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.ref_lnup.json +0 -562
  360. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_cases.json +0 -1456
  361. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.ref_lnup.json +0 -562
  362. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_cases.json +0 -1456
  363. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.ref_lnup.json +0 -562
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "table": [
9
9
  {
10
-
10
+ "equipment_type": "Air Conditioners",
11
11
  "cooling_type": "AirCooled",
12
12
  "heating_type": "Electric Resistance or None",
13
13
  "subcategory": "Single Package",
@@ -29,7 +29,7 @@
29
29
  "notes": "From NECB 2011, Table 5.2.12.1"
30
30
  },
31
31
  {
32
-
32
+ "equipment_type": "Air Conditioners",
33
33
  "cooling_type": "AirCooled",
34
34
  "heating_type": "All Other",
35
35
  "subcategory": "Single Package",
@@ -51,7 +51,7 @@
51
51
  "notes": "From NECB 2011, Table 5.2.12.1"
52
52
  },
53
53
  {
54
-
54
+ "equipment_type": "Air Conditioners",
55
55
  "cooling_type": "AirCooled",
56
56
  "heating_type": "Electric Resistance or None",
57
57
  "subcategory": "Split System",
@@ -73,7 +73,7 @@
73
73
  "notes": "From NECB 2011, Table 5.2.12.1"
74
74
  },
75
75
  {
76
-
76
+ "equipment_type": "Air Conditioners",
77
77
  "cooling_type": "AirCooled",
78
78
  "heating_type": "All Other",
79
79
  "subcategory": "Split System",
@@ -95,7 +95,7 @@
95
95
  "notes": "From NECB 2011, Table 5.2.12.1"
96
96
  },
97
97
  {
98
-
98
+ "equipment_type": "Air Conditioners",
99
99
  "cooling_type": "AirCooled",
100
100
  "heating_type": "Electric Resistance or None",
101
101
  "subcategory": "Single Package",
@@ -117,7 +117,7 @@
117
117
  "notes": "From NECB 2011, Table 5.2.12.1"
118
118
  },
119
119
  {
120
-
120
+ "equipment_type": "Air Conditioners",
121
121
  "cooling_type": "AirCooled",
122
122
  "heating_type": "All Other",
123
123
  "subcategory": "Single Package",
@@ -139,7 +139,7 @@
139
139
  "notes": "From NECB 2011, Table 5.2.12.1"
140
140
  },
141
141
  {
142
-
142
+ "equipment_type": "Air Conditioners",
143
143
  "cooling_type": "AirCooled",
144
144
  "heating_type": "Electric Resistance or None",
145
145
  "subcategory": "Split System",
@@ -161,7 +161,7 @@
161
161
  "notes": "From NECB 2011, Table 5.2.12.1"
162
162
  },
163
163
  {
164
-
164
+ "equipment_type": "Air Conditioners",
165
165
  "cooling_type": "AirCooled",
166
166
  "heating_type": "All Other",
167
167
  "subcategory": "Split System",
@@ -183,7 +183,7 @@
183
183
  "notes": "From NECB 2011, Table 5.2.12.1"
184
184
  },
185
185
  {
186
-
186
+ "equipment_type": "Air Conditioners",
187
187
  "cooling_type": "AirCooled",
188
188
  "heating_type": "Electric Resistance or None",
189
189
  "subcategory": "Single Package",
@@ -205,7 +205,7 @@
205
205
  "notes": "From NECB 2011, Table 5.2.12.1: CHECK THIS"
206
206
  },
207
207
  {
208
-
208
+ "equipment_type": "Air Conditioners",
209
209
  "cooling_type": "AirCooled",
210
210
  "heating_type": "All Other",
211
211
  "subcategory": "Single Package",
@@ -227,7 +227,7 @@
227
227
  "notes": "From NECB 2011, Table 5.2.12.1: CHECK THIS"
228
228
  },
229
229
  {
230
-
230
+ "equipment_type": "Air Conditioners",
231
231
  "cooling_type": "AirCooled",
232
232
  "heating_type": "Electric Resistance or None",
233
233
  "subcategory": "Split System",
@@ -249,7 +249,7 @@
249
249
  "notes": "From NECB 2011, Table 5.2.12.1: CHECK THIS"
250
250
  },
251
251
  {
252
-
252
+ "equipment_type": "Air Conditioners",
253
253
  "cooling_type": "AirCooled",
254
254
  "heating_type": "All Other",
255
255
  "subcategory": "Split System",
@@ -271,7 +271,7 @@
271
271
  "notes": "From NECB 2011, Table 5.2.12.1: CHECK THIS"
272
272
  },
273
273
  {
274
-
274
+ "equipment_type": "Air Conditioners",
275
275
  "cooling_type": "AirCooled",
276
276
  "heating_type": "Electric Resistance or None",
277
277
  "subcategory": "Single Package",
@@ -293,7 +293,7 @@
293
293
  "notes": "From NECB 2011, Table 5.2.12.1"
294
294
  },
295
295
  {
296
-
296
+ "equipment_type": "Air Conditioners",
297
297
  "cooling_type": "AirCooled",
298
298
  "heating_type": "All Other",
299
299
  "subcategory": "Single Package",
@@ -315,7 +315,7 @@
315
315
  "notes": "From NECB 2011, Table 5.2.12.1"
316
316
  },
317
317
  {
318
-
318
+ "equipment_type": "Air Conditioners",
319
319
  "cooling_type": "AirCooled",
320
320
  "heating_type": "Electric Resistance or None",
321
321
  "subcategory": "Split System",
@@ -337,7 +337,7 @@
337
337
  "notes": "From NECB 2011, Table 5.2.12.1"
338
338
  },
339
339
  {
340
-
340
+ "equipment_type": "Air Conditioners",
341
341
  "cooling_type": "AirCooled",
342
342
  "heating_type": "All Other",
343
343
  "subcategory": "Split System",
@@ -359,10 +359,10 @@
359
359
  "notes": "From NECB 2011, Table 5.2.12.1"
360
360
  },
361
361
  {
362
-
362
+ "equipment_type": "PTAC",
363
363
  "cooling_type": "AirCooled",
364
364
  "heating_type": "Electric Resistance or None",
365
- "subcategory": "PTAC",
365
+ "subcategory": null,
366
366
  "minimum_capacity": "-",
367
367
  "maximum_capacity": 9999999.0,
368
368
  "start_date": "9/9/1919",
@@ -381,10 +381,10 @@
381
381
  "notes": "From NECB 2011, Table 5.2.12.1"
382
382
  },
383
383
  {
384
-
384
+ "equipment_type": "PTAC",
385
385
  "cooling_type": "AirCooled",
386
386
  "heating_type": "All Other",
387
- "subcategory": "PTAC",
387
+ "subcategory": null,
388
388
  "minimum_capacity": "-",
389
389
  "maximum_capacity": 9999999.0,
390
390
  "start_date": "9/9/1919",
@@ -298,21 +298,21 @@ class NECB2011
298
298
  end
299
299
 
300
300
  # Create an ERV
301
+ erv = OpenstudioStandards::HVAC.create_hx_air_to_air_sensible_and_latent(air_loop_hvac.model,
302
+ name: "#{air_loop_hvac.name} ERV",
303
+ type: "Rotary",
304
+ economizer_lockout: true,
305
+ supply_air_outlet_temperature_control: true,
306
+ frost_control_type: 'ExhaustOnly',
307
+ sensible_heating_100_eff: 0.5,
308
+ sensible_heating_75_eff: 0.5,
309
+ latent_heating_100_eff: 0.5,
310
+ latent_heating_75_eff: 0.5,
311
+ sensible_cooling_100_eff: 0.5,
312
+ sensible_cooling_75_eff: 0.5,
313
+ latent_cooling_100_eff: 0.5,
314
+ latent_cooling_75_eff: 0.5)
301
315
 
302
- erv = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(air_loop_hvac.model)
303
- erv.setName("#{air_loop_hvac.name} ERV")
304
- erv.setSensibleEffectivenessat100HeatingAirFlow(0.5)
305
- erv.setLatentEffectivenessat100HeatingAirFlow(0.5)
306
- erv.setSensibleEffectivenessat75HeatingAirFlow(0.5)
307
- erv.setLatentEffectivenessat75HeatingAirFlow(0.5)
308
- erv.setSensibleEffectivenessat100CoolingAirFlow(0.5)
309
- erv.setLatentEffectivenessat100CoolingAirFlow(0.5)
310
- erv.setSensibleEffectivenessat75CoolingAirFlow(0.5)
311
- erv.setLatentEffectivenessat75CoolingAirFlow(0.5)
312
- erv.setSupplyAirOutletTemperatureControl(true)
313
- erv.setHeatExchangerType('Rotary')
314
- erv.setFrostControlType('ExhaustOnly')
315
- erv.setEconomizerLockout(true)
316
316
  erv.setThresholdTemperature(-23.3) # -10F
317
317
  erv.setInitialDefrostTimeFraction(0.167)
318
318
  erv.setRateofDefrostTimeFractionIncrease(1.44)
@@ -381,20 +381,26 @@ class NECB2011
381
381
  raise("Could not find #{erv_name} in #{self.class.name} class' erv.json file or it's parents. The available ervs are #{@standards_data['tables']['erv']['table'].map { |item| item['erv_name'] }}") if erv_info.nil?
382
382
 
383
383
  heat_exchanger_air_to_air_sensible_and_latent.setHeatExchangerType(erv_info['HeatExchangerType'])
384
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(erv_info['SensibleEffectivenessat100HeatingAirFlow'])
385
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(erv_info['LatentEffectivenessat100HeatingAirFlow'])
386
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(erv_info['SensibleEffectivenessat100CoolingAirFlow'])
387
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(erv_info['LatentEffectivenessat100CoolingAirFlow'])
388
384
  if heat_exchanger_air_to_air_sensible_and_latent.model.version < OpenStudio::VersionString.new('3.8.0')
385
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(erv_info['SensibleEffectivenessat100HeatingAirFlow'])
386
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(erv_info['LatentEffectivenessat100HeatingAirFlow'])
387
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(erv_info['SensibleEffectivenessat100CoolingAirFlow'])
388
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(erv_info['LatentEffectivenessat100CoolingAirFlow'])
389
389
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(erv_info['SensibleEffectivenessat75HeatingAirFlow'])
390
390
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(erv_info['LatentEffectivenessat75HeatingAirFlow'])
391
391
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(erv_info['SensibleEffectivenessat75CoolingAirFlow'])
392
392
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(erv_info['LatentEffectivenessat75CoolingAirFlow'])
393
393
  else
394
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(erv_info['SensibleEffectivenessat75HeatingAirFlow']) unless erv_info['SensibleEffectivenessat75HeatingAirFlow'].zero?
395
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(erv_info['LatentEffectivenessat75HeatingAirFlow']) unless erv_info['LatentEffectivenessat75HeatingAirFlow'].zero?
396
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(erv_info['SensibleEffectivenessat75CoolingAirFlow']) unless erv_info['SensibleEffectivenessat75CoolingAirFlow'].zero?
397
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(erv_info['LatentEffectivenessat75CoolingAirFlow']) unless erv_info['LatentEffectivenessat75CoolingAirFlow'].zero?
394
+ values = Hash.new{|hash, key| hash[key] = Hash.new}
395
+ values['Sensible Heating'][0.75] = erv_info['SensibleEffectivenessat75HeatingAirFlow']
396
+ values['Sensible Heating'][1.0] = erv_info['SensibleEffectivenessat100HeatingAirFlow']
397
+ values['Latent Heating'][0.75] = erv_info['LatentEffectivenessat75HeatingAirFlow']
398
+ values['Latent Heating'][1.0] = erv_info['LatentEffectivenessat100HeatingAirFlow']
399
+ values['Sensible Cooling'][0.75] = erv_info['SensibleEffectivenessat75CoolingAirFlow']
400
+ values['Sensible Cooling'][1.0] = erv_info['SensibleEffectivenessat100CoolingAirFlow']
401
+ values['Latent Cooling'][0.75] = erv_info['LatentEffectivenessat75CoolingAirFlow']
402
+ values['Latent Cooling'][1.0] = erv_info['LatentEffectivenessat100CoolingAirFlow']
403
+ heat_exchanger_air_to_air_sensible_and_latent = OpenstudioStandards::HVAC.heat_exchanger_air_to_air_set_effectiveness_values(heat_exchanger_air_to_air_sensible_and_latent, defaults: false, values: values)
398
404
  end
399
405
  heat_exchanger_air_to_air_sensible_and_latent.setSupplyAirOutletTemperatureControl(erv_info['SupplyAirOutletTemperatureControl'])
400
406
  heat_exchanger_air_to_air_sensible_and_latent.setFrostControlType(erv_info['FrostControlType'])
@@ -2523,4 +2529,10 @@ class NECB2011
2523
2529
  air_terminal_single_duct_vav_reheat.setMaximumReheatAirTemperature(43.0)
2524
2530
  return true
2525
2531
  end
2532
+
2533
+ # Using a dummy method to overload the NREL one which applies VRF defaults. This is to avoid the NREL method
2534
+ # conflicting with NRCan's VRF ECMs.
2535
+ def air_conditioner_variable_refrigerant_flow_apply_efficiency_and_curves(air_conditioner_variable_refrigerant_flow)
2536
+ return
2537
+ end
2526
2538
  end
@@ -28,12 +28,11 @@ class NECB2011 < Standard
28
28
  def convert_arg_to_bool(variable:, default:)
29
29
  return default if variable.nil?
30
30
  if variable.is_a? String
31
- return default if variable.to_s.downcase == 'necb_default'
32
- return false if variable.to_s.downcase == 'false'
33
31
  return true if variable.to_s.downcase == 'true'
32
+ return false
34
33
  end
35
- return false if variable == false
36
- return variable
34
+ return true if variable == true
35
+ return default
37
36
  end
38
37
 
39
38
  # This method checks if a variable is a string. If it is anything but a string it returns the default. If it is a
@@ -216,7 +215,7 @@ class NECB2011 < Standard
216
215
  debug: false,
217
216
  sizing_run_dir: Dir.pwd,
218
217
  primary_heating_fuel: 'Electricity',
219
- swh_fuel: 'NECB_Default',
218
+ swh_fuel: nil,
220
219
  dcv_type: 'NECB_Default',
221
220
  lights_type: 'NECB_Default',
222
221
  lights_scale: 1.0,
@@ -271,7 +270,8 @@ class NECB2011 < Standard
271
270
  tbd_interpolate: false,
272
271
  necb_hdd: true,
273
272
  boiler_fuel: nil,
274
- boiler_cap_ratio: nil)
273
+ boiler_cap_ratio: nil,
274
+ oerd_utility_pricing: nil)
275
275
  model = load_building_type_from_library(building_type: building_type)
276
276
  return model_apply_standard(model: model,
277
277
  tbd_option: tbd_option,
@@ -333,7 +333,8 @@ class NECB2011 < Standard
333
333
  baseline_system_zones_map_option: baseline_system_zones_map_option, # Three options: (1) 'NECB_Default'/'none'/nil (i.e. 'one_sys_per_bldg'), (2) 'one_sys_per_dwelling_unit', (3) 'one_sys_per_bldg'
334
334
  necb_hdd: necb_hdd,
335
335
  boiler_fuel: boiler_fuel,
336
- boiler_cap_ratio: boiler_cap_ratio
336
+ boiler_cap_ratio: boiler_cap_ratio,
337
+ oerd_utility_pricing: oerd_utility_pricing
337
338
  )
338
339
  end
339
340
 
@@ -357,8 +358,8 @@ class NECB2011 < Standard
357
358
  sizing_run_dir: Dir.pwd,
358
359
  necb_reference_hp: false,
359
360
  necb_reference_hp_supp_fuel: 'DefaultFuel',
360
- primary_heating_fuel: 'DefaultFuel',
361
- swh_fuel: 'DefaultFuel',
361
+ primary_heating_fuel: 'Electricity',
362
+ swh_fuel: nil,
362
363
  dcv_type: 'NECB_Default',
363
364
  lights_type: 'NECB_Default',
364
365
  lights_scale: 'NECB_Default',
@@ -411,29 +412,33 @@ class NECB2011 < Standard
411
412
  baseline_system_zones_map_option: nil,
412
413
  necb_hdd: true,
413
414
  boiler_fuel: nil,
414
- boiler_cap_ratio: nil)
415
+ boiler_cap_ratio: nil,
416
+ oerd_utility_pricing: nil)
415
417
 
416
- primary_heating_fuel = validate_primary_heating_fuel(primary_heating_fuel: primary_heating_fuel)
418
+ apply_weather_data(model: model, epw_file: epw_file, custom_weather_folder: custom_weather_folder)
419
+ primary_heating_fuel = validate_primary_heating_fuel(primary_heating_fuel: primary_heating_fuel, model: model)
417
420
  self.fuel_type_set = SystemFuels.new()
418
- swh_fuel = swh_fuel.nil? ? 'NECB_Default' : swh_fuel.to_s
419
- self.fuel_type_set.set_defaults(standards_data: @standards_data, primary_heating_fuel: primary_heating_fuel, swh_fuel: swh_fuel)
420
- swh_fuel = self.fuel_type_set.swh_fueltype if swh_fuel.to_s.downcase == 'necb_default'
421
+ self.fuel_type_set.set_defaults(standards_data: @standards_data, primary_heating_fuel: primary_heating_fuel)
421
422
  clean_and_scale_model(model: model, rotation_degrees: rotation_degrees, scale_x: scale_x, scale_y: scale_y, scale_z: scale_z)
422
423
  fdwr_set = convert_arg_to_f(variable: fdwr_set, default: -1)
423
424
  srr_set = convert_arg_to_f(variable: srr_set, default: -1)
424
425
  necb_hdd = convert_arg_to_bool(variable: necb_hdd, default: true)
425
426
  boiler_fuel = convert_arg_to_string(variable: boiler_fuel, default: nil)
426
427
  boiler_cap_ratio = convert_arg_to_string(variable: boiler_cap_ratio, default: nil)
428
+ swh_fuel = convert_arg_to_string(variable: swh_fuel, default: nil)
429
+ oerd_utility_pricing = convert_arg_to_bool(variable: oerd_utility_pricing, default: false)
427
430
 
428
431
  boiler_cap_ratios = set_boiler_cap_ratios(boiler_cap_ratio: boiler_cap_ratio, boiler_fuel: boiler_fuel) unless boiler_cap_ratio.nil? && boiler_fuel.nil?
429
432
  self.fuel_type_set.set_boiler_fuel(standards_data: @standards_data, boiler_fuel: boiler_fuel, boiler_cap_ratios: boiler_cap_ratios) unless boiler_fuel.nil?
433
+ self.fuel_type_set.set_swh_fuel(swh_fuel: swh_fuel) unless swh_fuel.nil? || swh_fuel.to_s.downcase == 'defaultfuel'
430
434
 
431
435
  # Ensure the volume calculation in all spaces is done automatically
432
436
  model.getSpaces.sort.each do |space|
433
437
  space.autocalculateVolume
434
438
  end
435
439
 
436
- apply_weather_data(model: model, epw_file: epw_file, custom_weather_folder: custom_weather_folder)
440
+ output_meters = check_output_meters(output_meters: output_meters) if oerd_utility_pricing
441
+
437
442
  apply_loads(model: model,
438
443
  lights_type: lights_type,
439
444
  lights_scale: lights_scale,
@@ -475,7 +480,6 @@ class NECB2011 < Standard
475
480
  apply_systems_and_efficiencies(model: model,
476
481
  sizing_run_dir: sizing_run_dir,
477
482
  primary_heating_fuel: primary_heating_fuel,
478
- swh_fuel: swh_fuel,
479
483
  dcv_type: dcv_type,
480
484
  ecm_system_name: ecm_system_name,
481
485
  ecm_system_zones_map_option: ecm_system_zones_map_option,
@@ -548,7 +552,6 @@ class NECB2011 < Standard
548
552
  def apply_systems_and_efficiencies(model:,
549
553
  sizing_run_dir:,
550
554
  primary_heating_fuel:,
551
- swh_fuel:,
552
555
  dcv_type: 'NECB_Default',
553
556
  ecm_system_name: 'NECB_Default',
554
557
  ecm_system_zones_map_option: 'NECB_Default',
@@ -579,8 +582,6 @@ class NECB2011 < Standard
579
582
 
580
583
  # Create Default Systems.
581
584
  apply_systems(model: model,
582
- primary_heating_fuel: primary_heating_fuel,
583
- swh_fuel: swh_fuel,
584
585
  sizing_run_dir: sizing_run_dir,
585
586
  shw_scale: shw_scale,
586
587
  baseline_system_zones_map_option: baseline_system_zones_map_option)
@@ -1056,6 +1057,27 @@ class NECB2011 < Standard
1056
1057
  true
1057
1058
  end
1058
1059
 
1060
+ # Apply the air leakage requirements to the model, as described in PNNL section 5.2.1.6.
1061
+ # This method creates customized infiltration objects for each space
1062
+ # and removes the SpaceType-level infiltration objects.
1063
+ #
1064
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
1065
+ # @return [Boolean] returns true if successful, false if not
1066
+ # @todo This infiltration method is not used by the Reference buildings, fix this inconsistency.
1067
+ def model_apply_infiltration_standard(model)
1068
+ # Set the infiltration rate at each space
1069
+ model.getSpaces.sort.each do |space|
1070
+ space_apply_infiltration_rate(space)
1071
+ end
1072
+
1073
+ # Remove infiltration rates set at the space type
1074
+ model.getSpaceTypes.sort.each do |space_type|
1075
+ space_type.spaceInfiltrationDesignFlowRates.each(&:remove)
1076
+ end
1077
+
1078
+ return true
1079
+ end
1080
+
1059
1081
  # @param necb_reference_hp [Boolean] if true, NECB reference model rules for heat pumps will be used.
1060
1082
  def apply_standard_efficiencies(model:, sizing_run_dir:, dcv_type: 'NECB_Default', necb_reference_hp: false)
1061
1083
  raise('validation of model failed.') unless validate_initial_model(model)
@@ -1940,7 +1962,7 @@ class NECB2011 < Standard
1940
1962
  space_type_apply_internal_loads(space_type: space_type, lights_type: lights_type, lights_scale: lights_scale)
1941
1963
 
1942
1964
  # Schedules
1943
- space_type_apply_internal_load_schedules(space_type, true, true, true, true, true, true, true)
1965
+ space_type_apply_internal_load_schedules(space_type, true, true, true, true, true, true)
1944
1966
  end
1945
1967
 
1946
1968
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished applying space types (loads)')
@@ -2437,7 +2459,16 @@ class NECB2011 < Standard
2437
2459
 
2438
2460
  # This method is defined and used by the vintage classes to address he issue with the heat pump fuel types. This
2439
2461
  # method does nothing when creating NECB reference buildings.
2440
- def validate_primary_heating_fuel(primary_heating_fuel:)
2462
+ def validate_primary_heating_fuel(primary_heating_fuel:, model:)
2463
+ if primary_heating_fuel.to_s.downcase == 'defaultfuel' || primary_heating_fuel.to_s.downcase == 'necb_default'
2464
+ epw = OpenStudio::EpwFile.new(model.weatherFile.get.path.get)
2465
+ default_fuel = @standards_data['regional_fuel_use'].detect { |fuel_sources| fuel_sources['state_province_regions'].include?(epw.stateProvinceRegion) }['fueltype_set']
2466
+ if default_fuel.nil?
2467
+ OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.swh', "Could not find a default fuel for #{epw.stateProvinceRegion}. Using Electricity as the fuel type instead.")
2468
+ return 'Electricity'
2469
+ end
2470
+ return default_fuel
2471
+ end
2441
2472
  return primary_heating_fuel
2442
2473
  end
2443
2474
 
@@ -2489,6 +2520,28 @@ class NECB2011 < Standard
2489
2520
  }
2490
2521
  return boiler_cap_ratios
2491
2522
  end
2492
- end
2493
-
2494
2523
 
2524
+ # This method checks if the output_meters argument contains a net electricity meter with 'timestep' frequency. If one
2525
+ # is then the method does nothing. If one is not then it is added. This is used in conjunction with the
2526
+ # 'oerd_utility_pricing' argument. If that argument is present then a net electricity meter with 'timestep' frequency
2527
+ # is required to determine the peak net electricity usage.
2528
+ def check_output_meters(output_meters: nil)
2529
+ if output_meters.nil?
2530
+ output_meters = [
2531
+ {
2532
+ "name" => "ElectricityNet:Facility",
2533
+ "frequency" => "Hourly"
2534
+ }
2535
+ ]
2536
+ else
2537
+ electnet_facility = output_meters.select { |output_meter| (output_meter["name"].to_s.downcase == "electricitynet:facility") && (output_meter["frequency"].to_s.downcase == "zone timestep") }
2538
+ if electnet_facility.empty?
2539
+ output_meters << {
2540
+ "name" => "ElectricityNet:Facility",
2541
+ "frequency" => "Hourly"
2542
+ }
2543
+ end
2544
+ end
2545
+ return output_meters
2546
+ end
2547
+ end
@@ -1,10 +1,9 @@
1
1
  class NECB2011
2
- def model_add_swh(model:, swh_fueltype: 'DefaultFuel', shw_scale:)
2
+ def model_add_swh(model:, swh_fueltype: nil, shw_scale:)
3
3
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started Adding Service Water Heating')
4
- # Get default fuel based on epw location province.
5
- if swh_fueltype == 'DefaultFuel'
6
- epw = OpenStudio::EpwFile.new(model.weatherFile.get.path.get)
7
- swh_fueltype = @standards_data['regional_fuel_use'].detect { |fuel_sources| fuel_sources['state_province_regions'].include?(epw.stateProvinceRegion) }['fueltype_set']
4
+ # Get default fuel based on the system fuels if not defined.
5
+ if swh_fueltype.nil?
6
+ swh_fueltype = self.fuel_type_set.swh_fueltype
8
7
  end
9
8
 
10
9
  # Calculate the tank size and service water pump information
@@ -16,10 +16,9 @@ class SystemFuels
16
16
  attr_accessor :necb_reference_hp_supp_fuel
17
17
  attr_accessor :fan_type
18
18
  attr_accessor :ecm_fueltype
19
- attr_accessor :swh_fuel
20
19
  attr_accessor :swh_fueltype
21
20
 
22
- def set_defaults(standards_data:, primary_heating_fuel:, swh_fuel:)
21
+ def set_defaults(standards_data:, primary_heating_fuel:)
23
22
  # Get fuelset.
24
23
  system_fuel_defaults = standards_data['fuel_type_sets'].detect { |fuel_type_set| fuel_type_set['name'] == primary_heating_fuel }
25
24
  raise("fuel_type_sets named #{primary_heating_fuel} not found in fuel_type_sets table.") if system_fuel_defaults.nil?
@@ -56,4 +55,9 @@ class SystemFuels
56
55
  @mau_heating_coil_type = boiler_fuel_defaults['mau_heating_coil_type'] unless @mau_heating_coil_type == 'DX'
57
56
  @heating_coil_type_sys6 = boiler_fuel_defaults['heating_coil_type_sys6']
58
57
  end
58
+
59
+ # Reset the Service Hot Water fuel.
60
+ def set_swh_fuel(swh_fuel:)
61
+ @swh_fueltype = swh_fuel
62
+ end
59
63
  end