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
| Topic | Convention |
|---|---|
| Coordinate system | Right-handed global X / Y / Z. Y is up — node coordinates are (X, Y, Z) with Y the height. |
| Load directions | Nodal 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-weight | When 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:
| Topic | Convention |
|---|---|
| Local x | Along the member, from start node to end node. |
| Reference vector | Global Y (0, 1, 0). For members within ≈ 0.81° of vertical the reference switches to global Z (0, 0, 1). |
| Local z, local y | local 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. |
| Roll | rotation_angle rotates the section (and its local y/z axes) about local x. Diagrams and section rendering follow the rolled frame. |
| Bending planes | Mz / 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)”.
| Topic | Convention |
|---|---|
| Example: IPE 400 | Library values: i_z = 23 136 cm⁴ (strong), i_y = 1 318 cm⁴ (weak) — the same numbers as the published EC3 worked example. |
| Steel-table mapping | Many 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 engages | Depends 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 properties | area, 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
| Topic | Convention |
|---|---|
| Axial force N | Tension-positive (engine schema: “Axial is tension-positive”). |
| Member end forces | Reported per member in the member-local frame (local_start_forces / local_end_forces: fx, fy, fz, mx, my, mz). |
| Reactions | Support reactions (and support springs) act in global axes: Fx, Fy, Fz, Mx, My, Mz at the supported node. |
| Moment diagrams | Drawn 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. |
| Displacements | Nodal displacements dx, dy, dz are in global axes (a downward deflection has negative dy). |
| Rotation sign | rx, ry, rz are rotations about the global axes; positive sense presumed right-hand rule.verify with the engine |
| Shear sign | Vy / 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
| Topic | Convention |
|---|---|
| Internal units | The 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 units | The 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 factor | gravity_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.