Skip to content

Verifying the solver

Closed-form cases you can build in ten minutes to test the solver — beams, frames, columns, plates, frequencies — with the expected error of each.

Analysis types 10 min read

Do not take our word for it. Every element type in Elementarium is exercised against closed-form solutions before anything merges, but that is our floor, not your evidence. The only solver test that means anything to you is one you ran yourself, on a case whose answer you already know.

Each case below is small enough to build in a few minutes, with the formula to compare against and the size of disagreement to expect from discretisation. Every beam, frame, column and frequency case fits the free plan's 500 degrees of freedom; of the plate meshes, 4 × 4 fits, 8 × 8 sits just under the cap once the edges are supported, and 16 × 16 needs a student or Pro account. The page doubles as a guide to what each element assumes; see Element formulations for the formal version.

How to run a benchmark

  1. Build the case with round numbers: , , . Round numbers make a wrong factor of a thousand obvious.
  2. Solve, and read the quantity from the table, not the diagram, so that you get all the figures.
  3. Compute the closed form by hand and compare. Record the percentage difference.
  4. If the difference is larger than this page says to expect, refine and repeat before concluding anything. The tables below say which cases are exact and which converge.

Keep the project. A benchmark set you can re-run after every release is worth more than any release note.

For the record, the solver's own test suite runs the beam cases below on every change — , , , , , and , each to nine decimal places — and drives the WebAssembly stability solver to Euler's load and the second-order amplifier . That is the floor mentioned above; the cases on this page are how you raise it on your own machine.

Beams: exact in linear static

The beam element uses cubic interpolation, which is the exact solution for a prismatic member under end loads and uniform load. These cases should agree to rounding with one element per member and no refinement:

CaseQuantityClosed form
Simply supported, UDL Mid-span moment
Mid-span deflection
End shear
Cantilever, tip load Root moment
Tip deflection
Cantilever, UDL Root moment
Tip deflection
Fixed both ends, UDL Support moment
Mid-span moment
Mid-span deflection
Propped cantilever, UDL Fixed-end moment
Prop reaction
Axial member, load Extension
Simply supported, point load at mid-spanMid-span moment
Mid-span deflection
loadδVMwLwL/2−wL/2wL²/85wL⁴/384EI
Simply supported, uniform load w. Deflection drawn downwards, bending moment on the tension side, shapes exact but not to scale.

Worked: , , IPE 400 (), S355. Simply supported:

A point load at mid-span sits at a node if the member is split there, and the result is exact. Try it both ways, split and unsplit, and expect to rounding from each. If the unsplit member disagrees, that is worth reporting.

Shear deformation

The beam includes shear deformation through its shear areas. On a slender beam the effect is small; on a stocky one it is not. Under a uniform load the shear term adds to the bending deflection : for an IPE 400 that is about 1.4% at a 10 m span and about 34% at 2 m. That is the element being right. To compare with the pure bending formula, set the shear areas very large.

Frames: exact, and a check on connectivity

A pinned-base portal with a uniform rafter load is the standard frame test. For a rectangular portal of height , span , column and rafter under rafter UDL :

The mid-span moment must come out below and the eaves moment must be the difference. If the rafter shows exactly, the eaves are not connected — see Your first model.

The quickstart builds this frame.

Columns: buckling converges with subdivision

Linear buckling uses a geometric stiffness matrix derived from the same cubic shape functions, and for that problem the cubic is an approximation. The Euler load

with for a pin-ended column, for a cantilever, fixed–fixed and fixed–pinned, is reproduced to a precision set by the number of elements:

Elements per memberError in , pin-ended
1about +22% — the single element gives
2under 1%
4under 0.1%
Pinned–pinnedPL_cr = LFixed–freePL_cr = 2LFixed–fixedPL_cr = 0.5LFixed–pinnedPL_cr ≈ 0.7L
First buckling mode and effective length for the four classical end conditions. The fixed–fixed column's top is held against rotation but free to move down with the load.

The stability setup carries its own minimum subdivision for this reason, so the default run is already on the right side of the table. Compare a run at the setup's minimum with one at twice that; the difference should be inside the figures above. If the first mode is not the one you expect (a cantilever's first mode has no inflection point and a fixed–fixed column's has two), leave the Sturm-sequence completeness check on and it will tell you whether a mode was skipped.

Worked: pin-ended, , HEA 300 (, weak axis):

Apply a 1 000 kN axial load as the reference case and expect .

Frequencies: converge from above

Modal analysis has the same character. With a consistent mass matrix the frequencies converge to the exact values from above; with a lumped matrix, from below.

elements across the span (log) →resultexactconsistent masslumped mass
A consistent mass matrix converges on the exact frequency from above, a guaranteed upper bound. A lumped one usually comes in below, so the two tend to bracket it, but that side is not guaranteed.

The closed form for a uniform beam is

with the mass per unit length and :

Support
Simply supported
Cantilever1.8754.6947.855
Fixed–fixed4.7307.85310.996

Worked: simply supported, , IPE 300 (, 42.2 kg/m):

Four elements give the first mode within a fraction of a percent and the second within a few percent; the third needs more. Run the case with consistent and with lumped mass and watch the two bracket the exact value — the cheapest sanity check on a frequency there is. See Modal analysis.

Plates: converge from below

A surface result depends on the mesh, and the test is convergence rather than agreement on the first run. The classical case is a simply supported square plate, side , thickness , under uniform pressure , with

For :

For a clamped square plate, at the centre and the moment at the mid-side of an edge is .

Expected behaviour on the shell element:

MeshCentre deflectionCentre moment
4 × 4Within a few percent, lowSeveral percent low
8 × 8Within about 1%Within 1–2%
16 × 16ConvergedConverged

Deflection converges from below (the coarse mesh is stiff) and the moment follows. Two refinements agreeing within a percent is the convergence argument; a result that changes by more than that between the last two meshes is not yet a number to quote. See Choosing element size.

elements across the span (log) →resultexactdisplacement, moment
A displacement-based mesh is too stiff, so results approach the exact value from below as the mesh is refined. Two refinements agreeing is the convergence argument.

A thin plate, or more, is the test that exposes shear locking in a displacement-based Reissner–Mindlin element. The shell element does not lock. A plate that comes out far too stiff as it gets thin is what a locking element does, and it is what this test is for.

Walls: bending in their own plane

The same element carries a wall's in-plane action, and the test that exposes a weak membrane is a deep cantilever bent in its own plane. Take a wall long and deep, , , , clamped along one short edge, with of shear spread over the other. With shear deformation included ():

A fine plane-stress mesh converges to 14.67 mm; the 0.15 % between the two is the clamped root, which beam theory does not see. Read the in-plane deflection at the free end as the average over its nodes.

MeshTip deflection
6 × 1, one element deepAbout 1 % low
Finer meshesConverge to 14.67 mm

A plain four-node membrane reaches about 68 % on the 6 × 1 mesh. If a wall comes out that stiff, the membrane is locking, and this is the case that shows it. Lean the interior element edges and the result drops — to about 80 % when they lean by 40 % of the element width — because no four-node membrane that passes the patch test is exact on a trapezoid. See Element formulations.

Reactions: the universal check

Cross-checking in another solver

Beyond closed-form cases, the real test of a real model is to run it somewhere else. On Pro, Elementarium exports a SAF workbook that SCIA Engineer, RFEM and others read (and an OOFEM input deck, if OOFEM is what you have). Put the displacements side by side. Two independent implementations agreeing is the evidence a sceptical reviewer accepts.

When they disagree

Work through, in order:

  1. Units — the factor is 1 000 or 10⁶. Units.
  2. Supports — the closed form assumes a support condition; the model has the one you gave it. Pinned is translations only.
  3. Discretisation — buckling, modal and plate cases converge; check the tables above before concluding.
  4. Shear deformation — a stocky beam is more flexible than pure bending says, correctly: about a third more for an IPE 400 over 2 m.
  5. Sign convention — a negative where you expected a positive is usually the local axis direction. Sign conventions.

If none of those explains it, that is a bug or a limitation worth reporting. Send the project and the hand calculation to [email protected]; during the beta it reaches the person who wrote the solver, and either the solver or this page gets corrected.

Something wrong or unclear on this page? Tell us, and it gets corrected.