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.