Finite element method

From Free net encyclopedia

The finite-element method (FEM) originated from the needs for solving complex elasticity, structural analysis problems in civil engineering and aeronautical engineering. Its development can be traced back to the work by A. Hrennikoff (1941) and R. Courant (1942). While the approaches used by these pioneers are dramatically different, they share one essential characteristic: mesh discretization of a continuous domain into a set of discrete sub-domains. Hrennikoff's work discretizes the domain by using lattice analogy while Richard Courant's approach divides the domain into finite triangular subregions for solution of second order elliptic partial differential equations (PDEs), which arise from the problem of torsion of a cylinder. Courant's contribution was evolutionary, drawing on a large body of earlier results for PDEs developed by Rayleigh, Ritz, and Galerkin. Development of the finite element method began in earnest in the middle to late 1950s for airframe and structural analysis, and picked up a lot of steam at Berkeley (see Early Finite Element Research at Berkeley) in the 1960s for use in civil engineering. The method was provided with a rigorous mathematical foundation in 1973 with the publication of Strang and Fix's An Analysis of The Finite Element Method, and has since been generalized into a branch of applied mathematics for numerical modeling of physical systems in a wide variety of engineering disciplines, e.g., electromagnetics and fluid dynamics.

The development of the finite element method in structural mechanics is often based on an energy principle, e.g., the virtual work principle or the minimum total potential energy principle, which provides a general, intuitive and physical basis that has a great appeal to structural engineers.

Mathematically, the finite element method (FEM) is used for finding approximate solution of partial differential equations (PDE) as well as of integral equations such as the heat transport equation. The solution approach is based either on eliminating the differential equation completely (steady state problems), or rendering the PDE into an equivalent ordinary differential equation, which is then solved using standard techniques such as finite differences, etc.

In solving partial differential equations, the primary challenge is to create an equation which approximates the equation to be studied, but which is numerically stable, meaning that errors in the input data and intermediate calculations do not accumulate and cause the resulting output to be meaningless. There are many ways of doing this, all with advantages and disadvantages. The Finite Element Method is a good choice for solving partial differential equations over complex domains (like cars and oil pipelines) or when the desired precision varies over the entire domain. For instance, in simulating the weather pattern on Earth, it is more important to have accurate predictions over land than over the wide-open sea, a demand that is achievable using the finite element method.

Contents

Technical discussion

We will illustrate the finite element method using two sample problems from which the general method can be extrapolated. We assume that the reader is familiar with calculus and linear algebra. We will use the one-dimensional

<math>\mbox{P1 }:\begin{cases}

u=f \mbox{ in } (0,1), \\ u(0)=u(1)=0, \end{cases}</math>

where <math>f</math> is given and <math>u</math> is an unknown function of <math>x</math>, and <math>u</math> is the second derivative of <math>u</math> with respect to <math>x</math>. The two-dimensional sample problem is the Dirichlet problem

<math>\mbox{P2 }:\begin{cases}

u_{xx}+u_{yy}=f & \mbox{ in } \Omega, \\ u=0 & \mbox{ on } \partial \Omega, \end{cases}</math>

where <math>\Omega</math> is a connected open region in the <math>(x,y)</math> plane whose boundary <math>\partial \Omega</math> is "nice" (e.g., a smooth manifold or a polygon), and <math>u_{xx}</math> and <math>u_{yy}</math> denote the second derivatives with respect to <math>x</math> and <math>y</math>, respectively.

The problem P1 can be solved "directly" by computing antiderivatives. However, this method of solving the boundary value problem works only when there is only one spatial dimension and does not generalize to higher-dimensional problems or to problems like <math>u+u=f</math>. For this reason, we will develop the finite element method for P1 and outline its generalization to P2.

Our explanation will proceed in two steps, which mirror two essential steps one must take to solve a boundary value problem (BVP) using the FEM. In the first step, one rephrases the original BVP in its weak, or variational form. Little to no computation is usually required for this step, the transformation is done by hand on paper. The second step is the discretization, where the weak form is discretized in a finite dimensional space. After this second step, we have concrete formulae for a large but finite dimensional linear problem whose solution will approximately solve the original BVP. This finite dimensional problem is then implemented on a computer using a programming language such as C, Fortran or Matlab.

Variational formulation

The first step is to convert P1 and P2 into their variational equivalents. If <math>u</math> solves P1, then for any smooth function <math>v</math> we have

(1) <math>\int_0^1 f(t)v(t) \, dt = \int_0^1 u(t)v(t) \, dt.</math>

Conversely, if for a given <math>u</math>, (1) holds for every smooth function <math>v(t)</math> then one may show that this <math>u</math> will solve P1. (The proof is nontrivial and uses Sobolev spaces.)

By using integration by parts on the right-hand-side of (1), we obtain

(2)<math>\begin{matrix}\int_0^1 f(t)v(t) \, dt & = & \int_0^1 u(t)v(t) \, dt \\

& = & u'(t)v(t)|_0^1-\int_0^1 u'(t)v'(t) \, dt \\
& = & -\int_0^1 u'(t)v'(t) \, dt = -\phi (u,v).\end{matrix}</math>

where we have made the additional assumption that <math>v(0)=v(1)=0</math>.

A proof outline of existence and uniqueness of the solution

We can define <math>H_0^1(0,1)</math> to be the functions of <math>(0,1)</math> of bounded variation that are <math>0</math> at <math>x=0</math> and <math>x=1</math>. Such function are "once differentiable" and it turns out that the symmetric bilinear map <math>\phi</math> then defines an inner product which turns <math>H_0^1(0,1)</math> into a Hilbert space (a detailed proof is nontrivial.) On the other hand, the left-hand-side <math>\int_0^1 f(t)v(t)</math> is also an inner product, this time on the Lp space <math>L^2(0,1)</math>. An application of the Riesz representation theorem for Hilbert spaces shows that there is a unique <math>u</math> solving (2) and therefore P1.

The variational form of P2

If we integrate by parts using a form of Green's theorem, we see that if <math>u</math> solves P2, then for any <math>v</math>:

<math>\int_{\Omega} fv\,ds = -\int_{\Omega} \nabla u \cdot \nabla v \, ds = -\phi(u,v),</math>

where <math>\nabla</math> denotes the gradient and <math>\cdot</math> denotes the dot product in the two-dimensional plane. Once more <math>\phi</math> can be turned into an inner product on a suitable space <math>H_0^1(\Omega)</math> of "once differentiable" functions of <math>\Omega</math> that are zero on <math>\partial \Omega</math>. We have also assumed that <math>v \in H_0^1(\Omega)</math>. The space <math>H_0^1(\Omega)</math> can no longer be defined in terms of functions of bounded variation, but see Sobolev spaces. Existence and uniqueness of the solution can also be shown.

Discretization

Image:Finite element method 1D illustration1.png Image:Finite element triangulation.gif

The basic idea is to replace the infinite dimensional linear problem

<math>\begin{cases}\mbox{Find } u \mbox{ in } H_0^1 \mbox{ such that} \\

-\phi(u,v)=\int fv \;\;\; \forall v \in H_0^1, \end{cases}</math>

with a finite dimensional version:

(3)<math>\begin{cases}\mbox{Find } u \mbox{ in } V \mbox{ such that} \\ -\phi(u,v)=\int fv \;\;\; \forall v \in V, \end{cases}</math>

where <math>V</math> is a finite dimensional subspace of <math>H_0^1</math>. There are many possible choices for <math>V</math> (one possibility leads to the spectral method). However, for the finite element method we take <math>V</math> to be a space of piecewise linear functions.

For problem P1, we take the interval <math>(0,1)</math>, choose <math>n</math> <math>x</math> values <math>0<x_1<...<x_n<1</math> and we define <math>V</math> by

<math>\begin{matrix} V=\{u:[0,1] \rightarrow \Bbb R\;\mbox{ is continuous }|\;u|_{[x_k,x_{k+1}]} \mbox{ is linear, } \\
k=0,...,n \mbox{ and } u(0)=u(1)=0 \} \end{matrix}</math>

Image:Finite element method 1D illustration2.png

where we define <math>x_0=0</math> and <math>x_{n+1}=1</math>. Observe that functions in <math>V</math> are not differentiable according to the elementary definition of calculus. Indeed, if <math>v \in V</math> then the derivative is typically not defined at any <math>x=x_k</math>, <math>k=1,...,n</math>. However, the derivative exists at every other value of <math>x</math> and one can use this derivative for the purpose of integration by parts.

For problem P2, we need <math>V</math> to be a set of functions of <math>\Omega</math>. In the figure on the right, we have illustrated a triangulation of a 15 sided polygonal region <math>\Omega</math> in the plane (below), and a piecewise linear function (above, in color) of this polygon which is linear on each triangle of the triangulation; the space <math>V</math> would consist of functions that are linear on each triangle of the chosen triangulation.

One often reads <math>V_h</math> instead of <math>V</math> in the literature. The reason is that one hopes that as the underlying triangular grid becomes finer and finer, the solution of the discrete problem (3) will in some sense converge to the solution of the original boundary value problem P2. The triangulation is then indexed by a real valued parameter <math>h>0</math> which one takes to be very small. This parameter will be related to the size of the largest or average triangle in the triangulation. As we refine the triangulation, the space of piecewise linear functions <math>V</math> must also change with <math>h</math>, hence the notation <math>V_h</math>. Since we do not perform such an analysis, we will not use this notation.

Choosing a basis

To complete the discretization, we must select a basis of <math>V</math>. In the one-dimensional case, for each control point <math>x_k</math> we will choose the piecewise linear function <math>v_k</math> in <math>V</math> whose value is <math>1</math> at <math>x_k</math> and zero at every <math>x_j,\;j \neq k</math>, i.e.,

<math>v_{k}(x)=\begin{cases} {x-x_{k-1} \over x_k-x_{k-1}} & \mbox{ if } x \in [x_{k-1},x_k], \\

{x_{k+1}-x \over x_{k+1}-x_k} & \mbox{ if } x \in [x_k,x_{k+1}], \\ 0 & \mbox{ otherwise},\end{cases}</math>

for <math>k=1,...,n</math>. For the two-dimensional case, we choose again one basis function <math>v_k</math> per vertex <math>x_k</math> of the triangulation of the planar region <math>\Omega</math>. The function <math>v_k</math> is the unique function of <math>V</math> whose value is <math>1</math> at <math>x_k</math> and zero at every <math>x_j,\;j \neq k</math>.

Depending on the author, the word "element" in "finite element method" refers either to the triangles in the domain, the piecewise linear basis function, or both. So for instance, an author interested in curved domains might replace the triangles with curved primitives, in which case he might describe his elements as being curvilinear. On the other hand, some authors replace "piecewise linear" by "piecewise quadratic" or even "piecewise polynomial". The author might then say "higher order element" instead of "higher degree polynomial." Finite element method is not restricted to triangles (or tetrahedra in 3-d, or higher order simplexes in multidimensional spaces), but can be defined on quadrilateral subdomains (hexahedra, prisms, or pyramids in 3-d, and so on). Higher order shapes (curvilinear elements) can be defined with polynomial and even non-polynomial shapes (e.g. ellipse or circle).

Methods that use higher degree piecewise polynomial basis functions are often called spectral element methods, especially if the degree of the polynomials increases as the triangulation size <math>h</math> goes to zero.

More advanced implementations (adaptive finite element methods) utilize a method to assess the quality of the results (based on error estimation theory) and modify the mesh during the solution aiming to achieve approximate solution within some bounds from the 'exact' solution of the continuum problem. Mesh adaptivity may utilize various techniques, the most popular are:

  • moving nodes (r-adaptivity)
  • refining (and unrefining) elements (h-adaptivity)
  • changing order of base functions (p-adaptivity)
  • combinations of the above (e.g. hp-adaptivity)

Small support of the basis

The primary advantage of this choice of basis is that the inner products

<math><v_j,v_k>=\int_0^1 v_j v_k\,dx</math>

and

<math>\phi(v_j,v_k)=\int_0^1 v_j' v_k'\,dx</math>

will be zero for almost all <math>j,k</math>. In the one dimensional case, the support of <math>v_k</math> is the interval <math>[x_{k-1},x_{k+1}]</math>. Hence, the integrands of <math><v_j,v_k></math> and <math>\phi(v_j,v_k)</math> are identically zero whenever <math>|j-k|>1</math>.

Similarly, in the planar case, if <math>x_j</math> and <math>x_k</math> do not share an edge of the triangulation, then the integrals

<math>\int_{\Omega} v_j v_k\,ds</math>

and

<math>\int_{\Omega} \nabla v_j \cdot \nabla v_k\,ds</math>

are both zero.

Matrix form of the problem

If we write <math>u(x)=\sum_{k=1}^n u_k v_k(x)</math> and <math>f(x)=\sum_{k=1}^n f_k v_k(x)</math> then problem (3) becomes

(4) <math>-\sum_{k=1}^n u_k \phi (v_k,v_j) = \sum_{k=1}^n f_k \int v_k v_j</math> for <math>j=1,...,n</math>.

If we denote by <math>\mathbf{u}</math> and <math>\mathbf{f}</math> the column vectors <math>(u_1,...,u_n)^t</math> and <math>(f_1,...,f_n)^t</math>, and if let <math>L=(L_{ij})</math> and <math>M=(M_{ij})</math> be matrices whose entries are <math>L_{ij}=\phi (v_i,v_j)</math> and <math>M_{ij}=\int v_i v_j</math> then we may rephrase (4) as

(5) <math>-L \mathbf{u} = M \mathbf{f}</math>.

As we have discussed before, most of the entries of <math>L</math> and <math>M</math> are zero because the basis functions <math>v_k</math> have small support. So we now have to solve a linear system in the unknown <math>\mathbf{u}</math> where most of the entries of the matrix <math>L</math>, which we need to invert, are zero.

Such matrices are known as sparse matrices, and there are efficient solvers for such problems (much more efficient than actually inverting the matrix.) In addition, <math>L</math> is symmetric, so a technique such as the conjugate gradient method is favored. For problems that are not too large, sparse LU decompositions and Cholesky decompositions still work well. For instance, Matlab's backslash operator (which is based on sparse LU) can be sufficient for meshes with a hundred thousand vertices.

The matrix <math>L</math> is usually referred to as the stiffness matrix, while the matrix <math>M</math> is dubbed the mass matrix.

Comparison to the finite difference method

The finite difference method (FDM) is an alternative way for solving PDEs. The differences between FEM and FDM are:

  • The most attractive feature of the FEM is its ability to handle complex geometries (and boundaries) with relative ease. While FDM in its basic form is restricted to handle rectangular shapes and simple alterations thereof, the handling of geometries in FEM is theoretically straightforward although the problem of computational time is strongly influenced by the ability to precondition the problem.
  • The most attractive feature of finite differences is that it can be very easy to implement.
  • There are several ways one could consider the FDM a subset of the FEM approach. One might choose basis functions as either piecewise constant functions or Dirac delta functions. In both approaches, the approximations are defined on the entire domain, but need not be continuous. Alternatively, one might define the function on a discrete domain, with the result that the continuous differential operator no longer makes sense, however this approach is not FEM.
  • There are reasons to consider the mathematical foundation of the finite element approximation more sound, for instance, because the quality of the approximation between grid points is poor in FDM.
  • The quality of a FEM approximation is often higher than in the corresponding FDM approach, but this is extremely problem dependent and several examples to the contrary can be provided.

Generally, FEM is the method of choice in all types of analysis in structural mechanics (i.e. solving for deformation and stresses in solid bodies or dynamics of structures) while computational fluid dynamics (CFD) tends to use FDM or other methods (e.g., finite volume method). CFD problems usually require discretization of the problem into a large number of cells/gridpoints (millions and more), therefore cost of the solution favors simpler, lower order approximation within each cell. This is especially true for 'external flow' problems, like air flow around the car or airplane, or weather simulation in a large area.

See also

External links

Open-source finite element software include Z88, SLFFEA, YADE, FEniCS, deal.II, getFEM, libMesh, freeFEM, Elmer and Code-Aster.

de:Finite-Elemente-Methode es:Elementos finitos fr:Méthode des éléments finis it:Metodo degli elementi finiti nl:Eindige-elementenmethode ja:有限要素法 pl:Metoda elementów skończonych pt:Método das diferenças finitas ru:Метод конечных элементов sv:Finita elementmetoden