Reference

Modeling conventions & units

The axis, sign and unit definitions the FERS engine uses — the same in the web app, the Python package and the API. Everything below is taken from the engine's own schema or verified against the solver; the few items we could not evidence directly are marked verify with the engine instead of guessed.

Global axes & gravity

TopicConvention
Coordinate systemRight-handed global X / Y / Z. Y is up — node coordinates are (X, Y, Z) with Y the height.
Load directionsNodal and distributed loads take a global direction vector: (0, −1, 0) is straight down. Member point loads can alternatively use member-local axes (axes: "local" vs "global").
Self-weightWhen enabled, the engine generates self-weight from density · area along gravity_direction, default (0, −1, 0), with gravity_factor −9.81 m/s² (always SI, never rescaled with the model's length unit).

Member local axes & roll

Internal member forces (N, Vy, Vz, T, My, Mz) are reported in the member-local frame, built from the member direction alone:

TopicConvention
Local xAlong the member, from start node to end node.
Reference vectorGlobal Y (0, 1, 0). For members within ≈ 0.81° of vertical the reference switches to global Z (0, 0, 1).
Local z, local ylocal z = local x × reference (normalized); local y = local z × local x. So a horizontal member has local y = global Y (web up) and local z = global Z, while a vertical member has local y = global Z and local z = global X.
Rollrotation_angle rotates the section (and its local y/z axes) about local x. Diagrams and section rendering follow the rolled frame.
Bending planesMz / Vy act in the local x-y plane; My / Vz act in the local x-z plane. In a vertical X-Y frame this means horizontal or inclined members carry in-plane bending as Mz / Vy and near-vertical members (columns) as My / Vz — verified against the native solver on a portal frame.

Practical consequence: with the default roll, a column in an X-Y frame bends in-plane about its local y-axis — for an I-section that is the weak axis. Roll the member 90° with rotation_angle to put the strong axis in the frame plane.

Section properties: the strong axis is z

FERS names section properties after the local axis the quantity refers to: i_z resists bending about local z (bending in the local x-y plane), i_y about local y. For standard rolled sections in the FERS library this makes i_z the strong (major) axis and i_y the weak axis — and it is why the EC3 checker labels the strong-axis bending clause “Bending z (6.2.5)”.

TopicConvention
Example: IPE 400Library values: i_z = 23 136 cm⁴ (strong), i_y = 1 318 cm⁴ (weak) — the same numbers as the published EC3 worked example.
Steel-table mappingMany steel tables and Eurocode texts call the strong axis of an I-section “y-y”. When copying catalogue values into FERS, put the catalogue strong-axis I into i_z and the weak-axis I into i_y — or use a named library section (e.g. "IPE400") and skip manual entry.
Which axis a load engagesDepends on member orientation and roll: a horizontal beam loaded vertically bends about local z (i_z, strong); a default-roll column loaded in-plane bends about local y (i_y, weak).
Other propertiesarea, torsion constant j, shear areas a_sy/a_sz, elastic/plastic moduli wel_y/z, wpl_y/z and warping constant i_w follow the same axis naming. The EC3 check needs the moduli and i_w — named library sections carry them all.

Sign conventions

TopicConvention
Axial force NTension-positive (engine schema: “Axial is tension-positive”).
Member end forcesReported per member in the member-local frame (local_start_forces / local_end_forces: fx, fy, fz, mx, my, mz).
ReactionsSupport reactions (and support springs) act in global axes: Fx, Fy, Fz, Mx, My, Mz at the supported node.
Moment diagramsDrawn on the tension side of the member (hand-calc convention). For a sagging simply supported beam the solver reports Mz < 0 and My > 0 — verified against the WASM solver.
DisplacementsNodal displacements dx, dy, dz are in global axes (a downward deflection has negative dy).
Rotation signrx, ry, rz are rotations about the global axes; positive sense presumed right-hand rule.verify with the engine
Shear signVy / Vz signs follow the local-frame end-force convention above; the positive direction along the span is not documented here.verify with the engine

Units

TopicConvention
Internal unitsThe engine and all APIs work in SI base units: metres, newtons, pascals, kg/m³ (so m² area, m⁴ second moments, m⁶ warping). The steel section library is exported in SI. Model JSON records its unit settings, but every example in the docs uses SI.
Display unitsThe web app converts for display; defaults are mm for lengths, kN for forces, MPa for stress. Moments are always shown as kN·m and line loads as kN/m (per metre, regardless of the display length unit).
Gravity factorgravity_factor is −9.81 m/s² in every unit system — it is not rescaled with the model's length unit.

Keep going

  • Getting started — first model in the browser, the Python package, and the API, with hand-checked example outputs.
  • Examples — interactive 3D models, the EC3 worked example and the validation suites.
  • EC3 worked example — see the axis naming in action in a full EN 1993-1-1 check.