Refine beam section figure and derive As from bars

- 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.
This commit is contained in:
smillmorel 2026-09-21 19:16:57 -04:00
commit 759d5e3bae
8 changed files with 638 additions and 680 deletions

View file

@ -40,10 +40,10 @@ def test_example_demands(result):
def test_example_flexure(result):
v = result["values"]
assert v["a"] == pytest.approx(1.823529, rel=1e-5)
assert v["et"] == pytest.approx(0.010283, rel=1e-3)
assert v["a"] == pytest.approx(1.804683, rel=1e-5)
assert v["et"] == pytest.approx(0.010423, rel=1e-3)
assert v["phi"] == pytest.approx(0.9)
assert v["phiMn"] == pytest.approx(23.961176, rel=1e-5)
assert v["phiMn"] == pytest.approx(23.739557, rel=1e-5)
assert result["checks"]["flexure"]["ok"] is True
@ -67,7 +67,7 @@ def test_reinforcement_geometry(result):
assert v["top_bar_size"] == 4
assert v["n_top_bars"] == 2
assert v["top_bar_db"] == pytest.approx(0.5)
assert v["As_bars"] == pytest.approx(2 * math.pi * 0.625**2 / 4.0, rel=1e-6)
assert v["As"] == pytest.approx(2 * math.pi * 0.625**2 / 4.0, rel=1e-6)
def test_rejects_depth_without_room_for_bars():