Skip to main content

Concepts

Understanding the core data model before diving into the API.

StructuralModel

The central object. A StructuralModel holds all nodes, members, supports, materials, sections, loads, load cases, and load combinations. After analysis, it also holds the AnalysisResultSet.

StructuralModel
├── Nodes — points in 3D space
├── Members — beam/truss elements connecting two nodes
├── Supports — boundary conditions at nodes
├── Materials — steel grades, concrete classes
├── Sections — cross-section geometry (I-beam, rectangular, circular, etc.)
├── NodalLoads — forces/moments applied at nodes
├── DistributedLoads — loads along member length
├── LoadCases — groups of loads by type (dead, live, wind, ...)
├── LoadCombinations — factored combinations of load cases
└── Results? — AnalysisResultSet (null until analysis is run)

Nodes

A node is a point in 3D space with an integer ID. Nodes are where members connect, supports are applied, and nodal loads act.

Members

A member connects two nodes. Each member has a material, a cross-section, and a type (Beam or Truss). Beam elements have 6 DOF per node (3 translations + 3 rotations). Truss elements have only axial stiffness.

Members can have intermediate nodes, splitting them into segments for finer resolution.

Supports (boundary conditions)

Supports restrict degrees of freedom at a node. Common types:

TypeTranslationsRotationsUse case
FixedAll restrainedAll restrainedRigid connections to ground
PinnedAll restrainedAll freeSimple supports
RollerUy restrained onlyAll freeExpansion joints
FreeAll freeAll freeNo support (default)

Load cases

A load case groups loads that act simultaneously and share a load type: dead, live, wind, snow, seismic, or ice. Each load case is solved independently by the FEM solver. Load cases carry metadata relevant to their type (wind direction, ground snow load, seismic coefficients).

Load combinations

A load combination applies partial safety factors to load cases and superposes the results. For example, a Eurocode ULS combination might be 1.35 × Dead + 1.5 × Live. Combination results are computed via linear superposition — no re-solving needed.

Analysis results

After running analysis, Model.Results contains an AnalysisResultSet with:

  • Node displacements — Dx, Dy, Dz, Rx, Ry, Rz per node per load case/combination
  • Reactions — Fx, Fy, Fz, Mx, My, Mz at supported nodes
  • Member forces — N, Vy, Vz, Mx, My, Mz at stations along each member
  • Utilization — design check ratios with governing clause references (if a design code is selected)

Results are stored as flat lists and queried by node ID, member ID, load case, or as envelopes (max/min across all scenarios with traceability to the governing load case).

Invalidation

Any model mutation (adding a node, changing a load, moving a support) automatically clears Model.Results. This ensures you never see stale results.