W/01 · Product · built end to end
Elementarium
3D structural analysis that opens like a web page. A C++ finite element engine in WebAssembly, under a full engineering editor.

The problem
Structural analysis has traditionally meant installed desktop software, licence servers and a machine set aside for it. Elementarium's premise is that none of that is necessary any more: open a tab, model a structure, solve it, check it, print the report.
I built it on my own, end to end: the solver architecture, the numerics, the editor, the infrastructure, and taking it to production.
The engine
At the core is tinyfem, the finite element library I wrote in C++ on top of Eigen and compile with Emscripten. JavaScript reaches it through embind.
It ships as two builds of the same sources. The default one is single-threaded. The -pthread build is the only way Eigen's OpenMP paths get real threads, and it only runs on a cross-origin-isolated page. The app tries the threaded build behind a deadline and falls back to the serial one on any failure, because a threaded init that the browser refuses doesn't throw, it hangs. The full story is in this write-up.
Solves run in Web Workers, so the editor never blocks while a model is being factorised.

Dynamics, done carefully
Modal analysis asks for a mass participation target rather than a guessed number of modes, as EN 1998-1 §4.3.3.3 does. Iterative eigensolvers can step over a mode while passing every residual test, so a Sturm-sequence check confirms the returned modes really are the lowest ones. Consistent and lumped mass are both available. More on that here.
The editor
The front end is a Nuxt app with dockable panels and a TresJS viewport: instanced members, result shaders and cool–warm fringe plots. Models sync live between collaborators over Yjs and WebRTC, persist offline to IndexedDB, and the app installs as a PWA. Calculation reports are paginated for print with Paged.js.

Design checks
Every steel member gets a utilisation per clause of EN 1993-1-1 §6.2, the governing combination, and a calculation sheet that shows the working.

In numbers
The bundled examples solve in the browser in tens to hundreds of milliseconds: a 3D steel hall in 74 ms, a concrete floor with three load cases in 175 ms, a 318-member lattice tower with two load cases in 195 ms.
Next · Client work · confidential
Interior designer →