Module 9 · Lesson 9.1
The element and its transformation
Where the 4×4 bar matrix comes from, why every row sums to zero, and why the global form contains no new physics.
Why this matters
This module is the one place in the course where the solver is opened up. Not to teach you to write one — almost nobody needs to — but because the errors in Modules 12 and 13 are all visible in the matrix, and a modeller who has never seen the matrix has to take them on trust.
The payoff is specific. Once you have seen that assembly is addition, a disconnected node stops being mysterious. Once you have seen that a restraint is a struck-out row, 'why do I need restraints where there is no load?' answers itself. Once you have seen the condition number, a very short very stiff element stops being a modelling preference and becomes an arithmetic cost you can quantify.
By the end of this lesson you should be able to
- Derive the two-node bar matrix from equilibrium and compatibility
- Say what a zero row sum means physically
- Build the global 4×4 as TᵀkT and check it against the closed form
- Read the direction cosines off a pair of coordinates
What you should already know
- Stress, strain and Young's modulus
- Equilibrium at a joint
- The stiffness method as theory — Structural Analysis Fundamentals covers the derivation this module uses computationally
One equation, repeated
The whole method rests on three statements, and none of them is new:
- The structure is in equilibrium. So is every node. So is every element.
- Force and displacement are related by stiffness: f = ku.
- We know the forces and can compute the stiffnesses, so the unknown is the displacements.
Write the second statement once for every degree of freedom, group them, and you have a matrix equation. That is all the finite element method is. Everything after this is bookkeeping — extremely careful bookkeeping, but bookkeeping.
The axial stiffness of a bar
k = EA/L — the force needed to stretch the bar by one unit.
Three inputs, and every one of them is somewhere a model goes wrong. E from the wrong material — the steel-slab case in Module 12. A in mm² where m² was expected — a factor of a million. L from a node that was never merged, so the bar is a different length from the member it represents.
That is worth saying now rather than in Module 12, because it explains why this module bothers with the arithmetic: the diagnostic value of knowing where a number comes from is that you know what can corrupt it.
From first principles
The two-node bar matrix
We want to show: Get from f = ku for a single spring to the 2×2 matrix a solver actually assembles.
A bar does not know where it is. It only knows how much it has been stretched. So the force it develops must depend on the difference between what its two ends have done, and not at all on their average position. Everything in the matrix that follows is that sentence written down.
Into global axes
A real truss has bars at every angle. The solver does not want a separate derivation for each; it wants one matrix expressed in the axes everything else uses.
The move is a change of viewpoint, not of physics. A bar at angle θ has direction cosines c = cos θ and s = sin θ, read directly off the two node coordinates. The axial extension is the projection of the global end displacements onto the bar:
e = c(u₂ₓ − u₁ₓ) + s(u₂ᵧ − u₁ᵧ)
Write that as a 2×4 transformation T, and the global element matrix is TᵀkT. Multiply it out and every entry is k times a product of direction cosines — c², cs, s² — with the same ± block pattern as before.
The important thing is what has not happened: no new physics has entered. The 4×4 global matrix contains exactly the information the 2×2 did, seen from a rotated viewpoint. If it ever seems to contain more, something has gone wrong.
What it calculates: The stiffness of a bar expressed in the model's own coordinate directions
- E
- Young's modulus (kN/m²)
- A
- Cross-sectional area (m²)
- L
- Length, from the node coordinates (m)
- c
- cos θ — the x direction cosine (—)
- s
- sin θ — the y direction cosine (—)
This assumes
- Linear elastic, small displacements, axial behaviour only
- θ is measured from the global x axis to the line from node 1 to node 2 — so reversing the node order reverses c and s
In plain terms: Every entry is a stiffness times a product of direction cosines. A horizontal bar has s = 0, so its whole second and fourth rows vanish: it has no vertical stiffness whatever, which is exactly right and exactly why a horizontal bar cannot hold a node up.
Try it
Stiffness matrix assembler
Step through the solve. Every intermediate is a real table, in kN/m, divided by 1000 to keep it readable.
Structure
Element stiffnesses
Step 1 of 5 — Element stiffnesses
| Element | L (m) | cos θ | sin θ | k (kN/m) |
|---|---|---|---|---|
| e1 | 3.000 | 1.000 | 0.000 | 66667 |
| e2 | 4.000 | 1.000 | 0.000 | 50000 |
What each step is doing
- Steps 1–2: no physics is added by the transformation. The global matrix is the axial matrix seen from a rotated viewpoint.
- Step 3: assembly is addition, and nothing else. A node connected to nothing would leave a zero row here.
- Step 4: a restraint deletes a row and a column, because that displacement was already known.
- Step 5: displacements first, then everything else. The residual is the check that decides whether any of it is usable.
What this shows: Assembly is addition, and a restraint is a struck-out row — the two facts that make every connectivity and support fault in Module 12 obvious.
Worked example
Two bars in series, by hand
Given
- Three nodes on a line: L at x = 0, M at x = 3 m, R at x = 7 m
- Bar 1 from L to M, bar 2 from M to R
- Both E = 200 × 10⁶ kN/m², A = 0.001 m²
- L and R fully held; M held vertically only
- A horizontal load of 100 kN applied at M
Find
The displacement of M and the force in each bar
Predict first
In that two-bar problem, the area of bar 1 is doubled and nothing else changes. What happens to the force in bar 2?
Practice
A steel bar has E = 200 × 10⁶ kN/m², A = 0.0025 m² and L = 5 m. Compute its axial stiffness in kN/m.
Practice
A bar runs from (0, 0) to (3, 4). Its stiffness is k = 80 000 kN/m. What is the value of the top-left entry of its 4×4 global stiffness matrix, k·c², in kN/m?
Worked example
Why every element stiffness matrix is singular
Given
- A two-node bar element with axial stiffness k, before any support is applied
Find
What happens if you try to solve it on its own
Check yourself
What does the transformation matrix actually do to an element stiffness?
Check yourself
Why is a stiffness matrix always symmetric for a linear elastic structure?
Summary
- k = EA/L, and each of the three inputs is a place a model goes wrong
- Every row of an element matrix sums to zero: a rigid-body move generates no force
- The global matrix is TᵀkT — the same physics from a rotated viewpoint
- A horizontal bar has literally zero vertical stiffness, and the matrix says so
- Load splits in proportion to stiffness, not to size or length
This is educational material. It uses simplified examples to teach principles, and must not be relied on for real design or safety-critical decisions. Module overview and checkpoint