Plain units already get a gap from the source whitespace, so drop the
leading space inside the string; keep it only on superscripted units
(in^2, in^3, in^4, ft^2). Also fix the generated concrete-beam figure
labels. Regenerate all affected PDFs.
Plain unit strings already get a gap from the source whitespace, so the
added leading space doubled it; keep the leading space only on
superscripted units.
Rename calc.py locals and result keys, add inline unit comments, and
normalize Lp/Lr/Lb to feet. Update steel-beam.typ references and the
tests (current W10X15 input, --stdout summary behavior).
- Longitudinal bars 4 #8 bottom / 2 #8 top; stirrups #3 @ 8 in.
- Move the section figure after Loads and Beam Demand.
- Add concrete-beam/README.md.
- Regenerate results.json, assets/beam-section.typ, and the PDF.
Note: the example-value tests (test_example_flexure,
test_reinforcement_geometry) are not updated for the new input and
currently fail.
- 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.
Add reinforcement inputs (cover, stirrup size/spacing, longitudinal and
top bar size/count) and emit the derived bar geometry from calc.py.
beam_section.py renders a native Typst drawing of the section to
assets/beam-section.typ, which concrete-beam.typ imports as a figure.
Effective depth d remains authoritative for the tension-steel position.
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.