Truss-sizing data provenance
Ground structure and loads
The 18-node lattice, 75-member distance cutoff, supports, node-motion bounds, load nodes, force cases, holdout settlement, and optimization budgets are synthetic tutorial data authored for this repository. They are not copied from a building project and do not represent an approved structural design.
The deterministic generator in src/ground.rs is authoritative. Tests freeze
the node, candidate-member, movable-node, and baseline-member counts.
Circular hollow sections
The twelve names use nominal diameter/thickness combinations representative of the EN 10210 circular-hollow-section family. Public background sources:
- SteelConstruction.info: Steel section sizes
- SCI P363, Steel Building Design: Design Data (“The Blue Book”)
Only the nominal outer diameter and wall thickness enter this tutorial.
src/catalogue.rs computes the ideal circular properties:
inner diameter d = D − 2t
area A = π(D² − d²) / 4
second moment I = π(D⁴ − d⁴) / 64
radius r = sqrt(I/A)
linear mass = 7850 A
These idealized values may differ from product tables because the tutorial
does not model dimensional tolerance or manufacturer conventions.
sections.csv is regenerated by the Rust binary and every row
is checked for r = sqrt(I/A).
Material and carbon assumptions
Young’s modulus 210 GPa, density 7,850 kg/m³, and the educational allowable
stress 215 MPa are frozen model assumptions. They are not a material
certificate or an implementation of Eurocode resistance rules.
The 1.70 kg CO2e/kg carbon multiplier is deliberately labelled
indicative in source, CSV, JSON, plots, and prose. It is synthetic, is not
an Environmental Product Declaration, and must be replaced by verified
project-specific data before environmental comparison.
Generated evidence
All files under results/publication/ were generated by:
cargo run --release --locked -- \
--mode all --preset publication --workers 0 \
--output results/publication
All files under images/ were rendered from those artifacts by
plot_results.py. The script’s --check mode regenerates every SVG in a
temporary directory and requires byte-for-byte identity.