Add structural calculation worksheets
Collection of engineering calculation projects (Python + Typst), each with input, calc script, tests, results, and generated PDF where available.
This commit is contained in:
commit
d5ac3fca7e
81 changed files with 18668 additions and 0 deletions
BIN
shore-post/assets/logo.png
Executable file
BIN
shore-post/assets/logo.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 99 KiB |
82
shore-post/assets/sheet.typ
Normal file
82
shore-post/assets/sheet.typ
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
#let navy = rgb("#1a3a5f")
|
||||
#let muted = rgb("#626b73")
|
||||
#let pass = rgb("#1f6b45")
|
||||
#let fail = rgb("#9b2c2c")
|
||||
|
||||
#let calcsheet(
|
||||
title: "Structural Calculation",
|
||||
project: "",
|
||||
prepared-by: "",
|
||||
body,
|
||||
) = {
|
||||
set document(title: title, author: prepared-by)
|
||||
set page(
|
||||
paper: "us-letter",
|
||||
margin: (x: 1in, top: 1.25in, bottom: 1in),
|
||||
header: context {
|
||||
grid(
|
||||
columns: (1fr, 1fr),
|
||||
align: (left, right),
|
||||
image("../assets/logo.png", height: 30pt),
|
||||
[#text(size: 9pt)[Project:] \
|
||||
#text(size: 10pt, weight: "bold")[#project]],
|
||||
)
|
||||
},
|
||||
footer: context {
|
||||
set text(size: 8.5pt, fill: muted)
|
||||
stack(
|
||||
spacing: 4pt,
|
||||
line(length: 100%, stroke: 0.5pt + muted),
|
||||
[#prepared-by],
|
||||
)
|
||||
},
|
||||
)
|
||||
set text(font: "Libertinus Serif", size: 10pt, lang: "en")
|
||||
set par(justify: true)
|
||||
set heading(numbering: none)
|
||||
show heading.where(level: 1): set text(size: 14pt, weight: "bold", fill: black)
|
||||
show heading.where(level: 2): set text(size: 11pt, weight: "bold", fill: black)
|
||||
show heading.where(level: 2): set block(above: 2em, below: 1em)
|
||||
body
|
||||
}
|
||||
|
||||
#let calcline(formula, note) = grid(
|
||||
columns: (1.7fr, 1fr),
|
||||
gutter: 4pt,
|
||||
align: (left, left),
|
||||
formula, text(size: 9pt, fill: muted, note),
|
||||
)
|
||||
|
||||
#let check(label, demand, capacity, unit: "", ok: auto, demand-label: "Demand", capacity-label: "Capacity") = {
|
||||
let utilization = demand / capacity
|
||||
let passes = if ok == auto { utilization <= 1 } else { ok }
|
||||
let color = if passes { pass } else { fail }
|
||||
block(
|
||||
breakable: false,
|
||||
width: 100%,
|
||||
stroke: 0.8pt + black,
|
||||
inset: 8pt,
|
||||
radius: 2pt,
|
||||
)[
|
||||
#grid(
|
||||
columns: (1fr, auto),
|
||||
[#text(weight: "bold")[#label]],
|
||||
box(stroke: 0.8pt + color, inset: (x: 6pt, y: 2pt))[
|
||||
#text(weight: "bold", fill: color)[#if passes { "OK" } else { "NOT OK" }]
|
||||
],
|
||||
)
|
||||
#v(4pt)
|
||||
#grid(
|
||||
columns: (1fr, auto),
|
||||
[
|
||||
#demand-label: #calc.round(demand, digits: 2) #unit #h(14pt)
|
||||
#capacity-label: #calc.round(capacity, digits: 2) #unit
|
||||
],
|
||||
[
|
||||
D/C: #calc.round(utilization, digits: 2)
|
||||
],
|
||||
)
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
BIN
shore-post/assets/tributary-areas.png
Normal file
BIN
shore-post/assets/tributary-areas.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
1038
shore-post/shore-post.pdf
Normal file
1038
shore-post/shore-post.pdf
Normal file
File diff suppressed because it is too large
Load diff
68
shore-post/shore-post.typ
Normal file
68
shore-post/shore-post.typ
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#import "assets/sheet.typ": calcline, calcsheet, check
|
||||
|
||||
#show: calcsheet.with(
|
||||
title: "Shore Post Analysis and Design",
|
||||
project: "Deer Creek Shoring",
|
||||
prepared-by: "Conemco Engineering",
|
||||
)
|
||||
|
||||
#let round(value, digits: 2) = calc.round(value, digits: digits)
|
||||
|
||||
= Shore Post Analysis and Design
|
||||
|
||||
Analysis to determine the axial demand for heavy duty shore post supporting the building's roof adjacent to the masonry walls to be repaired.
|
||||
|
||||
#figure(
|
||||
image("assets/tributary-areas.png", width: 69%),
|
||||
caption: [Plan tributary area for highest loaded shore post pair.],
|
||||
)
|
||||
|
||||
== Tributary Area
|
||||
|
||||
#let Bx = 6.25
|
||||
#let By = 16
|
||||
#let At = Bx * By
|
||||
|
||||
#calcline([$S_x = #Bx " ft"$], [Tributary width in x (Spacing in X)])
|
||||
#calcline([$S_y = #By " ft"$], [Tributary width in y (Spacing in Y)])
|
||||
#calcline(
|
||||
[$A_t = S_x S_y = #round(At) " ft"^2$],
|
||||
[Plan tributary area],
|
||||
)
|
||||
|
||||
== Load Determination
|
||||
|
||||
#let DL = 40.0
|
||||
#let SDL = 15.0
|
||||
#let LL = 20.0
|
||||
|
||||
#let P = ((DL + SDL + LL) * At) / 2
|
||||
|
||||
#calcline([$D = #DL " psf"$], [Dead load])
|
||||
#calcline([$D_("s") = #SDL " psf"$], [Superimposed dead load])
|
||||
#calcline([$L_L = #LL " psf"$], [Live load])
|
||||
|
||||
#calcline(
|
||||
[$P_max = display((( D + D_("s") + L_L) A_t ) / 2) = #round(P) " lbf"$],
|
||||
[Maximum service load on one post],
|
||||
)
|
||||
|
||||
== Shore Post Axial Capacity
|
||||
|
||||
Considering AS550 Heavy Duty Shore post
|
||||
|
||||
#let H = 14
|
||||
#let Pcap = 6400
|
||||
|
||||
#calcline([$H = #H " ft"$], [Shore post height])
|
||||
#calcline([$P_("cap") = #Pcap " lbf"$], [AS550 Shore post capacity as per tech report])
|
||||
|
||||
#v(8pt)
|
||||
#check(
|
||||
"Shore post axial capacity",
|
||||
P,
|
||||
Pcap,
|
||||
unit: "lbf",
|
||||
demand-label: [$P_max$],
|
||||
capacity-label: [$P_"cap"$],
|
||||
)
|
||||
Loading…
Reference in a new issue