Skip to main content

Validation Overview

This section documents how Armatura is checked against analytical solutions, internal equilibrium checks, and reference comparisons.

The aim is not to claim that the solver is "validated" in a broad marketing sense. The aim is narrower and more useful: for each benchmark case, state exactly what was modeled, what reference value was used, what Armatura produced, and what tolerance was accepted.

What belongs here

A validation page should correspond to a test that already exists in the repository and is stable enough to be rerun during development. The current test suite already contains strong candidates in three groups:

  • closed-form beam checks in SamLabs.Armatura.Test/CoreBeamTests.cs
  • frame-behaviour checks in SamLabs.Armatura.Test/CoreFrameTests.cs
  • reference comparisons and design/evaluation checks in SamLabs.Armatura.Test/ComparisonTests.cs and SamLabs.Armatura.Test/AnalysisAndEvaluationTests.cs

The most doc-worthy tests in the current codebase are:

  1. CantileverBeam_PointLoadAtTip_CorrectDeflection
  2. CantileverBeam_PointLoad_CorrectReactions
  3. SimplySupportedBeam_UniformLoad_CorrectDeflection
  4. SimplySupportedBeam_UniformLoad_CorrectReactions
  5. SimplySupportedBeam_UniformLoad_CorrectMomentAtCenter
  6. PortalFrame_HorizontalLoadOnly_ColumnShearEqualsApplied
  7. UpsideDownU_CompareToExpectedValues
  8. Cantilever_TipLoad_AnalysisAndEvaluation_BendingCheck

These are a good first set because they are specific, repeatable, and already map cleanly to known formulas or reference values.

Page structure

Each validation page should follow the same structure:

  1. Purpose — what behaviour the case is validating
  2. Model — geometry, supports, material, section, and load
  3. Reference — formula, hand calculation, or external benchmark
  4. Armatura result — the actual reported values
  5. Comparison — absolute and relative error
  6. Notes — sign conventions, assumptions, and current limits

How to capture results

For the pages drafted here, the model definition and expected values are taken from the test code. The final numeric result tables should be pasted in from a real test run.

A practical workflow is:

# run a single benchmark test and capture console output
dotnet test --filter "FullyQualifiedName~SamLabs.Armatura.Test.CoreBeamTests.CantileverBeam_PointLoadAtTip_CorrectDeflection"

Then copy the reported values into the corresponding page.

Scope of the current validation section

This section is intentionally conservative.

It currently covers:

  • linear elastic beam response
  • support reactions and global equilibrium
  • simple frame sway behaviour
  • one explicit comparison against stored reference values
  • a small number of design-code pipeline checks

It does not yet constitute broad validation of:

  • geometric nonlinearity
  • second-order effects
  • shell or plate behaviour
  • dynamic analysis
  • large benchmark suites against commercial solvers

Those belong in later additions, but it is better to document a small set honestly than to imply wider coverage than the project currently has.