Rename calc.py locals and result keys, add inline unit comments, and normalize Lp/Lr/Lb to feet. Update steel-beam.typ references and the tests (current W10X15 input, --stdout summary behavior).
80 lines
4.5 KiB
Typst
80 lines
4.5 KiB
Typst
#import "assets/sheet.typ": calcline, calcsheet, check
|
|
|
|
#let data = json("results.json")
|
|
#let n = data.values
|
|
#let checks = data.checks
|
|
#let round(value, digits: 2) = calc.round(value, digits: digits)
|
|
|
|
#show: calcsheet.with(
|
|
title: "Steel Beam Design",
|
|
project: data.project,
|
|
prepared-by: data.prepared_by,
|
|
)
|
|
|
|
= Steel Beam Design
|
|
|
|
Steel beam design for the Casablanca Hotel steel-joist replacement. Demands determined assuming
|
|
the new beam takes all load, non-composite action with concrete slab.
|
|
|
|
== Factored Demands
|
|
As determined in "Load Determination section"
|
|
|
|
#let L = n.beam_length // ft
|
|
|
|
#calcline([$M_u = #round(n.moment, digits: 2) "kip·ft"$], [Factored moment from load determination])
|
|
#calcline([$V_u = #round(n.shear, digits: 2) "kip"$], [Factored reaction on connector (factored shear)])
|
|
#calcline([$L = #L "ft"$], [Beam span])
|
|
|
|
#metadata((Mu: n.moment, Vu: n.shear)) <load-demands>
|
|
|
|
== Material And Section Properties
|
|
|
|
#calcline([$E = #n.E "ksi"$], [Steel Young's modulus])
|
|
#calcline([$F_y = #n.Fy "ksi"$], [Steel yield strength])
|
|
#calcline([$"Section" = #data.section$], [AISC W-shape])
|
|
#calcline([$d = #n.section_d "in"$, $b = #n.section_b "in"$], [Depth and flange width])
|
|
#calcline([$t_f = #n.section_tf "in"$, $t_w = #n.section_tw "in"$], [Flange and web thickness])
|
|
#calcline([$A = #n.section_A "in"^2$], [Section area])
|
|
#calcline([$r_y = #n.section_ry "in"$], [Weak-axis radius of gyration])
|
|
#calcline([$S_x = #n.section_Sx "in"^3$, $Z_x = #n.section_Zx "in"^3$], [Elastic and plastic major-axis modulus])
|
|
#calcline([$S_y = #n.section_Sy "in"^3$, $Z_y = #n.section_Zy "in"^3$], [Elastic and plastic minor-axis modulus])
|
|
#calcline([$h_o = #n.section_ho "in"$, $J = #n.section_J "in"^4$], [Flange centroid distance and torsional constant])
|
|
#calcline([$I_x = #n.section_Ix "in"^4$, $I_y = #n.section_Iy "in"^4$], [Major and minor-axis inertia])
|
|
#calcline([$lambda = #n.lambda$], [Web slenderness ratio])
|
|
|
|
== Bending About Major Axis
|
|
|
|
#calcline([$L_b = #round(n.Lb, digits: 2) "ft"$], [Unbraced length of compression flange])
|
|
#calcline([$L_p = 1.76 r_y sqrt(E / F_y) = #round(n.Lp, digits: 2) "ft"$], [Limit for yielding])
|
|
#calcline([$C_b = 1$, $c = 1$], [Moment gradient and I-shape coefficient])
|
|
#calcline([$r_"ts" = sqrt(I_y h_o / (2 S_x)) = #round(n.section_rts, digits: 2) "in"$], [Effective radius of gyration])
|
|
#calcline([$L_r = 1.95 r_"ts" E / (0.7 F_y) sqrt((J c)/(S_x h_o) + sqrt(((J c)/(S_x h_o))^2 + 6.76 (0.7 F_y / E)^2)) = #round(n.Lr, digits: 2) "ft"$], [Limit for inelastic torsional buckling])
|
|
#calcline([$F_"cr" = (C_b pi^2 E)/(L_b/r_"ts")^2 sqrt(1 + 0.078 (J c)/(S_x h_o) (L_b/r_"ts")^2) = #round(n.Fcr, digits: 2) "ksi"$], [Elastic lateral-torsional-buckling stress])
|
|
#calcline([$M_p = F_y Z_x = #round(n.Mp, digits: 2) "kip·ft"$], [Plastic moment])
|
|
#calcline([$M_n("LTB") = M_p, "for" L_b <= L_p$], [LTB moment for yielding range])
|
|
#calcline([$M_n("LTB") = C_b [M_p - (M_p - 0.7 F_y S_x)(L_b - L_p)/(L_r - L_p)], "for" L_p < L_b <= L_r$], [LTB moment for inelastic range])
|
|
#calcline([$M_n("LTB") = F_"cr" S_x, "for" L_b > L_r$], [LTB moment for elastic range])
|
|
#calcline([$M_n("LTB") = #round(n.MnLTB, digits: 2) "kip·ft"$], [Lateral-torsional-buckling strength])
|
|
#calcline([$M_n = min(M_p, M_n("LTB")) = #round(n.Mn, digits: 2) "kip·ft"$], [Nominal bending capacity])
|
|
#calcline([$phi M_n = 0.9 M_n = #round(n.phiMn, digits: 2) "kip·ft"$], [Design bending capacity])
|
|
|
|
#check("Flexure", checks.flexure.demand, checks.flexure.capacity, unit: "kip·ft", ok: checks.flexure.ok, demand-label: [$M_u$], capacity-label: [$phi M_n$])
|
|
|
|
== Shear Of Web
|
|
|
|
#calcline([$A_w = d t_w = #round(n.Aw, digits: 3) "in"^2$], [Web area])
|
|
#calcline([$lambda_lim = 2.24 sqrt(E / F_y) = #round(n.lambda_lim, digits: 3)$], [Limiting web slenderness])
|
|
#calcline([$k_v = #n.kv$], [Web shear buckling coefficient])
|
|
#calcline([$C_"v1" = #n.Cv1$], [Web shear strength coefficient])
|
|
#calcline([$phi_v = #n.phi_v$], [Shear reduction factor])
|
|
#calcline([$phi V_n = phi_v 0.6 F_y A_w C_"v1" = #round(n.phiVn, digits: 3) "kip"$], [Design shear capacity])
|
|
|
|
#check("Shear", checks.shear.demand, checks.shear.capacity, unit: "kip", ok: checks.shear.ok, demand-label: [$V_u$], capacity-label: [$phi V_n$])
|
|
|
|
== Deflection
|
|
|
|
#calcline([$delta_max = L / 240 = #round(n.delta_limit, digits: 3) "in"$], [Maximum allowed deflection])
|
|
#calcline([$delta = 5/384 (w L^4) / (E I_x) = #round(n.delta, digits: 3) "in"$], [Expected center deflection under service uniform load])
|
|
|
|
#check("Deflection", checks.deflection.demand, checks.deflection.capacity, unit: "in", ok: checks.deflection.ok, demand-label: [$delta$], capacity-label: [$delta_"max"$])
|
|
|