3.6.19 · D3Spacecraft Structures & Systems Engineering

Worked examples — FEM for structures — assembling global stiffness

2,813 words13 min readBack to topic

This page is the "battle-tested" companion to the parent topic on assembling global stiffness. The parent showed you how the scatter-add works. Here we drill every situation you might meet: shared nodes, disconnected pieces, parallel bars, rotated bars, degenerate (rigid-body) matrices, and the exam twists that trip people up.

Before we start, one promise: no symbol is used before it is drawn. If you have never seen a stiffness matrix, read the parent's "Core Idea" first — but everything below re-earns its notation.

Recall Three words we will lean on constantly

Node ::: a point in the mesh where elements meet; displacements are measured here. DOF (degree of freedom) ::: one independent way a node can move (e.g. horizontal, or vertical). We number them across the whole mesh. Scatter-add ::: take the small element matrix and add each of its numbers into the big global matrix , at the rows/columns given by that element's global DOF numbers.


The scenario matrix

Every assembly problem is a mix of the cells below. The worked examples that follow are labelled with the cell(s) they hit, so together they cover the whole table.

Cell What makes it tricky Covered by
A. Series chain (shared interior node) overlapping entries must be summed Ex 1
B. Disconnected / no shared node zero coupling entry; block-diagonal Ex 2
C. Sign bookkeeping why off-diagonals are negative, diagonals positive Ex 3
D. Zero / degenerate (rigid-body) matrix before boundary conditions Ex 4
E. Rotated element (transformation) local global, angle ; and the limit Ex 5
F. Vertical bar (limiting angle ) : which entries survive? Ex 6
G. Parallel bars (same node pair) two elements share both nodes stiffnesses add Ex 7
H. Real-world word problem spacecraft bracket, pick DOFs yourself Ex 8
I. Exam twist (DOFs mis-numbered) non-adjacent nodes scattered off-diagonals Ex 9

Cell A — series chain (shared interior node)

Forecast: guess which single entry will be instead of before reading on.

Figure — FEM for structures — assembling global stiffness

Step 1 — place Bar I at DOFs . Why this step? Bar I only touches DOFs 1 and 2, so its block lands in that corner; row/col 3 stays zero because Bar I "doesn't know" node 3 exists.

Step 2 — place Bar II at DOFs . Why this step? Bar II touches DOFs 2 and 3. Its top-left lands on top of the already at — that is the overlap.

Step 3 — sum the overlap (the whole point). Why this step? Node 2 belongs to both bars, so its self-stiffness . Look at the middle node in the figure: two springs tug on it, so it is twice as resistant.

Verify: every row sums to (, , ). A rigid slide of the whole chain stretches nothing, so zero net force — correct. because nodes 1 and 3 share no element. ✓

Compare with Sparse Matrix Storage: notice is tridiagonal — most entries are already zero.


Cell B — disconnected pieces (no shared node)

Forecast: will (coupling the two pieces) be zero or nonzero?

Step 1 — scatter both blocks. Why this step? Bar I fills the top-left ; Bar II fills the bottom-right . Nothing overlaps.

Step 2 — read off the coupling entry. . Why this step? only if DOFs share an element. DOFs 2 and 3 belong to different, unconnected bars.

Verify: is block-diagonal — two independent springs, exactly as physics demands. Each block is singular (a lone bar can slide freely), foreshadowing Cell D. ✓


Cell C — sign bookkeeping

Forecast: predict the sign of the force on node when node moves forward.

Step 1 — impose . Force vector . Why this step? Column of is the force answer to "unit push at ."

Step 2 — interpret the two numbers. (the stretched bar pulls back — restoring, positive diagonal). (the same bar drags forward — negative off-diagonal). Why this step? Newton's third law: the bar pulls its two ends toward each other.

Verify: : no external agent, internal forces cancel. This is why every off-diagonal coupling is negative and diagonals are positive for spring-like elements. ✓


Cell D — zero / degenerate matrix (rigid-body mode)

Forecast: guess the determinant before computing.

Step 1 — test the rigid-body vector . Why this step? If sliding the whole structure produces zero force, that displacement is a zero-energy (rigid-body) mode, so .

Step 2 — confirm . Expand: . Why this step? A zero eigenvalue zero determinant no unique solution — the structure would float in space.

Step 3 — apply a boundary condition (fix node 1). Delete row/col 1: , . Why this step? Removing the rigid-body freedom (nailing one node) makes positive-definite and invertible — see Boundary Conditions in FEM.

Verify: original determinant (singular ✓), reduced determinant (solvable ✓). This is exactly why FEM code always applies BCs before solving in Direct vs Iterative Solvers. ✓


Cell E — rotated element (transformation), with the limit

Forecast: will the horizontal-only entry at be the full , or a fraction of it?

Figure — FEM for structures — assembling global stiffness

Step 1 — why we need a transformation at all. A bar only resists motion along its own length. In its local axis , the stiffness relates the two axial displacements : Why this step? The global directions are not aligned with the bar, so a global push only partly stretches it. We must project.

Step 2 — write the transformation matrix explicitly. Let . The axial displacement of a node is its motion projected onto the bar direction: . Stacking this projection for both nodes A and B (global DOF order ): Why this step? is the rectangular dictionary that turns 4 global movements into the 2 axial ones the bar actually feels. Its top row projects node A, its bottom row node B.

Step 3 — sandwich to get the global stiffness . Why this step? (a matrix) pushes the axial stiffness back out into the 4 global DOFs — each entry is " scaled by how much those two directions line up with the bar." This is the standard bar result from Coordinate Transformations in FEM.

Step 4 — plug : , so . Why this step? At a horizontal push and a vertical push each stretch the bar equally, so and share the stiffness fifty-fifty.

Step 5 — the limit (horizontal bar): . , so Why this step? A horizontal bar has no vertical stiffness (its -rows/cols vanish); only the -DOFs carry the 1-D pattern — exactly the plain bar of Cell A embedded horizontally.

Verify: at , — a fraction of , confirming the forecast. At , (full) and vertical stiffness . Both matrices have zero row sums (rigid slide stretches nothing). Together with Cell F below (), the three angles bracket the whole range. ✓


Cell F — vertical bar (limiting angle )

Forecast: guess whether the horizontal stiffness is zero or nonzero.

Step 1 — substitute . , so Why this step? A vertical bar cannot resist horizontal motion — pushing a vertical rod sideways just swings it, no stretch. So all -rows/cols are zero.

Step 2 — interpret the surviving block. Only the -DOFs (rows/cols 2 and 4) carry the familiar . Why this step? This matches Cell C's 1-D bar, just embedded in the vertical direction.

Verify: compare with Ex 5 as sweeps : the -stiffness slides and the -stiffness slides — perfectly complementary, no jumps. Zero -stiffness is physically correct, and warns you an unbraced vertical bar is a singular sub-system needing bracing/BCs. ✓


Cell G — parallel bars (same node pair)

Forecast: will the two stiffnesses add or average?

Step 1 — scatter Bar I (DOFs ). Why this step? Bar I touches both DOFs, filling the whole .

Step 2 — scatter Bar II onto the same DOFs . Why this step? Both elements share both nodes, so every entry overlaps and we sum entry-by-entry. This is the parallel-spring rule falling straight out of scatter-add.

Verify: the combined stiffness is — springs in parallel add (not average), exactly as elementary physics says. Row sums still . If (no doubler) we recover the single bar. ✓


Cell H — real-world word problem

Forecast: will the tip move more or less than a single bar of the same load would?

Step 1 — compute the spring constant. . Why this step? Turns material + geometry into one number; both bars share it.

Step 2 — assemble & apply BC (reuse Ex 1 + Ex 4). Reduced system (drop DOF 1): Why this step? Node 1 is fixed, so its row/column is removed before solving.

Step 3 — solve. From row 1: . Row 2: . Substitute: , . Why this step? Two bars in series are softer (add compliances), so the tip moves twice a single bar's stretch.

Verify: units ✓. Series check: each bar stretches , total ✓. Forecast confirmed: more than a single bar. ✓


Cell I — exam twist (non-adjacent DOF numbers)

Forecast: will still be tridiagonal, or will nonzeros appear off the diagonal band?

Step 1 — scatter Bar I into rows/cols . Why this step? The block entries of map to global using the DOF list .

Step 2 — scatter Bar II into rows/cols . Why this step? Node 3 (the shared one) is index 3 globally, so accumulates from both bars.

Step 3 — write the assembled matrix. Why this step? Reorder rows/cols and you recover Ex 1's tridiagonal matrix — same physics, permuted labels.

Verify: (shared node ✓); row sums zero ✓; the nonzero sit off the tight band — bad numbering widens the bandwidth, hurting Sparse Matrix Storage and solver cost. Good node ordering matters — connect this to Mesh Refinement and Convergence. ✓


Recall Rapid self-test

Why is in the series chain? ::: Node 2 is shared by both bars; each adds . When is guaranteed? ::: When DOFs share no common element. Two bars between the same node pair — do stiffnesses add or average? ::: They add: (parallel springs). Why is unconstrained singular? ::: Rigid-body motion is a zero-energy mode . At what is the -stiffness of the bar? ::: , then , then .

For the mechanics of each see Element Stiffness Matrices; for the big-picture pipeline see Finite Element Method Overview.