Skip to content

Built on mechanics, checked against published answers.

Elementarium is finite element software for structural engineers, developed in Prague. Its history goes back to 2021: first a finite element library in TypeScript, then EduBeam, a teaching program for frames, and now a full analysis and design package. This page covers how it was built and how it's checked, with the numbers.

Stage
Public beta
new releases every week or two
Solver
C++ → WebAssembly
runs on your machine
Codes
Eurocode & AISC
steel section and member checks
Based in
Prague, CZ
development and support
Jan Vorisek at a desk with a laptop, a notebook and a printed drawing.
Jan VorisekFounder, Ing. (CTU Prague), structural engineer [email protected]

Five years, three codebases

Everyday structural work is frames, slabs, walls, a code check and a report a reviewer will accept. The programs that do it are built for large offices: a licence server, a module per material, an installer per version. A freelancer or a small practice either pays for all of that or goes back to a spreadsheet.

It did not start as a commercial program. It started as a stiffness matrix in a browser tab, then became a teaching tool, then grew shells. Each step showed what the next one had to fix.

Along the way, the premise changed. Analysis software doesn't have to be cumbersome to be serious, or simplified to be easy to use: the mechanics are the same either way. Browsers now run compiled C++ at close to native speed, so a real solver can run on the engineer's own machine and still be one link away. Elementarium is built around that, not ported to it.

Elementarium was founded by Jan Vorisek, a structural engineer and CTU Prague graduate. Everything is written in-house: the element formulations, the C++ solver, the design checks and the editor. A question about a result is answered by someone who can open the code that produced it.

  1. A finite element library in TypeScript

    Beams, trusses and frames solved in the browser, written for speed from the start. It showed that a stiffness method answer doesn't need an installer.

  2. EduBeam, rewritten for the web

    A teaching program for beams, trusses and frames. The web edition was written from scratch to replace the old desktop program and is still maintained: open source under GPL-3.0, in twelve languages, with more than 650 commits since. Building that editor showed where engineers trip over a model.

    EduBeam on GitHub
  3. Shells, and the services around them

    The first shell prototypes ran MITC4 models, a cooling tower among them, and drew the results in a browser. The same year the account service and the sync server that keep projects on every device went in.

  4. Our own solver core, compiled to WebAssembly

    The analysis was rewritten as a C++ library that runs in the browser tab: about 45,700 lines, with its own sparse factorisation, eigensolvers, multigrid-preconditioned iterative solver and mesher. A finite element program has to solve on your machine, not on ours, or it can't be fast and private at once.

  5. Public beta

    Frames, slabs and walls; linear static, modal, buckling and second-order analysis; Eurocode and AISC steel checks; a calculation report that prints every substituted number.

  6. Version 0.5

    A release every week or two, each one recorded in the release notes.

What runs when you press solve

Nothing is uploaded. The whole solver ships with the page and runs on your processor, on up to eight threads. These are its parts; each element's formulation is written up in the knowledge base.

Elements
Shear-flexible 3D beam with releases and eccentricities, truss, rigid arm, and a four-node shell for slabs and walls: MITC4 bending and shear (Dvorkin–Bathe), an enhanced-strain membrane, Hughes–Brezzi drilling and a warping correction.
Direct solvers
Supernodal LDLᵀ and LLᵀ factorisation with AMD or METIS reordering.
Iterative solver
Conjugate gradients with Jacobi, incomplete Cholesky or smoothed-aggregation multigrid preconditioning.
Modal
Shift-invert Lanczos or subspace iteration, lumped or consistent mass, and a Sturm-sequence check that no mode was skipped.
Stability
Linear buckling with a consistent geometric stiffness, and second-order analysis that captures P-Δ and P-δ.
Code
About 45,700 lines of C++, built on Eigen and amgcl, compiled with Emscripten.
The element formulations
The road overpass example just re-solved: the solve monitor on the left reads Linear static, Converged, 1.2 s, case 8 of 8, 119 iterations at most, with one convergence curve per load case; the model and its ULS traffic displacement fill the viewports.
Road overpass · eight load cases by CG with the multigrid preconditioner on 8 threads, every curve under the 1e-6 tolerance18,654 DoF · 1.2 s this run, 1.8 s median · v0.5.0

How it's checked

A simply supported beam proves very little: the beam element's cubic shape functions get it right by construction. The tests that count reproduce a worked example someone else published, in a design guide, a manual table or a textbook. The example is modelled the way you would model it, and the published figure is the expected value.

Those tests run on every code change. Ten of them are below, with the figure the source prints and the figure Elementarium computes.

  • SBE Multi-storey Part 4, App. A.1

    IPE 330 floor beam, 5.70 m: characteristic deflection

    Published
    Elementarium
    8.8 mm
    8.792 mm
    -0.09 %

    Model, solved

  • SBE Multi-storey Part 4, App. A.2

    IPE 400 roof beam, 15 m, 30 mm precamber: total deflection

    Published
    Elementarium
    82.10 mm
    82.104 mm
    0.00 %

    Design check

  • SCI P364, Example 2

    533 × 210 × 92 UKB, 6.5 m: deflection under variable actions

    Published
    Elementarium
    8.5 mm
    8.483 mm
    -0.20 %

    Design check

  • TU Delft SDE, §17.3

    HE 320 A, 6 m span with 2 m overhang: tip deflection

    Published
    Elementarium
    5.0 mm
    4.984 mm
    -0.32 %

    Model, solved

  • Structville, EN 1995 worked example

    C24 joist 75 × 200, 2.85 m: instantaneous deflection with shear

    Published
    Elementarium
    5.765 mm
    5.767 mm
    +0.03 %

    Model, solved

  • AISC Design Examples v16, F.1-1A

    W18×50, 35 ft: live load deflection

    Published
    Elementarium
    1.09 in
    1.0915 in
    +0.14 %

    Model, solved

  • AISC Manual, Table 3-2

    W18×50 A992: available flexural strength φ_b M_p

    Published
    Elementarium
    379 kip-ft
    378.75 kip-ft
    -0.07 %

    Design check

  • AISC Manual, Table 4-1a

    W14×90 A992, L_c = 20 ft: available compressive strength φ_c P_n

    Published
    Elementarium
    877 kips
    876.7 kips
    -0.03 %

    Design check

  • SSB03, App. B

    Two-span hall 60 × 32 m: peak velocity pressure q_p

    Published
    Elementarium
    659.5 N/m²
    661.8 N/m²
    +0.35 %

    Load generator

  • JRC Handbook 3

    Multi-span roof 40° / 30°: snow load on the roof

    Published
    Elementarium
    1.51 kN/m²
    1.52 kN/m²
    +0.66 %

    Load generator

Published figures are printed rounded, and most of each difference is that rounding. The two largest come from rounding inside the examples' own working: SSB03 takes k_r as 0.215, and JRC takes μ₁ = 0.533 as 0.53. The scale runs from −1 % to +1 %.

The example that found a bug

Access Steel SX016 is a 72 × 30 m portal hall with a 5° roof. Modelled as published, it came out of Elementarium's wind generator with a flat roof: the pitch was computed as 4.99999°, just under the 5° below which EN 1991-1-4 treats a roof as flat.

A hand check wouldn't have caught it, because a person reads 5° as 5°. The fix compares pitch with a tolerance, and SX016 stays in the suite with its published q_p of 0.911 kN/m² and snow load of 0.618 kN/m², so the same mistake can't come back unnoticed.

The test suite

The editor's suite runs on every code change. The solver tests run against the compiled WebAssembly, the same build the editor ships, and every example on this site is meshed, solved and compared with its stored results.

tests in the editor: modelling, loads, results, design checks, IFC, SAF and DXF
2,880
tests in the solver library, against closed forms and against each other
431
editor tests that build a model and solve it with the real solver
144
tests on the account service and the sync server
604

Counted on 14 October 2026. The numbers go up with every release.

Closed forms, held to a tolerance

The solver library checks each analysis against a closed-form answer, with the tolerance written into the test. The tolerance is how far the result may stray before the build fails.

AISC 360 Commentary App. 7 benchmark cases 1 and 2, second-order, at P/P_cr from 0 to 0.6
deflection 0.02 %, moment 1 %
Euler load, pin-ended, converging with 2, 4 and 8 elements; cantilever and fixed–fixed
1 %, 0.1 %, 0.02 %
Simply supported square plate in uniaxial compression, k = 4, MITC4
3 % at 8 × 8
Simply supported square plate under pressure, centre deflection 0.00406 qa⁴/D, and reactions against the applied load
0.5 %, reactions 10⁻⁸
Torsional and axial bar frequencies, a tip-mass oscillator, and Lanczos against the direct eigensolver
0.2 %, spectra 10⁻⁶

Shells, against the published benchmarks

The shell element runs the standard set of MacNeal and Harder (1985) and the thin twisted beam of Belytschko and colleagues (1989), each against its published reference value, on the meshes the papers prescribe.

Patch tests on a distorted mesh, membrane and bending, stresses and moments included
exact, 10⁻⁶
Straight cantilever, in-plane tip shear, 6 × 1 rectangular elements
within 2 %
Twisted beam, 90° over its length, 12 × 2, thick and thin (t/L = 1/3750)
0.5 %, thin 1.5 %
Scordelis–Lo roof, free-edge midspan deflection 0.3024
1 % at 8 × 8, 0.5 % at 16 × 16
Pinched hemisphere with an 18° hole, and the same answer with every length scaled by 1000 or by 1/1000, as a change of units does
1 % at 4 × 4, 0.5 % at 8 × 8; units 10⁻⁹
Pinched cylinder with end diaphragms, the slowest to converge of the set
≥ 74 % at 8 × 8, ≥ 92 % at 16 × 16

Try it on a structure you know.

The free plan needs no card and no install. Open a structure you already have the answer for and compare. If the numbers disagree, send us the project and the hand calculation: either the solver or the documentation gets corrected.

Where it stands

Elementarium models, solves, checks and reports today. It is a public beta, so it changes quickly; what comes next is on the roadmap.

Mail goes straight to development, with an answer within one working day.

The roadmap