Portal Frame Under Lateral Load
Purpose
This case validates frame action rather than single-member beam behaviour.
It is useful for checking that the solver is doing more than getting one beam formula right:
- frame sway occurs in the loaded direction
- base reactions balance the applied horizontal load
- the frame develops secondary vertical reactions, which is expected for a rigid-jointed frame under lateral load
Tests in the repository
Two existing tests are especially relevant:
CoreFrameTests.PortalFrame_HorizontalLoad_CorrectSwayCoreFrameTests.PortalFrame_HorizontalLoadOnly_ColumnShearEqualsApplied
The first is a qualitative behaviour check. The second is the stronger validation case because it also checks the sum of base reactions.
Model
The test model is a simple portal frame:
- column height:
5.0 m - beam span:
4.0 m - base supports: fixed at both columns
- load:
10 kNhorizontal nodal load applied at the left top node - column section:
RectangularSection(0.3, 0.3) - beam section:
RectangularSection(0.3, 0.3)in the equilibrium test,RectangularSection(0.2, 0.4)in the sway test
Reference checks
This case is not documented in the tests as a single closed-form displacement benchmark. Right now it is better presented as a structural-behaviour and equilibrium validation page than as an "exact displacement" comparison.
The strongest reference checks currently supported by the tests are:
- both top nodes should displace in
+X - the sum of base
Fxreactions should equal the applied load in magnitude - the frame should also develop non-zero vertical base reactions
Armatura result
Populate from a real test run.
| Quantity | Expected behaviour / reference | Armatura | Pass criteria |
|---|---|---|---|
| Left top X displacement | positive | TODO | > 0 |
| Right top X displacement | positive | TODO | > 0 |
| Sum of base Fx reactions | -10,000 N | TODO | within 0.5% |
| Left base Fz reaction | non-zero | TODO | != 0 |
| Right base Fz reaction | non-zero | TODO | != 0 |
Why this page still belongs in validation
This page is honest about what is and is not established:
- it does validate global equilibrium and frame sway behaviour
- it does not yet document a closed-form sway displacement target for this exact frame
That is still worth publishing. It tells the reader that the current validation coverage for frames is real, but not overstated.
Good future upgrade
A stronger second version of this page would add either:
- a hand-calculated sway target for the exact frame used in the tests, or
- a comparison against a trusted external solver for the same geometry, supports, and sections
Until then, this page should stay framed as an equilibrium-and-behaviour benchmark.