The Mathematics of Linear FEA

Paul Dewhurst
By Paul Dewhurst

2025-08-15

FEA

Understanding Linear FEA: The Fundamental Equation

Finite Element Analysis (FEA) for linear problems is built on a beautifully simple mathematical foundation:

Ku=f\mathbf{K} \mathbf{u} = \mathbf{f}

This equation represents the equilibrium of a discretized structure, where:

  • K\mathbf{K} is the global stiffness matrix
  • u\mathbf{u} is the displacement vector
  • f\mathbf{f} is the force (load) vector

The Stiffness Matrix (K)

The stiffness matrix K\mathbf{K} describes how the structure resists deformation. For structural problems, it relates applied forces to resulting displacements.

Building the Global Stiffness Matrix

The global stiffness matrix is assembled from individual element stiffness matrices:

K=e=1nelemK(e)\mathbf{K} = \sum_{e=1}^{n_{elem}} \mathbf{K}^{(e)}

Each element stiffness matrix K(e)\mathbf{K}^{(e)} is computed as:

K(e)=V(e)BTDBdV\mathbf{K}^{(e)} = \int_{V^{(e)}} \mathbf{B}^T \mathbf{D} \mathbf{B} \, dV

Where:

  • B\mathbf{B} is the strain-displacement matrix (relates nodal displacements to strains)
  • D\mathbf{D} is the material constitutive matrix (relates stresses to strains via material properties)
  • V(e)V^{(e)} is the volume of element ee

Material Properties in the Stiffness Matrix

For linear elastic materials, the constitutive matrix D\mathbf{D} depends on:

  • Young's Modulus (EE) - material stiffness
  • Poisson's Ratio (ν\nu) - lateral strain response

For 3D isotropic elasticity:

D=E(1+ν)(12ν)[1ννν000ν1νν000νν1ν00000012ν200000012ν200000012ν2]\mathbf{D} = \frac{E}{(1+\nu)(1-2\nu)} \begin{bmatrix} 1-\nu & \nu & \nu & 0 & 0 & 0 \\ \nu & 1-\nu & \nu & 0 & 0 & 0 \\ \nu & \nu & 1-\nu & 0 & 0 & 0 \\ 0 & 0 & 0 & \frac{1-2\nu}{2} & 0 & 0 \\ 0 & 0 & 0 & 0 & \frac{1-2\nu}{2} & 0 \\ 0 & 0 & 0 & 0 & 0 & \frac{1-2\nu}{2} \end{bmatrix}

How Mesh Elements Affect the Stiffness Matrix

Element Shape Functions

Each element type (triangles, quads, tetrahedra, hexahedra) uses shape functions N\mathbf{N} to interpolate displacements within the element:

u(x,y,z)=N(x,y,z)u(e)\mathbf{u}(x,y,z) = \mathbf{N}(x,y,z) \mathbf{u}^{(e)}

The strain-displacement matrix B\mathbf{B} is derived from these shape functions:

B=Nx,Ny,Nz\mathbf{B} = \frac{\partial \mathbf{N}}{\partial x}, \frac{\partial \mathbf{N}}{\partial y}, \frac{\partial \mathbf{N}}{\partial z}

Mesh Refinement Impact

Finer meshes (more elements, smaller size):

  • Increase the size of K\mathbf{K} (more degrees of freedom)
  • Improve solution accuracy by better approximating curved geometries and stress gradients
  • Capture localized effects like stress concentrations
  • Increase computational cost (larger system to solve)

Coarser meshes (fewer elements, larger size):

  • Reduce computational cost
  • May miss important local behavior
  • Can produce inaccurate results in high-gradient regions

Element Quality Matters

Poor element shapes (highly skewed or distorted) lead to:

  • Ill-conditioned stiffness matrices
  • Numerical errors in integration
  • Inaccurate stress and strain calculations

The Force Vector (f)

The force vector f\mathbf{f} contains all external loads applied to the structure:

f=fpoint+fdistributed+fbody\mathbf{f} = \mathbf{f}_{point} + \mathbf{f}_{distributed} + \mathbf{f}_{body}

Types of Loads

Point loads are directly assigned to nodes:

fpoint=[0,0,...,Fx,Fy,Fz,...,0,0]T\mathbf{f}_{point} = [0, 0, ..., F_x, F_y, F_z, ..., 0, 0]^T

Distributed loads (pressure, surface tractions) are converted to nodal forces via integration:

fdistributed(e)=S(e)NTpdS\mathbf{f}_{distributed}^{(e)} = \int_{S^{(e)}} \mathbf{N}^T \mathbf{p} \, dS

Where p\mathbf{p} is the pressure/traction on surface S(e)S^{(e)}.

Body forces (gravity, acceleration) are volume loads:

fbody(e)=V(e)NTρgdV\mathbf{f}_{body}^{(e)} = \int_{V^{(e)}} \mathbf{N}^T \rho \mathbf{g} \, dV

Where ρ\rho is density and g\mathbf{g} is gravitational acceleration.


The Displacement Vector (u)

The displacement vector u\mathbf{u} contains the unknowns we're solving for:

u=[u1,v1,w1,u2,v2,w2,...,un,vn,wn]T\mathbf{u} = [u_1, v_1, w_1, u_2, v_2, w_2, ..., u_n, v_n, w_n]^T

For a 3D problem with nn nodes:

  • ui,vi,wiu_i, v_i, w_i are displacements in x, y, z directions at node ii
  • Total degrees of freedom = 3n3n (before applying boundary conditions)

Boundary Conditions

Essential (Dirichlet) boundary conditions fix certain displacements:

  • Fixed support: u=v=w=0u = v = w = 0
  • Roller support: one or two components set to zero

These constraints are enforced by modifying the system Ku=f\mathbf{K}\mathbf{u} = \mathbf{f} before solving.


Solving the System

Once K\mathbf{K} and f\mathbf{f} are assembled and boundary conditions applied, we solve:

u=K1f\mathbf{u} = \mathbf{K}^{-1} \mathbf{f}

In practice, direct solvers (Cholesky, LU decomposition) or iterative solvers (Conjugate Gradient) are used because:

  • K\mathbf{K} is large and sparse (most entries are zero)
  • K\mathbf{K} is symmetric and positive definite (for stable structures)

Post-Processing

After solving for u\mathbf{u}, we can compute:

  • Strains: ϵ=Bu\boldsymbol{\epsilon} = \mathbf{B} \mathbf{u}
  • Stresses: σ=Dϵ\boldsymbol{\sigma} = \mathbf{D} \boldsymbol{\epsilon}
  • Reaction forces: freactions=Kuf\mathbf{f}_{reactions} = \mathbf{K} \mathbf{u} - \mathbf{f}

Summary

Linear FEA reduces complex structural problems to a system of linear equations: Ku=f\mathbf{K}\mathbf{u} = \mathbf{f}. The stiffness matrix encodes geometry, material, and element properties. The force vector represents all loads. The displacement solution gives us the structure's response — and from there, all derived quantities.

The beauty of FEA is that this same mathematical framework extends to heat transfer, fluid flow, electromagnetics, and beyond — always returning to the same fundamental pattern of discretization, assembly, and solution.

Share this post :