Example T10: Tension Member Lap Splice
Compute the factored tension resistance, $T_r$, of the following plate tension member, lap splice and fasteners. Ignore the connection details at the far ends of the member (not shown). Bolts are 3/4" A325 in a bearing-type connection, in 22mm punched holes (assume threads intercepted). The plates are of CSA G40.21 350W steel.
from Designer import DesignNotes, makePart, show
%figure lap-splice-01.svg
import pint # setup to use the module for computing with units
ureg = pint.UnitRegistry()
mm = ureg['mm']
inch = ureg['inch']
kN = ureg['kN']
MPa = ureg['MPa']
ureg.default_format = '~P'
notes = DesignNotes('Tr',title='Lap Plate Splice',units=kN)
REQUIRE = notes.require # convenient abbreviations
CHECK = notes.check
RECORD = notes.record
USEVARS = notes.usevars
@makePart
class Steel:
grade = "CSA G40.21 350W"
Fy = 350*MPa
Fu = 450*MPa
@makePart
class Bolts:
grade = "ASTM A325"
Fu = 825*MPa
d = (3/4*inch).to(mm)
Ab = 3.14159*d*d/4.
@makePart
class CentrePlate:
W1 = 300*mm
T1 = 25*mm
C = 10*mm # clearance between ends
@makePart
class OuterPlate:
W2 = 220*mm
T2 = 14*mm
L2 = 350*mm
@makePart
class BoltGroup:
hd = 22*mm
hole_type = 'punched'
threads_intercepted = True
HA = hd if hole_type == 'drilled' else hd+2*mm
G = 75*mm # gauge (transverse spacing)
S = 75*mm # longitudinal spacing
NT = 3 # number of bolts across
NL = 2 # number of lines of bolts each side
S2 = 140*mm # distance between inner lines of bolts
with USEVARS((BoltGroup,'NT,NL')):
REQUIRE( NT >= 2, "NT - Number of bolts across (on a line transverse to load)" )
REQUIRE( NL >= 2, "NL - number of transverse lines (# of bolts per longitudinal line)" )
with USEVARS((OuterPlate,'T2'),(BoltGroup,'NL'),(Bolts,'d'),globals='min_pitch,min_edge,min_end,max_edge'):
min_edge = 32*mm # S16 22.3.2, min edge distance, 3/4" bolt, sheared edge, Table 6
max_edge = min(12*T2,150*mm) # S16 22.3.3
min_end = min_edge if NL > 2 else 1.5*d # S16 22.3.4
min_pitch = 2.7*d # S16 22.3.1
with USEVARS((CentrePlate,'W1,C'),(BoltGroup,'S2,S,G,NT'),locals='edge,end',globals='min_pitch,min_edge,min_end,max_edge'):
edge = (W1 - (NT-1)*G)/2.
end = (S2 - C)/2.
REQUIRE(edge >= min_edge)
REQUIRE(edge <= max_edge)
REQUIRE(end >= min_end)
REQUIRE(S >= min_pitch)
REQUIRE(G >= min_pitch)
REQUIRE(S2 >= S)
REQUIRE(S**2 + G**2 >= min_pitch**2) # to be more precise ...
with USEVARS((OuterPlate,'W2,L2'),(BoltGroup,'S2,S,G,NT,NL'),locals='edge,end',globals='min_pitch,min_edge,min_end,max_edge'):
edge = (W2 - (NT-1)*G)/2.
end = (L2 - ((NL-1)*G*2 + S2))/2.
REQUIRE(edge >= min_edge)
REQUIRE(edge <= max_edge)
REQUIRE(end >= min_end)
%figure lap-splice-01-main.svg
with USEVARS((CentrePlate,'W1,T1'),(Steel,'Fy'),locals='Ag,phi',
label='Gross area yield, centre plate'):
Ag = W1*T1 # gross x-sectional area
phi = 0.9
Tr = phi*Ag*Fy # S16-14: 13.2 a) i)
Fracture on Effective Net Area
When the average stress across the net (reduced) area reaches the fracture stress, fracture will occur on that area. This is, of course, a failure mode. Normally, an account is made of how non-uniform load transfers can affect the stress distribution across the cross-section; if the stress distribution is markedly non-uniform, fracture may occur before the average stress reaches the ultimate. This account is done by computing and using an effective net area, $A_{ne}$.
Because the bolts in this connection transfer loads approximately uniformly across the entire cross-section, we can consider the effective net area to be equal to the net area in possible failure path 1 in the above figure. (S16 12.3.3.1)
with USEVARS((CentrePlate,'W1,T1'),(Steel,'Fu'),(BoltGroup,'NT,HA'), locals='wn,Ag,phiu,An,Ane',
label='Net section fracture, centre plate'):
wn = W1 - NT*HA # net width: subtract total width of material removed by holes, failure path 1
Ane = An = wn*T1
phiu = 0.75
Tr = phiu*Ane*Fu # S16-14: 13.2 a) iii)
Block Shear
Other potential failure modes involve tension and shear ruptures in combination around the bolt holes. The following figure shows 4 different potential failure patterns that must be investigated.
Patterns 1 and 2 are sort of "opposites" - in Pattern 1 in the tension rupture extends across the end of the bolts, while in Pattern 2 the tension rupture extends from one line of bolts to the outside edges of the plates. Pattern 2 probably is only important when there are 2 longitudinal lines of bolts (there are three shown on the drawing, though our calculations will allow for any number, 2 or more). If there are more than 3 longitudnal lines (I.e., more than 3 bolts across), other patterns similar to Pattern 2 could be drawn but thay will not have lower strengths.
Note that Pattern 4 is often called 'tear-out' or 'pull-out'.
%figure lap-splice-01-main-blocks.svg
with USEVARS((Steel,'Fy,Fu'),locals='Fv'):
Fv = (Fy+Fu)/2.
if Fy > 460*MPa: # S16-14: 13.11 footnote
Fv = Fy
Steel.Fv = Fv
## Pattern 1
with USEVARS((CentrePlate,'C,T1'),(BoltGroup,'S2,NL,NT,S,G'),(Steel,'Fu,Fv'),locals='Agv,An,Ut',globals='e,phiu',
label='Block Shear Pattern 1 - centre plate'):
e = S2/2. - C/2. # end distance to centre of 1st bolt hole
Agv = (e + (NL-1)*S)*T1*2. # shear area
An = (NT-1)*G * T1 # tension area
Ut = 1.0
phiu = 0.75
Tr = phiu*((Ut*An*Fu) + (0.6*Agv*Fv)) # S16-14: 13.11
## Pattern 2
with USEVARS((CentrePlate,'C,T1,W1'),(BoltGroup,'S2,NL,NT,S,G,HA'),(Steel,'Fu,Fv'),locals='Agv,An,Ut',globals='e,phiu',
label='Block Shear Pattern 2 - centre plate'):
Agv = 2.*(e + (NL-1)*S)*T1 # shear area
g1 = (W1 - (NT-1)*G)/2. # edge distance to centre of hole
An = (g1 + g1 - 2.*HA/2.)*T1 # to outside from edge of outside pair of holes
if NT >= 3:
An = An + (NT-2.)*(G - 2.*HA/2.)*T1 # additional between holes
Ut = 0.6 # no good guidelines in commentary - this should be conservative
Tr = phiu*((Ut*An*Fu) + (0.6*Agv*Fv)) # S16-14: 13.11
## Pattern 3
with USEVARS((CentrePlate,'C,T1,W1'),(BoltGroup,'S2,NL,NT,S,G,HA'),(Steel,'Fu,Fv'),locals='Agv,An,Ut',globals='e,phiu',
label='Block Shear Pattern 3 - centre plate'):
Agv = (e + (NL-1)*S)*T1 # shear area
g1 = (W1 - (NT-1)*G)/2. # edge distance to centre of hole
An = ((W1-g1) - (NT-0.5)*HA)*T1
Ut = 0.6 # no good guidelines in commentary - this should be conservative
Tr = phiu*((Ut*An*Fu) + (0.6*Agv*Fv)) # S16-14: 13.11
## Pattern 4 - tear-out
with USEVARS((CentrePlate,'C,T1,W1'),(BoltGroup,'S2,NL,NT,S,G,HA'),(Steel,'Fu,Fv'),locals='Agv,An,Ut',globals='e,phiu',
label='Block Shear Pattern 3 - centre plate'):
Agv = (e + (NL-1)*S)*T1 * (NT*2.) # shear area
An = 0*mm*mm
Ut = 0. # N.A.
Tr = phiu*((Ut*An*Fu) + (0.6*Agv*Fv)) # S16-14: 13.11
%figure lap-splice-01-side.svg
The side plates have similar failure modes and so will be computed here without much additional comment. In all cases we will use the dimensions of a single plate, then will multiply the resistance by 2 to account for the two plates.
with USEVARS((OuterPlate,'W2,T2'),(Steel,'Fy'),locals='Ag,phi',
label='Gross area yield, two outer plates'):
Ag = W2*T2 # gross x-sectional area
phi = 0.9
Tr = 2. * phi*Ag*Fy # S16-14: 13.2 a) i)
with USEVARS((OuterPlate,'W2,T2'),(BoltGroup,'NT,HA'),(Steel,'Fu'),locals='wn,An,Ane',globals='phiu',
label='Net section fracture, two outer plates'):
wn = W2 - NT*HA # subtract total width of material removed by holes, failure path 2
Ane = An = wn*T2
phiu = 0.75
Tr = 2. * phiu*Ane*Fu # S1614: 13.2 a) iii)
%figure lap-splice-01-side-blocks.svg
## Pattern 1
with USEVARS((OuterPlate,'W2,T2,L2'),(BoltGroup,'NT,NL,G,S,HA,S2'),(Steel,'Fu,Fv'),locals='An,Agv,Ut',globals='phiu,e',
label='Block Shear Pattern 1 - two outer plates'):
e = (L2 - S2 - (NL-1)*S*2.)/2. # end distance to centre of 1st bolt hole
Agv = (e + (NL-1)*S)*T2*2. # shear area
An = (NT-1)*G * T2 # tension area
Ut = 1.0
phiu = 0.75
Tr = 2. * phiu*((Ut*An*Fu) + (0.6*Agv*Fv)) # S16-14: 13.11
## Pattern 2
with USEVARS((OuterPlate,'W2,T2,L2'),(BoltGroup,'NT,NL,G,S,HA,S2'),(Steel,'Fu,Fv'),locals='g1,An,Agv,Ut',globals='phiu,e',
label='Block Shear Pattern 2 - two outer plates'):
Agv = 2.*(e + (NL-1)*S)*T2 # shear area
g1 = (W2 - (NT-1)*G)/2. # edge distance to centre of hole
An = (g1 + g1 - 2.*HA/2.)*T2 # to outside from edge of outside pair of holes
if NT >= 3:
An = An + (NT-2.)*(G - 2.*HA/2.)*T2 # additional between holes
Ut = 0.6 # no good guidelines in commentary - this should be conservative
Tr = 2. * phiu*((Ut*An*Fu) + (0.6*Agv*Fv)) # S16-14: 13.11
## Pattern 3
with USEVARS((OuterPlate,'W2,T2,L2'),(BoltGroup,'NT,NL,G,S,HA,S2'),(Steel,'Fu,Fv'),locals='g2,An,Agv,Ut',globals='phiu,e',
label='Block Shear Pattern 3 - two outer plates'):
Agv = (e + (NL-1)*S)*T2 # shear area
g2 = (W2 - (NT-1)*G)/2. # edge distance to centre of hole
An = ((W2-g2) - (NT-0.5)*HA)*T2
Ut = 0.6 # no good guidelines in commentary - this should be conservative
Tr = 2. * phiu*((Ut*An*Fu) + (0.6*Agv*Fv)) # S16-14: 13.11
## Pattern 4 - tear-out
with USEVARS((OuterPlate,'W2,T2,L2'),(BoltGroup,'NT,NL,G,S,HA,S2'),(Steel,'Fu,Fv'),locals='g2,An,Agv,Ut',globals='phiu,e',
label='Block Shear Pattern 4 - two outer plates'):
Agv = (e + (NL-1)*S)*T2 * (NT*2.) # shear area
An = 0*mm*mm
Ut = 0. # N.A.
Tr = 2. * phiu*((Ut*An*Fu) + (0.6*Agv*Fv)) # S16-14: 13.11
with USEVARS((BoltGroup,'S,NT,NL,threads_intercepted'),(Bolts,'Fu,Ab'),locals='n,m,phib',
label='Shear resistance of bolts',record='Vr'):
n = NT*NL # number of bolts
m = 2 # number of faying surfaces
phib = 0.80
Vr = 0.60*phib*n*m*Ab*Fu # S16-14: 13.12.1.2 c)
if (NL-1)*S >= 760*mm:
Vr = (0.5/0.6)*Vr
if threads_intercepted:
Vr = 0.7*Vr
with USEVARS((BoltGroup,'NT,NL,threads_intercepted'),(Bolts,'d'),(Steel,'Fu'),
(OuterPlate,'T2'),(CentrePlate,'T1'),locals='n,t,phib', globals='phibr',
label='Bearing resistance at bolt holes',record='Br'):
n = NT*NL
t = min(T1,2.*T2)
phibr = 0.80
Br = 3.*phibr*n*t*d*Fu
notes.summary()