openstudio-standards 0.8.4 → 0.8.5.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 (289) hide show
  1. checksums.yaml +4 -4
  2. data/data/geometry/ASHRAECollege.osm +30 -30
  3. data/data/geometry/ASHRAECourthouse.osm +22 -22
  4. data/data/geometry/ASHRAESmallOfficeDetailed.osm +2 -2
  5. data/data/geometry/DEER_Asm.osm +1 -1
  6. data/data/geometry/DEER_ECC.osm +1 -1
  7. data/data/geometry/DEER_EPr.osm +1 -1
  8. data/data/geometry/DEER_ERC.osm +1 -1
  9. data/data/geometry/DEER_ESe.osm +1 -1
  10. data/data/geometry/DEER_EUn.osm +1 -1
  11. data/data/geometry/DEER_Hsp.osm +1 -1
  12. data/data/geometry/DEER_Htl.osm +1 -1
  13. data/data/geometry/DEER_MBT.osm +1 -1
  14. data/data/geometry/DEER_MFm.osm +1 -1
  15. data/data/geometry/DEER_Nrs.osm +1 -1
  16. data/data/geometry/DEER_OfL.osm +1 -1
  17. data/data/geometry/DEER_OfS.osm +1 -1
  18. data/data/geometry/DEER_RFF.osm +1 -1
  19. data/data/geometry/DEER_RSD.osm +1 -1
  20. data/data/geometry/DEER_Rt3.osm +1 -1
  21. data/data/geometry/DEER_RtS.osm +1 -1
  22. data/data/standards/export_OpenStudio_libraries.rb +2 -3
  23. data/data/standards/test_performance_expected_dd_results.csv +42 -42
  24. data/lib/openstudio-standards/btap/NECB_building_types.csv +35 -0
  25. data/lib/openstudio-standards/btap/NECB_space_types.csv +109 -0
  26. data/lib/openstudio-standards/btap/activity.rb +480 -0
  27. data/lib/openstudio-standards/btap/attributes.rb +166 -0
  28. data/lib/openstudio-standards/btap/bridging.rb +561 -1402
  29. data/lib/openstudio-standards/btap/btap.rb +4 -2
  30. data/lib/openstudio-standards/btap/btap_test_helper.rb +86 -0
  31. data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +177 -0
  32. data/lib/openstudio-standards/btap/{costing/common_paths.rb → common_paths.rb} +14 -11
  33. data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
  34. data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
  35. data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
  36. data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
  37. data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
  38. data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting.csv +59 -59
  39. data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_hvac.csv +1019 -1032
  40. data/lib/openstudio-standards/btap/costing/btap_costing.rb +3 -7
  41. data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +1 -5
  42. data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +5 -4
  43. data/lib/openstudio-standards/btap/costing/dcv_costing.rb +1 -1
  44. data/lib/openstudio-standards/btap/costing/envelope_costing.rb +112 -181
  45. data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +4 -4
  46. data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +2 -1
  47. data/lib/openstudio-standards/btap/costing/lighting_costing.rb +3 -3
  48. data/lib/openstudio-standards/btap/costing/test_list.txt +15 -17
  49. data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +10 -9
  50. data/lib/openstudio-standards/btap/geometry.rb +86 -6
  51. data/lib/openstudio-standards/btap/structure.rb +657 -0
  52. data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
  53. data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
  54. data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
  55. data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
  56. data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
  57. data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
  58. data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
  59. data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
  60. data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
  61. data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
  62. data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
  63. data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
  64. data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
  65. data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
  66. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
  67. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
  68. data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
  69. data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
  70. data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
  71. data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
  72. data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
  73. data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
  74. data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
  75. data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
  76. data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
  77. data/lib/openstudio-standards/hvac/components/component.rb +39 -0
  78. data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
  79. data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
  80. data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
  81. data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
  82. data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
  83. data/lib/openstudio-standards/hvac/conversions.rb +222 -0
  84. data/lib/openstudio-standards/hvac/curves.rb +192 -0
  85. data/lib/openstudio-standards/hvac/helpers.rb +357 -0
  86. data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
  87. data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
  88. data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
  89. data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
  90. data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
  91. data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
  92. data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
  93. data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
  94. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  95. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  96. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  97. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
  98. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  99. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
  100. data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  101. data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  102. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
  103. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
  104. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
  105. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
  106. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
  107. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
  108. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
  109. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
  110. data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
  111. data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
  112. data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
  113. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
  114. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
  115. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
  116. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
  117. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
  118. data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
  119. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
  120. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
  121. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
  122. data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
  123. data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
  124. data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
  125. data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
  126. data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
  127. data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
  128. data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
  129. data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
  130. data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
  131. data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
  132. data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
  133. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
  134. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
  135. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
  136. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
  137. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
  138. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
  139. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
  140. data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
  141. data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
  142. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
  143. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
  144. data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
  145. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
  146. data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
  147. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
  148. data/lib/openstudio-standards/standards/Standards.Model.rb +6 -11
  149. data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
  150. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
  151. data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
  152. data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
  153. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
  154. data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
  155. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
  156. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
  157. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
  158. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
  159. 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 +37 -102
  160. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
  161. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
  162. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
  163. 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 +37 -37
  164. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
  165. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
  166. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
  167. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
  168. 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 +37 -102
  169. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
  170. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
  171. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
  172. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
  173. 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 +45 -109
  174. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
  175. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
  176. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
  177. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
  178. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
  179. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
  180. 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 +45 -109
  181. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
  182. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
  183. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
  184. 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 +37 -37
  185. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
  186. 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 +37 -37
  187. data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
  188. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
  189. data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
  190. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
  191. data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
  192. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
  193. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
  194. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
  195. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
  196. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
  197. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
  198. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
  199. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
  200. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
  201. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
  202. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
  203. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
  204. data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
  205. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +1 -0
  206. data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
  207. data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
  208. data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
  209. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +19 -10
  210. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
  211. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
  212. data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
  213. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +69 -92
  214. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +2 -1
  215. data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
  216. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
  217. data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
  218. data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +32 -0
  219. data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +18 -0
  220. data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
  221. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +5 -5
  222. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +2 -0
  223. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +30 -141
  224. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +233 -112
  225. data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
  226. data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -2
  227. data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
  228. data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
  229. data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
  230. data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
  231. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +16 -4
  232. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +65 -42
  233. data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
  234. data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
  235. data/lib/openstudio-standards/version.rb +1 -1
  236. data/lib/openstudio-standards/weather/stat_file.rb +2 -2
  237. data/lib/openstudio-standards.rb +55 -38
  238. metadata +106 -66
  239. data/lib/openstudio-standards/btap/costing/common_resources/constructions_glazing.csv +0 -61
  240. data/lib/openstudio-standards/btap/costing/common_resources/costs.csv +0 -1904
  241. data/lib/openstudio-standards/hvac/components/create.rb +0 -169
  242. data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
  243. data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
  244. data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
  245. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
  246. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
  247. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
  248. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
  249. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
  250. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
  251. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
  252. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
  253. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
  254. data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
  255. data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
  256. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
  257. data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
  258. data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
  259. data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
  260. data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
  261. data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
  262. data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
  263. data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
  264. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
  265. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
  266. data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
  267. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
  268. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
  269. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
  270. data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
  271. data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
  272. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/ConstructionProperties.csv +0 -0
  273. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/Constructions.csv +0 -0
  274. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/construction_sets.csv +0 -0
  275. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/constructions_opaque.csv +0 -0
  276. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/costs_local_factors.csv +0 -0
  277. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/hvac_vent_ahu.csv +0 -0
  278. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting_sets.csv +0 -0
  279. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/locations.csv +0 -0
  280. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_glazing.csv +0 -0
  281. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_lighting.csv +0 -0
  282. /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_opaque.csv +0 -0
  283. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
  284. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
  285. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
  286. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
  287. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
  288. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
  289. /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
@@ -0,0 +1,222 @@
1
+ module OpenstudioStandards
2
+ # The HVAC module provides methods create, modify, and get information about HVAC systems in the model
3
+ module HVAC
4
+ # @!group Conversions
5
+ # Methods to convert between different units of measurement for HVAC systems
6
+
7
+ # Convert from SEER to COP (no fan) for cooling coils
8
+ # @ref [References::ASHRAE9012013] Appendix G
9
+ #
10
+ # @param seer [Double] seasonal energy efficiency ratio (SEER)
11
+ # @return [Double] Coefficient of Performance (COP)
12
+ def self.seer_to_cop_no_fan(seer)
13
+ cop = (-0.0076 * seer * seer) + (0.3796 * seer)
14
+
15
+ return cop
16
+ end
17
+
18
+ # Convert from COP to SEER
19
+ # @ref [References::USDOEPrototypeBuildings]
20
+ #
21
+ # @param cop [Double] COP
22
+ # @return [Double] Seasonal Energy Efficiency Ratio
23
+ def self.cop_no_fan_to_seer(cop)
24
+ delta = (0.3796**2) - (4.0 * 0.0076 * cop)
25
+ seer = ((-delta**0.5) + 0.3796) / (2.0 * 0.0076)
26
+
27
+ return seer
28
+ end
29
+
30
+ # Convert from SEER to COP (with fan) for cooling coils
31
+ # per the method specified in Thornton et al. 2011
32
+ #
33
+ # @param seer [Double] seasonal energy efficiency ratio (SEER)
34
+ # @return [Double] Coefficient of Performance (COP)
35
+ def self.seer_to_cop(seer)
36
+ eer = (-0.0182 * seer * seer) + (1.1088 * seer)
37
+ cop = OpenstudioStandards::HVAC.eer_to_cop(eer)
38
+
39
+ return cop
40
+ end
41
+
42
+ # Convert from COP to SEER (with fan) for cooling coils
43
+ # per the method specified in Thornton et al. 2011
44
+ #
45
+ # @param cop [Double] Coefficient of Performance (COP)
46
+ # @return [Double] seasonal energy efficiency ratio (SEER)
47
+ def self.cop_to_seer(cop)
48
+ eer = OpenstudioStandards::HVAC.cop_to_eer(cop)
49
+ delta = (1.1088**2) - (4.0 * 0.0182 * eer)
50
+ seer = (1.1088 - (delta**0.5)) / (2.0 * 0.0182)
51
+
52
+ return seer
53
+ end
54
+
55
+ # Convert from COP_H to COP (no fan) for heat pump heating coils
56
+ # @ref [References::ASHRAE9012013] Appendix G
57
+ #
58
+ # @param coph47 [Double] coefficient of performance at 47F Tdb, 42F Twb
59
+ # @param capacity_w [Double] the heating capacity at AHRI rating conditions, in W
60
+ # @return [Double] Coefficient of Performance (COP)
61
+ def self.cop_heating_to_cop_heating_no_fan(coph47, capacity_w)
62
+ # Convert the capacity to Btu/hr
63
+ capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
64
+
65
+ cop = (1.48E-7 * coph47 * capacity_btu_per_hr) + (1.062 * coph47)
66
+
67
+ return cop
68
+ end
69
+
70
+ # Convert from HSPF to COP (no fan) for heat pump heating coils
71
+ # @ref [References::ASHRAE9012013] Appendix G
72
+ #
73
+ # @param hspf [Double] heating seasonal performance factor (HSPF)
74
+ # @return [Double] Coefficient of Performance (COP)
75
+ def self.hspf_to_cop_no_fan(hspf)
76
+ cop = (-0.0296 * hspf * hspf) + (0.7134 * hspf)
77
+
78
+ return cop
79
+ end
80
+
81
+ # Convert from HSPF to COP (with fan) for heat pump heating coils
82
+ # @ref ASHRAE RP-1197
83
+ #
84
+ # @param hspf [Double] heating seasonal performance factor (HSPF)
85
+ # @return [Double] Coefficient of Performance (COP)
86
+ def self.hspf_to_cop(hspf)
87
+ cop = (-0.0255 * hspf * hspf) + (0.6239 * hspf)
88
+
89
+ return cop
90
+ end
91
+
92
+ # Convert from EER to COP (no fan)
93
+ # @ref [References::USDOEPrototypeBuildings] If capacity is not supplied, use DOE Prototype Building method.
94
+ # @ref [References::ASHRAE9012013] If capacity is supplied, use the 90.1-2013 method
95
+ #
96
+ # @param eer [Double] Energy Efficiency Ratio (EER)
97
+ # @param capacity_w [Double] the heating capacity at AHRI rating conditions, in W
98
+ # @return [Double] Coefficient of Performance (COP)
99
+ def self.eer_to_cop_no_fan(eer, capacity_w = nil)
100
+ if capacity_w.nil?
101
+ # From Thornton et al. 2011
102
+ # r is the ratio of supply fan power to total equipment power at the rating condition,
103
+ # assumed to be 0.12 for the reference buildings per Thornton et al. 2011.
104
+ r = 0.12
105
+ cop = ((eer / OpenStudio.convert(1.0, 'W', 'Btu/h').get) + r) / (1 - r)
106
+ else
107
+ # The 90.1-2013 method
108
+ # Convert the capacity to Btu/hr
109
+ capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
110
+ cop = (7.84E-8 * eer * capacity_btu_per_hr) + (0.338 * eer)
111
+ end
112
+
113
+ return cop
114
+ end
115
+
116
+ # Convert from COP (no fan) to EER
117
+ # @ref [References::USDOEPrototypeBuildings]
118
+ #
119
+ # @param cop [Double] COP
120
+ # @return [Double] Energy Efficiency Ratio (EER)
121
+ def self.cop_no_fan_to_eer(cop, capacity_w = nil)
122
+ if capacity_w.nil?
123
+ # From Thornton et al. 2011
124
+ # r is the ratio of supply fan power to total equipment power at the rating condition,
125
+ # assumed to be 0.12 for the reference buildngs per Thornton et al. 2011.
126
+ r = 0.12
127
+ eer = OpenStudio.convert(1.0, 'W', 'Btu/h').get * ((cop * (1 - r)) - r)
128
+ else
129
+ # The 90.1-2013 method
130
+ # Convert the capacity to Btu/hr
131
+ capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
132
+ eer = cop / ((7.84E-8 * capacity_btu_per_hr) + 0.338)
133
+ end
134
+
135
+ return eer
136
+ end
137
+
138
+ # Convert from IEER to COP (no fan)
139
+ #
140
+ # @note IEER is a weighted-average efficiency metrics at different load percentages, operataional and environemental conditions
141
+ # @note IEER should be modeled by using performance curves that match a targeted efficiency values
142
+ # @note This method estimates what a reasonable full load rated EER would be for a targeted IEER value
143
+ # @note The regression used in this method is based on a survey of over 1,000 rated AHRI units with IEER ranging from 11.8 to 25.6
144
+ # @todo Implement methods to handle IEER modeling
145
+ #
146
+ # @param ieer [Double] Energy Efficiency Ratio (EER)
147
+ # @return [Double] Coefficient of Performance (COP)
148
+ def self.ieer_to_cop_no_fan(ieer)
149
+ eer = (0.0183 * ieer * ieer) - (0.4552 * ieer) + 13.21
150
+
151
+ return OpenstudioStandards::HVAC.eer_to_cop_no_fan(eer)
152
+ end
153
+
154
+ # Convert from EER to COP
155
+ #
156
+ # @param eer [Double] Energy Efficiency Ratio (EER)
157
+ # @return [Double] Coefficient of Performance (COP)
158
+ def self.eer_to_cop(eer)
159
+ return eer / OpenStudio.convert(1.0, 'W', 'Btu/h').get
160
+ end
161
+
162
+ # Convert from COP to EER
163
+ #
164
+ # @param cop [Double] Coefficient of Performance (COP)
165
+ # @return [Double] Energy Efficiency Ratio (EER)
166
+ def self.cop_to_eer(cop)
167
+ return cop * OpenStudio.convert(1.0, 'W', 'Btu/h').get
168
+ end
169
+
170
+ # Convert from COP to kW/ton
171
+ #
172
+ # @param cop [Double] Coefficient of Performance (COP)
173
+ # @return [Double] kW of input power per ton of cooling
174
+ def self.cop_to_kw_per_ton(cop)
175
+ return 3.517 / cop
176
+ end
177
+
178
+ # A helper method to convert from kW/ton to COP
179
+ #
180
+ # @param kw_per_ton [Double] kW of input power per ton of cooling
181
+ # @return [Double] Coefficient of Performance (COP)
182
+ def self.kw_per_ton_to_cop(kw_per_ton)
183
+ return 3.517 / kw_per_ton
184
+ end
185
+
186
+ # A helper method to convert from AFUE to thermal efficiency
187
+ # @ref [References::USDOEPrototypeBuildings] Boiler Addendum 90.1-04an
188
+ #
189
+ # @param afue [Double] Annual Fuel Utilization Efficiency
190
+ # @return [Double] Thermal efficiency (%)
191
+ def self.afue_to_thermal_eff(afue)
192
+ return afue
193
+ end
194
+
195
+ # A helper method to convert from thermal efficiency to AFUE
196
+ # @ref [References::USDOEPrototypeBuildings] Boiler Addendum 90.1-04an
197
+ #
198
+ # @param teff [Double] Thermal Efficiency
199
+ # @return [Double] AFUE
200
+ def self.thermal_eff_to_afue(teff)
201
+ return teff
202
+ end
203
+
204
+ # A helper method to convert from combustion efficiency to thermal efficiency
205
+ # @ref [References::USDOEPrototypeBuildings] Boiler Addendum 90.1-04an
206
+ #
207
+ # @param combustion_eff [Double] Combustion efficiency (%)
208
+ # @return [Double] Thermal efficiency (%)
209
+ def self.combustion_eff_to_thermal_eff(combustion_eff)
210
+ return combustion_eff - 0.007
211
+ end
212
+
213
+ # A helper method to convert from thermal efficiency to combustion efficiency
214
+ # @ref [References::USDOEPrototypeBuildings] Boiler Addendum 90.1-04an
215
+ #
216
+ # @param thermal_eff [Double] Thermal efficiency
217
+ # @return [Double] Combustion efficiency
218
+ def self.thermal_eff_to_comb_eff(thermal_eff)
219
+ return thermal_eff + 0.007
220
+ end
221
+ end
222
+ end
@@ -0,0 +1,192 @@
1
+ module OpenstudioStandards
2
+ # The HVAC module provides methods create, modify, and get information about HVAC systems in the model
3
+ module HVAC
4
+ # @!group Curves
5
+ # Methods to create and modify curves for HVAC systems
6
+
7
+ # Convert biquadratic curves that are a function of temperature
8
+ # from IP (F) to SI (C) or vice-versa. The curve is of the form
9
+ # z = C1 + C2*x + C3*x^2 + C4*y + C5*y^2 + C6*x*y
10
+ # where C1, C2, ... are the coefficients,
11
+ # x is the first independent variable (in F or C)
12
+ # y is the second independent variable (in F or C)
13
+ # and z is the resulting value
14
+ #
15
+ # @author Scott Horowitz, NREL
16
+ # @param coeffs [Array<Double>] an array of 6 coefficients, in order
17
+ # @return [Array<Double>] the revised coefficients in the new unit system
18
+ def self.convert_curve_biquadratic(coeffs, ip_to_si: true)
19
+ if ip_to_si
20
+ # Convert IP curves to SI curves
21
+ si_coeffs = []
22
+ si_coeffs << (coeffs[0] + (32.0 * (coeffs[1] + coeffs[3])) + (1024.0 * (coeffs[2] + coeffs[4] + coeffs[5])))
23
+ si_coeffs << ((9.0 / 5.0 * coeffs[1]) + (576.0 / 5.0 * coeffs[2]) + (288.0 / 5.0 * coeffs[5]))
24
+ si_coeffs << (81.0 / 25.0 * coeffs[2])
25
+ si_coeffs << ((9.0 / 5.0 * coeffs[3]) + (576.0 / 5.0 * coeffs[4]) + (288.0 / 5.0 * coeffs[5]))
26
+ si_coeffs << (81.0 / 25.0 * coeffs[4])
27
+ si_coeffs << (81.0 / 25.0 * coeffs[5])
28
+ return si_coeffs
29
+ else
30
+ # Convert SI curves to IP curves
31
+ ip_coeffs = []
32
+ ip_coeffs << (coeffs[0] - (160.0 / 9.0 * (coeffs[1] + coeffs[3])) + (25_600.0 / 81.0 * (coeffs[2] + coeffs[4] + coeffs[5])))
33
+ ip_coeffs << (5.0 / 9.0 * (coeffs[1] - (320.0 / 9.0 * coeffs[2]) - (160.0 / 9.0 * coeffs[5])))
34
+ ip_coeffs << (25.0 / 81.0 * coeffs[2])
35
+ ip_coeffs << (5.0 / 9.0 * (coeffs[3] - (320.0 / 9.0 * coeffs[4]) - (160.0 / 9.0 * coeffs[5])))
36
+ ip_coeffs << (25.0 / 81.0 * coeffs[4])
37
+ ip_coeffs << (25.0 / 81.0 * coeffs[5])
38
+ return ip_coeffs
39
+ end
40
+ end
41
+
42
+ # Create a biquadratic curve of the form
43
+ # z = C1 + C2*x + C3*x^2 + C4*y + C5*y^2 + C6*x*y
44
+ #
45
+ # @author Scott Horowitz, NREL
46
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
47
+ # @param coeffs [Array<Double>] an array of 6 coefficients, in order
48
+ # @param name [String] the name of the curve
49
+ # @param min_x [Double] the minimum value of independent variable X that will be used
50
+ # @param max_x [Double] the maximum value of independent variable X that will be used
51
+ # @param min_y [Double] the minimum value of independent variable Y that will be used
52
+ # @param max_y [Double] the maximum value of independent variable Y that will be used
53
+ # @param min_out [Double] the minimum value of dependent variable Z
54
+ # @param max_out [Double] the maximum value of dependent variable Z
55
+ # @return [OpenStudio::Model::CurveBiquadratic] a biquadratic curve
56
+ def self.create_curve_biquadratic(model, coeffs, name: 'CurveBiquadratic', min_x: nil, max_x: nil, min_y: nil, max_y: nil, min_out: nil, max_out: nil)
57
+ curve = OpenStudio::Model::CurveBiquadratic.new(model)
58
+ curve.setName(name)
59
+ curve.setCoefficient1Constant(coeffs[0])
60
+ curve.setCoefficient2x(coeffs[1])
61
+ curve.setCoefficient3xPOW2(coeffs[2])
62
+ curve.setCoefficient4y(coeffs[3])
63
+ curve.setCoefficient5yPOW2(coeffs[4])
64
+ curve.setCoefficient6xTIMESY(coeffs[5])
65
+ curve.setMinimumValueofx(min_x) unless min_x.nil?
66
+ curve.setMaximumValueofx(max_x) unless max_x.nil?
67
+ curve.setMinimumValueofy(min_y) unless min_y.nil?
68
+ curve.setMaximumValueofy(max_y) unless max_y.nil?
69
+ curve.setMinimumCurveOutput(min_out) unless min_out.nil?
70
+ curve.setMaximumCurveOutput(max_out) unless max_out.nil?
71
+ return curve
72
+ end
73
+
74
+ # Create a bicubic curve of the form
75
+ # z = C1 + C2*x + C3*x^2 + C4*y + C5*y^2 + C6*x*y + C7*x^3 + C8*y^3 + C9*x^2*y + C10*x*y^2
76
+ #
77
+ # @author Scott Horowitz, NREL
78
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
79
+ # @param coeffs [Array<Double>] an array of 10 coefficients, in order
80
+ # @param name [String] the name of the curve
81
+ # @param min_x [Double] the minimum value of independent variable X that will be used
82
+ # @param max_x [Double] the maximum value of independent variable X that will be used
83
+ # @param min_y [Double] the minimum value of independent variable Y that will be used
84
+ # @param max_y [Double] the maximum value of independent variable Y that will be used
85
+ # @param min_out [Double] the minimum value of dependent variable Z
86
+ # @param max_out [Double] the maximum value of dependent variable Z
87
+ # @return [OpenStudio::Model::CurveBicubic] a bicubic curve
88
+ def self.create_curve_bicubic(model, coeffs, name: 'CurveBicubic', min_x: nil, max_x: nil, min_y: nil, max_y: nil, min_out: nil, max_out: nil)
89
+ curve = OpenStudio::Model::CurveBicubic.new(model)
90
+ curve.setName(name)
91
+ curve.setCoefficient1Constant(coeffs[0])
92
+ curve.setCoefficient2x(coeffs[1])
93
+ curve.setCoefficient3xPOW2(coeffs[2])
94
+ curve.setCoefficient4y(coeffs[3])
95
+ curve.setCoefficient5yPOW2(coeffs[4])
96
+ curve.setCoefficient6xTIMESY(coeffs[5])
97
+ curve.setCoefficient7xPOW3(coeffs[6])
98
+ curve.setCoefficient8yPOW3(coeffs[7])
99
+ curve.setCoefficient9xPOW2TIMESY(coeffs[8])
100
+ curve.setCoefficient10xTIMESYPOW2(coeffs[9])
101
+ curve.setMinimumValueofx(min_x) unless min_x.nil?
102
+ curve.setMaximumValueofx(max_x) unless max_x.nil?
103
+ curve.setMinimumValueofy(min_y) unless min_y.nil?
104
+ curve.setMaximumValueofy(max_y) unless max_y.nil?
105
+ curve.setMinimumCurveOutput(min_out) unless min_out.nil?
106
+ curve.setMaximumCurveOutput(max_out) unless max_out.nil?
107
+ return curve
108
+ end
109
+
110
+ # Create a quadratic curve of the form
111
+ # z = C1 + C2*x + C3*x^2
112
+ #
113
+ # @author Scott Horowitz, NREL
114
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
115
+ # @param coeffs [Array<Double>] an array of 3 coefficients, in order
116
+ # @param name [String] the name of the curve
117
+ # @param min_x [Double] the minimum value of independent variable X that will be used
118
+ # @param max_x [Double] the maximum value of independent variable X that will be used
119
+ # @param min_out [Double] the minimum value of dependent variable Z
120
+ # @param max_out [Double] the maximum value of dependent variable Z
121
+ # @param is_dimensionless [Boolean] if true, the X independent variable is considered unitless
122
+ # and the resulting output dependent variable is considered unitless
123
+ # @return [OpenStudio::Model::CurveQuadratic] a quadratic curve
124
+ def self.create_curve_quadratic(model, coeffs, name: 'CurveQuadratic', min_x: nil, max_x: nil, min_out: nil, max_out: nil, is_dimensionless: false)
125
+ curve = OpenStudio::Model::CurveQuadratic.new(model)
126
+ curve.setName(name)
127
+ curve.setCoefficient1Constant(coeffs[0])
128
+ curve.setCoefficient2x(coeffs[1])
129
+ curve.setCoefficient3xPOW2(coeffs[2])
130
+ curve.setMinimumValueofx(min_x) unless min_x.nil?
131
+ curve.setMaximumValueofx(max_x) unless max_x.nil?
132
+ curve.setMinimumCurveOutput(min_out) unless min_out.nil?
133
+ curve.setMaximumCurveOutput(max_out) unless max_out.nil?
134
+ if is_dimensionless
135
+ curve.setInputUnitTypeforX('Dimensionless')
136
+ curve.setOutputUnitType('Dimensionless')
137
+ end
138
+ return curve
139
+ end
140
+
141
+ # Create a cubic curve of the form
142
+ # z = C1 + C2*x + C3*x^2 + C4*x^3
143
+ #
144
+ # @author Scott Horowitz, NREL
145
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
146
+ # @param coeffs [Array<Double>] an array of 4 coefficients, in order
147
+ # @param name [String] the name of the curve
148
+ # @param min_x [Double] the minimum value of independent variable X that will be used
149
+ # @param max_x [Double] the maximum value of independent variable X that will be used
150
+ # @param min_out [Double] the minimum value of dependent variable Z
151
+ # @param max_out [Double] the maximum value of dependent variable Z
152
+ # @return [OpenStudio::Model::CurveCubic] a cubic curve
153
+ def self.create_curve_cubic(model, coeffs, name: 'CurveCubic', min_x: nil, max_x: nil, min_out: nil, max_out: nil)
154
+ curve = OpenStudio::Model::CurveCubic.new(model)
155
+ curve.setName(name)
156
+ curve.setCoefficient1Constant(coeffs[0])
157
+ curve.setCoefficient2x(coeffs[1])
158
+ curve.setCoefficient3xPOW2(coeffs[2])
159
+ curve.setCoefficient4xPOW3(coeffs[3])
160
+ curve.setMinimumValueofx(min_x) unless min_x.nil?
161
+ curve.setMaximumValueofx(max_x) unless max_x.nil?
162
+ curve.setMinimumCurveOutput(min_out) unless min_out.nil?
163
+ curve.setMaximumCurveOutput(max_out) unless max_out.nil?
164
+ return curve
165
+ end
166
+
167
+ # Create an exponential curve of the form
168
+ # z = C1 + C2*x^C3
169
+ #
170
+ # @author Scott Horowitz, NREL
171
+ # @param model [OpenStudio::Model::Model] OpenStudio model object
172
+ # @param coeffs [Array<Double>] an array of 3 coefficients, in order
173
+ # @param name [String] the name of the curve
174
+ # @param min_x [Double] the minimum value of independent variable X that will be used
175
+ # @param max_x [Double] the maximum value of independent variable X that will be used
176
+ # @param min_out [Double] the minimum value of dependent variable Z
177
+ # @param max_out [Double] the maximum value of dependent variable Z
178
+ # @return [OpenStudio::Model::CurveExponent] an exponent curve
179
+ def self.create_curve_exponent(model, coeffs, name: 'CurveExponent', min_x: nil, max_x: nil, min_out: nil, max_out: nil)
180
+ curve = OpenStudio::Model::CurveExponent.new(model)
181
+ curve.setName(name)
182
+ curve.setCoefficient1Constant(coeffs[0])
183
+ curve.setCoefficient2Constant(coeffs[1])
184
+ curve.setCoefficient3Constant(coeffs[2])
185
+ curve.setMinimumValueofx(min_x) unless min_x.nil?
186
+ curve.setMaximumValueofx(max_x) unless max_x.nil?
187
+ curve.setMinimumCurveOutput(min_out) unless min_out.nil?
188
+ curve.setMaximumCurveOutput(max_out) unless max_out.nil?
189
+ return curve
190
+ end
191
+ end
192
+ end