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
mudsill-for-shore-post/assets/logo.png
Executable file
BIN
mudsill-for-shore-post/assets/logo.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 99 KiB |
82
mudsill-for-shore-post/assets/sheet.typ
Normal file
82
mudsill-for-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)
|
||||
],
|
||||
)
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
1389
mudsill-for-shore-post/mudsill-for-shore-post.pdf
Normal file
1389
mudsill-for-shore-post/mudsill-for-shore-post.pdf
Normal file
File diff suppressed because it is too large
Load diff
141
mudsill-for-shore-post/mudsill-for-shore-post.typ
Normal file
141
mudsill-for-shore-post/mudsill-for-shore-post.typ
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
#import "assets/sheet.typ": calcline, calcsheet, check
|
||||
|
||||
#show: calcsheet.with(
|
||||
title: "Mudsill Analysis and Design",
|
||||
project: "BNC Typical Shoring",
|
||||
prepared-by: "Conemco Engineering",
|
||||
)
|
||||
|
||||
#let round(value, digits: 2) = calc.round(value, digits: digits)
|
||||
|
||||
= Mudsill Analysis and Design
|
||||
|
||||
Analysis to determine the adequacy of a plywood mudsill supporting a shore post
|
||||
base over compacted soil. The mudsill consists of stacked plywood panels
|
||||
distributing the post load to the ground.
|
||||
|
||||
== Geometry and Loads
|
||||
|
||||
#let P = 3000.0
|
||||
#let Bp = 6.0
|
||||
#let Hp = 6.0
|
||||
#let B = 18.0
|
||||
#let H = 18.0
|
||||
#let t = 0.75
|
||||
#let N = 3
|
||||
|
||||
#calcline([$P = #P " lbf"$], [Post axial load on mudsill])
|
||||
#calcline([$B_p = #Bp " in"$], [Post base width])
|
||||
#calcline([$H_p = #Hp " in"$], [Post base length])
|
||||
#calcline([$B = #B " in"$], [Mudsill panel width])
|
||||
#calcline([$H = #H " in"$], [Mudsill panel length])
|
||||
#calcline([$t = #t " in"$], [Plywood thickness])
|
||||
#calcline([$N = #N$], [Number of plywood panels])
|
||||
|
||||
== Plywood Bearing Under Post Base
|
||||
|
||||
#let Ap = Bp * Hp
|
||||
#let fbrg_ply = P / Ap
|
||||
#let Fabrg = 360.0
|
||||
|
||||
#calcline([$A_p = B_p H_p = #round(Ap) " in"^2$], [Post base contact area])
|
||||
#calcline(
|
||||
[$f_"brg" = P / A_p = #round(fbrg_ply, digits: 3) " psi"$],
|
||||
[Bearing stress in plywood],
|
||||
)
|
||||
#calcline([$F_"abrg" = #Fabrg " psi"$], [Allowable plywood bearing (D510 ch 4.4.7)])
|
||||
|
||||
#v(8pt)
|
||||
#check(
|
||||
"Plywood bearing under post base",
|
||||
fbrg_ply,
|
||||
Fabrg,
|
||||
unit: "psi",
|
||||
demand-label: [$f_"brg"$],
|
||||
capacity-label: [$F_"abrg"$],
|
||||
)
|
||||
|
||||
== Soil Bearing
|
||||
|
||||
#let Abrg = (B * H) / 144.0
|
||||
#let fbrg_soil = P / Abrg
|
||||
#let Fbrg = 2000.0
|
||||
|
||||
#calcline([$A_"brg" = (B H) / 144 = #round(Abrg, digits: 3) " ft"^2$], [Mudsill bearing area on soil])
|
||||
#calcline(
|
||||
[$f_"brg" = P / A_"brg" = #round(fbrg_soil, digits: 3) " psf"$],
|
||||
[Soil bearing pressure],
|
||||
)
|
||||
#calcline([$F_"brg" = #Fbrg " psf"$], [Allowable soil bearing pressure])
|
||||
|
||||
#v(8pt)
|
||||
#check(
|
||||
"Soil bearing pressure",
|
||||
fbrg_soil,
|
||||
Fbrg,
|
||||
unit: "psf",
|
||||
demand-label: [$f_"brg"$],
|
||||
capacity-label: [$F_"brg"$],
|
||||
)
|
||||
|
||||
== Plywood Bending
|
||||
|
||||
The soil pressure acting on the panel produces a lineal load on the plywood
|
||||
spanning between the post base edge and the panel edge. A 0.6 reduction factor
|
||||
is applied to the soil pressure to account for partial loading at the cantilever.
|
||||
|
||||
#let B_ft = B / 12.0
|
||||
#let w = 0.6 * fbrg_soil * B_ft
|
||||
#let a = (H - Hp) / 2.0
|
||||
#let a_ft = a / 12.0
|
||||
#let M = w * a_ft * a_ft / 2.0
|
||||
#let Sp = N * B * t * t / 6.0
|
||||
#let fb = (M * 12.0) / Sp
|
||||
#let FbS = 405.0
|
||||
#let S = 1.125
|
||||
#let Fb = FbS / S
|
||||
|
||||
#calcline([$w = 0.6 f_"brg" B = #round(w) " plf"$], [Lineal load on plywood])
|
||||
#calcline([$a = (H - H_p) / 2 = #round(a) " in"$], [Cantilever length])
|
||||
#calcline([$M = w a^2 / 2 = #round(M) " lbf" dot "ft"$], [Maximum bending moment])
|
||||
#calcline([$S_p = N B t^2 / 6 = #round(Sp, digits: 3) " in"^3$], [Section modulus of plywood])
|
||||
#calcline(
|
||||
[$f_b = M / S_p = #round(fb, digits: 3) " psi"$],
|
||||
[Bending stress in plywood],
|
||||
)
|
||||
#calcline([$F_b = F_"bS" / S = #round(Fb) " psi"$], [Allowable bending stress])
|
||||
|
||||
#v(8pt)
|
||||
#check(
|
||||
"Plywood bending stress",
|
||||
fb,
|
||||
Fb,
|
||||
unit: "psi",
|
||||
demand-label: [$f_b$],
|
||||
capacity-label: [$F_b$],
|
||||
)
|
||||
|
||||
== Plywood Shear
|
||||
|
||||
#let V = w * a_ft
|
||||
#let Av = N * B * t
|
||||
#let fv = 1.5 * V / Av
|
||||
#let Fv = 90.0
|
||||
|
||||
#calcline([$V = w a = #round(V) " lbf"$], [Maximum shear force])
|
||||
#calcline([$A_v = N B t = #round(Av, digits: 3) " in"^2$], [Shear area of plywood])
|
||||
#calcline(
|
||||
[$f_v = 1.5 V / A_v = #round(fv, digits: 3) " psi"$],
|
||||
[Shear stress in plywood],
|
||||
)
|
||||
#calcline([$F_v = #Fv " psi"$], [Allowable shear stress])
|
||||
|
||||
#v(8pt)
|
||||
#check(
|
||||
"Plywood shear stress",
|
||||
fv,
|
||||
Fv,
|
||||
unit: "psi",
|
||||
demand-label: [$f_v$],
|
||||
capacity-label: [$F_v$],
|
||||
)
|
||||
Loading…
Reference in a new issue