Skip to main content

Armatura

Armatura is a structural frame analysis framework for .NET, currently in active development. It provides a C# API and a desktop editor for defining structural models, running linear elastic FEM analysis, and performing design code assessment against Eurocode 3.

Work in progress

Armatura is not yet production-ready. The API surface, file formats, and editor features are subject to change. See Current Limitations below.

What Armatura provides

  • Model building — define nodes, members, supports, materials, sections, and loads programmatically or through the visual editor
  • Load management — dead, live, wind, snow, seismic, and ice load cases with Eurocode-compatible load combinations
  • FEM analysis — first-order linear elastic frame analysis using a 3D Euler–Bernoulli beam element formulation, verified against CALFEM 3.6
  • Results — nodal displacements, reactions, member internal forces at configurable stations, envelope queries across all load cases and combinations
  • Design checks — member utilization ratios against EN 1993-1-1 (Eurocode 3) with clause-level traceability

Two ways to use it

As a library

var project = new ArmaturaProject("My Project");
project.ActiveDesignCode = new EN1993();
var model = project.CreateNewModel("Simple Beam");

var n1 = model.AddNode(0, 0, 0);
var n2 = model.AddNode(10, 0, 0);
model.SetSupport(n1, DoF.Fixed);
model.SetSupport(n2, DoF.Pinned);

var beam = model.AddMember(n1, n2, SteelLibrary.S355,
new IBeamSection(0.3, 0.15, 0.007, 0.011), MemberType.Beam);

var dead = new DeadLoadCase("G");
model.AddLoadCase(dead);
model.AddDistributedLoad(new UniformDistributedLoad(dead, beam,
new Point3D(0, 0, -5000)));

var result = model.RunAnalysis(dead);

As a desktop editor

The Armatura Editor is an Avalonia-based desktop application with a real-time OpenGL viewport, collapsible panels, and data tables for inspecting model input and analysis results. The editor is in early development.

Architecture

SamLabs.Armatura.Core       — structural model, loads, results, design codes
SamLabs.Armatura.Engine — ECS rendering engine, tools, commands
SamLabs.Armatura.Editor — Avalonia desktop application
SamLabs.FemFrame — FEM solver (beam elements, stiffness method)

The Core library has no dependency on the Engine or Editor — it can be used standalone in console applications, web services, or automated pipelines.

Current limitations

These are the boundaries of what Armatura can and cannot do today. Understanding these is important before using the software for any assessment work.

Analysis

  • First-order linear elastic only — no second-order effects (P-Δ, P-δ), no geometric or material nonlinearity. The αcr screening check (EN 1993-1-1 §5.2.1) warns when this may be unconservative, but the analysis itself does not account for it.
  • Euler–Bernoulli beam elements only — no Timoshenko shear deformation (acceptable for slender steel members where L/h > 10, but not suitable for deep beams or short stocky members).
  • No plate, shell, or solid elements — frame structures only.
  • No modal or buckling eigenvalue analysis — these are planned but not yet implemented.
  • Dense matrix solver — works well up to a few thousand DOFs. Very large models (10,000+ DOFs) may be slow.

Design checks

  • EN 1993-1-1 only — AISC 360 and AS4100 are planned but not implemented.
  • Steel only — no concrete, timber, or aluminium design codes.
  • Section classification is simplified — all sections are assumed Class 1 or 2. Class 3 and 4 effective section checks are not implemented.
  • Mcr assumes fork supports and load at shear centre — destabilising top-flange loads are not accounted for in the LTB check.
  • No connection design — member capacity only.

General

  • No unit system enforcement — the API works in consistent SI units (metres, Newtons, Pascals). There is no built-in unit conversion or validation.
  • Serialization format may change — the .armatura project format is not yet stable.
  • Editor is in early development — many features shown in the API are not yet available through the editor UI.