- Derive As from the provided longitudinal bars instead of taking it as input; drop the redundant As_bars output and update tests. - Draw a fixed schematic 1 in cover and pin the bottom bars to the stirrup's bottom leg so the figure no longer depends on cover or d. - Fixed stirrup stroke with a rounded 3 pt corner radius. - Right-align the figure, constrain its caption to the image width, and shorten the caption to "Beam cross-section". - Document input.yaml fields.
127 lines
3.6 KiB
Typst
127 lines
3.6 KiB
Typst
#import "assets/sheet.typ": calcline, calcsheet, check
|
||
#import "assets/beam-section.typ": beam-section
|
||
|
||
#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.],
|
||
)
|
||
|
||
== Section and Reinforcement
|
||
|
||
#align(right, block(width: 2.5in, figure(
|
||
beam-section(),
|
||
caption: [Beam cross-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 (#n.n_bars No. #n.bar_size)])
|
||
#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$],
|
||
)
|