openstudio-standards 0.4.0 → 0.5.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.
Files changed (376) hide show
  1. checksums.yaml +4 -4
  2. data/data/inventory/thermal_bridging.csv +90 -0
  3. data/data/standards/OpenStudio_Standards-deer-comstock.xlsx +0 -0
  4. data/data/standards/manage_OpenStudio_Standards.rb +1 -1
  5. data/data/standards/test_performance_expected_dd_results.csv +2014 -1891
  6. data/lib/openstudio-standards/btap/analysis.rb +8 -8
  7. data/lib/openstudio-standards/btap/bridging.rb +664 -645
  8. data/lib/openstudio-standards/btap/btap.model.rb +14 -14
  9. data/lib/openstudio-standards/btap/btap.rb +7 -7
  10. data/lib/openstudio-standards/btap/btap_result.rb +1 -1
  11. data/lib/openstudio-standards/btap/economics.rb +23 -23
  12. data/lib/openstudio-standards/btap/envelope.rb +8 -8
  13. data/lib/openstudio-standards/btap/equest.rb +1 -1
  14. data/lib/openstudio-standards/btap/geometry.rb +2 -2
  15. data/lib/openstudio-standards/btap/mpc.rb +7 -7
  16. data/lib/openstudio-standards/btap/schedules.rb +1 -1
  17. data/lib/openstudio-standards/btap/simmanager.rb +4 -4
  18. data/lib/openstudio-standards/btap/spaceloads.rb +26 -26
  19. data/lib/openstudio-standards/btap/utilities.rb +6 -6
  20. data/lib/openstudio-standards/btap/vintagizer.rb +1 -1
  21. data/lib/openstudio-standards/constructions/information.rb +83 -0
  22. data/lib/openstudio-standards/constructions/materials/modify.rb +72 -0
  23. data/lib/openstudio-standards/constructions/modify.rb +80 -0
  24. data/lib/openstudio-standards/create_typical/create_typical.rb +983 -0
  25. data/lib/openstudio-standards/create_typical/enumerations.rb +484 -0
  26. data/lib/openstudio-standards/create_typical/space_type_blend.rb +791 -0
  27. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +494 -0
  28. data/lib/openstudio-standards/daylighting/space.rb +47 -0
  29. data/lib/openstudio-standards/geometry/create.rb +801 -0
  30. data/lib/openstudio-standards/geometry/create_bar.rb +2171 -0
  31. data/lib/openstudio-standards/geometry/information.rb +462 -0
  32. data/lib/openstudio-standards/geometry/modify.rb +48 -0
  33. data/lib/openstudio-standards/hvac/air_loop/information.rb +79 -0
  34. data/lib/openstudio-standards/hvac/cbecs_hvac.rb +616 -0
  35. data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +91 -0
  36. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
  37. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.AirTerminalSingleDuctVAVReheat.rb +1 -1
  38. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  39. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Model.rb +1 -1
  40. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  41. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +2 -2
  42. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.hvac_systems.rb +1 -1
  43. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  44. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -36
  45. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.hvac_systems.rb +1 -1
  46. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  47. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -36
  48. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +3 -3
  49. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.hvac_systems.rb +1 -1
  50. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirTerminalSingleDuctVAVReheat.rb +1 -1
  51. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.elevators.rb +1 -1
  52. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirTerminalSingleDuctVAVReheat.rb +1 -1
  53. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.CoilHeatingGas.rb +1 -1
  54. data/lib/openstudio-standards/prototypes/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.elevators.rb +1 -1
  55. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  56. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  57. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +7 -7
  58. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Courthouse.rb +8 -8
  59. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.FullServiceRestaurant.rb +14 -14
  60. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +9 -9
  61. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +16 -16
  62. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +7 -7
  63. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterHighITE.rb +8 -8
  64. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeDataCenterLowITE.rb +8 -8
  65. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +11 -11
  66. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +7 -7
  67. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOfficeDetailed.rb +9 -9
  68. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +8 -8
  69. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOfficeDetailed.rb +11 -11
  70. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MidriseApartment.rb +9 -9
  71. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +19 -19
  72. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +10 -10
  73. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.QuickServiceRestaurant.rb +13 -13
  74. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStandalone.rb +6 -6
  75. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.RetailStripmall.rb +6 -6
  76. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +9 -9
  77. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterHighITE.rb +8 -8
  78. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallDataCenterLowITE.rb +8 -8
  79. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallHotel.rb +8 -8
  80. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOffice.rb +8 -8
  81. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +11 -11
  82. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb +10 -10
  83. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperTallBuilding.rb +19 -19
  84. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.TallBuilding.rb +18 -18
  85. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Warehouse.rb +6 -6
  86. data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +957 -957
  87. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +1 -1
  88. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +1 -1
  89. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +84 -16
  90. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +1 -1
  91. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +1 -1
  92. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +61 -10
  93. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +1 -1
  94. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoolingTower.rb +1 -1
  95. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +1 -1
  96. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -1
  97. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -1
  98. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +1 -1
  99. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +1 -1
  100. data/lib/openstudio-standards/prototypes/common/objects/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +2 -2
  101. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.exterior_lights.rb +4 -4
  102. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +4 -4
  103. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +43 -30
  104. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +1 -1
  105. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +18 -11
  106. data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
  107. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +774 -117
  108. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +340 -481
  109. data/lib/openstudio-standards/prototypes/common/objects/Prototype.refrigeration.rb +3 -3
  110. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +3 -3
  111. data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +22 -22
  112. data/lib/openstudio-standards/prototypes/deer/deer.Model.rb +1 -1
  113. data/lib/openstudio-standards/qaqc/calibration.rb +131 -0
  114. data/lib/openstudio-standards/qaqc/create_results.rb +983 -0
  115. data/lib/openstudio-standards/qaqc/envelope.rb +399 -0
  116. data/lib/openstudio-standards/qaqc/eui.rb +213 -0
  117. data/lib/openstudio-standards/qaqc/hvac.rb +1943 -0
  118. data/lib/openstudio-standards/qaqc/internal_loads.rb +568 -0
  119. data/lib/openstudio-standards/qaqc/reporting.rb +141 -0
  120. data/lib/openstudio-standards/qaqc/schedules.rb +129 -0
  121. data/lib/openstudio-standards/qaqc/service_water_heating.rb +273 -0
  122. data/lib/openstudio-standards/qaqc/weather_files.rb +497 -0
  123. data/lib/openstudio-standards/qaqc/zone_conditions.rb +278 -0
  124. data/lib/openstudio-standards/schedules/create.rb +364 -0
  125. data/lib/openstudio-standards/schedules/information.rb +169 -0
  126. data/lib/openstudio-standards/schedules/modify.rb +445 -0
  127. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +110 -71
  128. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +3 -3
  129. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +4 -4
  130. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +2 -1
  131. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +16 -10
  132. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +4 -4
  133. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +1 -1
  134. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  135. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +4 -4
  136. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +1 -1
  137. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +5 -5
  138. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +1 -1
  139. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +1 -1
  140. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
  141. data/lib/openstudio-standards/standards/Standards.Construction.rb +17 -18
  142. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +6 -6
  143. data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +1 -1
  144. data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +1 -1
  145. data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +1 -1
  146. data/lib/openstudio-standards/standards/Standards.Fan.rb +6 -12
  147. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +2 -2
  148. data/lib/openstudio-standards/standards/Standards.FluidCooler.rb +1 -1
  149. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +1 -1
  150. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +3 -3
  151. data/lib/openstudio-standards/standards/Standards.Model.rb +411 -261
  152. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +2 -2
  153. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +94 -29
  154. data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -2
  155. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +2 -2
  156. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +14 -14
  157. data/lib/openstudio-standards/standards/Standards.Space.rb +37 -30
  158. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +38 -29
  159. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +7 -7
  160. data/lib/openstudio-standards/standards/Standards.Surface.rb +13 -13
  161. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +109 -66
  162. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +11 -4
  163. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +6 -6
  164. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.AirLoopHVAC.rb +1 -1
  165. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +1 -1
  166. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Space.rb +1 -1
  167. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.Space.rb +1 -1
  168. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirLoopHVAC.rb +4 -4
  169. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  170. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.Space.rb +4 -4
  171. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirLoopHVAC.rb +4 -4
  172. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  173. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.CoolingTowerVariableSpeed.rb +1 -1
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Model.rb +5 -21
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.Space.rb +4 -4
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.WaterHeaterMixed.rb +1 -1
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.ZoneHVACComponent.rb +1 -1
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirLoopHVAC.rb +36 -4
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  180. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.CoolingTowerVariableSpeed.rb +1 -1
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Space.rb +4 -4
  182. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.ZoneHVACComponent.rb +1 -1
  183. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/comstock_ashrae_90_1_2016.AirLoopHVAC.rb +26 -0
  184. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +53 -10
  185. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  186. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoolingTowerVariableSpeed.rb +1 -1
  187. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Space.rb +6 -6
  188. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.ZoneHVACComponent.rb +2 -2
  189. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/comstock_ashrae_90_1_2019.AirLoopHVAC.rb +26 -0
  190. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +211 -211
  191. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.economizers.json +14 -14
  192. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.AirLoopHVAC.rb +4 -4
  193. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.Model.rb +1 -1
  194. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/doe_ref_1980_2004.PlantLoop.rb +1 -1
  195. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.economizers.json +14 -14
  196. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.AirLoopHVAC.rb +4 -4
  197. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.Model.rb +1 -1
  198. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/doe_ref_pre_1980.PlantLoop.rb +1 -1
  199. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +6 -6
  200. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  201. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.CoolingTowerVariableSpeed.rb +1 -1
  202. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +1 -1
  203. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.Space.rb +4 -4
  204. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirLoopHVAC.rb +6 -6
  205. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  206. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.CoolingTowerVariableSpeed.rb +1 -1
  207. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +1 -1
  208. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.Space.rb +4 -4
  209. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +22 -28
  210. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
  211. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +2 -2
  212. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +1 -74
  213. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +7 -59
  214. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +1 -1
  215. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +1 -1
  216. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +1 -1
  217. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +1 -1
  218. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +1 -21
  219. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.DesignSpecificationOutdoorAir.rb +101 -0
  220. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +1 -1
  221. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +1 -1
  222. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +1 -1
  223. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +1 -1
  224. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +643 -526
  225. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +8 -2
  226. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +17 -77
  227. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +74 -16
  228. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +96 -44
  229. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +6 -6
  230. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +18 -6
  231. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +1 -1
  232. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +328 -74
  233. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +0 -118
  234. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +2 -1
  235. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_rejection.json +1 -1
  236. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_outdoor_air.md +35 -0
  237. data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +1 -1
  238. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +228 -0
  239. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +131 -0
  240. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -1
  241. data/lib/openstudio-standards/standards/cbes/cbes.AirLoopHVAC.rb +5 -5
  242. data/lib/openstudio-standards/standards/cbes/cbes.Model.rb +1 -1
  243. data/lib/openstudio-standards/standards/cbes/cbes.PlantLoop.rb +1 -1
  244. data/lib/openstudio-standards/standards/cbes/cbes.Space.rb +1 -1
  245. data/lib/openstudio-standards/standards/cbes/cbes_t24_2005/cbes_t24_2005.Space.rb +1 -1
  246. data/lib/openstudio-standards/standards/cbes/cbes_t24_2008/cbes_t24_2008.Space.rb +1 -1
  247. data/lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb +109 -27
  248. data/lib/openstudio-standards/standards/deer/deer.Space.rb +1 -1
  249. data/lib/openstudio-standards/standards/deer/deer_1985/data/deer_1985.economizers.json +246 -4
  250. data/lib/openstudio-standards/standards/deer/deer_1996/data/deer_1996.economizers.json +246 -4
  251. data/lib/openstudio-standards/standards/deer/deer_2003/data/deer_2003.economizers.json +246 -4
  252. data/lib/openstudio-standards/standards/deer/deer_2003/deer_2003.ThermalZone.rb +18 -18
  253. data/lib/openstudio-standards/standards/deer/deer_2007/data/deer_2007.economizers.json +246 -4
  254. data/lib/openstudio-standards/standards/deer/deer_2007/deer_2007.ThermalZone.rb +18 -18
  255. data/lib/openstudio-standards/standards/deer/deer_2011/data/deer_2011.economizers.json +246 -4
  256. data/lib/openstudio-standards/standards/deer/deer_2011/deer_2011.ThermalZone.rb +18 -18
  257. data/lib/openstudio-standards/standards/deer/deer_2014/data/deer_2014.economizers.json +248 -6
  258. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.Space.rb +3 -3
  259. data/lib/openstudio-standards/standards/deer/deer_2014/deer_2014.ThermalZone.rb +18 -18
  260. data/lib/openstudio-standards/standards/deer/deer_2015/data/deer_2015.economizers.json +248 -6
  261. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.Space.rb +3 -3
  262. data/lib/openstudio-standards/standards/deer/deer_2015/deer_2015.ThermalZone.rb +18 -18
  263. data/lib/openstudio-standards/standards/deer/deer_2017/data/deer_2017.economizers.json +248 -6
  264. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.Space.rb +3 -3
  265. data/lib/openstudio-standards/standards/deer/deer_2017/deer_2017.ThermalZone.rb +18 -18
  266. data/lib/openstudio-standards/standards/deer/deer_2020/data/deer_2020.economizers.json +248 -6
  267. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.AirLoopHVAC.rb +18 -5
  268. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.FanVariableVolume.rb +1 -1
  269. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.Space.rb +3 -3
  270. data/lib/openstudio-standards/standards/deer/deer_2020/deer_2020.ThermalZone.rb +18 -18
  271. data/lib/openstudio-standards/standards/deer/deer_2025/data/deer_2025.economizers.json +248 -6
  272. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.AirLoopHVAC.rb +3 -3
  273. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.FanVariableVolume.rb +1 -1
  274. data/lib/openstudio-standards/standards/deer/deer_2025/deer_2025.Space.rb +3 -3
  275. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.economizers.json +248 -6
  276. data/lib/openstudio-standards/standards/deer/deer_2030/data/deer_2030.heat_pumps.json +2 -2
  277. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.AirLoopHVAC.rb +3 -3
  278. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.FanVariableVolume.rb +1 -1
  279. data/lib/openstudio-standards/standards/deer/deer_2030/deer_2030.Space.rb +3 -3
  280. data/lib/openstudio-standards/standards/deer/deer_2035/data/deer_2035.economizers.json +248 -6
  281. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.AirLoopHVAC.rb +3 -3
  282. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.FanVariableVolume.rb +1 -1
  283. data/lib/openstudio-standards/standards/deer/deer_2035/deer_2035.Space.rb +3 -3
  284. data/lib/openstudio-standards/standards/deer/deer_2040/data/deer_2040.economizers.json +248 -6
  285. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.AirLoopHVAC.rb +3 -3
  286. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.FanVariableVolume.rb +1 -1
  287. data/lib/openstudio-standards/standards/deer/deer_2040/deer_2040.Space.rb +3 -3
  288. data/lib/openstudio-standards/standards/deer/deer_2045/data/deer_2045.economizers.json +260 -0
  289. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.AirLoopHVAC.rb +3 -3
  290. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.FanVariableVolume.rb +1 -1
  291. data/lib/openstudio-standards/standards/deer/deer_2045/deer_2045.Space.rb +3 -3
  292. data/lib/openstudio-standards/standards/deer/deer_2050/data/deer_2050.economizers.json +248 -6
  293. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.AirLoopHVAC.rb +3 -3
  294. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.FanVariableVolume.rb +1 -1
  295. data/lib/openstudio-standards/standards/deer/deer_2050/deer_2050.Space.rb +3 -3
  296. data/lib/openstudio-standards/standards/deer/deer_2055/data/deer_2055.economizers.json +248 -6
  297. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.AirLoopHVAC.rb +3 -3
  298. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.FanVariableVolume.rb +1 -1
  299. data/lib/openstudio-standards/standards/deer/deer_2055/deer_2055.Space.rb +3 -3
  300. data/lib/openstudio-standards/standards/deer/deer_2060/data/deer_2060.economizers.json +248 -6
  301. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.AirLoopHVAC.rb +3 -3
  302. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.FanVariableVolume.rb +1 -1
  303. data/lib/openstudio-standards/standards/deer/deer_2060/deer_2060.Space.rb +3 -3
  304. data/lib/openstudio-standards/standards/deer/deer_2065/data/deer_2065.economizers.json +248 -6
  305. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.AirLoopHVAC.rb +3 -3
  306. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.FanVariableVolume.rb +1 -1
  307. data/lib/openstudio-standards/standards/deer/deer_2065/deer_2065.Space.rb +3 -3
  308. data/lib/openstudio-standards/standards/deer/deer_2070/data/deer_2070.economizers.json +248 -6
  309. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.AirLoopHVAC.rb +3 -3
  310. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.FanVariableVolume.rb +1 -1
  311. data/lib/openstudio-standards/standards/deer/deer_2070/deer_2070.Space.rb +3 -3
  312. data/lib/openstudio-standards/standards/deer/deer_2075/data/deer_2075.economizers.json +248 -6
  313. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.AirLoopHVAC.rb +3 -3
  314. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.FanVariableVolume.rb +1 -1
  315. data/lib/openstudio-standards/standards/deer/deer_2075/deer_2075.Space.rb +3 -3
  316. data/lib/openstudio-standards/standards/deer/deer_pre_1975/data/deer_pre_1975.economizers.json +246 -4
  317. data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/space_types.json +447 -223
  318. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +1 -1
  319. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/space_types.json +447 -223
  320. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +5 -2
  321. data/lib/openstudio-standards/standards/necb/ECMS/data/chiller_types.json +25 -0
  322. data/lib/openstudio-standards/standards/necb/ECMS/data/chillers.json +44 -0
  323. data/lib/openstudio-standards/standards/necb/ECMS/data/curves.json +225 -0
  324. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +2 -2
  325. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +193 -73
  326. data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +1 -1
  327. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +10 -4
  328. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +7 -7
  329. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +4 -5
  330. data/lib/openstudio-standards/standards/necb/NECB2011/data/chiller_types.json +32 -0
  331. data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +1 -1
  332. data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +36 -0
  333. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +7 -7
  334. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +47587 -0
  335. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +49764 -0
  336. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Warehouse.osm +283 -297
  337. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_type_unit_definitions.txt +2 -1
  338. data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +447 -223
  339. data/lib/openstudio-standards/standards/necb/NECB2011/data/standards_data.rb +3 -3
  340. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +1 -1
  341. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +49 -27
  342. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +400 -202
  343. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +4 -4
  344. data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +637 -318
  345. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +18 -1
  346. data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +3 -3
  347. data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +637 -318
  348. data/lib/openstudio-standards/standards/necb/NECB2017/hvac_systems.rb +1 -1
  349. data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +3 -3
  350. data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +1 -1
  351. data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +615 -307
  352. data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +4 -4
  353. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +10 -5
  354. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +1 -1
  355. data/lib/openstudio-standards/utilities/assertion.rb +128 -0
  356. data/lib/openstudio-standards/utilities/logging.rb +2 -3
  357. data/lib/openstudio-standards/utilities/object_info.rb +39 -18
  358. data/lib/openstudio-standards/utilities/schedule_translator.rb +8 -6
  359. data/lib/openstudio-standards/utilities/simulation.rb +24 -11
  360. data/lib/openstudio-standards/utilities/sqlfile.rb +10 -5
  361. data/lib/openstudio-standards/version.rb +1 -1
  362. data/lib/openstudio-standards/weather/Weather.Model.rb +8 -9
  363. data/lib/openstudio-standards/weather/Weather.stat_file.rb +3 -3
  364. data/lib/openstudio-standards/weather/information.rb +35 -0
  365. data/lib/openstudio-standards.rb +69 -5
  366. metadata +52 -16
  367. data/data/standards/OpenStudio_Standards-deer-ALL-comstock(space_types).xlsx +0 -0
  368. data/lib/openstudio-standards/hvac_sizing/Siz.AirLoopHVAC.rb +0 -59
  369. data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingWater.rb +0 -13
  370. data/lib/openstudio-standards/hvac_sizing/Siz.HVACComponent.rb +0 -36
  371. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +0 -898
  372. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +0 -126
  373. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +0 -356
  374. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.Model.rb +0 -35
  375. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +0 -110
  376. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +0 -5
@@ -63,7 +63,7 @@
63
63
  #
64
64
  # #This method will scale people loads.
65
65
  # #@author phylroy.lopez@nrcan.gc.ca
66
- # #@param model [OpenStudio::model::Model] A model object
66
+ # #@param model [OpenStudio::Model::Model] A model object
67
67
  # #@param factor [Float]
68
68
  # def self.scale_people_loads( model, factor )
69
69
  # model.getPeoples.sort.each do |item|
@@ -73,7 +73,7 @@
73
73
  #
74
74
  # #This method will scale people loads schedule.
75
75
  # #@author phylroy.lopez@nrcan.gc.ca
76
- # #@param model [OpenStudio::model::Model] A model object
76
+ # #@param model [OpenStudio::Model::Model] A model object
77
77
  # #@param a_coef [Float]
78
78
  # #@param b_coef [Float]
79
79
  # #@param c_coef [Float]
@@ -88,7 +88,7 @@
88
88
  #
89
89
  # #This method will scale lighting loads.
90
90
  # #@author phylroy.lopez@nrcan.gc.ca
91
- # #@param model [OpenStudio::model::Model] A model object
91
+ # #@param model [OpenStudio::Model::Model] A model object
92
92
  # #@param factor [Float]
93
93
  # def self.scale_lighting_loads( model, factor )
94
94
  # model.getLightss.sort.each do |item|
@@ -98,7 +98,7 @@
98
98
  #
99
99
  # #This method will scale lighting loads schedule.
100
100
  # #@author phylroy.lopez@nrcan.gc.ca
101
- # #@param model [OpenStudio::model::Model] A model object
101
+ # #@param model [OpenStudio::Model::Model] A model object
102
102
  # #@param a_coef [Float]
103
103
  # #@param b_coef [Float]
104
104
  # #@param c_coef [Float]
@@ -113,7 +113,7 @@
113
113
  #
114
114
  # #This method will scale electrical loads.
115
115
  # #@author phylroy.lopez@nrcan.gc.ca
116
- # #@param model [OpenStudio::model::Model] A model object
116
+ # #@param model [OpenStudio::Model::Model] A model object
117
117
  # #@param factor [Float]
118
118
  # def self.scale_electrical_loads( model, factor )
119
119
  # model.getElectricEquipments.sort.each do |item|
@@ -123,7 +123,7 @@
123
123
  #
124
124
  # #This method will scale electrical loads schedule.
125
125
  # #@author phylroy.lopez@nrcan.gc.ca
126
- # #@param model [OpenStudio::model::Model] A model object
126
+ # #@param model [OpenStudio::Model::Model] A model object
127
127
  # #@param a_coef [Float]
128
128
  # #@param b_coef [Float]
129
129
  # #@param c_coef [Float]
@@ -137,7 +137,7 @@
137
137
  #
138
138
  # #This method will scale hotwater loads.
139
139
  # #@author phylroy.lopez@nrcan.gc.ca
140
- # #@param model [OpenStudio::model::Model] A model object
140
+ # #@param model [OpenStudio::Model::Model] A model object
141
141
  # #@param factor [Float]
142
142
  # def self.scale_hot_water_loads( model, factor )
143
143
  # model.getHotWaterEquipments.sort.each do |item|
@@ -147,7 +147,7 @@
147
147
  #
148
148
  # #This method will scale Outdoor Air loads.
149
149
  # #@author phylroy.lopez@nrcan.gc.ca
150
- # #@param model [OpenStudio::model::Model] A model object
150
+ # #@param model [OpenStudio::Model::Model] A model object
151
151
  # #@param factor [Float]
152
152
  # def self.scale_oa_loads( model, factor )
153
153
  # model.getDesignSpecificationOutdoorAirs.sort.each do |oa_def|
@@ -160,7 +160,7 @@
160
160
  #
161
161
  # #This method will scale infiltration loads.
162
162
  # #@author phylroy.lopez@nrcan.gc.ca
163
- # #@param model [OpenStudio::model::Model] A model object
163
+ # #@param model [OpenStudio::Model::Model] A model object
164
164
  # #@param factor [Float]
165
165
  # def self.scale_inflitration_loads( model, factor )
166
166
  # model.getSpaceInfiltrationDesignFlowRates.sort.each do |infiltration_load|
@@ -173,7 +173,7 @@
173
173
  #
174
174
  # #This method will set the infiltration magnitude.
175
175
  # #@author phylroy.lopez@nrcan.gc.ca
176
- # #@param model [OpenStudio::model::Model] A model object
176
+ # #@param model [OpenStudio::Model::Model] A model object
177
177
  # #@param setDesignFlowRate [Float]
178
178
  # #@param setFlowperSpaceFloorArea [Float]
179
179
  # #@param setFlowperExteriorSurfaceArea [Float]
@@ -202,7 +202,7 @@
202
202
  #
203
203
  # #This method removes people loads from the model.
204
204
  # #@author phylroy.lopez@nrcan.gc.ca
205
- # #@param model [OpenStudio::model::Model] A model object
205
+ # #@param model [OpenStudio::Model::Model] A model object
206
206
  # def self.remove_all_people_loads(model)
207
207
  # model.getPeoples.sort.each {|people| people.remove}
208
208
  # model.getPeopleDefinitions.sort.each {|people| people.remove}
@@ -211,7 +211,7 @@
211
211
  #
212
212
  # #This method created people loads from the model.
213
213
  # #@author phylroy.lopez@nrcan.gc.ca
214
- # #@param model [OpenStudio::model::Model] A model object
214
+ # #@param model [OpenStudio::Model::Model] A model object
215
215
  # #@param people_name [String]
216
216
  # #@param floor_area_per_person [Float]
217
217
  # #@param multiplier [Float]
@@ -239,7 +239,7 @@
239
239
  #
240
240
  # #This method removes light loads from model.
241
241
  # #@author phylroy.lopez@nrcan.gc.ca
242
- # #@param model [OpenStudio::model::Model] A model object
242
+ # #@param model [OpenStudio::Model::Model] A model object
243
243
  # def self.remove_all_light_loads(model)
244
244
  # model.getLightss.sort.each {|item| item.remove}
245
245
  # model.getLightsDefinitions.sort.each {|item| item.remove}
@@ -247,7 +247,7 @@
247
247
  #
248
248
  # #This method created people loads from the model.
249
249
  # #@author phylroy.lopez@nrcan.gc.ca
250
- # #@param model [OpenStudio::model::Model] A model object
250
+ # #@param model [OpenStudio::Model::Model] A model object
251
251
  # #@param light_name [String]
252
252
  # #@param light_watts_per_floor_area [Float]
253
253
  # #@param multiplier [Float]
@@ -268,7 +268,7 @@
268
268
  #
269
269
  # #This method removes elec loads from model.
270
270
  # #@author phylroy.lopez@nrcan.gc.ca
271
- # #@param model [OpenStudio::model::Model] A model object
271
+ # #@param model [OpenStudio::Model::Model] A model object
272
272
  # def self.remove_all_electric_loads(model)
273
273
  # model.getElectricEquipments.sort.each {|item| item.remove}
274
274
  # model.getElectricEquipmentDefinitions.sort.each {|item| item.remove}
@@ -277,7 +277,7 @@
277
277
  #
278
278
  # #This method created people loads from the model.
279
279
  # #@author phylroy.lopez@nrcan.gc.ca
280
- # #@param model [OpenStudio::model::Model] A model object
280
+ # #@param model [OpenStudio::Model::Model] A model object
281
281
  # #@param elec_name [String]
282
282
  # #@param elec_watts_per_floor_area [Float]
283
283
  # #@param multiplier [Float]
@@ -297,7 +297,7 @@
297
297
  #
298
298
  # #This method removes hot water loads from model.
299
299
  # #@author phylroy.lopez@nrcan.gc.ca
300
- # #@param model [OpenStudio::model::Model] A model object
300
+ # #@param model [OpenStudio::Model::Model] A model object
301
301
  # def self.remove_all_hot_water_loads(model)
302
302
  # model.getHotWaterEquipments.sort.each {|item| item.remove}
303
303
  # model.getHotWaterEquipmentDefinitions.sort.each {|item| item.remove}
@@ -305,7 +305,7 @@
305
305
  #
306
306
  # #This method creats hot water load.
307
307
  # #@author phylroy.lopez@nrcan.gc.ca
308
- # #@param model [OpenStudio::model::Model] A model object
308
+ # #@param model [OpenStudio::Model::Model] A model object
309
309
  # #@param hot_water_name [String]
310
310
  # #@param hot_water_watts_per_floor_area [Float]
311
311
  # #@param multiplier [Float]
@@ -326,7 +326,7 @@
326
326
  #
327
327
  # #This method removes all design specification OA from model.
328
328
  # #@author phylroy.lopez@nrcan.gc.ca
329
- # #@param model [OpenStudio::model::Model] A model object
329
+ # #@param model [OpenStudio::Model::Model] A model object
330
330
  # def self.remove_all_DesignSpecificationOutdoorAir(model)
331
331
  # model.getDesignSpecificationOutdoorAirs.sort.each { |item| item.remove }
332
332
  # end
@@ -334,7 +334,7 @@
334
334
  #
335
335
  # #This method removes all space infiltration design flow rate OA from model.
336
336
  # #@author phylroy.lopez@nrcan.gc.ca
337
- # #@param model [OpenStudio::model::Model] A model object
337
+ # #@param model [OpenStudio::Model::Model] A model object
338
338
  # def self.remove_all_SpaceInfiltrationDesignFlowRate(model)
339
339
  # OpenStudio::Model::SpaceInfiltrationDesignFlowRate
340
340
  # model.getSpaceInfiltrationDesignFlowRates.sort.each { |item| item.remove }
@@ -342,7 +342,7 @@
342
342
  #
343
343
  # #This method creats hot water load.
344
344
  # #@author phylroy.lopez@nrcan.gc.ca
345
- # #@param model [OpenStudio::model::Model] A model object
345
+ # #@param model [OpenStudio::Model::Model] A model object
346
346
  # #@param oa_name [String]
347
347
  # #@param oa_person [Fixnum]
348
348
  # #@param oa_area [Fixnum]
@@ -350,7 +350,7 @@
350
350
  # #@param oa_flowrate [Fixnum]
351
351
  # #@param method [String]
352
352
  # #@param schedule [Float]
353
- # #@return [OpenStudio::model::Model] oa_def
353
+ # #@return [OpenStudio::Model::Model] oa_def
354
354
  # def self.create_oa_load(model,oa_name,oa_person = 0 ,oa_area = 0, oa_ach = 0, oa_flowrate = 0, method = "Maximum",schedule = nil)
355
355
  # raise("DesignSpecificationOutdoorAir #{name} already exists. Please use a different name") unless model.getDesignSpecificationOutdoorAirByName( oa_name ).empty?
356
356
  # #units are in m3/s for flow and m2 for area.
@@ -373,7 +373,7 @@
373
373
  #
374
374
  # #This method removes infiltration from model..
375
375
  # #@author phylroy.lopez@nrcan.gc.ca
376
- # #@param model [OpenStudio::model::Model] A model object
376
+ # #@param model [OpenStudio::Model::Model] A model object
377
377
  # def self.remove_all_SpaceInfiltrationDesignFlowRates(model)
378
378
  # model.getSpaceInfiltrationDesignFlowRates.sort.each { |item| item.remove }
379
379
  # end
@@ -381,7 +381,7 @@
381
381
  # #This method creates infiltration load.
382
382
  # #NECB infiltration rate is 0.25L/s/m2 or 0.00025 m3/s/m2
383
383
  # #@author phylroy.lopez@nrcan.gc.ca
384
- # #@param model [OpenStudio::model::Model] A model object
384
+ # #@param model [OpenStudio::Model::Model] A model object
385
385
  # #@return [String] infiltration_load
386
386
  # def self.create_infiltration_load(model,
387
387
  # infil_name,
@@ -419,7 +419,7 @@
419
419
  #
420
420
  # #This method removes all loads from model.
421
421
  # #@author phylroy.lopez@nrcan.gc.ca
422
- # #@param model [OpenStudio::model::Model] A model object
422
+ # #@param model [OpenStudio::Model::Model] A model object
423
423
  # def self.remove_all_casual_loads(model)
424
424
  # self.remove_all_people_loads(model)
425
425
  # self.remove_all_light_loads(model)
@@ -429,7 +429,7 @@
429
429
  #
430
430
  # #This method removes all space loads from model.
431
431
  # #@author phylroy.lopez@nrcan.gc.ca
432
- # #@param model [OpenStudio::model::Model] A model object
432
+ # #@param model [OpenStudio::Model::Model] A model object
433
433
  # def self.remove_all_SpaceLoads(model)
434
434
  # model.getSpaceLoads.sort.each { |item| item.remove }
435
435
  # model.getSpaceLoadDefinitions.sort.each { |item| item.remove }
@@ -49,9 +49,9 @@
49
49
  # #argument model(s). This is handy for quickly viewing changes to the file during
50
50
  # #runtime for debugging and QA.
51
51
  # #@author phylroy.lopez@nrcan.gc.ca
52
- # #@param model1 [OpenStudio::model::Model] A model object.
53
- # #@param model2 [OpenStudio::model::Model] A model object.
54
- # #@param model3 [OpenStudio::model::Model] A model object.
52
+ # #@param model1 [OpenStudio::Model::Model] A model object.
53
+ # #@param model2 [OpenStudio::Model::Model] A model object.
54
+ # #@param model3 [OpenStudio::Model::Model] A model object.
55
55
  # def self.kdiff3_model_osm(model1, model2, model3 = "")
56
56
  # Dir::mkdir("C:\\kdiff_test") unless File.exists?("C:\\kdiff_test")
57
57
  # model1.save(OpenStudio::Path.new("c:\\kdiff_test\\diffA.osm"))
@@ -71,9 +71,9 @@
71
71
  # #argument model(s). This is handy for quickly viewing changes to the file during
72
72
  # #runtime for debugging and QA.
73
73
  # #@author phylroy.lopez@nrcan.gc.ca
74
- # #@param model1 [OpenStudio::model::Model] A model object.
75
- # #@param model2 [OpenStudio::model::Model] A model object.
76
- # #@param model3 [OpenStudio::model::Model] A model object.
74
+ # #@param model1 [OpenStudio::Model::Model] A model object.
75
+ # #@param model2 [OpenStudio::Model::Model] A model object.
76
+ # #@param model3 [OpenStudio::Model::Model] A model object.
77
77
  # def self.kdiff3_model_idf(model1, model2, model3 = "")
78
78
  # Dir::mkdir("C:\\kdiff_test") unless File.exists?("C:\\kdiff_test")
79
79
  #
@@ -24,7 +24,7 @@ class Vintagizer
24
24
 
25
25
  #This method loads Vintage database information.
26
26
  #@author phylroy.lopez@nrcan.gc.ca
27
- #@param model [OpenStudio::model::Model] A model object
27
+ #@param model [OpenStudio::Model::Model] A model object
28
28
  #@param file [String]
29
29
  #@param selectionHash [???]
30
30
  def initialize(model,file,selectionHash)
@@ -0,0 +1,83 @@
1
+ # Methods to create typical models
2
+ module OpenstudioStandards
3
+ module Constructions
4
+ # @!group Information
5
+
6
+ # Returns the solar reflectance index of an exposed surface.
7
+ # On a scale of 0 to 100, standard black is 0, and standard white is 100.
8
+ # The calculation derived from ASTM E1980 assuming medium wind speed.
9
+ #
10
+ # @param construction [OpenStudio::Model::Construction] OpenStudio Construction object
11
+ # @return [Double] The solar reflectance value
12
+ def self.construction_get_solar_reflectance_index(construction)
13
+ exposed_material = construction.to_LayeredConstruction.get.getLayer(0)
14
+ solar_absorptance = exposed_material.to_OpaqueMaterial.get.solarAbsorptance
15
+ thermal_emissivity = exposed_material.to_OpaqueMaterial.get.thermalAbsorptance
16
+ x = (20.797 * solar_absorptance - 0.603 * thermal_emissivity) / (9.5205 * thermal_emissivity + 12.0)
17
+ sri = 123.97 - 141.35 * x + 9.6555 * x * x
18
+
19
+ return sri
20
+ end
21
+
22
+ # report names of constructions in a construction set
23
+ #
24
+ # @param default_construction_set [OpenStudio::Model::Defaultdefault_construction_set] OpenStudio Defaultdefault_construction_set object
25
+ # @return [Array<OpenStudio::Model::Construction>] Array of OpenStudio Construction objects
26
+ def self.construction_set_get_constructions(default_construction_set)
27
+ construction_array = []
28
+
29
+ # populate exterior surfaces
30
+ if default_construction_set.defaultExteriorSurfaceConstructions.is_initialized
31
+ default_surface_constructions = default_construction_set.defaultExteriorSurfaceConstructions.get
32
+ construction_array << default_surface_constructions.floorConstruction.get if default_surface_constructions.floorConstruction.is_initialized
33
+ construction_array << default_surface_constructions.wallConstruction.get if default_surface_constructions.wallConstruction.is_initialized
34
+ construction_array << default_surface_constructions.roofCeilingConstruction.get if default_surface_constructions.roofCeilingConstruction.is_initialized
35
+ end
36
+ # populate interior surfaces
37
+ if default_construction_set.defaultInteriorSurfaceConstructions.is_initialized
38
+ default_surface_constructions = default_construction_set.defaultInteriorSurfaceConstructions.get
39
+ construction_array << default_surface_constructions.floorConstruction.get if default_surface_constructions.floorConstruction.is_initialized
40
+ construction_array << default_surface_constructions.wallConstruction.get if default_surface_constructions.wallConstruction.is_initialized
41
+ construction_array << default_surface_constructions.roofCeilingConstruction.get if default_surface_constructions.roofCeilingConstruction.is_initialized
42
+ end
43
+ # populate ground surfaces
44
+ if default_construction_set.defaultGroundContactSurfaceConstructions.is_initialized
45
+ default_surface_constructions = default_construction_set.defaultGroundContactSurfaceConstructions.get
46
+ construction_array << default_surface_constructions.floorConstruction.get if default_surface_constructions.floorConstruction.is_initialized
47
+ construction_array << default_surface_constructions.wallConstruction.get if default_surface_constructions.wallConstruction.is_initialized
48
+ construction_array << default_surface_constructions.roofCeilingConstruction.get if default_surface_constructions.roofCeilingConstruction.is_initialized
49
+ end
50
+ # populate exterior sub-surfaces
51
+ if default_construction_set.defaultExteriorSubSurfaceConstructions.is_initialized
52
+ default_subsurface_constructions = default_construction_set.defaultExteriorSubSurfaceConstructions.get
53
+ construction_array << default_subsurface_constructions.fixedWindowConstruction.get if default_subsurface_constructions.fixedWindowConstruction.is_initialized
54
+ construction_array << default_subsurface_constructions.operableWindowConstruction.get if default_subsurface_constructions.operableWindowConstruction.is_initialized
55
+ construction_array << default_subsurface_constructions.doorConstruction.get if default_subsurface_constructions.doorConstruction.is_initialized
56
+ construction_array << default_subsurface_constructions.glassDoorConstruction.get if default_subsurface_constructions.glassDoorConstruction.is_initialized
57
+ construction_array << default_subsurface_constructions.overheadDoorConstruction.get if default_subsurface_constructions.overheadDoorConstruction.is_initialized
58
+ construction_array << default_subsurface_constructions.skylightConstruction.get if default_subsurface_constructions.skylightConstruction.is_initialized
59
+ construction_array << default_subsurface_constructions.tubularDaylightDomeConstruction.get if default_subsurface_constructions.tubularDaylightDomeConstruction.is_initialized
60
+ construction_array << default_subsurface_constructions.tubularDaylightDiffuserConstruction.get if default_subsurface_constructions.tubularDaylightDiffuserConstruction.is_initialized
61
+ end
62
+ # populate interior sub-surfaces
63
+ if default_construction_set.defaultInteriorSubSurfaceConstructions.is_initialized
64
+ default_subsurface_constructions = default_construction_set.defaultInteriorSubSurfaceConstructions.get
65
+ construction_array << default_subsurface_constructions.fixedWindowConstruction.get if default_subsurface_constructions.fixedWindowConstruction.is_initialized
66
+ construction_array << default_subsurface_constructions.operableWindowConstruction.get if default_subsurface_constructions.operableWindowConstruction.is_initialized
67
+ construction_array << default_subsurface_constructions.doorConstruction.get if default_subsurface_constructions.doorConstruction.is_initialized
68
+ construction_array << default_subsurface_constructions.glassDoorConstruction.get if default_subsurface_constructions.glassDoorConstruction.is_initialized
69
+ construction_array << default_subsurface_constructions.overheadDoorConstruction.get if default_subsurface_constructions.overheadDoorConstruction.is_initialized
70
+ construction_array << default_subsurface_constructions.skylightConstruction.get if default_subsurface_constructions.skylightConstruction.is_initialized
71
+ construction_array << default_subsurface_constructions.tubularDaylightDomeConstruction.get if default_subsurface_constructions.tubularDaylightDomeConstruction.is_initialized
72
+ construction_array << default_subsurface_constructions.tubularDaylightDiffuserConstruction.get if default_subsurface_constructions.tubularDaylightDiffuserConstruction.is_initialized
73
+ end
74
+ # populate misc surfaces
75
+ construction_array << default_construction_set.interiorPartitionConstruction.get if default_construction_set.interiorPartitionConstruction.is_initialized
76
+ construction_array << default_construction_set.spaceShadingConstruction.get if default_construction_set.spaceShadingConstruction.is_initialized
77
+ construction_array << default_construction_set.buildingShadingConstruction.get if default_construction_set.buildingShadingConstruction.is_initialized
78
+ construction_array << default_construction_set.siteShadingConstruction.get if default_construction_set.siteShadingConstruction.is_initialized
79
+
80
+ return construction_array
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,72 @@
1
+ # Methods to modify material properties
2
+ module OpenstudioStandards
3
+ module Constructions
4
+ module Materials
5
+ # @!group Modify
6
+
7
+ # change thermal resistance of opaque materials by increasing material thickness,
8
+ # or setting thermal resistance directly for massless or airgap materials.
9
+ #
10
+ # @param opaque_material [OpenStudio::Model::OpaqueMaterial] OpenStudio OpaqueMaterial object
11
+ # @param thermal_resistance [Double] Target thermal resistance of the material in m^2*K/W
12
+ # @return [OpenStudio::Model::OpaqueMaterial] OpenStudio OpaqueMaterial object
13
+ def self.opaque_material_set_thermal_resistance(opaque_material, thermal_resistance)
14
+ unless opaque_material.to_OpaqueMaterial.is_initialized
15
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.constructions.materials', "Object #{opaque_material} cannot be cast as an OpaqueMaterial object.")
16
+ return false
17
+ end
18
+
19
+ # edit insulation material
20
+ material = opaque_material.to_OpaqueMaterial.get
21
+ if material.to_MasslessOpaqueMaterial.is_initialized
22
+ material = material.to_MasslessOpaqueMaterial.get
23
+ material.setThermalResistance(thermal_resistance)
24
+ elsif material.to_AirGap.is_initialized
25
+ material = material.to_AirGap.get
26
+ material.setThermalResistance(thermal_resistance)
27
+ else
28
+ starting_thickness = material.thickness
29
+ target_thickness = starting_thickness * thermal_resistance / material.thermalResistance
30
+ material.setThickness(target_thickness)
31
+ end
32
+
33
+ return material.to_OpaqueMaterial.get
34
+ end
35
+
36
+ # set material surface properties
37
+ #
38
+ # @param opaque_material [OpenStudio::Model::OpaqueMaterial] OpenStudio OpaqueMaterial object
39
+ # @param roughness [String] surface roughness. Options are 'VeryRough', 'Rough', 'MediumRough',
40
+ # 'MediumSmooth', 'Smooth', and 'VerySmooth'
41
+ # @param thermal_absorptance [Double] target thermal absorptance
42
+ # @param solar_absorptance [Double] target solar absorptance
43
+ # @param visible_absorptance [Double] target visible absorptance
44
+ # @return [OpenStudio::Model::OpaqueMaterial] OpenStudio OpaqueMaterial object
45
+ def self.opaque_material_set_surface_properties(opaque_material,
46
+ roughness: nil,
47
+ thermal_absorptance: nil,
48
+ solar_absorptance: nil,
49
+ visible_absorptance: nil)
50
+ unless opaque_material.to_OpaqueMaterial.is_initialized
51
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.constructions.materials', "Object #{opaque_material} cannot be cast as an OpaqueMaterial object.")
52
+ return false
53
+ end
54
+
55
+ # set requested material properties
56
+ material = opaque_material.to_OpaqueMaterial.get
57
+ if material.to_StandardOpaqueMaterial.is_initialized
58
+ material = material.to_StandardOpaqueMaterial.get
59
+ material.setRoughness(roughness) unless roughness.nil?
60
+ elsif material.to_MasslessOpaqueMaterial.is_initialized
61
+ material = material.to_MasslessOpaqueMaterial.get
62
+ material.setRoughness(roughness) unless roughness.nil?
63
+ end
64
+ material.setThermalAbsorptance(thermal_absorptance) unless thermal_absorptance.nil?
65
+ material.setSolarAbsorptance(solar_absorptance) unless solar_absorptance.nil?
66
+ material.setVisibleAbsorptance(visible_absorptance) unless visible_absorptance.nil?
67
+
68
+ return material.to_OpaqueMaterial.get
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,80 @@
1
+ # Methods to modify construction properties
2
+ module OpenstudioStandards
3
+ module Constructions
4
+ # @!group Modify
5
+
6
+ # add new material layer to a construction
7
+ #
8
+ # @param construction [OpenStudio::Model::Construction] OpenStudio Construction object
9
+ # @param layer_index [Integer] the layer index, default is 0
10
+ # @param name [String] name of the new material layer
11
+ # @param roughness [String] surface roughness of the new material layer.
12
+ # Options are 'VeryRough', 'Rough', 'MediumRough', 'MediumSmooth', 'Smooth', and 'VerySmooth'
13
+ # @param thickness [Double] thickness of the new material layer in meters
14
+ # @param conductivity [Double] conductivity of new material layer in W/m*K
15
+ # @param density [Double] density of the new material layer in kg/m^3
16
+ # @param specific_heat [Double] specific heat of the new material layer in J/kg*K
17
+ # @param thermal_absorptance [Double] target thermal absorptance
18
+ # @param solar_absorptance [Double] target solar absorptance
19
+ # @param visible_absorptance [Double] target visible absorptance
20
+ # @return [OpenStudio::Model::StandardOpaqueMaterial] The new material layer, a OpenStudio StandardOpaqueMaterial object
21
+ def self.construction_add_new_opaque_material(construction,
22
+ layer_index: 0,
23
+ name: nil,
24
+ roughness: nil,
25
+ thickness: nil,
26
+ conductivity: nil,
27
+ density: nil,
28
+ specific_heat: nil,
29
+ thermal_absorptance: nil,
30
+ solar_absorptance: nil,
31
+ visible_absorptance: nil)
32
+
33
+ # make new material
34
+ new_material = OpenStudio::Model::StandardOpaqueMaterial.new(construction.model)
35
+ if name.nil?
36
+ new_material.setName("#{construction.name} New Material")
37
+ else
38
+ new_material.setName(name)
39
+ end
40
+
41
+ # set requested material properties
42
+ new_material.setRoughness(roughness) unless roughness.nil?
43
+ new_material.setThickness(thickness) unless thickness.nil?
44
+ new_material.setConductivity(conductivity) unless conductivity.nil?
45
+ new_material.setDensity(density) unless density.nil?
46
+ new_material.setSpecificHeat(specific_heat) unless specific_heat.nil?
47
+ new_material.setThermalAbsorptance(thermal_absorptance) unless thermal_absorptance.nil?
48
+ new_material.setSolarAbsorptance(solar_absorptance) unless solar_absorptance.nil?
49
+ new_material.setVisibleAbsorptance(visible_absorptance) unless visible_absorptance.nil?
50
+
51
+ # add material to construction
52
+ construction.insertLayer(layer_index, new_material)
53
+
54
+ return new_material
55
+ end
56
+
57
+ # set construction surface properties
58
+ #
59
+ # @param construction [OpenStudio::Model::Construction] OpenStudio Construction object
60
+ # @param roughness [String] surface roughness
61
+ # @param thermal_absorptance [Double] target thermal absorptance
62
+ # @param solar_absorptance [Double] target solar absorptance
63
+ # @param visible_absorptance [Double] target visible absorptance
64
+ # @return [OpenStudio::Model::OpaqueMaterial] OpenStudio OpaqueMaterial object
65
+ def self.construction_set_surface_properties(construction,
66
+ roughness: nil,
67
+ thermal_absorptance: nil,
68
+ solar_absorptance: nil,
69
+ visible_absorptance: nil)
70
+
71
+ surface_material = construction.to_LayeredConstruction.get.getLayer(0)
72
+ new_material = OpenstudioStandards::Constructions::Materials.opaque_material_set_surface_properties(surface_material,
73
+ roughness: roughness,
74
+ thermal_absorptance: thermal_absorptance,
75
+ solar_absorptance: solar_absorptance,
76
+ visible_absorptance: visible_absorptance)
77
+ return new_material
78
+ end
79
+ end
80
+ end