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.
- checksums.yaml +4 -4
- data/data/standards/test_performance_expected_dd_results.csv +90 -90
- data/lib/openstudio-standards/btap/activity.rb +858 -61
- data/lib/openstudio-standards/btap/attributes.rb +297 -103
- data/lib/openstudio-standards/btap/bridging.rb +1335 -593
- data/lib/openstudio-standards/btap/btap.rb +60 -181
- data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +199 -142
- data/lib/openstudio-standards/btap/common/constructions.json +1275 -0
- data/lib/openstudio-standards/btap/common/costs.csv +1969 -0
- data/lib/openstudio-standards/btap/common/costs_local_factors.csv +2315 -0
- data/lib/openstudio-standards/btap/common/materials_glazing.csv +61 -0
- data/lib/openstudio-standards/btap/{common_resources → common}/materials_hvac.csv +1685 -1685
- data/lib/openstudio-standards/btap/{common_resources → common}/materials_lighting.csv +266 -266
- data/lib/openstudio-standards/btap/common/materials_opaque.csv +214 -0
- data/lib/openstudio-standards/btap/common/necb_building_types.csv +35 -0
- data/lib/openstudio-standards/btap/common/necb_space_types.csv +110 -0
- data/lib/openstudio-standards/btap/common/thermal_bridging.csv +73 -0
- data/lib/openstudio-standards/btap/costing/btap_costing.rb +346 -429
- data/lib/openstudio-standards/btap/costing/database.rb +104 -0
- data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +356 -344
- data/lib/openstudio-standards/btap/costing/dcv_costing.rb +282 -296
- data/lib/openstudio-standards/btap/costing/envelope_costing.rb +179 -192
- data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +2477 -2316
- data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +127 -142
- data/lib/openstudio-standards/btap/costing/lighting_costing.rb +216 -198
- data/lib/openstudio-standards/btap/costing/nv_costing.rb +522 -523
- data/lib/openstudio-standards/btap/costing/pv_ground_costing.rb +649 -649
- data/lib/openstudio-standards/btap/costing/shw_costing.rb +626 -625
- data/lib/openstudio-standards/btap/costing/thermal_bridging_costing.rb +72 -0
- data/lib/openstudio-standards/btap/costing/ventilation_costing.rb +2363 -2361
- data/lib/openstudio-standards/btap/deprecated.rb +1033 -0
- data/lib/openstudio-standards/btap/envelope.rb +313 -572
- data/lib/openstudio-standards/btap/fileio.rb +152 -1070
- data/lib/openstudio-standards/btap/geometry.rb +486 -766
- data/lib/openstudio-standards/btap/linear_regression.rb +130 -0
- data/lib/openstudio-standards/btap/paths.rb +46 -0
- data/lib/openstudio-standards/btap/qaqc/analysis.rb +163 -0
- data/lib/openstudio-standards/btap/qaqc/data.rb +2293 -0
- data/lib/openstudio-standards/btap/qaqc/datapoint.rb +641 -0
- data/lib/openstudio-standards/btap/schedules.rb +11 -611
- data/lib/openstudio-standards/btap/structure.rb +574 -189
- data/lib/openstudio-standards/constructions/materials/information.rb +1 -1
- data/lib/openstudio-standards/create_typical/create_typical.rb +1 -1
- data/lib/openstudio-standards/exterior_lighting/create.rb +135 -85
- data/lib/openstudio-standards/exterior_lighting/data/typical_exterior_lighting.json +20 -0
- data/lib/openstudio-standards/exterior_lighting/information.rb +23 -2
- data/lib/openstudio-standards/geometry/create.rb +7 -3
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +3 -2
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +3 -2
- data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +84 -84
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +4 -4
- data/lib/openstudio-standards/refrigeration/create_walkin.rb +45 -5
- data/lib/openstudio-standards/refrigeration/data/refrigerated_walkins.csv +75 -75
- data/lib/openstudio-standards/schedules/parametric.rb +6 -0
- data/lib/openstudio-standards/service_water_heating/create_typical.rb +10 -3
- data/lib/openstudio-standards/service_water_heating/create_water_heating_loop.rb +30 -14
- data/lib/openstudio-standards/service_water_heating/information.rb +4 -1
- data/lib/openstudio-standards/sql_file/unmet_hours.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +3 -1
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +3 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.boilers.json +12 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +18432 -3072
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.boilers.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +8532 -1422
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.boilers.json +26 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +8532 -1422
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.boilers.json +16 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.computer_room_acs.json +30 -30
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +7560 -1260
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +1 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.boilers.json +16 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_properties.json +7560 -1260
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +1 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.boilers.json +22 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_properties.json +7236 -1206
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.furnaces.json +223 -19
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +37 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.boilers.json +3 -0
- 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
- data/lib/openstudio-standards/standards/cbes/data/cbes.schedules.json +1 -1
- data/lib/openstudio-standards/standards/deer/data/deer.schedules.json +1 -1
- data/lib/openstudio-standards/standards/necb/BTAP1980TO2010/data/surface_thermal_transmittance.json +76 -40
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/data/surface_thermal_transmittance.json +76 -40
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +6 -4
- data/lib/openstudio-standards/standards/necb/NECB2011/NECB2011_QAQC.json +2988 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +25 -3
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +672 -534
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Hospital.osm +1791 -1792
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LEEPMultiTower.osm +7 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LEEPTownHouse.osm +7 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LargeHotel.osm +5 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LargeOffice.osm +8 -9
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernEducation.osm +10 -4
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/NorthernHealthCare.osm +14 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/Outpatient.osm +7 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/surface_thermal_transmittance.json +76 -40
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +14 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +542 -130
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +30 -63
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +7 -2
- data/lib/openstudio-standards/standards/necb/NECB2015/data/surface_thermal_transmittance.json +90 -0
- data/lib/openstudio-standards/standards/necb/NECB2015/necb_2015.rb +8 -6
- data/lib/openstudio-standards/standards/necb/NECB2017/data/surface_thermal_transmittance.json +76 -40
- data/lib/openstudio-standards/standards/necb/NECB2017/necb_2017.rb +2 -1
- data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +0 -117
- data/lib/openstudio-standards/standards/necb/NECB2020/data/surface_thermal_transmittance.json +76 -45
- data/lib/openstudio-standards/standards/necb/NECB2020/necb_2020.rb +218 -0
- data/lib/openstudio-standards/standards/necb/common/construction_defaults.osm +12 -7
- data/lib/openstudio-standards/standards/standard.rb +1 -1
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards.rb +9 -4
- metadata +59 -66
- data/data/inventory/thermal_bridging.csv +0 -90
- data/data/standards/OpenStudio_Standards-ashrae_90_1-ALL-comstock(space_types).xlsx +0 -0
- data/data/standards/openstudio_standards_duplicates_log.csv +0 -7962
- data/lib/openstudio-standards/btap/NECB_building_types.csv +0 -35
- data/lib/openstudio-standards/btap/NECB_space_types.csv +0 -109
- data/lib/openstudio-standards/btap/WeatherData1.json +0 -2110
- data/lib/openstudio-standards/btap/WeatherData1.xlsx +0 -0
- data/lib/openstudio-standards/btap/btap_result.rb +0 -1144
- data/lib/openstudio-standards/btap/btap_test_helper.rb +0 -86
- data/lib/openstudio-standards/btap/common_paths.rb +0 -81
- data/lib/openstudio-standards/btap/common_resources/ConstructionProperties.csv +0 -52
- data/lib/openstudio-standards/btap/common_resources/Constructions.csv +0 -37
- data/lib/openstudio-standards/btap/common_resources/construction_sets.csv +0 -1270
- data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +0 -121
- data/lib/openstudio-standards/btap/common_resources/constructions_opaque.csv +0 -2256
- data/lib/openstudio-standards/btap/common_resources/costs.csv +0 -1897
- data/lib/openstudio-standards/btap/common_resources/costs_local_factors.csv +0 -2315
- data/lib/openstudio-standards/btap/common_resources/materials_glazing.csv +0 -35
- data/lib/openstudio-standards/btap/common_resources/materials_opaque.csv +0 -164
- data/lib/openstudio-standards/btap/costing/btap_measure_helper.rb +0 -359
- data/lib/openstudio-standards/btap/costing/btap_workflow.rb +0 -117
- data/lib/openstudio-standards/btap/costing/copy_test_results_files_to_expected_results.rb +0 -11
- data/lib/openstudio-standards/btap/costing/cost_building_from_file.rb +0 -136
- data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +0 -173
- data/lib/openstudio-standards/btap/costing/dummy.epw +0 -8768
- data/lib/openstudio-standards/btap/costing/dummy.osm +0 -5320
- data/lib/openstudio-standards/btap/costing/neb_end_use_prices.csv +0 -42
- data/lib/openstudio-standards/btap/costing/necb_2011_spacetype_info.csv +0 -225
- data/lib/openstudio-standards/btap/costing/necb_reference_runs.csv +0 -28705
- data/lib/openstudio-standards/btap/costing/parallel_tests.rb +0 -92
- data/lib/openstudio-standards/btap/costing/test_list.txt +0 -15
- data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +0 -27
- data/lib/openstudio-standards/btap/costing/test_run_costing_tests.rb +0 -80
- data/lib/openstudio-standards/btap/necb_2011_spacetype_info.csv +0 -225
- data/lib/openstudio-standards/btap/utilities/Add_template_field_to_json.rb +0 -22
- data/lib/openstudio-standards/btap/utilities/convert_surfaces_to_adiabatic_necb_8426.rb +0 -204
- data/lib/openstudio-standards/btap/utilities/generate_space_types.rb +0 -8
- data/lib/openstudio-standards/btap/utilities/necb_to_epw_map.rb +0 -50
- data/lib/openstudio-standards/btap/utilities/os_sim_extract.rb +0 -48
- data/lib/openstudio-standards/btap/utilities/rename_surfaces.rb +0 -24
- data/lib/openstudio-standards/btap/utilities/round_surf_coords.rb +0 -32
- data/lib/openstudio-standards/btap/utilities/sched_create.rb +0 -145
- data/lib/openstudio-standards/btap/utilities/set_mult_to_adiabatic.rb +0 -53
- data/lib/openstudio-standards/btap/utilities/space_type.rb +0 -78
- data/lib/openstudio-standards/btap/utilities/weatherData1_xlsx_to_json.rb +0 -56
- data/lib/openstudio-standards/btap/vintagizer.rb +0 -161
- data/lib/openstudio-standards/btap/visualization.rb +0 -72
- data/lib/openstudio-standards/standards/necb/NECB2011/data/necb_2011_spacetype_info.csv +0 -225
- data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +0 -79
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +0 -2656
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +0 -653
- data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +0 -28705
- data/lib/openstudio-standards/standards/necb/common/utility_pricing_2025-02-20.csv +0 -92
- /data/lib/openstudio-standards/btap/{common_resources → common}/carbon_frame.csv +0 -0
- /data/lib/openstudio-standards/btap/{common_resources → common}/carbon_glazing.csv +0 -0
- /data/lib/openstudio-standards/btap/{common_resources → common}/carbon_opaque.csv +0 -0
- /data/lib/openstudio-standards/btap/{common_resources → common}/hvac_vent_ahu.csv +0 -0
- /data/lib/openstudio-standards/btap/{common_resources → common}/lighting.csv +0 -0
- /data/lib/openstudio-standards/btap/{common_resources → common}/lighting_sets.csv +0 -0
- /data/lib/openstudio-standards/btap/{common_resources → common}/locations.csv +0 -0
- /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
|