Plain units already get a gap from the source whitespace, so drop the leading space inside the string; keep it only on superscripted units (in^2, in^3, in^4, ft^2). Also fix the generated concrete-beam figure labels. Regenerate all affected PDFs.
62 lines
3.3 KiB
Typst
62 lines
3.3 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: "Wood Stud Column — Axial Capacity",
|
|
project: data.project,
|
|
prepared-by: data.prepared_by,
|
|
)
|
|
|
|
= Wood Stud Column — Axial Capacity
|
|
|
|
Concentrically loaded 2x4 wood stud (SP / Southern Pine No. 2) analyzed for
|
|
axial compression parallel to grain per NDS 2018 ASD. Pint parses `input.yaml`;
|
|
`calc.py` computes the column stability factor $C_p$ (NDS 3.7.1.5, Eq. 3.7-1)
|
|
and the adjusted compression capacity. The governing limit state is compression
|
|
with buckling about the weak axis.
|
|
|
|
== Geometry And Axial Load
|
|
|
|
#let P = 400
|
|
#let L_ft = 6
|
|
#let b = 1.5
|
|
#let d = 3.5
|
|
#let A = b * d
|
|
#metadata((P_lbf: P, A_in2: A)) <wood-stud-column-loads>
|
|
|
|
#calcline([$P = #P "lbf"$], [Axial load, compression (ASD)])
|
|
#calcline([$L = #L_ft "ft" = #n.L_in "in"$], [Total stud length])
|
|
#calcline([$b = #b "in"$, $d = #d "in"$], [Actual dimensions of a nominal 2x4])
|
|
#calcline([$A = b d = #round(n.A_in2, digits: 2) " in"^2$], [Cross-sectional area])
|
|
#calcline([$K_e = #n.Ke$], [Effective-length factor, pinned-pinned (NDS 3.7.1.2)])
|
|
#calcline([$L_e = K_e L = #round(n.Le_in, digits: 1) "in"$], [Effective length])
|
|
#calcline([$d_"min" = min(b, d) = #n.d_least_in "in"$], [Least dimension; weak-axis buckling governs])
|
|
#calcline([$L_e / d_"min" = #round(n.Le_in / n.d_least_in, digits: 1) <= 50$], [Slenderness ratio, weak axis; cap $L_e/d <= 50$ (NDS 3.7.1.4)])
|
|
|
|
== Material And Adjustment Factors
|
|
|
|
#calcline([$"Species/grade" = #n.species_grade$], [NDS Supplement reference values])
|
|
#calcline([$F_c = #n.Fc_psi "psi"$], [Reference compression parallel to grain])
|
|
#calcline([$E = #n.E_psi "psi"$, $E'_"min" = #n.Emin_psi "psi"$], [Moduli of elasticity])
|
|
#calcline([$C_D = #n.CD$, $C_M = #n.CM$, $C_t = #n.Ct$, $C_F = #n.CF$, $C_i = #n.Ci$], [Load duration ($C_D=1.0$ normal/occupancy, NDS 2.3.2), wet service, temperature, size ($C_F=1.15$ for 2x4 compression, NDS 4.3.6), incising (NDS Table 4.3.1)])
|
|
|
|
== Column Stability Factor (NDS 3.7.1.4)
|
|
|
|
#calcline([$F^*_c = F_c C_D C_M C_t C_F C_i = #round(n.Fc_star_psi, digits: 1) "psi"$], [Adjusted reference compression, NDS 3.7.1.5])
|
|
#calcline([$E'_"min" = E_"min" C_M C_t C_i = #round(n.Emin_prime_psi, digits: 0) "psi"$], [Adjusted 5th-percentile modulus])
|
|
#calcline([$F_("cE") = 0.822 E'_"min" / (L_e / d_"min")^2 = #round(n.FcE_weak_psi, digits: 2) "psi"$], [Critical buckling stress, NDS Eq. 3.7-2 (coefficient 0.822)])
|
|
#calcline([$0.822$ (Euler coeff., NDS Eq. 3.7-2), $c = #n.c_sawn$], [Sawn-lumber column coefficient, NDS Eq. 3.7-1])
|
|
#calcline([$C_p = (1 + F_("cE")/F^*_c)/(2c) - sqrt(...) = #round(n.Cp, digits: 4)$], [Column stability factor, NDS Eq. 3.7-1 (3.7.1.5); weak axis governs])
|
|
|
|
== Adjusted Compression Capacity
|
|
|
|
#calcline([$F'_c = F^*_c C_p = #round(n.Fc_prime_psi, digits: 2) "psi"$], [Adjusted compression design value, NDS 3.7.1.5])
|
|
#calcline([$f_c = P / A = #round(n.fc_psi, digits: 2) "psi"$], [Acting compression stress])
|
|
#calcline([$P_a = F'_c A = #round(n.Pa_lbf, digits: 1) "lbf"$], [Allowable axial load])
|
|
|
|
#v(7pt)
|
|
#check("Axial Compression", checks.axial.demand, checks.axial.capacity, unit: "lbf", ok: checks.axial.ok, demand-label: [$P$], capacity-label: [$P_a$])
|