Module: BTAP::BridgingData
- Included in:
- Bridging
- Defined in:
- lib/openstudio-standards/btap/bridging.rb
Overview
—- —- —- —- —- —- —- —- —- —- —- —- —- —- —- #
Constant Summary collapse
- MASS2 =
— —- —- —- —- —- —- —- —- —- —- —- —- —- — # BTAP costing data (both original BTAP constructions and EVOKE’s additions) hold sub-variants based on cladding/veneer, e.g.:
- "BTAP-ExteriorWall-WoodFramed-5" ... brick veneer - "BTAP-ExteriorWall-WoodFramed-1" ... wood siding
Not all of these sub-variants are currently used within BTAP, e.g. “BTAP-ExteriorWall-WoodFramed-1” is unused. BTAP/TBD data is limited to the following wall constructions (paired LP & HP variants).
—- (Basic) Low Performance (LP) assemblies
ID : (layers) ----- ------------------------------------------ STEL1 : cladding | board | wool | frame | gypsum WOOD5 : brick | board | wool | frame | gypsum MTAL1 : panel | xps | wool | frame | gypsum MASS2 : brick | xps | | cmu | MASS4 : precast | xps | wool | frame | gypsum MASS6 : brick | xps | | cmu |
—- High Performance (HP) variants
ID : (layers) ----- ------------------------------------------ STEL2 : cladding | board | wool | frame | gypsum ... switch from STEL1 WOOD7 : brick | mineral | wool | frame | gypsum ... switch from WOOD5 MTALD : panel | polyiso | foam | frame | gypsum ... switch from MTAL1 MASSB : brick | mineral | cmu | foam | gypsum ... switch from MASS2 MASS8 : precast | xps | wool | frame | gypsum ... switch from MASS4 MASSC : cladding | mineral | cmu | foam | gypsum ... switch from MASS6
Paired LPs & HPs vall variants are critical for ‘uprating’ cases, e.g. NECB2017. See below, and end of this document for additional NOTES.
"BTAP-ExteriorWall-Mass-2"
- MASS2_BAD =
LP wall
"BTAP-ExteriorWall-Mass-2 bad"
- MASS2_GOOD =
LP “bad” PSI factors
"BTAP-ExteriorWall-Mass-2 good"
- MASSB =
LP “good” PSI factors
"BTAP-ExteriorWall-Mass-2b"
- MASSB_BAD =
HP, from @Uo < 0.183
"BTAP-ExteriorWall-Mass-2b bad"
- MASSB_GOOD =
HP “bad” PSI factors
"BTAP-ExteriorWall-Mass-2b good"
- MASS4 =
HP “good” PSI factors
"BTAP-ExteriorWall-Mass-4"
- MASS4_BAD =
"BTAP-ExteriorWall-Mass-4 bad"
- MASS4_GOOD =
"BTAP-ExteriorWall-Mass-4 good"
- MASS8 =
HP, from @Uo < 0.183
"BTAP-ExteriorWall-Mass-8c"
- MASS8_BAD =
"BTAP-ExteriorWall-Mass-8c bad"
- MASS8_GOOD =
"BTAP-ExteriorWall-Mass-8c good"
- MASS6 =
"BTAP-ExteriorWall-Mass-6"
- MASS6_BAD =
"BTAP-ExteriorWall-Mass-6 bad"
- MASS6_GOOD =
"BTAP-ExteriorWall-Mass-6 good"
- MASSC =
HP, from @Uo < 0.247
"BTAP-ExteriorWall-Mass-10c"
- MASSC_BAD =
"BTAP-ExteriorWall-Mass-10c bad"
- MASSC_GOOD =
"BTAP-ExteriorWall-Mass-10c good"
- MTAL1 =
"BTAP-ExteriorWall-Metal-1"
- MTAL1_BAD =
"BTAP-ExteriorWall-Metal-1 bad"
- MTAL1_GOOD =
"BTAP-ExteriorWall-Metal-1 good"
- MTALD =
HP, from @Uo < 0.183
"BTAP-ExteriorWall-Metal-1d"
- MTALD_BAD =
"BTAP-ExteriorWall-Metal-1d bad"
- MTALD_GOOD =
"BTAP-ExteriorWall-Metal-1d good"
- WOOD5 =
"BTAP-ExteriorWall-WoodFramed-5"
- WOOD5_BAD =
"BTAP-ExteriorWall-WoodFramed-5 bad"
- WOOD5_GOOD =
"BTAP-ExteriorWall-WoodFramed-5 good"
- WOOD7 =
HP, from @Uo < 0.183
"BTAP-ExteriorWall-WoodFramed-7"
- WOOD7_BAD =
"BTAP-ExteriorWall-WoodFramed-7 bad"
- WOOD7_GOOD =
"BTAP-ExteriorWall-WoodFramed-7 good"
- STEL1 =
"BTAP-ExteriorWall-SteelFramed-1"
- STEL1_BAD =
"BTAP-ExteriorWall-SteelFramed-1 bad"
- STEL1_GOOD =
"BTAP-ExteriorWall-SteelFramed-1 good"
- STEL2 =
HP from @Uo < 0.278
"BTAP-ExteriorWall-SteelFramed-2"
- STEL2_BAD =
"BTAP-ExteriorWall-SteelFramed-2 bad"
- STEL2_GOOD =
"BTAP-ExteriorWall-SteelFramed-2 good"
- ROOFS =
"BTAP-ExteriorRoof-IEAD-4"
- FLOOR =
"BTAP-ExteriorFloor-SteelFramed-1"
- UMIN =
0.010
- UMAX =
5.678
- @@data =
— —- —- —- —- —- —- —- —- —- —- —- —- —- — # Preset BTAP/TBD wall construction parameters.
:sptypes : BTAP/TBD Hash of linked NECB SpaceTypes (symbols) :uos : BTAP/TBD Hash of associated of Uo sub-variants :lp or :hp : low- or high-performance attribute
{}
Class Method Summary collapse
Instance Method Summary collapse
-
#assembly(sptype = :office, stypes = :walls, perform = :hp) ⇒ String
Retrieve building/space type-specific assembly/construction.
-
#costed_uo(construction = STEL2, uo = UMAX) ⇒ Double
Retrieve nearest building/space type-specific assembly Uo factor.
-
#data ⇒ Hash
Return BTAP/TBD data.
-
#lowest_uo(construction = STEL2) ⇒ Double
Retrieve lowest building/space type-specific assembly Uo factor.
-
#set(assembly = STEL2, quality = :good) ⇒ Hash
Retrieve assembly-specific PSI factor set.
-
#spacetype(sptype = "", stories = 999) ⇒ Symbol
Retrieve TBD building/space type keyword.
Class Method Details
.extended(base) ⇒ Object
1283 1284 1285 |
# File 'lib/openstudio-standards/btap/bridging.rb', line 1283 def self.extended(base) base.send(:include, self) end |
Instance Method Details
#assembly(sptype = :office, stypes = :walls, perform = :hp) ⇒ String
Retrieve building/space type-specific assembly/construction.
1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 |
# File 'lib/openstudio-standards/btap/bridging.rb', line 1188 def assembly(sptype = :office, stypes = :walls, perform = :hp) return FLOOR if stypes == :floors return ROOFS if stypes == :roofs @@data.each do |id, construction| next unless construction.key?(perform) return id if construction[:sptypes].key?(sptype) end STEL2 end |
#costed_uo(construction = STEL2, uo = UMAX) ⇒ Double
Retrieve nearest building/space type-specific assembly Uo factor.
1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 |
# File 'lib/openstudio-standards/btap/bridging.rb', line 1207 def costed_uo(construction = STEL2, uo = UMAX) construction = STEL2 unless @@data.key?(construction) uo = UMAX unless uo.is_a?(Numeric) && uo.between?(UMIN, UMAX) @@data[construction][:uos].keys.each do |u| val = u.to_f / 1000 return nil unless val.is_a?(Numeric) && val.between?(UMIN, UMAX) return val if val < uo || (val - uo).abs < 0.001 end nil end |
#data ⇒ Hash
Return BTAP/TBD data.
1279 1280 1281 |
# File 'lib/openstudio-standards/btap/bridging.rb', line 1279 def data @@data end |
#lowest_uo(construction = STEL2) ⇒ Double
Retrieve lowest building/space type-specific assembly Uo factor.
1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 |
# File 'lib/openstudio-standards/btap/bridging.rb', line 1226 def lowest_uo(construction = STEL2) uos = [] construction = STEL2 unless @@data.key?(construction) @@data[construction][:uos].keys.each do |u| val = u.to_f / 1000 return nil unless val.is_a?(Numeric) && val.between?(UMIN, UMAX) uos << val end return uos.min unless uos.empty? nil end |
#set(assembly = STEL2, quality = :good) ⇒ Hash
Retrieve assembly-specific PSI factor set.
1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 |
# File 'lib/openstudio-standards/btap/bridging.rb', line 1249 def set(assembly = STEL2, quality = :good) psi = {} chx = @@data[STEL2][:good ] chx = @@data[STEL2][quality] if @@data[STEL2 ].key?(quality) if @@data.key?(assembly) chx = @@data[assembly][quality] if @@data[assembly].key?(quality) chx = @@data[assembly][:good ] unless @@data[assembly].key?(quality) end psi[:id ] = chx[:id ] psi[:rimjoist ] = chx[:rimjoist ][:psi] psi[:parapet ] = chx[:parapet ][:psi] psi[:head ] = chx[:head ][:psi] psi[:jamb ] = chx[:jamb ][:psi] psi[:sill ] = chx[:sill ][:psi] psi[:corner ] = chx[:corner ][:psi] psi[:balcony ] = chx[:balcony ][:psi] psi[:party ] = chx[:party ][:psi] psi[:grade ] = chx[:grade ][:psi] psi[:joint ] = chx[:joint ][:psi] psi[:transition] = chx[:transition][:psi] psi end |
#spacetype(sptype = "", stories = 999) ⇒ Symbol
Retrieve TBD building/space type keyword.
1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 |
# File 'lib/openstudio-standards/btap/bridging.rb', line 1108 def spacetype(sptype = "", stories = 999) tp = sptype.downcase typ = :office return typ unless stories.is_a?(Integer) && stories.between?(1,999) typ = :exercise if tp.include?("exercise" ) typ = :firestation if tp.include?("fire" ) typ = :gym if tp.include?("gym" ) typ = :gym if tp.include?("locker" ) typ = :courthouse if tp.include?("courthouse" ) typ = :courtrhouse if tp.include?("courtroom" ) typ = :museum if tp.include?("museum" ) typ = :parking if tp.include?("parking" ) typ = :post if tp.include?("post" ) typ = :transportation if tp.include?("transp" ) typ = :transportation if tp.include?("maintenance" ) typ = :automotive if tp.include?("automotive" ) typ = :penitentiary if tp.include?("penitentiary" ) typ = :penitentiary if tp.include?("confinement" ) typ = :arena if tp.include?("arena" ) typ = :warehouse if tp.include?("warehouse" ) typ = :storage if tp.include?("storage" ) typ = :mfg if tp.include?("mfg" ) typ = :mfg if tp.include?("manufacturing") typ = :mfg if tp.include?("loading" ) typ = :workshop if tp.include?("workshop" ) typ = :religious if tp.include?("religious" ) typ = :dwelling5 if tp.include?("dorm" ) typ = :dwelling5 if tp.include?("otel" ) typ = :dwelling5 if tp.include?("residential" ) typ = :dwelling5 if tp.include?("long-term" ) typ = :dwelling5 if tp.include?("dwelling" ) typ = :dwelling5 if tp.include?("lodging" ) typ = :dwelling5 if tp.include?("RP-28" ) typ = :dwelling5 if tp.include?("guest" ) typ = :dwelling if tp.include?("dorm" ) && stories < 5 typ = :dwelling if tp.include?("otel" ) && stories < 5 typ = :dwelling if tp.include?("residential" ) && stories < 5 typ = :dwelling if tp.include?("long-term" ) && stories < 5 typ = :dwelling if tp.include?("dwelling" ) && stories < 5 typ = :dwelling if tp.include?("lodging" ) && stories < 5 typ = :dwelling if tp.include?("RP-28" ) && stories < 5 typ = :dwelling if tp.include?("guest" ) && stories < 5 typ = :library3 if tp.include?("library" ) typ = :library if tp.include?("library" ) && stories < 3 typ = :school3 if tp.include?("school" ) typ = :school3 if tp.include?("classroom" ) typ = :school3 if tp.include?("lab" ) typ = :school3 if tp.include?("auditorium" ) typ = :school if tp.include?("school" ) && stories < 3 typ = :school if tp.include?("classroom" ) && stories < 3 typ = :school if tp.include?("lab" ) && stories < 3 typ = :school if tp.include?("auditorium" ) && stories < 3 typ = :convention if tp.include?("convention" ) typ = :dining if tp.include?("dining" ) typ = :dining if tp.include?("food" ) typ = :health if tp.include?("health" ) typ = :hospital if tp.include?("hospital" ) typ = :hospital if tp.include?("emergency" ) typ = :hospital if tp.include?("laundry" ) typ = :hospital if tp.include?("pharmacy" ) typ = :motion if tp.include?("motion" ) typ = :performance if tp.include?("perform" ) typ = :police if tp.include?("police" ) typ = :retail if tp.include?("retail" ) typ = :retail if tp.include?("sales" ) typ = :town if tp.include?("town" ) typ end |