# Steel Beam and Column Analysis (Code Check) Calculator

Stress Code Check Per AISC 9th Edition Manual (ASD)
For W, S, M, and HP Shapes

#### Input Data

Member Size:
Select:
P = kips
Mx = ft.
My = ft-kips
Design Parameters:
Fy = ksi
Kx =
Ky =
Lx = ft.
Ly = ft.
Lb = ft.
Cb =
Cmx =
Cmy =
ASIF =
Member Properties:
A = in.^2
d = in.
tw = in.
bf = in.
tf = in.
rt = in.
d/Af = in.
Ix = in.^4
Sx = in.^3
rx = in.
Iy = in.^4
Sy = in.^3
ry = in.
J = in.^4
Cw = in.^6
Section
Qs =
Qa =

#### Result :

For X-axis Bending:For Y-axis Bending:
Kx*Lx/rx =   Lc = ft. fby = ksi
Ky*Ly/ry =   Lu = ft. Fby = ksi
Cc =   Lb/rt =   Mry = ft-kips
ksi fbx = ksi
Fbx = ksi
Pa = kips Mrx = ft-kips
X-axis Euler Stress:Y-axis Euler Stress:
F'ex = ksi F'ey = ft-kips

Stress Ratio:
S.R. =
For Selected
S.R. =
10 Lightest W Shapes5 Lightest S Shapes
1 1
2 2
3 3
4 4
5 5
6
7
8
9
10

#### Optional Input Used to Determine Cb, Cm, & K Values:

Determine Cb by equation:
Single or Reverse curvature?
Mx1 = ft-kips
Mx2 = ft-kips
Cb =
Determine Cmx by equation:
Single or Reverse curvature?
Mx1 = ft-kips
Mx2 = ft-kips
Cmx =
Determine Cmy by equation:
Single or Reverse curvature?
Mx1 = ft-kips
Mx2 = ft-kips
Cmy =
Determine Kx by alignment charts:
Braced or Unbraced Frame?
Ga =
Gb =
Kx =
Determine Ky by alignment charts:
Braced or Unbraced Frame?
Ga =
Gb =
Ky =
'P' is the applied axial load on the member, which may be either a compression or tension load.
Sign convention: + = compression, - = tension
'Mx' is the applied flexural bending moment about the X-axis (major axis) of the member.
Note: the value input MUST BE positive (+).
'My' is the applied flexural bending moment about the Y-axis (minor axis) of the member.
Note: the value input MUST BE positive (+).
'Kx' is the effective length factor about the X-axis (major axis) for an axially loaded compression member. Typical values are as follows:

Column End Conditions    "Kx" Value
(bottom-top)         (Recommended)
Fixed-Fixed           0.65
Fixed-Pinned         0.80
Fixed-Slider           1.2
Pinned-Pinned      1.0
Fixed-Free             2.1
Pinned-Slider        2.0

where:
Fixed end denotes rotation fixed and translation fixed.
Pinned end denotes rotation free and translation fixed.
Slider end denotes rotation fixed and translation free.
Free end denotes rotation free and translation free.
'Ky' is the effective length factor about the Y-axis (minor axis) for an axially loaded compression member.
Typical values are as follows:

Column End Conditions    "Ky" Value
(bottom-top)        (Recommended)
Fixed-Fixed          0.65
Fixed-Pinned         0.80
Fixed-Slider           1.2
Pinned-Pinned     1.0
Fixed-Free             2.1
Pinned-Slider        2.0

where:
Fixed end denotes rotation fixed and translation fixed.
Pinned end denotes rotation free and translation fixed.
Slider end denotes rotation fixed and translation free.
Free end denotes rotation free and translation free.
'Lx' is the actual unbraced length of member for column-type (axial compression) buckling about X-axis (major axis).
Note: for input values of Lx <=1.0', this
program will use a value =1.0'.
'Ly' is the actual unbraced length of member for column-type (axial compression) buckling about Y-axis (minor axis).
Note: for input values of Ly <=1.0', this
program will use a value =1.0'.
'Lb' is the actual unbraced length of the compression flange of the member for X-axis
(major axis) bending. The "unbraced length" can be more specifically defined as the
distance between cross sections braced against twist or lateral displacement of the compression flange.
Notes:
1. For most cases, 'Lb' is equal to 'Ly'.
2. For cantilevers braced against twist only
at the support, 'Lb' may conservatively
be taken as the actual length.
3. For input values of Lb <=1.0', this
program will use a value =1.0'.
'Cb' is the allowable stress bending coefficient dependent on the moment gradient,
for bending about the X-axis (major axis). 'Cb' is determined as follows:
Cb = 1.75+1.05*(Mx1/Mx2)+0.3*(Mx1/Mx2)^2 <= 2.3
where:
Mx1 = smaller X-axis (major axis) bending moment at either of the ends of the unbraced length
Mx2 = larger X-axis (major axis) bending moment at either of the ends of the unbraced length
Mx1/Mx2 = positive for reverse curvature bending (both have same signs)
= negative for single curvature bending (both have opposite signs)
Notes:
1. When the bending moment at any point within an unbraced length is larger than that at both
ends of this length, then use 'Cb' = 1.0.
2. When computing 'Fbx' to be used in AISC Eqn. H1-1:
a. For frames with sidesway (joint translation), then compute 'Cb' using above equation.
b. For frames without sidesway (braced against joint translation), then use 'Cb' = 1.0.
3. For cantilever beams, 'Cb' may be conservatively assumed = 1.0.
'Cmx' is the coefficient applied to the X-axis (major axis) bending term in the interaction
equation (H1-1) and is dependent upon column curvature caused by applied moments.
The 'Cmx' coefficient value is determined as follows:
Category A:
For compression members in frames subject to joint translation (sidesway), Cmx = 0.85.
Category B:
For rotationally restrained compression members in frames braced against joint
supports in the plane of bending, Cmx =0.6-0.4*(Mx1/Mx2)
where:
Mx1 = smaller X-axis (major axis) bending moment at either of the ends of the unbraced length
Mx2 = larger X-axis (major axis) bending moment at either of the ends of the unbraced length
Mx1/Mx2 = positive for reverse curvature bending (both have same signs)
= negative for single curvature bending (both have opposite signs)
Category C:
For rotationally restrained compression members in frames braced against joint
supports in the plane of bending, the following values of 'Cmx' are permitted :
1. For members whose ends are restrained against rotation in the plane of bending, Cmx = 0.85.
2. For members whose ends are unrestrained against rotation in the plane of bending, Cmx = 1.0.
'Cmy' is the coefficient applied to the Y-axis (minor axis) bending term in the interaction
equation (H1-1) and is dependent upon column curvature caused by applied moments.
The 'Cmy' coefficient value is determined as follows:
Category A:
For compression members in frames subject to joint translation (sidesway), Cmy = 0.85.
Category B:
For rotationally restrained compression members in frames braced against joint
supports in the plane of bending, Cmy =0.6-0.4*(My1/My2)
where:
My1 = smaller Y-axis (minor axis) bending moment at either of the ends of the unbraced length
My2 = larger Y-axis (minor axis) bending moment at either of the ends of the unbraced length
My1/My2 = positive for reverse curvature bending (both have same signs)
= negative for single curvature bending (both have opposite signs)
Category C:
For rotationally restrained compression members in frames braced against joint
supports in the plane of bending, the following values of 'Cmy' are permitted :
1. For members whose ends are restrained against rotation in the plane of bending, Cmy = 0.85.
2. For members whose ends are unrestrained against rotation in the plane of bending, Cmy = 1.0.
'ASIF' is the Allowable Stress Increase Factor which is applied to all the allowable
stresses and the Euler column buckling stresses used in the stress ratio calculation.
Note: for example, a value of 1.333 can be used for the
'ASIF' for load combinations which include wind or seismic.
Otherwise, use 1.0.
'Qs' is the allowable stress reduction factor for an unstiffened compression element (flange) of member determined from AISC
Appendix B and is calculated as follows:
when 95/SQRT(Fy/kc) < bf/(2*tf) < 195/SQRT(Fy/kc)
Qs = 1.293-0.00309*bf/(2*tf)*SQRT(Fy/kc) Eqn. A-B5-3
when bf/(2*tf) > 195/SQRT(Fy/kc)
Qs = 26,200*kc/(Fy*bf/(2*tf)) Eqn. A-B5-4
Note: Qs = 1.0 for all W, S, and M shapes for Fy = 36 or 50 ksi.
However, Qs < 1.0 for HP14X73, HP13X60, and HP12X53
'Qa' is the ratio of effective profile area of an axially loaded compression member to its total (gross) profile area from AISC
Appendix B and is calculated as follows:
when h/tw > 253/SQRT(Fy)
be = 253*tw/SQRT(f)*(1-44.3/((h/tw)*SQRT(f)) <= h Eqn. A-B5-8
Ae = A-(h-be)*tw
Qa = (A-(h-be)*tw)/A
where: be = effective length of web of member
h = d-2*tf
f = computed compressive stress based on effective area
Ae = effective area of member
'Sx(eff)' is the effective X-axis (major axis) section modulus of an axially loaded compression member,
based on a reduced effective width of web, 'be',
and is calculated as follows for W, S, M, and HP shapes:
Sx(eff) = Sx-tw*(d-2*tf-be)^3/(6*d)
'Sy(eff)' is the effective Y-axis (minor axis) section modulus of an axially loaded compression member,
based on a reduced effective width of web, 'be',
and is calculated as follows for W, S, M, and HP shapes: Sy(eff) = Sy-(d-2*tf-be)*tw^3/(6*bf)
The expression 'Kx*Lx/rx' is the effective slenderness ratio for members subjected to axial compression load.
Note: 'Lx' is converted from feet to inches in
the evaluation of the expression.
The expression 'Ky*Ly/ry' is the effective slenderness ratio for members subjected to axial compression load.
Note: 'Ly' is converted from feet to inches in
the evaluation of the expression.
'Cc' is the column (compression) slenderness ratio separating elastic
and inelastic buckling, and is calculated as follows:
Cc = SQRT(2*p^2*E/Fy)
where:
E = modulus of elasticity for steel = 29,000 ksi
'fa' is the actual compression stress for an axially loaded compression member and is calculated as follows:
fa = P/A

'ft' is the allowable tension stress for an axially loaded tension member and is calculated as follows:
ft = P/A
'Fa' is the allowable compression stress for an axially loaded compression member and is calculated as follows:
For: K*L*12/r <= Cc = SQRT(2*p^2*E/Fy)
use Eqn. E2-1:
Fa = (1-(K*L*12/r)^2/(2*Cc)^2)*Fy/(5/3+3*(K*L*12/r)/(8*Cc)-(K*L*12/r)^3/(8*Cc^3))
For: K*L*12/r > Cc = SQRT(2*p^2*E/Fy)
use Eqn. E2-2:
Fa = 12*p^2*E/(23*(K*L*12/r)^2)
Note: the larger value of either Kx*Lx*12/rx or Ky*Ly*12/ry is to be used in the equations above
to determine 'Fa'.

'Ft' is the allowable tension stress for an axially loaded tension member and is calculated as follows:
Ft = 0.60*Fy
'Pa' is the allowable axial load for compression (or tension if applicable),
and is calculated as follows:
Pa = Fa*A
'Lc' is the maximum unbraced length of the compression flange at
which the allowable X-axis (major axis) bending stress maybe taken at 0.66*Fy, or from AISC Code Eqn. F1-3 when applicable.
Lc = smaller of: 76*bf/SQRT(Fy) or 20000/((d/Af)*Fy)
'Lu' is the maximum unbraced length of the compression flange at
which the allowable X-axis (major axis) bending stress maybe taken at 0.60*Fy when Cb = 1.
Note: In the expression 'Lb/rt', the
value of 'Lb' is converted from
feet to inches in the evaluation.
'fbx' is the actual X-axis (major axis) bending stress and is calculated as follows:
fbx = Mx*12/Sx
'Fbx' is the allowable X-axis (major axis) bending stress and is calculated as follows:
For either compression or tension due to bending,
when bf/(2*tf) <= 65/SQRT(Fy), and d/tw compact criteria are met,
and Lb <= Lc:
Fbx = 0.66*Fy (Eqn. F1-1)
when 65/SQRT(Fy) < bf/(2*tf) <= 95/SQRT(Fy)
and Lb <= Lc:
Fbx = Fy*(0.79-0.002*bf/(2*tf)*SQRT(Fy)) (Eqn. F1-3)
when bf/(2*tf) > 95/SQRT(Fy) and Lb <= Lc:
Fbx = 0.60*Fy (Eqn. F1-5)
For tension due to bending,
when the compact criteria are not met,
Fbx = 0.60*Fy
'Mrx' is the allowable resisting moment for X-axis (major axis) bending, and is calculated as follows:
Mrx = Fbx*Sx/12
'fby' is the actual Y-axis (minor axis) bending stress and is calculated as follows:
fby = My*12/Sy
'Fby' is the allowable Y-axis (minor axis) bending stress and is calculated as follows:
For either compression or tension due to bending,
when bf/(2*tf) <= 65/SQRT(Fy):
Fby = 0.75*Fy (Eqn. F2-1)
when 65/SQRT(Fy) < bf/(2*tf) <= 95/SQRT(Fy):
Fby = Fy*(1.075-0.005*bf/(2*tf)*SQRT(Fy)) (Eqn. F2-2)
when bf/(2*tf) > 95/SQRT(Fy):
Fby = 0.60*Fy (Eqn. F2-3)
'Mry' is the allowable resisting moment for Y-axis (minor axis) bending, and is calculated as follows:
Mry = Fby*Sy/12
F'ex is the Euler compressive buckling stress divided by
factor of safety for the X-axis (major axis), and is calculated as follows:
F'ex = 12*p^2*E/(23*(Kx*Lx*12/rx)^2)
F'ey is the Euler compressive buckling stress divided by
factor of safety for the Y-axis (minor axis), and is calculated as follows:
F'ey = 12*p^2*E/(23*(Ky*Ly*12/ry)^2)
"S.R." is the Stress Ratio for the member which is calculated as follows:
For members with combined axial compression and bending when fa/Fa > 0.15 per Eqn. H1-1:
S.R. = fa/(ASIF*Fa) + Cmx*fbx/((1-fa/(ASIF*F'ex))*(ASIF*Fbx)) + Cmy*fby/((1-fa/(ASIF*F'ey))*(ASIF*Fby)) <= 1.0
and per Eqn. H1-2:
S.R. = fa/(ASIF*0.60*Fy) + fbx/(ASIF*Fbx) + fby/(ASIF*Fby) <= 1.0
Note: program will display the results of the larger value obtained from either Eqn. H1-1 or Eqn. H1-2
For members with combined axial compression and bending when fa/Fa <= 0.15 per Eqn. H1-3:
S.R. = fa/(ASIF*Fa) + fbx/(ASIF*Fbx) + fby/(ASIF*Fby) <= 1.0

For members with combined axial tension and bending:
S.R. = ft/(ASIF*Ft) + fbx/(ASIF*Fbx) + fby/(ASIF*Fby) <= 1.0

Note: in this case the Stress Ratio computed from just the compressive bending stress(s) must also be checked.
If S.R. > 1.0, then either increase the member size or if possible
add/revise framing so that the unbraced length values (Lx, Ly, and Lb)
can be reduced, thereby increasing the individual allowable stresses and decreasing the resulting stress ratio.
'Mx1' is the smaller X-axis (major axis) bending moment at either of the ends of the unbraced length.
'Mx2' is the larger X-axis (major axis) bending moment at either of the ends of the unbraced length
Note: if 'Mx2' is input = 0, then 'Cb' will be = 1.0
'Cb' is the allowable stress bending coefficient dependent on the moment gradient,
for bending about the X-axis (major axis).
'Cb' is determined as follows:
Cb = 1.75+1.05*(Mx1/Mx2)+0.3*(Mx1/Mx2)^2 <= 2.3
where:
Mx1 = smaller X-axis (major axis) bending moment at either of the ends of the unbraced length
Mx2 = larger X-axis (major axis) bending moment at either of the ends of the unbraced length
Mx1/Mx2 = positive for reverse curvature bending (both have same signs)
= negative for single curvature bending (both have opposite signs)
Notes:
1. When the bending moment at any point within an unbraced length is larger than that at both
ends of this length, then use 'Cb' = 1.0.
2. When computing 'Fbx' to be used in AISC Eqn. H1-1:
a. For frames with sidesway (joint translation), then compute 'Cb' using above equation.
b. For frames without sidesway (braced against joint translation), then use 'Cb' = 1.0.
3. For cantilever beams, 'Cb' may be conservatively assumed = 1.0.
'Mx1' is the smaller X-axis (major axis) bending moment at either of the ends of the unbraced length.
'Mx2' is the larger X-axis (major axis) bending moment at either of the ends of the unbraced length
Note: if 'Mx2' is input = 0, then 'Cmx' will be = 1.0
'Cmx' is the coefficient applied to the X-axis (major axis) bending term in the interaction equation (H1-1)
and is dependent upon column curvature caused by applied moments. The 'Cmx' coefficient value is determined as follows:
Category A:
For compression members in frames subject to joint translation (sidesway), Cmx = 0.85.
Category B:
For rotationally restrained compression members in frames braced against joint
supports in the plane of bending, Cmx =0.6-0.4*(Mx1/Mx2)
where:
Mx1 = smaller X-axis (major axis) bending moment at either of the ends of the unbraced length
Mx2 = larger Xaxis (major axis) bending moment at either of the ends of the unbraced length
Mx1/Mx2 = positive for reverse curvature bending (both have same signs)
= negative for single curvature bending (both have opposite signs)
Category C:
For rotationally restrained compression members in frames braced against joint
supports in the plane of bending, the following values of 'Cmx' are permitted :
1. For members whose ends are restrained against rotation in the plane of bending, Cmx = 0.85.
2. For members whose ends are unrestrained against rotation in the plane of bending, Cmx = 1.0.
'My1' is the smaller Y-axis (minor axis) bending moment at either of the ends of the unbraced length.
'My2' is the larger Y-axis (minor axis) bending moment at either of the ends of the unbraced length.
Note: if 'My2' is input = 0, then 'Cmy' will be = 1.0
'Cmy' is the coefficient applied to the Y-axis (minor axis) bending term in the interaction
equation (H1-1) and is dependent upon column curvature caused by applied moments. The 'Cmy' coefficient value is determined as follows:
Category A:
For compression members in frames subject to joint translation (sidesway), Cmy = 0.85.
Category B:
For rotationally restrained compression members in frames braced against joint
supports in the plane of bending, Cmy =0.6-0.4*(My1/My2)
where:
My1 = smaller Y-axis (minor axis) bending moment at either of the ends of the unbraced length
My2 = larger Y-axis (minor axis) bending moment at either of the ends of the unbraced length
My1/My2 = positive for reverse curvature bending (both have same signs)
= negative for single curvature bending (both have opposite signs)
Category C:
For rotationally restrained compression members in frames braced against joint
supports in the plane of bending, the following values of 'Cmy' are permitted :
1. For members whose ends are restrained against rotation in the plane of bending, Cmy = 0.85.
2. For members whose ends are unrestrained against rotation in the plane of bending, Cmy = 1.0.
'Ga' represents the "a" joint (end) of the two ends of the column section being considered
in the determination of effective length using the AISC Code Alignment Charts or equations representing the Alignment Charts.
'G' is determined as follows:
G = S (Ic/Lc)/S (Ig/Lg)
where:
S = indicates a summation of all members rigidly connected to that join
and within the plane of buckling of the column
Ic = moment of inertia of column taken about axis perpendicular to plane
of buckling
Lc = unsupported length of column section
Ig = moment of inertia of girder or other restaining member taken about
axis perpendicular to plane of buckling
Lg = unsupported length of girder or other restraining member
Note:
For column ends supported by but not rigidly connected to a foundation, 'G'
may be asumed equal to 10 for practical designs. If the column end is rigidly
attached to the foundation, 'G' may be assumed equal to 1.0.
'Gb' represents the "b" joint (end) of the two ends of the column section being considered in
the determination of effective length using the AISC Code Alignment Charts or equations representing the Alignment Charts.
'G' is determined as follows:
G = S (Ic/Lc)/S (Ig/Lg)
where:
S = indicates a summation of all members rigidly connected to that join
and within the plane of buckling of the column
Ic = moment of inertia of column taken about axis perpendicular to plane
of buckling
Lc = unsupported length of column section
Ig = moment of inertia of girder or other restaining member taken about
axis perpendicular to plane of buckling
Lg = unsupported length of girder or other restraining member
Note:
For column ends supported by but not rigidly connected to a foundation, 'G'
may be asumed equal to 10 for practical designs. If the column end is rigidly
attached to the foundation, 'G' may be assumed equal to 1.0.
'Kx' is the effective length factor about the X-axis (major axis)
for an axially loaded compression member as determined by
the AISC Code Alignment Charts or equations representing Alignment Charts.
For Braced Frames:
The theoretical equation representing the Nomograph is as follows:
Ga*Gb/4*(p/K)^2+((Ga+Gb)/2)*(1-p/K/(TAN(p/K)))+2*TAN(p/(2*K)/(p/K) = 1
For which the following approximate equation may be used to directly solve for 'K':
K = SQRT((Ga+0.41)*(Gb+0.41)/((Ga+0.82)*(Gb+0.82)))
Note: above approximate equation underestimates 'K' by not more than 0.1%
and overestimates it by less than 1.5%.
For Unbraced Frames:
The theoretical equation representing the Nomograph is as follows:
Ga*Gb*(p/K)^2-36/(6*(Ga+Gb)) = (p/K)/TAN(p/K)
For which the following approximate equation may be used to directly solve for 'K':
K = SQRT((1.6*Ga*Gb+4.0*(Ga+Gb)+7.5)/(Ga+Gb+7.5))
Note: above approximate equation estimates 'K' within 2% error.

Reference: "Historical Note on K-Factor Equations", by Pierre Dumonteil
AISC Engineering Journal - 2nd Quarter - 1999
'Ga' represents the "a" joint (end) of the two ends of the column
section being considered in the determination of effective length using
the AISC Code Alignment Charts or equations representing the Alignment Charts.
'G' is determined as follows:
G = S (Ic/Lc)/S (Ig/Lg)
where:
S = indicates a summation of all members rigidly connected to that join
and within the plane of buckling of the column
Ic = moment of inertia of column taken about axis perpendicular to plane
of buckling
Lc = unsupported length of column section
Ig = moment of inertia of girder or other restaining member taken about
axis perpendicular to plane of buckling
Lg = unsupported length of girder or other restraining member
Note:
For column ends supported by but not rigidly connected to a foundation, 'G'
may be asumed equal to 10 for practical designs. If the column end is rigidly
attached to the foundation, 'G' may be assumed equal to 1.0.
'Gb' represents the "b" joint (end) of the two ends of the column section being considered in
the determination of effective length using
the AISC Code Alignment Charts or equations representing the Alignment Charts.
'G' is determined as follows:
G = S (Ic/Lc)/S (Ig/Lg)
where:
S = indicates a summation of all members rigidly connected to that join
and within the plane of buckling of the column
Ic = moment of inertia of column taken about axis perpendicular to plane
of buckling
Lc = unsupported length of column section
Ig = moment of inertia of girder or other restaining member taken about
axis perpendicular to plane of buckling
Lg = unsupported length of girder or other restraining member
Note:
For column ends supported by but not rigidly connected to a foundation, 'G'
may be asumed equal to 10 for practical designs. If the column end is rigidly
attached to the foundation, 'G' may be assumed equal to 1.0.
'Ky' is the effective length factor about the Y-axis (minor axis)
for an axially loaded compression member as determined by the
AISC Code Alignment Charts or equations representing Alignment Charts. For Braced Frames:
The theoretical equation representing the Nomograph is as follows:
Ga*Gb/4*(p/K)^2+((Ga+Gb)/2)*(1-p/K/(TAN(p/K)))+2*TAN(p/(2*K)/(p/K) = 1
For which the following approximate equation may be used to directly solve for 'K':
K = SQRT((Ga+0.41)*(Gb+0.41)/((Ga+0.82)*(Gb+0.82)))
Note: above approximate equation underestimates 'K' by not more than 0.1%
and overestimates it by less than 1.5%.
For Unbraced Frames:
The theoretical equation representing the Nomograph is as follows:
Ga*Gb*(p/K)^2-36/(6*(Ga+Gb)) = (p/K)/TAN(p/K)
For which the following approximate equation may be used to directly solve for 'K':
K = SQRT((1.6*Ga*Gb+4.0*(Ga+Gb)+7.5)/(Ga+Gb+7.5))
Note: above approximate equation estimates 'K' within 2% error.

Reference: "Historical Note on K-Factor Equations", by Pierre Dumonteil
AISC Engineering Journal - 2nd Quarter - 1999

Disclaimer: This calculator is not intended to be used for the design of actual structures, but only for schematic (preliminary) understanding of structural design principals. For the design of an actual structure, a competent professional should be consulted.

‘Calculations courtesy of Alex Tomanovich, PE ’