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.
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.
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.
Connects two nodes and contains material and section properties, local matrices, a transformation, and a vector of global DOFs.
Combines elements into global K and M, and stores supports and loads for a particular analysis.
Returned separately from the model: displacements, reactions, frequencies and time histories do not overwrite the original matrices.
| Type | Nodal components | Element vector | Deformation 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.
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 ];
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.
createStructuralElement returns an element structure that is conceptually immutable. Key fields:
| Field | Purpose |
|---|---|
type, nodeNumbers | element type and topology |
nodeCoordinates, length | geometry in global axes |
properties | [A, E, ρ] or [A, E, ρ, I] |
dofs | row and column mapping into global matrices |
transformation | transformation from global to local components |
localStiffness | stiffness in the local element coordinate system |
stiffness, mass | element 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.
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.
Truss DOFs and Frame DOFs. Label each row of the corresponding matrix.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.
FEMesh.m — reading nodes, selecting the DOF count and constructing iMnod;createStructuralElement.m — unified element data interface;createAnalysisModel.m — model structure for solvers;example_01_element_matrices.m — executable laboratory.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.
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
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