openstudio-standards 0.8.5 → 0.8.7

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 (174) hide show
  1. checksums.yaml +4 -4
  2. data/data/standards/test_performance_expected_dd_results.csv +90 -90
  3. data/lib/openstudio-standards/btap/activity.rb +858 -61
  4. data/lib/openstudio-standards/btap/attributes.rb +297 -103
  5. data/lib/openstudio-standards/btap/bridging.rb +1335 -593
  6. data/lib/openstudio-standards/btap/btap.rb +60 -181
  7. data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +199 -142
  8. data/lib/openstudio-standards/btap/common/constructions.json +1275 -0
  9. data/lib/openstudio-standards/btap/common/costs.csv +1969 -0
  10. data/lib/openstudio-standards/btap/common/costs_local_factors.csv +2315 -0
  11. data/lib/openstudio-standards/btap/common/materials_glazing.csv +61 -0
  12. data/lib/openstudio-standards/btap/{common_resources → common}/materials_hvac.csv +1685 -1685
  13. data/lib/openstudio-standards/btap/{common_resources → common}/materials_lighting.csv +266 -266
  14. data/lib/openstudio-standards/btap/common/materials_opaque.csv +214 -0
  15. data/lib/openstudio-standards/btap/common/necb_building_types.csv +35 -0
  16. data/lib/openstudio-standards/btap/common/necb_space_types.csv +110 -0
  17. data/lib/openstudio-standards/btap/common/thermal_bridging.csv +73 -0
  18. data/lib/openstudio-standards/btap/costing/btap_costing.rb +346 -429
  19. data/lib/openstudio-standards/btap/costing/database.rb +104 -0
  20. data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +356 -344
  21. data/lib/openstudio-standards/btap/costing/dcv_costing.rb +282 -296
  22. data/lib/openstudio-standards/btap/costing/envelope_costing.rb +179 -192
  23. data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +2477 -2316
  24. data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +127 -142
  25. data/lib/openstudio-standards/btap/costing/lighting_costing.rb +216 -198
  26. data/lib/openstudio-standards/btap/costing/nv_costing.rb +522 -523
  27. data/lib/openstudio-standards/btap/costing/pv_ground_costing.rb +649 -649
  28. data/lib/openstudio-standards/btap/costing/shw_costing.rb +626 -625
  29. data/lib/openstudio-standards/btap/costing/thermal_bridging_costing.rb +72 -0
  30. data/lib/openstudio-standards/btap/costing/ventilation_costing.rb +2363 -2361
  31. data/lib/openstudio-standards/btap/deprecated.rb +1033 -0
  32. data/lib/openstudio-standards/btap/envelope.rb +313 -572
  33. data/lib/openstudio-standards/btap/fileio.rb +152 -1070
  34. data/lib/openstudio-standards/btap/geometry.rb +486 -766
  35. data/lib/openstudio-standards/btap/linear_regression.rb +130 -0
  36. data/lib/openstudio-standards/btap/paths.rb +46 -0
  37. data/lib/openstudio-standards/btap/qaqc/analysis.rb +163 -0
  38. data/lib/openstudio-standards/btap/qaqc/data.rb +2293 -0
  39. data/lib/openstudio-standards/btap/qaqc/datapoint.rb +641 -0
  40. data/lib/openstudio-standards/btap/schedules.rb +11 -611
  41. data/lib/openstudio-standards/btap/structure.rb +574 -189
  42. data/lib/openstudio-standards/constructions/materials/information.rb +1 -1
  43. data/lib/openstudio-standards/create_typical/create_typical.rb +1 -1
  44. data/lib/openstudio-standards/exterior_lighting/create.rb +135 -85
  45. data/lib/openstudio-standards/exterior_lighting/data/typical_exterior_lighting.json +20 -0
  46. data/lib/openstudio-standards/exterior_lighting/information.rb +23 -2
  47. data/lib/openstudio-standards/geometry/create.rb +7 -3
  48. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +3 -2
  49. data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +3 -2
  50. data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +84 -84
  51. data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +4 -4
  52. data/lib/openstudio-standards/refrigeration/create_walkin.rb +45 -5
  53. data/lib/openstudio-standards/refrigeration/data/refrigerated_walkins.csv +75 -75
  54. data/lib/openstudio-standards/schedules/parametric.rb +6 -0
  55. data/lib/openstudio-standards/service_water_heating/create_typical.rb +10 -3
  56. data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +30 -14
  57. data/lib/openstudio-standards/service_water_heating/information.rb +4 -1
  58. data/lib/openstudio-standards/sql_file/unmet_hours.rb +2 -1
  59. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +3 -1
  60. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +3 -1
  61. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.boilers.json +12 -0
  62. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +18432 -3072
  63. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.boilers.json +26 -0
  64. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +8532 -1422
  65. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.boilers.json +26 -0
  66. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +8532 -1422
  67. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.boilers.json +16 -0
  68. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.computer_room_acs.json +30 -30
  69. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +7560 -1260
  70. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +1 -2
  71. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.boilers.json +16 -0
  72. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_properties.json +7560 -1260
  73. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +3 -3
  74. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +1 -2
  75. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.boilers.json +22 -0
  76. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_properties.json +7236 -1206
  77. data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.furnaces.json +223 -19
  78. data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +37 -1
  79. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.boilers.json +3 -0
  80. data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.construction_properties.json +6900 -1150
  81. data/lib/openstudio-standards/standards/cbes/data/cbes.schedules.json +1 -1
  82. data/lib/openstudio-standards/standards/deer/data/deer.schedules.json +1 -1
  83. data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/surface_thermal_transmittance.json +76 -40
  84. data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/surface_thermal_transmittance.json +76 -40
  85. data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +6 -4
  86. data/lib/openstudio-standards/standards/necb/NECB2011/NECB2011_QAQC.json +2988 -0
  87. data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +25 -3
  88. data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +672 -534
  89. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Hospital.osm +1791 -1792
  90. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LEEPMultiTower.osm +7 -1
  91. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LEEPTownHouse.osm +7 -1
  92. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LargeHotel.osm +5 -6
  93. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LargeOffice.osm +8 -9
  94. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +10 -4
  95. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +14 -15
  96. data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Outpatient.osm +7 -1
  97. data/lib/openstudio-standards/standards/necb/NECB2011/data/surface_thermal_transmittance.json +76 -40
  98. data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +14 -6
  99. data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +542 -130
  100. data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +30 -63
  101. data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +7 -2
  102. data/lib/openstudio-standards/standards/necb/NECB2015/data/surface_thermal_transmittance.json +90 -0
  103. data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +8 -6
  104. data/lib/openstudio-standards/standards/necb/NECB2017/data/surface_thermal_transmittance.json +76 -40
  105. data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +2 -1
  106. data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +0 -117
  107. data/lib/openstudio-standards/standards/necb/NECB2020/data/surface_thermal_transmittance.json +76 -45
  108. data/lib/openstudio-standards/standards/necb/NECB2020/necb_2020.rb +218 -0
  109. data/lib/openstudio-standards/standards/necb/common/construction_defaults.osm +12 -7
  110. data/lib/openstudio-standards/standards/standard.rb +1 -1
  111. data/lib/openstudio-standards/version.rb +1 -1
  112. data/lib/openstudio-standards.rb +9 -4
  113. metadata +59 -66
  114. data/data/inventory/thermal_bridging.csv +0 -90
  115. data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
  116. data/data/standards/openstudio_standards_duplicates_log.csv +0 -7962
  117. data/lib/openstudio-standards/btap/NECB_building_types.csv +0 -35
  118. data/lib/openstudio-standards/btap/NECB_space_types.csv +0 -109
  119. data/lib/openstudio-standards/btap/WeatherData1.json +0 -2110
  120. data/lib/openstudio-standards/btap/WeatherData1.xlsx +0 -0
  121. data/lib/openstudio-standards/btap/btap_result.rb +0 -1144
  122. data/lib/openstudio-standards/btap/btap_test_helper.rb +0 -86
  123. data/lib/openstudio-standards/btap/common_paths.rb +0 -81
  124. data/lib/openstudio-standards/btap/common_resources/ConstructionProperties.csv +0 -52
  125. data/lib/openstudio-standards/btap/common_resources/Constructions.csv +0 -37
  126. data/lib/openstudio-standards/btap/common_resources/construction_sets.csv +0 -1270
  127. data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +0 -121
  128. data/lib/openstudio-standards/btap/common_resources/constructions_opaque.csv +0 -2256
  129. data/lib/openstudio-standards/btap/common_resources/costs.csv +0 -1897
  130. data/lib/openstudio-standards/btap/common_resources/costs_local_factors.csv +0 -2315
  131. data/lib/openstudio-standards/btap/common_resources/materials_glazing.csv +0 -35
  132. data/lib/openstudio-standards/btap/common_resources/materials_opaque.csv +0 -164
  133. data/lib/openstudio-standards/btap/costing/btap_measure_helper.rb +0 -359
  134. data/lib/openstudio-standards/btap/costing/btap_workflow.rb +0 -117
  135. data/lib/openstudio-standards/btap/costing/copy_test_results_files_to_expected_results.rb +0 -11
  136. data/lib/openstudio-standards/btap/costing/cost_building_from_file.rb +0 -136
  137. data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +0 -173
  138. data/lib/openstudio-standards/btap/costing/dummy.epw +0 -8768
  139. data/lib/openstudio-standards/btap/costing/dummy.osm +0 -5320
  140. data/lib/openstudio-standards/btap/costing/neb_end_use_prices.csv +0 -42
  141. data/lib/openstudio-standards/btap/costing/necb_2011_spacetype_info.csv +0 -225
  142. data/lib/openstudio-standards/btap/costing/necb_reference_runs.csv +0 -28705
  143. data/lib/openstudio-standards/btap/costing/parallel_tests.rb +0 -92
  144. data/lib/openstudio-standards/btap/costing/test_list.txt +0 -15
  145. data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +0 -27
  146. data/lib/openstudio-standards/btap/costing/test_run_costing_tests.rb +0 -80
  147. data/lib/openstudio-standards/btap/necb_2011_spacetype_info.csv +0 -225
  148. data/lib/openstudio-standards/btap/utilities/Add_template_field_to_json.rb +0 -22
  149. data/lib/openstudio-standards/btap/utilities/convert_surfaces_to_adiabatic_necb_8426.rb +0 -204
  150. data/lib/openstudio-standards/btap/utilities/generate_space_types.rb +0 -8
  151. data/lib/openstudio-standards/btap/utilities/necb_to_epw_map.rb +0 -50
  152. data/lib/openstudio-standards/btap/utilities/os_sim_extract.rb +0 -48
  153. data/lib/openstudio-standards/btap/utilities/rename_surfaces.rb +0 -24
  154. data/lib/openstudio-standards/btap/utilities/round_surf_coords.rb +0 -32
  155. data/lib/openstudio-standards/btap/utilities/sched_create.rb +0 -145
  156. data/lib/openstudio-standards/btap/utilities/set_mult_to_adiabatic.rb +0 -53
  157. data/lib/openstudio-standards/btap/utilities/space_type.rb +0 -78
  158. data/lib/openstudio-standards/btap/utilities/weatherData1_xlsx_to_json.rb +0 -56
  159. data/lib/openstudio-standards/btap/vintagizer.rb +0 -161
  160. data/lib/openstudio-standards/btap/visualization.rb +0 -72
  161. data/lib/openstudio-standards/standards/necb/NECB2011/data/necb_2011_spacetype_info.csv +0 -225
  162. data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +0 -79
  163. data/lib/openstudio-standards/standards/necb/common/btap_data.rb +0 -2656
  164. data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +0 -653
  165. data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +0 -28705
  166. data/lib/openstudio-standards/standards/necb/common/utility_pricing_2025-02-20.csv +0 -92
  167. /data/lib/openstudio-standards/btap/{common_resources → common}/carbon_frame.csv +0 -0
  168. /data/lib/openstudio-standards/btap/{common_resources → common}/carbon_glazing.csv +0 -0
  169. /data/lib/openstudio-standards/btap/{common_resources → common}/carbon_opaque.csv +0 -0
  170. /data/lib/openstudio-standards/btap/{common_resources → common}/hvac_vent_ahu.csv +0 -0
  171. /data/lib/openstudio-standards/btap/{common_resources → common}/lighting.csv +0 -0
  172. /data/lib/openstudio-standards/btap/{common_resources → common}/lighting_sets.csv +0 -0
  173. /data/lib/openstudio-standards/btap/{common_resources → common}/locations.csv +0 -0
  174. /data/lib/openstudio-standards/btap/{costing → common}/mech_sizing.json +0 -0
@@ -1,35 +0,0 @@
1
- materials_glazing_id,source,type,material_type,id,description,unit,material_mult,labour_mult,op_mult,U_W_per_m2-K,fenestration_type,fenestration_assembly_context,fenestration_number_of_panes,fenestration_frame_type,fenestration_divider_type,fenestration_tint,fenestration_gas_fill,fenestration_low_emissivity_coating,solar_heat_gain_coefficient,visible_transmittance,comments
2
- 1,rs-means,Assembly,glazing,240001,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",ft2,0.043,0.043,0.043,2.4,FixedWindow,Manufactured,Double Pane,Metal Framing,"Between Panes < 7/16""",Clear,Argon,True,0.55,0.61,Cost conv. workaround: Assembly cost is $652 and area is 23.18ft2 - Ea. To S.F. is =652/23.18 =28.12$/ft2 - Derating factor = 1/area = 0.0355 - Expect cost ~$28/ft2
3
- 2,rs-means,Assembly,glazing,240002,"6' x 7' aluminum patio, tempered glass, zero frame thermal break",ft2,1,1,1,2.4,GlazedDoor,Manufactured,Double Pane,Metal Framing,"Between Panes < 7/16""",Clear,Air,False,0.65,0.7,"base was without thermal break, no cost change"
4
- 3,rs-means,Assembly,glazing,240003,"entrance, door 5'x7', opening 12'x7'-6', electric operator, zero frame thermal break",ft2,1,1,1,2.4,GlazedDoor,Manufactured,Double Pane,Metal Framing,"Between Panes < 7/16""",Clear,Air,False,0.65,0.7,"base was without thermal break, no cost change"
5
- 4,rs-means,Assembly,glazing,240004,"fixed mall front panels, aluminum finish 48' x 9' opening, zero frame thermal break",ft2,0.0023148148148148147,0.0023148148148148147,0.0023148148148148147,2.4,FixedWindow,Manufactured,Double Pane,Metal Framing,"Between Panes < 7/16""",Clear,Argon,True,0.55,0.61,
6
- 5,rs-means,Assembly,glazing,240005,"aluminum window: stock 5'x3' including framing and insulated glazing, zero frame thermal break",ft2,1,1,1,2.4,OperableWindow,Manufactured,Double Pane,Metal Framing,"Between Panes >= 7/16""",Clear,Argon,True,0.55,0.61,
7
- 6,rs-means,Assembly,glazing,240001,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",ft2,0.043,0.043,0.043,2.4,FixedWindow,Manufactured,Double Pane,Non-Metal Framing,"Between Panes < 7/16""",Clear,Argon,True,0.55,0.61,Cost conv. workaround: Assembly cost is $652 and area is 23.18ft2 - Ea. To S.F. is =652/23.18 =28.12$/ft2 - Derating factor = 1/area = 0.0355 - Expect cost ~$28/ft2
8
- 7,rs-means,Assembly,glazing,240006,"6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs, zero frame thermal break",ft2,1,1,1,2.4,OperableWindow,Manufactured,Double Pane,Non-Metal Framing,"Between Panes >= 7/16""",Clear,Argon,True,0.55,0.61,Thermal break always included in cost
9
- 8,rs-means,Assembly,glazing,240001,"Windows, aluminum, awning, standard glass, 4'-5"" x 5'-3""",ft2,0.043,0.043,0.043,2.4,FixedWindow,Manufactured,Double Pane,Metal Framing,"Between Panes < 7/16""",Clear,Argon,True,0.55,0.61,Cost conv. workaround: Assembly cost is $652 and area is 23.18ft2 - Ea. To S.F. is =652/23.18 =28.12$/ft2 - Derating factor = 1/area = 0.0355 - Expect cost ~$28/ft2
10
- 9,rs-means,Assembly,glazing,240007,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",ft2,0.043,0.043,0.043,2.2,FixedWindow,Manufactured,Double Pane,Metal Framing with Thermal Break,"Between Panes < 7/16""",Clear,Argon,True,0.55,0.61,Cost conv. workaround: Assembly cost is $782 and area is 23.18ft2 - Ea. To S.F. is =782/23.18 =33.7$/ft2 - Derating factor = 1/area = 0.0355 - Expect cost ~$33/ft2
11
- 10,rs-means,Assembly,glazing,240002,"6' x 7' aluminum patio, tempered glass",ft2,1,1,1,2.2,GlazedDoor,Manufactured,Double Pane,Metal Framing,"Between Panes < 7/16""",Clear,Air,False,0.65,0.7,
12
- 11,rs-means,Assembly,glazing,240003,"entrance, door 5'x7', opening 12'x7'-6', electric operator",ft2,1,1,1,2.2,GlazedDoor,Manufactured,Double Pane,Metal Framing,"Between Panes < 7/16""",Clear,Air,False,0.65,0.7,
13
- 12,rs-means,Assembly,glazing,240004,"fixed mall front panels, aluminum finish 48' x 9' opening",ft2,0.0023148148148148147,0.0023148148148148147,0.0023148148148148147,2.2,FixedWindow,Manufactured,Double Pane,Metal Framing with Thermal Break,"Between Panes < 7/16""",Clear,Argon,True,0.55,0.61,
14
- 13,rs-means,Assembly,glazing,240005,aluminum window: stock 5'x3' including framing and insulated glazing,ft2,1,1,1,2.2,OperableWindow,Manufactured,Double Pane,Metal Framing with Thermal Break,"Between Panes >= 7/16""",Clear,Argon,True,0.55,0.61,
15
- 14,rs-means,Assembly,glazing,240007,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",ft2,0.043,0.043,0.043,2.2,FixedWindow,Manufactured,Double Pane,Non-Metal Framing,"Between Panes < 7/16""",Clear,Argon,True,0.55,0.61,Cost conv. workaround: Assembly cost is $782 and area is 23.18ft2 - Ea. To S.F. is =782/23.18 =33.7$/ft2 - Derating factor = 1/area = 0.0355 - Expect cost ~$33/ft2
16
- 15,rs-means,Assembly,glazing,240006,"6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs",ft2,1,1,1,2.2,OperableWindow,Manufactured,Double Pane,Non-Metal Framing,"Between Panes >= 7/16""",Clear,Argon,True,0.55,0.61,
17
- 16,rs-means,Assembly,glazing,240007,"Windows, aluminum, awning, insulated glass, 4'-5"" x 5'-3""",ft2,0.043,0.043,0.043,2.2,FixedWindow,Manufactured,Double Pane,Metal Framing,"Between Panes < 7/16""",Clear,Argon,True,0.55,0.61,Cost conv. workaround: Assembly cost is $782 and area is 23.18ft2 - Ea. To S.F. is =782/23.18 =33.7$/ft2 - Derating factor = 1/area = 0.0355 - Expect cost ~$33/ft2
18
- 17,rs-means,Assembly,glazing,240008,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",ft2,0.0833,0.0833,0.0833,1.6,FixedWindow,Manufactured,Triple Pane,Metal Framing with Thermal Break,"Between Panes < 7/16""",Clear,Argon,True,0.4,0.4,Cost conv. workaround: Assembly cost is $807 and area is 12ft2 - Ea. To S.F. is =807/12 =67.25$/ft2 - Derating factor = 1/area = 0.0833 - Expect cost ~$67.25/ft2
19
- 18,rs-means,Assembly,glazing,240002,"triple glazed U= 1.6 W/m2-K, 6' x 7' aluminum patio, tempered glass",ft2,1,1,1,1.6,GlazedDoor,Manufactured,Triple Pane,Metal Framing,"Between Panes < 7/16""",Clear,Air,False,0.45,0.5,
20
- 19,rs-means,Assembly,glazing,240003,"triple glazed U= 1.6 W/m2-K, entrance, door 5'x7', opening 12'x7'-6', electric operator",ft2,1,1,1,1.6,GlazedDoor,Manufactured,Triple Pane,Metal Framing,"Between Panes < 7/16""",Clear,Air,False,0.45,0.5,
21
- 20,rs-means,Assembly,glazing,240004,"triple glazed U= 1.6 W/m2-K, fixed mall front panels, aluminum finish 48' x 9' opening",ft2,0.0023148148148148147,0.0023148148148148147,0.0023148148148148147,1.6,FixedWindow,Manufactured,Triple Pane,Metal Framing with Thermal Break,"Between Panes < 7/16""",Clear,Argon,True,0.4,0.4,
22
- 21,rs-means,Assembly,glazing,240005,"triple glazed U= 1.6 W/m2-K, aluminum window: stock 5'x3' including framing and insulated glazing",ft2,1,1,1,1.6,OperableWindow,Manufactured,Triple Pane,Metal Framing with Thermal Break,"Between Panes >= 7/16""",Clear,Argon,True,0.4,0.4,
23
- 22,rs-means,Assembly,glazing,240008,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",ft2,0.0833,0.0833,0.0833,1.6,FixedWindow,Manufactured,Triple Pane,Non-Metal Framing,"Between Panes < 7/16""",Clear,Argon,True,0.4,0.4,Cost conv. workaround: Assembly cost is $807 and area is 12ft2 - Ea. To S.F. is =807/12 =67.25$/ft2 - Derating factor = 1/area = 0.0833 - Expect cost ~$67.25/ft2
24
- 23,rs-means,Assembly,glazing,240006,"triple glazed U= 1.6 W/m2-K, 6' x 4' picture with insulating glass, 2 lites, low E, finished extensions and jambs",ft2,1,1,1,1.6,OperableWindow,Manufactured,Triple Pane,Non-Metal Framing,"Between Panes >= 7/16""",Clear,Argon,True,0.4,0.4,
25
- 24,rs-means,Assembly,glazing,240008,"Windows, aluminum, double hung, insul. glass, 3'-0"" x 4'-0""",ft2,0.0833,0.0833,0.0833,1.6,FixedWindow,Manufactured,Triple Pane,Metal Framing,"Between Panes < 7/16""",Clear,Argon,True,0.4,0.4,
26
- 25,rs-means,Unit,skylights,100009,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",ft2,0.068,0.068,0.068,2.4,PlasticSkylightwithCurb,Manufactured,Double Pane,Metal-Framing,"Between Panes < 7/16""",Clear,Argon,True,0.4,0.4,Cost conv. workaround: Assembly cost is $841 and area is 14.7ft2 - Ea. To S.F. is =841/14.7 =57.23$/ft2 - Derating factor = 1/area = 0.068 - Expect cost ~$57.23/ft2
27
- 26,rs-means,Unit,skylights,100009,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",ft2,0.068,0.068,0.068,2.4,GlassSkylightwithCurb,Manufactured,Double Pane,Metal-Framing,"Between Panes < 7/16""",Clear,Argon,True,0.5,0.5,Cost conv. workaround: Assembly cost is $841 and area is 14.7ft2 - Ea. To S.F. is =841/14.7 =57.23$/ft2 - Derating factor = 1/area = 0.068 - Expect cost ~$57.23/ft2
28
- 27,rs-means,Unit,skylights,100010,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",ft2,0.068,0.068,0.068,1.6,PlasticSkylightwithCurb,Manufactured,Triple Pane,Metal-Framing,"Between Panes < 7/16""",Clear,Argon,True,0.2,0.2,Cost conv. workaround: Assembly cost is $861 and area is 14.7ft2 - Ea. To S.F. is =861/14.7 =58.6$/ft2 - Derating factor = 1/area = 0.068 - Expect cost ~$58.6/ft2
29
- 28,rs-means,Unit,skylights,100010,"Skylights, non venting, insulated, plexiglass dome with curb mount, 46"" x 46""",ft2,0.068,0.068,0.068,1.6,GlassSkylightwithCurb,Manufactured,Triple Pane,Metal-Framing,"Between Panes < 7/16""",Clear,Argon,True,0.28,0.28,Cost conv. workaround: Assembly cost is $861 and area is 14.7ft2 - Ea. To S.F. is =861/14.7 =58.6$/ft2 - Derating factor = 1/area = 0.068 - Expect cost ~$58.6/ft2
30
- 29,rs-means,Unit,Solarfilms,100011,bronze film (glass not included) 20% VLT,ft2,1,1,0,,FixedWindow,Manufactured,Double Pane,Metal-Framing,"Between Panes < 7/16""",Bronze,Air,True,0.16949152542372883,0.2,
31
- 30,rs-means,Unit,Solarfilms,100012,bronze film (glass not included) 50% VLT,ft2,1,1,0,,FixedWindow,Manufactured,Double Pane,Metal-Framing,"Between Panes < 7/16""",Bronze,Air,True,0.42372881355932207,0.5,
32
- 31,rs-means,Unit,Solarfilms,100013,Silver film (glass not included) 15% VLT,ft2,1,1,0,,FixedWindow,Manufactured,Double Pane,Metal-Framing,"Between Panes < 7/16""",Silver,Air,True,0.12820512820512822,0.15,
33
- 32,rs-means,Unit,Solarfilms,100014,Silver film (glass not included) 35% VLT,ft2,1,1,0,,FixedWindow,Manufactured,Double Pane,Metal-Framing,"Between Panes < 7/16""",Silver,Air,True,0.29914529914529914,0.35,
34
- 33,rs-means,Unit,Solarfilms,100015,Silver film (glass not included) 68% VLT,ft2,1,1,0,,FixedWindow,Manufactured,Double Pane,Metal-Framing,"Between Panes < 7/16""",Silver,Air,True,0.5811965811965812,0.68,
35
- 34,rs-means,Unit,Solarfilms,100016,Neutral film (glass not included) 20% VLT,ft2,1,1,0,,FixedWindow,Manufactured,Double Pane,Metal-Framing,"Between Panes < 7/16""",Clear,Air,True,0.14814814814814814,0.2,
@@ -1,164 +0,0 @@
1
- materials_opaque_id,description,source,type,material_type,id,unit,quantity,material_mult,labour_mult,op_mult,eqpt
2
- 1,gypsum wallboard 0.5 in thick,rs-means,Unit,opaque,110017,ft2,1,1,1,0.381,1
3
- 2,"standard wood studs with single bottom plate and double top plate, 16"" O.C., pneumatic nailer",rs-means,Assembly,opaque,240018,LF,0.1,1,1,0,1
4
- 3,polyethylene 4 ml vapour barrier,rs-means,Unit,opaque,090019,SQ,0.01,1,1,0.543,1
5
- 4,"foil face fibreglass batts, 5"" thick, 15"" wide, RSI 3.36",rs-means,Unit,opaque,090020,ft2,1,0.84,1,0.229,1
6
- 5,"plywood sheathing, CDX, 0.5 in, pneumatic nailer",rs-means,Unit,opaque,080021,Ft2,1,1,1,0.33,1
7
- 6,"weather barrier, spunbonded polyethylene",rs-means,Unit,opaque,090022,ft2,1,1,1,0.29,1
8
- 7,"wood siding T&G ""B"" grade",rs-means,Unit,opaque,090023,ft2,1,1,1,0.18,1
9
- 8,"joint sealants. tapes, foam, adhesive ",rs-means,Assembly,opaque,240018,CLF,0.001,1,1,0,1
10
- 9,"waterproof sealer, 1 coat, sprayed",rs-means,Unit,opaque,110024,ft2,1,1,1,0.35,1
11
- 10,"stains, paints, 2 coats sprayed",rs-means,Unit,opaque,110025,ft2,1,1,1,0.36,1
12
- 11,"galvanized LB studs, 16 ga x 3-5/8\"" W studs 16\"" O.C. x 10' H, incl galvanized top & bottom track, excl openings, headers, beams, bracing & bridging",rs-means,Unit,opaque,070026,LF,0.1,1,1,0,1
13
- 12,Polymer EIFS with 2 in EPS and finish,rs-means,Unit,opaque,090027,ft2,1,1,1,0.4,1
14
- 13,"standard wood studs with single bottom plate and double top plate, 16"" O.C.",rs-means,Assembly,opaque,240018,ft2,1,1,1,0,1
15
- 14,"vinyl siding, clapboard profile, woodgrain texture, 0.048 "" thick, 8"" width",rs-means,Unit,opaque,090028,ft2,1,1,1,0.377,1
16
- 15,"aluminum flashing, mill finish. 0.013 "" thick",rs-means,Assembly,opaque,240029,ft2,1,1,1,0,1
17
- 16,"metal decking strips, galvanized, 18 gauge",rs-means,Unit,opaque,070030,LF,0.0766,1,1,0,1
18
- 17,"10 yr finish metal siding, 24 gauge, 0.0239 "" thick with fasteners",rs-means,Unit,opaque,090031,ft2,1,1,1,0.315,1
19
- 18,"aluminum closure strips, mill finish. 0.032 "" thick",rs-means,Unit,opaque,090032,LF,0.111,1,1,0,1
20
- 19,"joint sealants. tapes, foam, adhesive ",rs-means,Assembly,opaque,240033,CLF,0.00397,1,1,0,1
21
- 20,"Brick walls, face brick, red, running bond, 6.75/SF, 4\"" thick, includes mortar",rs-means,Unit,opaque,060034,ft2,1,1,1,0,1
22
- 21,"Lintel angle, structural, unpainted, under 500 lb., shop fabricated",rs-means,Unit,opaque,070035,lb,1,1,1,0,1
23
- 22,"Sheet metal flashing, 0.019"" thick",rs-means,Assembly,opaque,240018,ft2,0.1,1,1,0,1
24
- 23,"standard wood studs with single bottom plate and double top plate, 16"" O.C.",rs-means,Assembly,opaque,240036,ft2,1,1,1,0,1
25
- 24,"Block, tooled joints both sides, includes morter, excludes, scaffolding, reinforcing, grout",rs-means,Unit,opaque,060037,ft2,1,1,1,0,1
26
- 25,"masonry reinforcing bars, galvanized ladder type 9 gauge with ties placed horizontally",rs-means,Unit,opaque,060038,CLF,0.008,1,1,0,1
27
- 26,masonry #5 and #6 reinforcing bars placed vertically,rs-means,Unit,opaque,060039,lb,0.43,1,1,0,1
28
- 27,"Control joint, PVC",rs-means,Unit,opaque,060040,LF,0.05,1,1,0,1
29
- 28,"Grout, 8"" thick including pumping",rs-means,Unit,opaque,060041,ft2,0.188,1,1,0,1
30
- 29,"XPS, 25 PSI, 3"" RSI 2.64 modified to 3.75"" RSI 3.33",rs-means,Unit,opaque,090042,ft2,1,1.25,1,0.22,1
31
- 30,"fibreglass batts, 3.5 in thick RSI2.29",rs-means,Unit,opaque,090043,ft2,1,1,1,0.27,1
32
- 31,"80 ton erection crane, truck mounted",rs-means,Unit,opaque,010044,Day,0.000116,1,1,0,1
33
- 32,"C.I.P. forms, wood to 10 inches high, including erecting, bracing, stripping cleaning",rs-means,Unit,opaque,020045,LF,0.24,1,1,0,1
34
- 33,"Form aligner for C.I.P. footing forms, material only",rs-means,Unit,opaque,020046,Ea,0.056,1,1,0,1
35
- 34,"Slab lifting inserts, galvanized, 1"" diameter by 10"" high material only",rs-means,Unit,opaque,020047,C,8e-05,1,1,0,1
36
- 35,"Welded wire fabric sheets 6""x6"" 42 lbs per Ft2, excludes accessories",rs-means,Unit,opaque,020048,ft2,0.02,1,1,0,1
37
- 36,"Structural concrete, 3000 PSI, 6"" thick includes, levelling, excludes additives and treatment",rs-means,Unit,opaque,020049,yd3,0.0125,1,1,0,1
38
- 37,"Concrete surface treatment, sprayed membrane compound",rs-means,Unit,opaque,020050,CSF,0.01,1,1,0,1
39
- 38,"Tilt-up panel release agent, 1 gal/700ft2",rs-means,Unit,opaque,020051,Gal,0.000285,1,1,0,1
40
- 39,"Angle framing structural steel, field fabricated",rs-means,Unit,opaque,070052,lb,0.19,1,1,0,1
41
- 40,"XPS, 25 PSI, 2"" RSI 1.76",rs-means,Unit,opaque,090053,ft2,1,1,1,0.253,1
42
- 41,"Precast panel, 4 ft x 8 ft smooth white face finish, 4 inch thick, includes erection on prepared openings",rs-means,Unit,opaque,020054,ft2,1,1,1,0,1
43
- 42,"XPS, 25 PSI, 2 sheets of 2"" RSI 1.76 each total 4"" RSI 3.52",rs-means,Unit,opaque,090053,ft2,1,2,2,0.253,1
44
- 43,"fibreglass batts, 6 in thick RSI 3.35",rs-means,Unit,opaque,090055,ft2,1,1,1,0.234,1
45
- 44,"C.I.P. forms, plywood to 8ft high, including erecting, bracing, stripping cleaning",rs-means,Unit,opaque,020056,SFCA,2,1,1,0,1
46
- 45,"Reinforcing Steel, #3 to #7, includes labour for accessories, but excludes accessories",rs-means,Unit,opaque,020057,ton,0.000376,1,1,0,1
47
- 46,"Structural concrete, 3000 PSI, 6"" thick includes pumping, levelling, consolidation, excludes additives and treatment",rs-means,Unit,opaque,020049,yd3,0.018,1,1,0,1
48
- 47,"Concrete finishing, surface treatment, patching, tie break-off",rs-means,Unit,opaque,020058,ft2,2,1,1,0,1
49
- 48,"Steel siding, factory panel, galvanized, 22 gauge, colored 1 side and baked enamal exterior finish, includes 2 in. polystyrene modified to 3"" PS",rs-means,Unit,opaque,090059,ft2,1,1.5,1,0,1
50
- 49,"fibreglass batts, 3.5 in thick RSI2.29 modified to 5 inch batt RSI 3.05",rs-means,Unit,opaque,090043,ft2,1,1.33,1,0.272,1
51
- 50,"Spandrel glass 3/8"" plate",rs-means,Unit,opaque,100060,ft2,1,1,1,0,1
52
- 51,Aluminum panel with 2 inches fibreglass,rs-means,Unit,opaque,100061,ft2,1,1,1,0,1
53
- 52,"22 gauge sheet metal galvanized with 2"" fibreglass, polyvinyl exterior finish",rs-means,Unit,opaque,090059,ft2,1,1,1,0,1
54
- 53,"foil face fibreglass batts, 6 "" thick, 15"" wide, RSI 3.52",rs-means,Unit,opaque,090020,ft2,1,1,1,0.229,1
55
- 54,"0.5"" Isoboard, 4 x 8 sheet, foil faced (RSI 0.48)",rs-means,Unit,opaque,090062,ft2,1,1,1,0.405,1
56
- 55,"XPS, 25 PSI, 2"" RSI 1.76 modified to 2 x 2.5"" sheets: total 5"" RSI 4.4",rs-means,Unit,opaque,090053,ft2,1,2.5,2,0.253,1
57
- 56,"Isoboard, 1"" thick, RSI .98",rs-means,Unit,opaque,090063,ft2,1,1,1,0.337,1
58
- 57,"XPS, 25 PSI, 2"" RSI 1.76",rs-means,Unit,opaque,090053,ft2,1,1,1,0.253,1
59
- 58,"XPS, 25 PSI, 2"" RSI 1.76 modified to 2 x 2.25"" sheets RSI 4",rs-means,Unit,opaque,090053,ft2,1,2.25,2,0.253,1
60
- 59,"XPS, 25 PSI, 2"" RSI 1.76 modified to 3 x 2"" sheets RSI 5.28",rs-means,Unit,opaque,090053,ft2,1,3,3,0.253,1
61
- 60,"fibreglass batts, 6 in thick RSI3.35",rs-means,Unit,opaque,090055,ft2,1,1,1,0.234,1
62
- 61,"Polyurethane foam lining of spandrel panel, 1 "" RSI 1.14",rs-means,Unit,opaque,090064,ft2,1,1,1,0,1
63
- 62,"Polyurethane foam lining of spandrel panel, 1 "" RSI 1.14",rs-means,Unit,opaque,090064,ft2,1,1,1,0.281,1
64
- 63,"Isoboard, 1.5"" thick, RSI 1.38",rs-means,Unit,opaque,090065,ft2,1,1,1,0.34,1
65
- 64,"Polyurethane Foam 4.5"" thick, RSI 5.15 modifed to 5"" foaming RSI 5.67",rs-means,Unit,opaque,090066,ft2,1,1.1,1.25,0.203,1.25
66
- 65,"XPS, 25 PSI, 2"" RSI 1.76 modified to 2 x 2.5"" sheets: total 5"" RSI 4.4",rs-means,Unit,opaque,090053,ft2,1,2.5,2,0.253,1
67
- 66,"Polyurethane foam lining of spandrel panel, 2 "" RSI 2.2",rs-means,Unit,opaque,090067,ft2,1,1,1,0.2,1
68
- 67,"Isoboard sheathing, 2"" thick RSI 1.93",rs-means,Unit,opaque,090068,Ft2,1,1,1,0.31,1
69
- 68,"Polyurethane Foam 4.5"" thick, RSI 5.15 modified to 5.5"" foaming RSI 6.18",rs-means,Unit,opaque,090066,ft2,1,1.2,1.25,0.203,1.25
70
- 69,"fibreglass batts, 6 in thick RSI 3.34",rs-means,Unit,opaque,090055,ft2,1,1,1,0.234,1
71
- 70,"Isoboard sheathing, 3"" thick RSI 2.88 2 sheets 6"" RSI 5.76",rs-means,Unit,opaque,090069,ft2,1,2,2,0.207,1
72
- 71,"XPS, 25 PSI, 2"" RSI 1.76 modified to 2 x 2.5"" sheets: total 5"" RSI 4.4",rs-means,Unit,opaque,090053,ft2,1,2.5,2,0.253,1
73
- 72,"Polyurethane foam lining of spandrel panel, 3 "" RSI 3.42",rs-means,Unit,opaque,090070,ft2,1,1,1,0.197,1
74
- 73,"Isoboard 3"" RSI 2.9, modified to 3.75"" sheet RSI 3.63",rs-means,Unit,opaque,090069,ft2,1,1.25,1,0.207,1
75
- 74,"gypsumboard, 0.5 in. fire rated, no finish or taping",rs-means,Unit,opaque,110071,ft2,1,1,1,0.378,1
76
- 75,"Isoboard 3"" RSI 2.9, modified to 4"" sheet RSI 3.85",rs-means,Unit,opaque,090069,ft2,1,1.33,1,0.207,1
77
- 76,"Isoboard 4"" RSI 3.87 modified to 2x2.5"" sheets RSI 4.84",rs-means,Unit,opaque,090072,ft2,1,1.25,2,0.195,1
78
- 77,"Isoboard 4"" RSI 3.87 modfied to 2 x 2.75"" sheets RSI 5.15",rs-means,Unit,opaque,090072,ft2,1,1.33,2,0.195,1
79
- 78,"Polyurethane foam, closed cell, 4"", RSI 4.10 modified to 6""foaming RSI 6.15",rs-means,Unit,opaque,090073,ft2,1,1.5,1.25,0.197,1.25
80
- 79,"Fibreglass Foil Faced 3 "" RSI 2.29",rs-means,Unit,opaque,090043,ft2,1,1,1,0.27,1
81
- 80,"XPS, 25 PSI, 3"" RSI 2.64",rs-means,Unit,opaque,090042,ft2,1,1,1,0.221,1
82
- 81,"Fibreglass Foil Faced High Density 3 "" RSI 2.64",rs-means,Unit,opaque,090074,ft2,1,1,1,0.27,1
83
- 82,"XPS, 25 PSI, 2"" RSI 1.76 modified to 2 sheets 4"" RSI 3.52",rs-means,Unit,opaque,090053,ft2,1,2,2,0.253,1
84
- 83,"Fibreglass Foil Faced 6 "" RSI 3.7",rs-means,Unit,opaque,090075,ft2,1,1,1,0.23,1
85
- 84,"XPS, 25 PSI, 2"" RSI 1.76 modified to 2 sheets 4"" RSI 3.52",rs-means,Unit,opaque,090053,ft2,1,2,2,0.253,1
86
- 85,"XPS, 25 PSI, 3"" RSI 2.64 modified to 1x 3"" sheet and 1x 2.25"" sheet RSI 4.63",rs-means,Unit,opaque,090042,ft2,1,1.75,2,0.221,1
87
- 86,"Polyurethance foam, 6"" RSI 5.28",rs-means,Unit,opaque,090076,ft2,1,1,1,0.2,1
88
- 87,"asphalt flood coat, gravel base coated glass-fibre sheet and 3 plies glass fibre felt (type IV) mopped on nailable deck",rs-means,Unit,opaque,090077,SQ.,0.01,1,1,0.378,1
89
- 88,"plywood underlayment 0.5"" thick",rs-means,Unit,opaque,080078,ft2,1,1,1,0.225,1
90
- 89,"roof deck extruded polystyrene, 4"" (RSI 3.52), 25 PSI modifed to 1x4"" + 1x1.25"" sheets RSI 4.4",rs-means,Unit,opaque,090079,ft2,1,1.25,2,0.149,1
91
- 90,"Spruce Wood decking, 2 "" thick",rs-means,Unit,opaque,080080,ft2,1,1,1,0.383,1
92
- 91,"roof deck extruded polystyrene, 4"" (RSI 3.52), 25 PSI",rs-means,Unit,opaque,090079,ft2,1,1,1,0.149,1
93
- 92,"Fibreglassboard, 1-5/16 inches thick RSI 0.92",rs-means,Unit,opaque,090081,ft2,1,1,1,0.191,1
94
- 93,"Steel decking, open type galvanized, 1.5"" rib depth, 18 gauge",rs-means,Unit,opaque,070082,ft2,1,1,1,0.179,1
95
- 94,"60 ml Single ply EPDM membrane fully adhered to underlayment, 0.4 lb/ft2 no ballast or aggregate topping",rs-means,Unit,opaque,090083,SQ.,0.01,1,1,0.29,1
96
- 95,"Zinc Steel roofing, 28 gauge, .020"" thick, 115 lb/ft2",rs-means,Unit,opaque,090084,SQ.,0.01,1,1,0.208,1
97
- 96,"Asphalt felt, #15",rs-means,Unit,opaque,090085,ft2,1,1,1,0.538,1
98
- 97,Plywood underlayment 0.75' thick,rs-means,Unit,opaque,080086,ft2,1,1,1,0.215,1
99
- 98,"Premium shingles, Class A, 300-385 lbs/ft2, pneumatic nailer",rs-means,Unit,opaque,090087,SQ.,0.01,1,1,0.3,1
100
- 99,"9.5"" thick fibreglass, kraft coated ceiling insulation, 15"" wide blanket (RSI 5.28)",rs-means,Unit,opaque,090088,ft2,1,1,1,0.36,1
101
- 100,"Isoboard, 1.5 in thick RSI 1.48",rs-means,Unit,opaque,090089,ft2,1,1,1,0.238,1
102
- 101,"12"" thick fibreglass, kraft coated ceiling insulation, 15"" wide blanket (RSI 6.69)",rs-means,Unit,opaque,090090,ft2,1,1,1,0.312,1
103
- 102,"roof deck extruded polystyrene, 4"" (RSI 3.52), 25 PSI modifed to 1x4"" + 1x2"" sheets RSI 5.28",rs-means,Unit,opaque,090079,ft2,1,1.5,2,0.149,1
104
- 103,"Isoboard, 0.75 in thick RSI .72",rs-means,Unit,opaque,090091,ft2,1,1,1,0.27,1
105
- 104,"18"" thick fibreglass blown ceiling (RSI 7.9) ",rs-means,Unit,opaque,090092,ft2,1,1.2,1,0.305,1
106
- 105,"16"" thick fibreglass blown ceiling (RSI 6.7)",rs-means,Unit,opaque,090092,ft2,1,1,1,0.305,1
107
- 106,"roof deck extruded polystyrene, 4"" (RSI 3.52), 25 PSI modifed to 2x4"" sheets RSI 7.04",rs-means,Unit,opaque,090079,ft2,1,2,2,0.149,1
108
- 107,"20"" thick fibreglass blown ceiling (RSI 8.63)",rs-means,Unit,opaque,090093,ft2,1,1,1,0.31,1
109
- 108,gypsum wallboard 0.5 in thick,rs-means,Unit,opaque,110017,ft2,1,1,1,,1
110
- 109,"Roof Insulation fastening, 4"" screws",rs-means,Unit,opaque,090094,Ea.,1,1,1,0,1
111
- 110,"C.I.P. forms elevated slab floor hung from steel beams, including shoring, erection, bracing",rs-means,Unit,opaque,020095,ft2,1,1,1,0,1
112
- 111,"C.I.P. forms elevated slab edge forms, including shoring, erection, bracing",rs-means,Unit,opaque,020096,SFCA,0.2,1,1,0,1
113
- 112,"Reinforcing steel for elevated slabs and ceilings/roofa, grade 60, all assembly and accessories",rs-means,Unit,opaque,020097,ton,0.001275,1,1,0,1
114
- 113,"Structural concrete, 3000 PSI, complete delivered and pum,ped in place",rs-means,Unit,opaque,020049,yd3,0.0231,1,1,0,1
115
- 114,"Concrete surface treatment, curing, sprayed membrane compound",rs-means,Unit,opaque,020050,C.S.F.,0.01,1,1,0,1
116
- 115,"Sprayed fireproofing, vermiculite cement, 0.25""",rs-means,Unit,opaque,090098,ft2,1,1,1,0.177,1
117
- 116,"Roof Insulation fastening, 4"" screws modifed to 8"" screws",rs-means,Assembly,opaque,250099,Ea.,1,2,1,0,1
118
- 117,"Floor system, light gauge (14 ga.) galvanized steel, ""C"" type joists, 10"" deep, 24"" spacing, 15' span, 116 PSF total load",rs-means,Unit,opaque,070100,LF,0.22,1,1,0,1
119
- 118,"3/4"" thick CDX plywood subfloor, pneumatic nailed",rs-means,Unit,opaque,080101,ft2,1,1,1,0.27,1
120
- 119,"Steel siding, bevelled with vinyl finish, 10"" width",rs-means,Unit,opaque,090102,ft2,1,1,1,0.31,1
121
- 120,"Floor system, 2""x10"" joists, 24"" spacing, 116 PSF total load",rs-means,Unit,opaque,080103,MBF,0.00091,1,1,0,1
122
- 121,"Isoboard, 1.5 "" 4 x 8 sheet, foil faced (RSI 1.28)",rs-means,Unit,opaque,090065,ft2,1,1,1,0.34,1
123
- 122,"6"" sprayed polyurethane foam (RSI 6.86) modifed to 9"" foaming RSI 10.3",rs-means,Unit,opaque,090076,ft2,1,1.5,1.25,0.21,1.25
124
- 123,"Concrete forms, wooden, erecting, bracing, stripping, cleaning",rs-means,Unit,opaque,020045,LF,0.03,1,1,0,1
125
- 124,"Expansion joint, premolded bituminous fiber",rs-means,Unit,opaque,020104,LF,0.22,1,1,0,1
126
- 125,"Welded wire, 6 x 6 sheets, 30 lbs/ft2",rs-means,Unit,opaque,020105,CSF,0.012,1,1,0,1
127
- 126,"Structural concrete, ready mix 3500 psi, local aggregate, Type 1 Portland cement, no additives",rs-means,Unit,opaque,020106,yd3,0.019,1,1,0,1
128
- 127,"Structural concrete, placing, slab on grade, direct chute, over 6\"" thick, includes leveling ",rs-means,Unit,opaque,020107,yd3,0.019,1,1,0,1
129
- 128,"Concrete finishing, specified Random Access Floors ACI Classes 1, 2, 3 & 4",rs-means,Unit,opaque,020108,ft2,1,1,1,0,1
130
- 129,"Concrete surface treatment, sprayed membrane",rs-means,Unit,opaque,020050,CSF,0.01,1,1,0,1
131
- 130,"Vapur barrier, polyethylene 6 mil",rs-means,Unit,opaque,090109,SQ,0.01,1,1,0,1
132
- 131,"Fine grading, finish grading, small area, to be paved with grader",rs-means,Unit,opaque,200110,SY,0.11,1,1,0,1
133
- 132,"Fill, gravel fill, compacted, under floor slabs, 4\"" deep",rs-means,Unit,opaque,200111,ft2,1,1,1,0,1
134
- 133,"Isoboard, 38 mm RSI 1.44",rs-means,Unit,opaque,090089,ft2,1,1,1,0.237,1
135
- 134,"XPS, 3"" 2.64",rs-means,Unit,opaque,090112,ft2,1,1,1,0.18,1
136
- 135,"Concrete finishing, fresh concrete flatwork, floors, basic finishing for unspecified flatwork",rs-means,Unit,opaque,020113,ft2,1.5,1,1,0,1
137
- 136,"Washing brick, smooth brick, acid wash",rs-means,Unit,opaque,060114,ft2,1,1,1,0,1
138
- 137,"Structural concrete, placing, slab on grade, direct chute, up to 6\"" thick, includes leveling ",rs-means,Unit,opaque,020115,yd3,0.025,1,1,0,1
139
- 138,"Wood framing, partitions, standard & better lumber, 2\"" x 6\"" studs, 16\"" O.C., 10' high, includes single bottom plate and double top plate",rs-means,Unit,opaque,080116,LF,0.1,1,1,0,1
140
- 139,"Sheet metal flashing, aluminum, flexible, mill finish, .019\"" thick, including up to 4 bends",rs-means,Unit,opaque,090117,ft2,0.1,1,1,0,1
141
- 140,"Pre-formed joint seals, backer rod, polyethylene, 1/4\"" dia""",rs-means,Unit,opaque,090118,CLF,0.001,1,1,0,1
142
- 141,"Joint sealants, caulking and sealants, butyl based, bulk, 1/4\"" x 1/2\""",rs-means,Unit,opaque,090119,LF,0.125,1,1,0,1
143
- 142,"Structural concrete, placing, walls, pumped, 8\"" thick, includes leveling (strike off) & consolidation",rs-means,Unit,opaque,020120,yd3,0.018,1,1,0,1
144
- 143,"Concrete finishing, specified Random Access Floors ACI Classes 1, 2, 3 & 4,",rs-means,Unit,opaque,020108,ft2,1,1,1,0,1
145
- 144,"Structural concrete, placing, elevated slab, pumped, 6\"" to 10\"" thick, includes leveling (strike off) & consolidation",rs-means,Unit,opaque,020121,yd3,0.625,1,1,0,1
146
- 145,Installation of 14 gauge steel floor joist to beams/headers,rs-means,Unit,opaque,070122,Ea.,0.3,1,1,0,1
147
- 146,"Metal Door 20 gauge, includes hardware",rs-means,Unit,opaque,100123,Ea.,0.0476,1,1,0,1
148
- 147,"Aluminum Commercial Entrance pair of 2'-6"" x 7'-0"" includes hardware",rs-means,Unit,opaque,100124,Ea.,0.02857,1,1,0,1
149
- 148,"Fibreglass Door, 3'-0"" x 7'-0', includes hardware",rs-means,Unit,opaque,100125,Ea.,0.0476,1,1,0,1
150
- 149,"Steel Overhead Rolling Door, 10'-0 x 10'-0' includes hardware",rs-means,Unit,opaque,100126,Ea.,0.01,1,1,0,1
151
- 150,"XPS, 25 PSI, 1"" RSI 0.88",rs-means,Unit,opaque,090127,ft2,1,1,1,0,1
152
- 151,"XPS, 25 PSI, 1"" RSI 0.88 modifed to 1.5"" sheet RSI 1.32",rs-means,Unit,opaque,090127,ft2,1,1.5,1,0.253,1
153
- 152,"Isoboard, 1"" RSI 1.94 modified to 2"" RSI 3.88",rs-means,Unit,opaque,090128,ft2,1,2,1,0.237,1
154
- 153,"Fibreglasboard 1"" RSI 0.69",rs-means,Unit,opaque,090129,ft2,1,1,1,0,1
155
- 154,10 inch fibreglass insulation RSI 5.86,rs-means,Unit,opaque,090088,ft2,1,1.05,1,0.36,1
156
- 155,"Fibreglass Foil Faced 6 "" RSI 3.7 batts, 2 batts installed, modifed to 2 6"" batts back to back RSI 7.4",rs-means,Unit,opaque,090075,ft2,1,2,2,0.23,1
157
- 156,concrete cutting through wall per inch of thickness,rs-means,Unit,opaque,020130,LF,1,1,1,1,1
158
- 157,"galvanized LB studs, 16 ga x 6\"" W studs 16\"" O.C. x 10' H, incl galvanized top & bottom track, excl openings, headers, beams, bracing & bridging",rs-means,Unit,opaque,070131,LF,0.1,1,1,0,1
159
- 158,"XPS, 3/4"" RSI 0.501",rs-means,Unit,opaque,080132,ft2,1,1,1,0,1
160
- 159,"fibreglass batts, 6 in thick RSI 3.7",rs-means,Unit,opaque,090020,ft2,1,1,1,0.234,1
161
- 160,"Fibreglass Foil Faced 6 "" RSI 3.7 batts",rs-means,Unit,opaque,090075,ft2,1,1,1,1,1
162
- 161,"Kraft faced fiberglass, 3-1/2"" thick, 23"" wide, RSI1.93",rs-means,Unit,opaque,090133,ft2,1,1,1,1,1
163
- 162,"Kraft faced fiberglass, 3-1/2"" thick, 23"" wide, RSI2.29",rs-means,Unit,opaque,090134,ft2,1,1,1,1,1
164
- 163,"Polyurethane Foam 4.5"" thick, RSI5.72",rs-means,Unit,opaque,090066,ft2,1,1,1,1,1
@@ -1,359 +0,0 @@
1
- module BTAPMeasureHelper
2
- ###################Helper functions
3
-
4
- # define the arguments that the user will input
5
- def arguments(model)
6
- args = OpenStudio::Measure::OSArgumentVector.new
7
-
8
- if true == @use_json_package
9
- #Set up package version of input.
10
- json_default = {}
11
- @measure_interface_detailed.each do |argument|
12
- json_default[argument['name']] = argument["default_value"]
13
- end
14
- default = JSON.pretty_generate(json_default)
15
- arg = OpenStudio::Ruleset::OSArgument.makeStringArgument('json_input', true)
16
- arg.setDisplayName('Contains a json version of the input as a single package.')
17
- arg.setDefaultValue(default)
18
- args << arg
19
- else
20
- # Conductances for all surfaces and subsurfaces.
21
- @measure_interface_detailed.each do |argument|
22
- arg = nil
23
- statement = nil
24
- case argument['type']
25
- when "String"
26
- arg = OpenStudio::Ruleset::OSArgument.makeStringArgument(argument['name'], argument['is_required'])
27
- arg.setDisplayName(argument['display_name'])
28
- arg.setDefaultValue(argument['default_value'].to_s)
29
-
30
- when "Double"
31
- arg = OpenStudio::Ruleset::OSArgument.makeDoubleArgument(argument['name'], argument['is_required'])
32
- arg.setDisplayName("#{argument['display_name']}")
33
- arg.setDefaultValue("#{argument['default_value']}".to_f)
34
-
35
- when "Choice"
36
- arg = OpenStudio::Measure::OSArgument.makeChoiceArgument(argument['name'], argument['choices'], argument['is_required'])
37
- arg.setDisplayName(argument['display_name'])
38
- arg.setDefaultValue(argument['default_value'].to_s)
39
- puts arg.defaultValueAsString
40
-
41
- when "Bool"
42
- arg = OpenStudio::Measure::OSArgument.makeBoolArgument(argument['name'], argument['is_required'])
43
- arg.setDisplayName(argument['display_name'])
44
- arg.setDefaultValue(argument['default_value'])
45
-
46
-
47
- when "StringDouble"
48
- if @use_string_double == false
49
- arg = OpenStudio::Ruleset::OSArgument.makeDoubleArgument(argument['name'], argument['is_required'])
50
- arg.setDefaultValue(argument['default_value'].to_f)
51
- else
52
- arg = OpenStudio::Ruleset::OSArgument.makeStringArgument(argument['name'], argument['is_required'])
53
- arg.setDefaultValue(argument['default_value'].to_s)
54
- end
55
- arg.setDisplayName(argument['display_name'])
56
- end
57
- args << arg
58
- end
59
- end
60
- return args
61
- end
62
-
63
- #returns a hash of the user inputs for you to use in your measure.
64
- def get_hash_of_arguments(user_arguments, runner)
65
- values = {}
66
- if @use_json_package
67
- return JSON.parse(runner.getStringArgumentValue('json_input', user_arguments))
68
- else
69
-
70
- @measure_interface_detailed.each do |argument|
71
-
72
- case argument['type']
73
- when "String", "Choice"
74
- values[argument['name']] = runner.getStringArgumentValue(argument['name'], user_arguments)
75
- when "Double"
76
- values[argument['name']] = runner.getDoubleArgumentValue(argument['name'], user_arguments)
77
- when "Bool"
78
- values[argument['name']] = runner.getBoolArgumentValue(argument['name'], user_arguments)
79
- when "StringDouble"
80
- value = nil
81
- if @use_string_double == false
82
- value = (runner.getDoubleArgumentValue(argument['name'], user_arguments).to_f)
83
- else
84
- value = runner.getStringArgumentValue(argument['name'], user_arguments)
85
- if valid_float?(value)
86
- value = value.to_f
87
- end
88
- end
89
- values[argument['name']] = value
90
- end
91
- end
92
- end
93
- return values
94
- end
95
-
96
- # boilerplate that validated ranges of inputs.
97
- def validate_and_get_arguments_in_hash(model, runner, user_arguments)
98
- return_value = true
99
- values = get_hash_of_arguments(user_arguments, runner)
100
- # use the built-in error checking
101
- if !runner.validateUserArguments(arguments(model), user_arguments)
102
- runner_register(runner, 'Error', "validateUserArguments failed... Check the argument definition for errors.")
103
- return_value = false
104
- end
105
-
106
- # Validate arguments
107
- errors = ""
108
- @measure_interface_detailed.each do |argument|
109
- case argument['type']
110
- when "Double"
111
- value = values[argument['name']]
112
- if (not argument["max_double_value"].nil? and value.to_f > argument["max_double_value"].to_f) or
113
- (not argument["min_double_value"].nil? and value.to_f < argument["min_double_value"].to_f)
114
- error = "#{argument['name']} must be between #{argument["min_double_value"]} and #{argument["max_double_value"]}. You entered #{value.to_f} for this #{argument['name']}.\n Please enter a value withing the expected range.\n"
115
- errors << error
116
- end
117
- when "StringDouble"
118
- value = values[argument['name']]
119
- if (not argument["valid_strings"].include?(value)) and (not valid_float?(value))
120
- error = "#{argument['name']} must be a string that can be converted to a float, or one of these #{argument["valid_strings"]}. You have entered #{value}\n"
121
- errors << error
122
- elsif (not argument["max_double_value"].nil? and value.to_f > argument["max_double_value"]) or
123
- (not argument["min_double_value"].nil? and value.to_f < argument["min_double_value"])
124
- error = "#{argument['name']} must be between #{argument["min_double_value"]} and #{argument["max_double_value"]}. You entered #{value} for #{argument['name']}. Please enter a stringdouble value in the expected range.\n"
125
- errors << error
126
- end
127
- end
128
- end
129
- #If any errors return false, else return the hash of argument values for user to use in measure.
130
- if errors != ""
131
- runner.registerError(errors)
132
- return false
133
- end
134
- return values
135
- end
136
-
137
- # Helper method to see if str is a valid float.
138
- def valid_float?(str)
139
- !!Float(str) rescue false
140
- end
141
-
142
- end
143
-
144
- module BTAPMeasureTestHelper
145
- ##### Helper methods Do notouch unless you know the consequences.
146
-
147
- #Boiler plate to default values and number of arguments against what is in your test's setup method.
148
- def test_arguments_and_defaults
149
- [true, false].each do |json_input|
150
- [true, false].each do |string_double|
151
- @use_json_package = json_input
152
- @use_string_double = string_double
153
-
154
- # Create an instance of the measure
155
- measure = get_measure_object()
156
- measure.use_json_package = @use_json_package
157
- measure.use_string_double = @use_string_double
158
- model = OpenStudio::Model::Model.new
159
-
160
- # Create an instance of a runner
161
- runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
162
-
163
- # Test arguments and defaults
164
- arguments = measure.arguments(model)
165
- #convert whatever the input was into a hash. Then test.
166
-
167
- #check number of arguments.
168
- if @use_json_package
169
- assert_equal(@measure_interface_detailed.size, JSON.parse(arguments[0].defaultValueAsString).size, "The measure should have #{@measure_interface_detailed.size} but actually has #{arguments.size}. Here the the arguement expected #{@measure_interface_detailed} and this is the actual #{arguments}")
170
- else
171
- assert_equal(@measure_interface_detailed.size, arguments.size, "The measure should have #{@measure_interface_detailed.size} but actually has #{arguments.size}. Here the the arguement expected #{@measure_interface_detailed} and this is the actual #{arguments}")
172
- (@measure_interface_detailed).each_with_index do |argument_expected, index|
173
- assert_equal(argument_expected['name'], arguments[index].name, "Measure argument name of #{argument_expected['name']} was expected, but got #{arguments[index].name} instead.")
174
- assert_equal(argument_expected['display_name'], arguments[index].displayName, "Display name for argument #{argument_expected['name']} was expected to be #{argument_expected['display_name']}, but got #{arguments[index].displayName} instead.")
175
- case argument_type(arguments[index])
176
- when "String", "Choice"
177
- assert_equal(argument_expected['default_value'].to_s, arguments[index].defaultValueAsString, "The default value for argument #{argument_expected['name']} was #{argument_expected['default_value']}, but actual was #{arguments[index].defaultValueAsString}")
178
- when "Double", "Integer"
179
- assert_equal(argument_expected['default_value'].to_f, arguments[index].defaultValueAsDouble.to_f, "The default value for argument #{argument_expected['name']} was #{argument_expected['default_value']}, but actual was #{arguments[index].defaultValueAsString}")
180
- when "Bool"
181
- assert_equal(argument_expected['default_value'], arguments[index].defaultValueAsBool, "The default value for argument #{argument_expected['name']} was #{argument_expected['default_value']}, but actual was #{arguments[index].defaultValueAsString}")
182
- end
183
- end
184
- end
185
- end
186
- end
187
- end
188
-
189
- # Test argument ranges.
190
- def test_argument_ranges
191
- [true, false].each do |json_input|
192
- [true, false].each do |string_double|
193
- @use_json_package = json_input
194
- @use_string_double = string_double
195
- (@measure_interface_detailed).each_with_index do |argument|
196
- if argument['type'] == 'Double' or argument['type'] == 'StringDouble'
197
- puts "testing range for #{argument['name']} "
198
- #Check over max
199
- if not argument['max_double_value'].nil?
200
- puts "testing max limit"
201
- model = OpenStudio::Model::Model.new
202
- input_arguments = @good_input_arguments.clone
203
- over_max_value = argument['max_double_value'].to_f + 1.0
204
- over_max_value = over_max_value.to_s if argument['type'].downcase == "StringDouble".downcase
205
- input_arguments[argument['name']] = over_max_value
206
- puts "Testing argument #{argument['name']} max limit of #{argument['max_double_value']}"
207
- input_arguments = {'json_input' => JSON.pretty_generate(input_arguments)} if @use_json_package
208
- run_measure(input_arguments, model)
209
- runner = run_measure(input_arguments, model)
210
- assert(runner.result.value.valueName != 'Success', "Checks did not stop a lower than limit value of #{over_max_value} for #{argument['name']}")
211
- puts "Success: Testing argument #{argument['name']} max limit of #{argument['max_double_value']}"
212
- end
213
- #Check over max
214
- if not argument['min_double_value'].nil?
215
- puts "testing min limit"
216
- model = OpenStudio::Model::Model.new
217
- input_arguments = @good_input_arguments.clone
218
- over_min_value = argument['min_double_value'].to_f - 1.0
219
- over_min_value = over_max_value.to_s if argument['type'].downcase == "StringDouble".downcase
220
- input_arguments[argument['name']] = over_min_value
221
- puts "Testing argument #{argument['name']} min limit of #{argument['min_double_value']}"
222
- input_arguments = {'json_input' => JSON.pretty_generate(input_arguments)} if @use_json_package
223
- runner = run_measure(input_arguments, model)
224
- assert(runner.result.value.valueName != 'Success', "Checks did not stop a lower than limit value of #{over_min_value} for #{argument['name']}")
225
- puts "Success:Testing argument #{argument['name']} min limit of #{argument['min_double_value']}"
226
- end
227
-
228
- end
229
- if (argument['type'] == 'StringDouble') and (not argument["valid_strings"].nil?) and @use_string_double
230
- model = OpenStudio::Model::Model.new
231
- input_arguments = @good_input_arguments.clone
232
- input_arguments[argument['name']] = SecureRandom.uuid.to_s
233
- puts "Testing argument #{argument['name']} min limit of #{argument['min_double_value']}"
234
- input_arguments = {'json_input' => JSON.pretty_generate(input_arguments)} if @use_json_package
235
- runner = run_measure(input_arguments, model)
236
- assert(runner.result.value.valueName != 'Success', "Checks did not stop a lower than limit value of #{over_min_value} for #{argument['name']}")
237
- end
238
- end
239
- end
240
- end
241
- end
242
-
243
- # helper method to create necb archetype as a starting point for testing.
244
- def create_necb_protype_model(building_type, climate_zone, epw_file, template)
245
-
246
- osm_directory = "#{Dir.pwd}/output/#{building_type}-#{template}-#{climate_zone}-#{epw_file}"
247
- FileUtils.mkdir_p (osm_directory) unless Dir.exist?(osm_directory)
248
- #Get Weather climate zone from lookup
249
- weather = BTAP::Environment::WeatherFile.new(epw_file)
250
- #create model
251
- building_name = "#{template}_#{building_type}"
252
-
253
- prototype_creator = Standard.build(template)
254
- model = prototype_creator.model_create_prototype_model(
255
- epw_file: epw_file,
256
- sizing_run_dir: osm_directory,
257
- debug: @debug,
258
- template: template,
259
- building_type: building_type)
260
-
261
- #set weather file to epw_file passed to model.
262
- weather.set_weather_file(model)
263
- return model
264
- end
265
-
266
- # Custom way to run the measure in the test.
267
- def run_measure(input_arguments, model)
268
-
269
- # This will create a instance of the measure you wish to test. It does this based on the test class name.
270
- measure = get_measure_object()
271
- measure.use_json_package = @use_json_package
272
- measure.use_string_double = @use_string_double
273
- # Return false if can't
274
- return false if false == measure
275
- arguments = measure.arguments(model)
276
- argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)
277
- runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
278
- #Check if
279
-
280
- # Set the arguements in the argument map use json or real arguments.
281
- if @use_json_package
282
- argument = arguments[0].clone
283
- assert(argument.setValue(input_arguments['json_input']), "Could not set value for 'json_input' to #{input_arguments['json_input']}")
284
- argument_map['json_input'] = argument
285
- else
286
- input_arguments.each_with_index do |(key, value), index|
287
- argument = arguments[index].clone
288
- if argument_type(argument) == "Double"
289
- #forces it to a double if it is a double.
290
- assert(argument.setValue(value.to_f), "Could not set value for #{key} to #{value}")
291
- else
292
- assert(argument.setValue(value.to_s), "Could not set value for #{key} to #{value}")
293
- end
294
- argument_map[key] = argument
295
- end
296
- end
297
- #run the measure
298
- measure.run(model, runner, argument_map)
299
- runner.result
300
- return runner
301
- end
302
-
303
-
304
- #Fancy way of getting the measure object automatically.
305
- def get_measure_object()
306
- measure_class_name = self.class.name.to_s.match(/(BTAP.*)(\_Test)/i).captures[0]
307
- measure = nil
308
- eval "measure = #{measure_class_name}.new"
309
- if measure.nil?
310
- puts "Measure class #{measure_class_name} is invalid. Please ensure the test class name is of the form 'MeasureName_Test' "
311
- return false
312
- end
313
- return measure
314
- end
315
-
316
- #Determines the OS argument type dynamically.
317
- def argument_type(argument)
318
- case argument.type.value
319
- when 0
320
- return "Bool"
321
- when 1 #Double
322
- return "Double"
323
- when 2 #Quantity
324
- return "Quantity"
325
- when 3 #Integer
326
- return "Integer"
327
- when 4
328
- return "String"
329
- when 5 #Choice
330
- return "Choice"
331
- when 6 #Path
332
- return "Path"
333
- when 7 #Separator
334
- return "Separator"
335
- else
336
- return "Blah"
337
- end
338
- end
339
-
340
- # Valid float helper.
341
- def valid_float?(str)
342
- !!Float(str) rescue false
343
- end
344
-
345
- #Method does a deep copy of a model.
346
- def copy_model(model)
347
- copy_model = OpenStudio::Model::Model.new
348
- # remove existing objects from model
349
- handles = OpenStudio::UUIDVector.new
350
- copy_model.objects.each do |obj|
351
- handles << obj.handle
352
- end
353
- copy_model.removeObjects(handles)
354
- # put contents of new_model into model_to_replace
355
- copy_model.addObjects(model.toIdfFile.objects)
356
- return copy_model
357
- end
358
-
359
- end