Skip to main content

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_CorrectSway
  • CoreFrameTests.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 kN horizontal 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 Fx reactions 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.

QuantityExpected behaviour / referenceArmaturaPass criteria
Left top X displacementpositiveTODO> 0
Right top X displacementpositiveTODO> 0
Sum of base Fx reactions-10,000 NTODOwithin 0.5%
Left base Fz reactionnon-zeroTODO!= 0
Right base Fz reactionnon-zeroTODO!= 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.