Contents ↓
Chapter 1

Model, nodes, elements and degrees of freedom

A finite element model is a discrete representation of a continuous structure containing infinitely many points. In the line-element models implemented here, each finite element is defined by two nodes: nodal displacements and, for a frame, rotations form a finite set of unknowns, while shape functions interpolate the field between nodes. Coordinates, connectivity, material and section properties determine how individual element equations combine into a global system.

Three levels of description

Node

Stores the position (X, Y). The available displacement components are determined by the element type used throughout the model, rather than by the node itself.

Element

Connects two nodes and contains material and section properties, local matrices, a transformation, and a vector of global DOFs.

System

Combines elements into global K and M, and stores supports and loads for a particular analysis.

Result

Returned separately from the model: displacements, reactions, frequencies and time histories do not overwrite the original matrices.

Two supported element types

TypeNodal componentsElement vectorDeformation modes
112, plane truss member ux, uy [u1x, u1y, u2x, u2y]T axial tension/compression only
113, plane Euler–Bernoulli frame ux, uy, θz [u1x, u1y, θ1, u2x, u2y, θ2]T axial and bending deformation

Mixed 112/113 meshes are not supported because their nodes have different numbers of DOFs. The parser explicitly rejects such models rather than guessing missing components.

Global numbering

The project numbers DOFs node by node. For node n and d components per node, the global number of component j is:

globalDOF(n, j) = (n − 1) · d + j

Consider the two frame elements in the case CaseFig11.7p363 MarioPaz. For three nodes, the mapping matrix iMnod is:

% columns: ux  uy  thetaZ
iMnod = [ 1   2    3;
          4   5    6;
          7   8    9 ];
Global degree-of-freedom numbering for a two-element frame Inclined element one connects fixed node one to free node two; horizontal element two connects node two to fixed node three. The nodes map to global degrees of freedom one through nine. Numbers four, five and six remain free. Structural model and row/column numbers node 1 node 2 node 3 element 1 element 2 [4]: uₓ₂ [5]: uᵧ₂ [6]: θ₂ node 1 · fixed 1: uₓ₁ · 2: uᵧ₁ · 3: θ₁ node 2 · free 4: uₓ₂ · 5: uᵧ₂ · 6: θ₂ node 3 · fixed 7: uₓ₃ · 8: uᵧ₃ · 9: θ₃ Row and column order in global K and M 1uₓ₁ 2uᵧ₁ 3θ₁ 4uₓ₂ 5uᵧ₂ 6θ₂ 7uₓ₃ 8uᵧ₃ 9θ₃ e₁.dofs = [1, 2, 3, 4, 5, 6] e₂.dofs = [4, 5, 6, 7, 8, 9] Kff = K([4 5 6], [4 5 6]) · Mff = M([4 5 6], [4 5 6]) reduced matrix rows and columns: uₓ₂, uᵧ₂, θ₂
Gray DOFs 1–3 and 7–9 belong to fixed supports. Orange DOFs 4–6 at the middle node remain unknown, so they correspond to the three rows and columns of matrices Kff and Mff, shown in the numerical example.
element(1).dofs = [1; 2; 3; 4; 5; 6];
element(2).dofs = [4; 5; 6; 7; 8; 9];

fixedDOFs = [1 2 3 7 8 9];
freeDOFs  = [4 5 6];

Order matters: all components of the first node come first, followed by those of the second. Element matrix rows and columns use the same order. During assembly, both elements add their coefficients to the shared global rows and columns 4, 5 and 6 belonging to node 2.

Model data and result data

createStructuralElement returns an element structure that is conceptually immutable. Key fields:

FieldPurpose
type, nodeNumberselement type and topology
nodeCoordinates, lengthgeometry in global axes
properties[A, E, ρ] or [A, E, ρ, I]
dofsrow and column mapping into global matrices
transformationtransformation from global to local components
localStiffnessstiffness in the local element coordinate system
stiffness, masselement matrices in global axes

createAnalysisModel copies the assembled matrices and mesh description into a plain structure for the pure solvers. Solvers return new result structures, so repeated calculations do not depend on the order of previous runs.

Mini exercise. From node number to matrix row

Use the diagram and instructions for laboratory 01. Before running it, make a component table for two nodes: two displacements each for a truss element, and two displacements plus a rotation each for a frame element.

  1. Compare your table with the output lines Truss DOFs and Frame DOFs. Label each row of the corresponding matrix.
  2. Identify the physical quantity represented by the third DOF in each model and its work-conjugate load.
  3. Number the DOFs of four frame nodes on paper. List the DOFs of an element connecting nodes 2 and 4.
Checks and report

The matrices are 4×4 and 6×6. The third DOF is u₂x in a truss element (load F₂x) and θ₁ in a frame element (moment M₁). For an element between frame nodes 2 and 4, the mapping is [4 5 6 10 11 12]. Include the numbering tables in your report and explain why the same global number means different things in the two models.

Chapter source code

SPC: ux, uy, thetaZ

Supports use fixUx/fixUy/fixThetaZ masks. Types 1–4 retain their meaning; new types are 5: ux only, 6: uy only, 7: thetaZ only. Trusses reject type 7 and export canonical types 1, 3 and 2. Changing element family preserves masks; remove thetaZ restraints before switching to a truss. Duplicate restraints identify the node and DOF.

CaseRollerFrame.txt

MPC

An MPC expresses one dependent nodal DOF through master DOFs. Physical nodal numbering is unchanged; independent solution coordinates q are tracked separately. Trusses have no thetaZ. Mz end releases are implemented separately from MPC.

Complete MPC guide · JSON v3 · CaseMPCFrame.txt · CaseMPCTruss.txt

Mz end releases

Complete guide: chapter 4b

A shared rotation exists while at least one attached end transmits Mz. Each released end has its own rotation. A zero dofMap entry means absent shared thetaZ; numberOfDOFs includes private coordinates. Models without releases retain their numbering.

JSON v4 · CaseReleaseStatic · CaseReleaseModal · CaseReleaseTransient