Table of contents

Basics steps to a finite element formulation

  1. Derive the strong form of the problem.

  2. Derive the weak form of the problem by multiplying the strong form by a test function vv and integrating by parts.

  3. Approximate the solution field element-wise over the entire domain.

  4. Choose an appropriate weight function vv.

The finite element method for linear elasticity

The partial differential equation for the static linear elasticity problem

σ=fin Ωσ=2με+λIuin Ωu=gon ΩDσn=ton ΩN \def\arraystretch{1.5} \begin{array}{lc} -\nabla \cdot \bm \sigma =f & \text{in }\Omega \\ \bm \sigma = 2\mu \bm \varepsilon + \lambda \bm I \nabla \cdot \bm u & \text{in }\Omega \\ \bm u = \bm g & \text{on }\partial \Omega_D \\ \bm \sigma \cdot \bm n = \bm t & \text{on }\partial \Omega_N \end{array}

By multiplying (1) with a test function v\bm v and integrating by parts, see here, we end up with the weak form of the linear elasticity equation, which states: Find the displacement field u\bm u, with u=g\bm u = \bm g on the boundary ΩD\partial \Omega_D, such that

Ωσ(u):ε(v)dΩ=ΩfvdΩ+Ωtvdsv that are 0 on ΩD \boxed{ \int_{\Omega } \bm \sigma (\bm u) : \bm \varepsilon \left( \bm v\right) d\Omega =\int_{\Omega } \bm f\cdot \bm vd\Omega +\int_{\partial \Omega } \bm{t} \cdot \bm v ds \quad \forall \bm v \text{ that are } 0 \text{ on } \partial \Omega_D}

1: Partially discretized domain using linear triangles.

The weak form of the linear elasticity problem is posed on a domain Ω\Omega which needs to be discretized (meshed). This means dividing the domain into a finite amount of elements such that the problem can be tackled numerically, see Figure 1. In this section we will discuss this discretization and the choice of the weight function vv using the Galerkin method [2] for the 2D linear elasticity problem, but the reader is also referred to the Galerkin Method section for more information. For completeness we shall give a brief introduction to the method here.

The weighted residual method and the Galerkin method

The Galerkin method belongs to a family of weighted residual methods. Consider a differential equation of the form

d2dx2ku(x)=f(x) for x[a,b] - \dfrac{d^2}{dx^2} k u(x) = f(x) \quad \text{ for } x \in [a,b]

where enough boundary conditions are given such that a unique solution can exist, e.g., u(a)=0u(a)=0 and du/dx(b)=0du/dx(b)=0. Now, an approximation method aims at solving (3). This is done by multiplying (3) by an arbitrary function v(x)v(x) (the weight function) to obtain

v(f+kd2udx2) v (f + k \dfrac{d^2 u}{dx^2} )

This can be integrated over the domain of interest

abd2udx2vdx=abfvdx \boxed{- \int_a^b \dfrac{d^2 u}{dx^2} v dx = \int_a^b f v dx}

See here for an in-depth explanation of the reasons for integrating the equation. Integrating the term with the higher order derivative by parts leads to the weak form:

abkdudxdvdxdx=abfvdx \int_a^b k \dfrac{d u}{d x} \dfrac{d v}{d x} dx = \int_a^b f v dx

In what follows we will not (yet) use the weak form, but just the integral form of the differential equation multiplied by the weight function to keep things general.

The solution to the differential equation can be approximated by a linear combination of some known functions φ(x)\varphi(x) and unknown parameters aia_i:

u(x)U(x)=i=1naiφi(x) u(x) \approx U(x) = \sum_{i=1}^n a_i \varphi_i(x)

where a1,...,ana_1, ..., a_n are unknown parameters and φ1(x),...,φn(x)\varphi_1(x), ..., \varphi_n(x) are pre-specified functions, called trial or basis functions. The problem becomes to find these parameters a1,...,ana_1, ..., a_n which is done by substituting u(x)u(x) by U(x)U(x) in (5), which leads to the weighted residual method,

ab(d2dx2U(x)+f)vdx=0 \int_a^b \left( \dfrac{d^2}{dx^2} U(x) + f \right) v dx = 0

with U(x)U(x) not satisfying the equation exactly in general, we get a residual

r(x)=d2dx2U(x)+f0 r(x) = \dfrac{d^2}{dx^2}U(x) + f \neq 0

which can be written as

abr(x)vdx=0 \int_a^b r(x) v dx = 0

meaning that for a certain choice of vv determines the unknowns a1,...,ana_1, ..., a_n and thus the approximating solution U(x)U(x) by minimizing the signed integral. Let vv be a general function and constructed as a series of nn linear combinations of known functions Vj(x)V_j(x) and arbitrary parameters cjc_j such that

v(x)=V1c1+V2c2+...+Vncn=jVjcj v(x) = V_1 c_1 + V_2 c_2 + ... + V_n c_n = \sum_j V_j c_j

Since the weight functions are arbitrary and Vj(x)V_j(x) are known, it must be concluded that cjc_j are arbitrary and moreover, since cjc_j are not depended on xx we can pull them out of the integral and get

jcjabrVjdx=0 \sum_j c_j \int_a^b r V_j dx = 0

since this should hold for arbitrary cjc_j we conclude that the following must hold

abrVjdx=0 \int_a^b r V_j dx = 0

which in fact is a series of nn equations of the form

abrV1dx=0abrV2dx=0abrVndx=0 \begin{align*} \int_{a}^{b} r V_{1}dx & =0\\ \int_{a}^{b} r V_{2}dx & =0\\ \cdots\\ \int_{a}^{b} r V_{n}dx & =0 \end{align*}

substituting the approximation into the integral we get

ab(i=1nd2φidx2ai+f)Vjdx=0 \int_{a}^{b}\left(\sum_{i=1}^{n}\dfrac{d^{2}\varphi_{i}}{dx^{2}}a_{i}+f\right)V_{j}dx=0

where aia_i is not dependent on xx and thus can be pulled out of the integral, leading to the nn-by-nn system

(abVTd2φdx2dx)a=abVTfdx - \left( \int_{a}^{b}{\bf V}^{T}\dfrac{d^{2}\bm{\varphi}}{dx^{2}}dx \right) {\bf a } = \int_a^b {\bf V}^T f dx

where

VT=[V1V2Vn]n×1,φ=[φ1,φ2,...,φn]1×n,a=[a1a2an]n×1 {\bf V}^T=\begin{bmatrix}V_{1}\\ V_{2}\\ \vdots\\ V_{n} \end{bmatrix}_{n \times 1},\quad\bm{\varphi}=[\varphi_{1},\varphi_{2},...,\varphi_{n}]_{1 \times n},\quad{\bf a}=\begin{bmatrix}a_{1}\\ a_{2}\\ \vdots\\ a_{n} \end{bmatrix}_{n \times 1}

and

S=abVTd2φdx2dx,f=abVTfdx {\bf S} = - \int_{a}^{b}{\bf V}^{T}\dfrac{d^{2}\bm{\varphi}}{dx^{2}}dx,\quad{\bf f}=\int_{a}^{b}{\bf V}^{T}fdx

thus

Sa=f {\bf Sa}={\bf f}

The procedure leading from the differential equation multiplied by the weight function to the system of equations is known as the weighted residual method and specific methods are obtained by making a choice of the weight function vv, e.g., the least squares method where v=raiv = \frac{\partial r}{\partial a_i}, but the most popular one for the FEM is the Galerkin method. See Chapter 8 in [1] for more information.

The Galerkin method

Galerkin suggested that given that the trial function or approximation has the form U(x)=i=1naiφi(x)U(x)=\sum_{i=1}^n a_i \varphi_i(x), the weight function vv should have the same form as the trial function, i.e., v(x)=i=1nciφi(x)v(x) = \sum^n_{i=1} c_i \varphi_i(x), meaning we should simply choose the basis functions as the weight functions, thus the Galerkin method takes the form:

abrφjdx=0 \boxed{\int_{a}^{b}r\varphi_{j}dx=0}

and loosely speaking, setting Vj=φjV_j = \varphi_j, and in the case of the weak form the derivative of the basis weight function become dVjdx=dφjdx\frac{d V_j}{d x} = \frac{d \varphi_j}{d x} such that the weak form in (5) becomes:

abkdUdxdφjdxdx=abfφjdx \int_{a}^{b}k\dfrac{dU}{dx}\dfrac{d\varphi_{j}}{dx}dx=\int_{a}^{b}f\varphi_{j}dx

and substituting the approximation gives

abk(i=1ndφidxai)dφjdxdx=abfφjdx \int_{a}^{b}k\left(\sum_{i=1}^{n}\dfrac{d\varphi_{i}}{dx}a_{i}\right)\dfrac{d\varphi_{j}}{dx}dx=\int_{a}^{b}f\varphi_{j}dx

which after pulling out aia_i of the integral, we get j=1,...,nj=1,...,n equations:

i=1n(abkdφidxdφjdxdx)ai=abfφjdx \sum_{i=1}^{n}\left(\int_{a}^{b}k\dfrac{d\varphi_{i}}{dx}\dfrac{d\varphi_{j}}{dx}dx\right)a_{i}=\int_{a}^{b}f\varphi_{j}dx

or using tensor notation

(abkdφTdxdφdxdx)a=abφTfdx \left(\int_{a}^{b}k\dfrac{d\bm{\varphi}^{T}}{dx}\dfrac{d\bm{\varphi}}{dx}dx\right){\bf a}=\int_{a}^{b}\bm{\varphi}^{T}fdx

with

S=abkdφTdxdφdxdx,f=abφTfdx \boxed{ {\bf S}=\int_{a}^{b}k\dfrac{d\bm{\varphi}^{T}}{dx}\dfrac{d\bm{\varphi}}{dx}dx,\quad{\bf f}=\int_{a}^{b}\bm{\varphi}^{T}fdx }

The Galerkin method for the elasticity problem in 2D

In the previous section, Galerkin's method has only been discussed for approximations that are defined on the whole interval and also continuous on the whole interval. Since the first use was at a time where computers were not digital yet, the problems were kept small and the approximations simple. However, with the advent of the first digital computers came the use of Galerkin's method with piecewise polynomials which constitutes the finite element method.

To define a Galerkin Finite Element method for the elasticity problem in (2), we must introduce a finite dimensional subspace VhV_h, i.e., a set of piece-wise integrable functions, typically polynomials of low order (which translate to linear or quadratic triangle elements in 2D)

u(x,y)U(x,y)=iφi(x,y)uiu\left(x,y\right)\approx U\left(x,y\right)=\sum_i \varphi_i \left(x,y\right)u_i

so that the functions φi\varphi_i constitute a base for VhV_h, i.e., any vVhv\in V_h can be written as a linear combination of the basis functions φi\varphi_i as discussed in the previous section. The interpolation points at (xi,yi)(x_i, y_i), ui=2D(uxiuyi)Tu_i \overset{2D}{=} {\left(\begin{array}{cc} u_x^i & u_y^i \end{array}\right)}^T are the nodal displacement vectors and make up the interpolant of uu. The discrete displacement field for an nn-noded mesh is represented by the displacement vector u=[ux1uy1ux2uy2uxnuyn]T\mathbf{u}={\left\lbrack \begin{array}{ccccccc} u_x^1 & u_y^1 & u_x^2 & u_y^2 & \cdots & u_x^n & u_y^n \end{array}\right\rbrack }^T . This defines our discrete solution field on our mesh. We will in later sections take a look at the construction of elements and basis functions. Suffice to say for now we choose the basis functions, φi\varphi_i to have a local support, meaning they have the value φi=1\varphi_i =1 in the node ii and φi=0\varphi_i =0 in all other nodes of the mesh. Thus uiu_i has the value uu in node ii. The value of uu between the nodes is interpolated using the basis function and we shall discuss the choice of polynomial order and its consequence on the approximation later.

As a first example: For a linear triangle, KK, in 2D the displacement field takes the form uK=[ux1uy1ux2uy2ux3uy3]T{\mathbf{u} }_K ={\left\lbrack \begin{array}{cccccc} u_x^1 & u_y^1 & u_x^2 & u_y^2 & u_x^3 & u_y^3 \end{array}\right\rbrack }^T.

The displacement field on element KK is approximated using the interpolant, expressed on Voigt form using basis functions.

uK(x)UK(x)=[φ1(x)0φ2(x)0φ3(x)00φ1(x)0φ2(x)0φ3(x)]ΦK(x)2×6[ux1uy1ux2uy2ux3uy3]6×1 \def\arraystretch{1.5} u_K \left(\bm x\right)\approx U_K \left(\bm x \right)={\underset{\Phi_K \left(\bm x \right)}{\underbrace{\left\lbrack \begin{array}{cccccc} \varphi_1 \left(\bm x\right) & 0 & \varphi_2 \left(\bm x\right) & 0 & \varphi_3 \left(\bm x\right) & 0\\ 0 & \varphi_1 \left(\bm x\right) & 0 & \varphi_2 \left(\bm x\right) & 0 & \varphi_3 \left(\bm x\right) \end{array}\right\rbrack } } }_{2\times6 } {\left\lbrack \begin{array}{c} u_x^1 \\ u_y^1 \\ u_x^2 \\ u_y^2 \\ u_x^3 \\ u_y^3 \end{array}\right\rbrack }_{6 \times 1} =[φ1ux1+φ2ux2+φ3ux3φ1uy1+φ2uy2+φ3uy3]=[Ux(x,y)Uy(x,y)][uK,x(x,y)uK,y(x,y)] \def\arraystretch{1.5} =\left\lbrack \begin{array}{c} \varphi_1 u_x^1 +\varphi_2 u_x^2 +\varphi_3 u_x^3 \\ \varphi_1 u_y^1 +\varphi_2 u_y^2 +\varphi_3 u_y^3 \end{array}\right\rbrack =\left\lbrack \begin{array}{c} U_x \left(x,y\right)\\ U_y \left(x,y\right) \end{array}\right\rbrack \approx \left\lbrack \begin{array}{c} u_{K,x} \left(x,y\right)\\ u_{K,y} \left(x,y\right) \end{array}\right\rbrack

Looking at the virtual strain energy (or the double contraction between the stress and virtual strain)

σ(u):ε(v)=2με(u):ε(v)+λtrε(u)I:ε(v) \bm \sigma \left(\bm u\right): \bm \varepsilon \left( \bm v\right)=2\mu \bm \varepsilon(\bm u) : \bm \varepsilon(\bm v) +\lambda \mathrm{tr}\bm \varepsilon(\bm u) \bm I : \bm \varepsilon(\bm v)

We need to rewrite the weak form to facilitate the formulation of a FEM. Introducing the Voigt notation, in 2D we have

εV(u)=[uxxuyyuxx+uyy] and D=[2μ+λ0002μ+λ000μ] \def\arraystretch{1.5} \bm \varepsilon_V \left(\bm u\right)=\left\lbrack \begin{array}{c} \frac{\partial u_x }{\partial x}\\ \frac{\partial u_y }{\partial y}\\ \frac{\partial u_x }{\partial x}+\frac{\partial u_y }{\partial y} \end{array}\right\rbrack \text{ and } \mathbf D=\left\lbrack \begin{array}{ccc} 2\mu +\lambda & 0 & 0\\ 0 & 2\mu +\lambda & 0\\ 0 & 0 & \mu \end{array}\right\rbrack

Then we may write

Ωσ(u):ε(v)dΩ=Ω2με(u):ε(v)+λtrε(u)I:ε(v)dΩ=ΩεV(u)TDεV(v)dΩ\int_{\Omega } \bm \sigma \left(\bm u\right) : \bm\varepsilon \left(\bm v\right) d\Omega =\int_{\Omega } 2\mu \bm \varepsilon(\bm u) : \bm \varepsilon(\bm v) + \lambda \mathrm{tr} \bm \varepsilon(\bm u) \bm I : \bm \varepsilon(\bm v) d\Omega =\int_{\Omega } \bm \varepsilon_V {\left( \bm u \right)}^T \mathbf D \bm \varepsilon_V \left(\bm v\right) d\Omega

which is more suitable for numerical implementation.

εV(u)\bm \varepsilon_V {\left( \bm u \right)} can also be written

εV(u)=[x00yyx][uxuy]\bm \varepsilon_V {\left(\bm u \right)} = \left\lbrack \begin{array}{cc} \dfrac{\partial }{\partial x} & 0\\ 0 & \dfrac{\partial }{\partial y}\\ \dfrac{\partial }{\partial y} & \dfrac{\partial }{\partial x} \end{array}\right\rbrack \left\lbrack \begin{array}{c} u_x \\ u_y \end{array}\right\rbrack

which allows for breaking out the displacement field out of the integral. Introducing the discrete version of this on matrix form

B=[x00yyx][φ1(x)0φ2(x)00φ1(x)0φ2(x)]=[φ1x0φ2x00φ1y0φ2yφ1yφ1xφ2yφ2x] \def\arraystretch{2.5} \mathbf B=\left\lbrack \begin{array}{cc} \dfrac{\partial }{\partial x} & 0\\ 0 & \dfrac{\partial }{\partial y}\\ \dfrac{\partial }{\partial y} & \dfrac{\partial }{\partial x} \end{array}\right\rbrack \left\lbrack \begin{array}{ccccc} \varphi_1 \left(\mathit{\mathbf{x} }\right) & 0 & \varphi_2 \left(\mathit{\mathbf{x} }\right) & 0 & \cdots \\ 0 & \varphi_1 \left(\mathit{\mathbf{x} }\right) & 0 & \varphi_2 \left(\mathit{\mathbf{x} }\right) & \cdots \end{array}\right\rbrack =\left\lbrack \begin{array}{ccccc} \dfrac{\partial \varphi_1 }{\partial x} & 0 & \dfrac{\partial \varphi_2 }{\partial x} & 0 & \cdots \\ 0 & \dfrac{\partial \varphi_1 }{\partial y} & 0 & \dfrac{\partial \varphi_2 }{\partial y} & \cdots \\ \dfrac{\partial \varphi_1 }{\partial y} & \dfrac{\partial \varphi_1 }{\partial x} & \dfrac{\partial \varphi_2 }{\partial y} & \dfrac{\partial \varphi_2 }{\partial x} & \cdots \end{array}\right\rbrack

The B\mathbf B matrix contains spatial derivatives of the basis function of our element. We shall see in the next section how the basis functions can be derived for any element and in the section after that how the derivatives are derived and computed.

With these definitions, the matrix formulation corresponding to the FEM formulation of (1) becomes

(ΩBTD  B  dΩ)u=ΩΦTfdΩ+ΩΦTt  d  s \boxed{ \left(\int_{\Omega } {\mathbf{B} }^T \mathit{\mathbf{D} }\;\mathbf{B}\;d\Omega \right)\mathbf{u}=\int_{\Omega } \Phi^T \mathit{\mathbf{f} }d\Omega +\int_{\partial \Omega } \Phi^T \mathit{\mathbf{t} }\;d\;s }

or

S  u=f+g \boxed{ \mathbf{S}\;\mathbf{u}=\mathbf{f}+\mathbf{g} }

Mandel notation

An alternative to the Voigt notation is the Mandel notation

εM(u)=[x00y12y12x][uxuy]\bm \varepsilon_M {\left(\bm u \right)} =\left\lbrack \begin{array}{cc} \dfrac{\partial }{\partial x} & 0\\ 0 & \dfrac{\partial }{\partial y}\\ \dfrac{1}{\sqrt{2} }\dfrac{\partial }{\partial y} & \dfrac{1}{\sqrt{2} }\dfrac{\partial }{\partial x} \end{array}\right\rbrack \left\lbrack \begin{array}{c} u_x \\ u_y \end{array}\right\rbrack

and the corresponding discrete form

Bε:=[φ1x0φ2x00φ1y0φ2y12φ1y12φ1x12φ2y12φ2x] \def\arraystretch{2.5} \mathbf B_{\varepsilon } :=\left\lbrack \begin{array}{ccccc} \dfrac{\partial \varphi_1 }{\partial x} & 0 & \dfrac{\partial \varphi_2 }{\partial x} & 0 & \cdots \\ 0 & \dfrac{\partial \varphi_1 }{\partial y} & 0 & \dfrac{\partial \varphi_2 }{\partial y} & \cdots \\ \dfrac{1}{\sqrt{2} }\dfrac{\partial \varphi_1 }{\partial y} & \dfrac{1}{\sqrt{2} }\dfrac{\partial \varphi_1 }{\partial x} & \dfrac{1}{\sqrt{2} }\dfrac{\partial \varphi_2 }{\partial y} & \dfrac{1}{\sqrt{2} }\dfrac{\partial \varphi_2 }{\partial x} & \cdots \end{array}\right\rbrack

we have ε:ε=εMεM\bm \varepsilon :\bm \varepsilon =\bm \varepsilon_M \cdot \bm \varepsilon_M and λtrεI:ε\lambda \mathrm{tr} \bm \varepsilon \bm I : \bm \varepsilon can be written λuI:ε\lambda \nabla \cdot \bm u \bm I : \bm \varepsilon

u=[xy][uxuy]\nabla \cdot \bm u=\left\lbrack \begin{array}{cc} \dfrac{\partial }{\partial x} & \dfrac{\partial }{\partial y} \end{array}\right\rbrack \left\lbrack \begin{array}{c} u_x \\ u_y \end{array}\right\rbrack

for which the corresponding discrete system is given by

Bdiv:=[φ  1xφ  1yφ  2xφ  2y]\mathbf B_{\mathrm{div} } :=\left\lbrack \begin{array}{ccccc} \dfrac{\partial \varphi_{\;1} }{\partial x} & \dfrac{\partial \varphi_{\;1} }{\partial y} & \dfrac{\partial \varphi_{\;2} }{\partial x} & \dfrac{\partial \varphi_{\;2} }{\partial y} & \cdots \end{array}\right\rbrack

Using the Mandel notation, the discrete system becomes

(Ω2μBεTBε+λBdivTBdivdΩ)u=ΩΦTfdΩ+ΩΦTt  d  s\left(\int_{\Omega } 2\mu {\mathit{\mathbf{B} } }_{\varepsilon }^T {\mathit{\mathbf{B} } }_{\varepsilon } +\lambda {\mathit{\mathbf{B} } }_{\mathrm{div} }^T {\mathit{\mathbf{B} } }_{\mathrm{div} } d\Omega \right)\mathbf{u}=\int_{\Omega } \Phi^T \mathit{\mathbf{f} }d\Omega +\int_{\partial \Omega } \Phi^T \mathit{\mathbf{t} }\;d\;s

Note that the linear system is the same both in the Voigt and Mandel form, however there are some benefits with the Mandel form. The expression is kept in the general form of the Hooke's Law. The expression is separated into the volumetric and deviatoric terms, which facilitates special treatment of integration known as hourglass control.

Element formulations

For an element KK, e.g., linear 2D element

We have (using the Mandel notation), the element stiffness matrix

SK=K(2μBεTBε+λBDBD)d  K\mathbf S_K =\int_K \left(2\mu {\mathit{\mathbf{B} } }_{\varepsilon }^T {\mathit{\mathbf{B} } }_{\varepsilon } +\lambda {\mathit{\mathbf{B} } }_D {\mathit{\mathbf{B} } }_D \right)d\;K

the element load vector

fK=KΦTf(x)  d  K\mathbf f_K =\int_K \Phi^T \mathit{\mathbf{f} }\left(x\right)\;d\;K

the traction (external force) vector

gE=EΦETt(x)  d  E\mathbf g_E =\int_E \Phi_E^T \mathit{\mathbf{t} }\left(x\right)\;d\;E

where EE denotes edge (in 2D, where as in 3D it would be a surface). The edge element is one spatial dimension lower, we are formulating the equations on an edge instead of a triangle. For the edge element we have

ΦE=2D  lin[φ1E0φ2E00φ1E0φ2E],  φE=2D  lin[1+ξξ]\bm \Phi_E \overset{2D\;\mathrm{lin} }{=} \left\lbrack \begin{array}{cccc} \varphi_1^E & 0 & \varphi_2^E & 0\\ 0 & \varphi_1^E & 0 & \varphi_2^E \end{array}\right\rbrack ,\; \bm \varphi^E \overset{2D\;\mathrm{lin} }{=} \left\lbrack \begin{array}{cc} 1+\xi & \xi \end{array}\right\rbrack

Assembling these element matrices into the global system leads to the system

S  u=f+g\mathbf{S}\;\mathbf{u}=\mathbf{f}+\mathbf{g}

References

[1]
N. S. Ottosen and H. Petersson, Introduction to the finite element method. New York etc.: Prentice Hall, 1992, pp. xv + 410.
[2]
B. G. Galerkin, “Series occurring in various questions concerning the elastic equilibrium of rods and plates,” Vestnik Inzhenerov i Tekhnikov, (Engineers and Technologists Bulletin), vol. Vol. 19, pp. 897–908, 1915.