Convert input parsing to Pint (matching the other calculations), carry units in the YAML values, and drop unit suffixes from input keys, local variables, results keys, the Typst sheet, and tests.
119 lines
3.4 KiB
Typst
119 lines
3.4 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: "Concrete Beam Analysis",
|
||
project: data.project,
|
||
prepared-by: data.prepared_by,
|
||
)
|
||
|
||
= Reinforced Concrete Beam
|
||
|
||
Simple-span rectangular beam under uniform gravity load. Numbers come from `calc.py`. This sheet only presents them.
|
||
|
||
#let beam-sketch = {
|
||
set align(center)
|
||
box(width: 82%, inset: (y: 8pt))[
|
||
#line(length: 100%, stroke: 1.4pt)
|
||
#v(-7.5pt)
|
||
#grid(
|
||
columns: (auto, 1fr, auto),
|
||
align: (left, center, right),
|
||
polygon(fill: black, (0pt, 0pt), (8pt, 10pt), (-8pt, 10pt)),
|
||
text(size: 9pt)[$w_u$ uniform factored load],
|
||
polygon(fill: black, (0pt, 0pt), (8pt, 10pt), (-8pt, 10pt)),
|
||
)
|
||
#v(2pt)
|
||
#text(size: 9pt)[#n.span ft simple span · #n.bw in × #n.h in section]
|
||
]
|
||
}
|
||
|
||
#figure(
|
||
beam-sketch,
|
||
caption: [#n.span ft simply supported beam, #n.bw in × #n.h in rectangular section.],
|
||
)
|
||
|
||
== Loads and Beam Demand
|
||
|
||
#calcline([$L = #n.span " ft"$], [Simple span])
|
||
#calcline([$B_t = #n.tributary " ft"$], [Tributary width])
|
||
#calcline([$D = #n.D " psf"$], [Dead load including superimposed dead])
|
||
#calcline([$L_L = #n.L " psf"$], [Live load])
|
||
#calcline([$w_("sw") = #round(n.self_weight, digits: 3) " kip/ft"$], [Beam self-weight])
|
||
#calcline(
|
||
[$w_u = 1.2 w_D + 1.6 w_L = #round(n.wu, digits: 3) " kip/ft"$],
|
||
[Factored uniform line load],
|
||
)
|
||
#calcline(
|
||
[$M_u = w_u L^2 / 8 = #round(n.Mu) " kip·ft"$],
|
||
[Maximum positive moment],
|
||
)
|
||
#calcline(
|
||
[$V_u = w_u L / 2 = #round(n.Vu) " kip"$],
|
||
[Support shear],
|
||
)
|
||
|
||
== Flexural Strength
|
||
|
||
#calcline([$b_w = #n.bw " in"$], [Beam width])
|
||
#calcline([$h = #n.h " in"$], [Overall depth])
|
||
#calcline([$d = #n.d " in"$], [Effective depth])
|
||
#calcline([$f'_c = #n.fc " ksi"$], [Concrete compressive strength])
|
||
#calcline([$f_y = #n.fy " ksi"$], [Steel yield strength])
|
||
#calcline([$A_s = #n.As " in"^2$], [Provided tension steel (2 No. 5)])
|
||
#calcline(
|
||
[$a = A_s f_y / (0.85 f'_c b_w) = #round(n.a, digits: 3) " in"$],
|
||
[Equivalent compression-block depth],
|
||
)
|
||
#calcline([$epsilon_t = #round(n.et, digits: 4)$], [Net tensile strain])
|
||
#calcline([$phi = #round(n.phi, digits: 2)$], [Strength reduction factor])
|
||
#calcline(
|
||
[$phi M_n = phi A_s f_y (d - a/2) = #round(n.phiMn) " kip·ft"$],
|
||
[Design flexural strength],
|
||
)
|
||
|
||
#v(7pt)
|
||
#check(
|
||
"Flexural strength",
|
||
checks.flexure.demand,
|
||
checks.flexure.capacity,
|
||
unit: "kip·ft",
|
||
ok: checks.flexure.ok,
|
||
demand-label: [$M_u$],
|
||
capacity-label: [$phi M_n$],
|
||
)
|
||
|
||
== Minimum Steel and Concrete Shear
|
||
|
||
#calcline([$A_("s,min") = #round(n.As_min, digits: 3) " in"^2$], [Minimum longitudinal steel])
|
||
#calcline([$A_("s,prov") = #round(n.As, digits: 3) " in"^2$], [Provided longitudinal steel])
|
||
|
||
#v(7pt)
|
||
#check(
|
||
"Minimum longitudinal reinforcement",
|
||
checks.minimum_steel.demand,
|
||
checks.minimum_steel.capacity,
|
||
unit: "in²",
|
||
ok: checks.minimum_steel.ok,
|
||
demand-label: [$A_("s,min")$],
|
||
capacity-label: [$A_("s,prov")$],
|
||
)
|
||
|
||
#v(10pt)
|
||
#calcline([$V_c = 2 sqrt(f'_c) b_w d = #round(n.Vc) " kip"$], [Concrete shear strength])
|
||
#calcline([$phi V_c = #round(n.phiVc) " kip"$], [Design concrete shear strength])
|
||
|
||
#v(7pt)
|
||
#check(
|
||
"Concrete shear",
|
||
checks.shear.demand,
|
||
checks.shear.capacity,
|
||
unit: "kip",
|
||
ok: checks.shear.ok,
|
||
demand-label: [$V_u$],
|
||
capacity-label: [$phi V_c$],
|
||
)
|