The finite element method (FEM) (its practical application often known as finite element analysis (FEA)) is a numerical technique for finding approximate solutions of partial differential equations (PDE) as well as integral equations. The solution approach is based either on eliminating the differential equation completely (steady state problems), or rendering the PDE into an approximating system of ordinary differential equations, which are then numerically integrated using standard techniques such as Euler's method, Runge-Kutta, etc.
In solving partial differential equations, the primary challenge is to create an equation that approximates the equation to be studied, but is numerically stable, meaning that errors in the input 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 complicated domains (like cars and oil pipelines), when the domain changes (as during a solid state reaction with a moving boundary), when the desired precision varies over the entire domain, or when the solution lacks smoothness. For instance, in a frontal crash simulation it is possible to increase prediction accuracy in "important" areas like the front of the car and reduce it in its rear (thus reducing cost of the simulation). Another example would be in Numerical weather prediction, where it is more important to have accurate predictions over developing highly nonlinear phenomena (such as tropical cyclones in the atmosphere, or eddies in the ocean) rather than relatively calm areas.
The finite element method originated from the need for solving complex elasticity and structural analysis problems in civil and aeronautical engineering. Its development can be traced back to the work by Alexander Hrennikoff (1941) and Richard Courant[1] (1942). While the approaches used by these pioneers are different, they share one essential characteristic: mesh discretization of a continuous domain into a set of discrete sub-domains, usually called elements. Starting in 1947, Olgierd Zienkiewicz from Imperial College gathered those methods together into what would be called the Finite Element Method, building the pioneering mathematical formalism of the method.[2]
Hrennikoff's work discretizes the domain by using a lattice analogy, while Courant's approach divides the domain into finite triangular subregions to solve second order elliptic partial differential equations (PDEs) that 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[3] and gathered momentum at the University of Stuttgart through the work of John Argyris and at Berkeley through the work of Ray W. Clough in the 1960s for use in civil engineering. By late 1950s, the key concepts of stiffness matrix and element assembly existed essentially in the form used today. NASA issued a request for proposals for the development of the finite element software NASTRAN in 1965. The method was again provided with a rigorous mathematical foundation in 1973 with the publication of Strang and Fix's An Analysis of The Finite Element Method,[4] 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., electromagnetism[5][6] and fluid dynamics.
We will illustrate the finite element method using two sample problems from which the general method can be extrapolated. It is assumed that the reader is familiar with calculus and linear algebra.
P1 is a one-dimensional problem
- Failed to parse (Missing texvc executable; please see math/README to configure.): \mbox{ P1 }:\begin{cases} u''(x)=f(x) \mbox{ in } (0,1), \\ u(0)=u(1)=0, \end{cases}
where Failed to parse (Missing texvc executable; please see math/README to configure.): f
is given, Failed to parse (Missing texvc executable; please see math/README to configure.): u
is an unknown function of Failed to parse (Missing texvc executable; please see math/README to configure.): x
, and Failed to parse (Missing texvc executable; please see math/README to configure.): u''
is the second derivative of Failed to parse (Missing texvc executable; please see math/README to configure.): u
with respect to Failed to parse (Missing texvc executable; please see math/README to configure.): x
.
P2 is a two-dimensional problem (Dirichlet problem)
- Failed to parse (Missing texvc executable; please see math/README to configure.): \mbox{P2 }:\begin{cases} u_{xx}(x,y)+u_{yy}(x,y)=f(x,y) & \mbox{ in } \Omega, \\ u=0 & \mbox{ on } \partial \Omega, \end{cases}
where Failed to parse (Missing texvc executable; please see math/README to configure.): \Omega
is a connected open region in the Failed to parse (Missing texvc executable; please see math/README to configure.): (x,y)
plane whose boundary Failed to parse (Missing texvc executable; please see math/README to configure.): \partial \Omega
is "nice" (e.g., a smooth manifold or a polygon), and Failed to parse (Missing texvc executable; please see math/README to configure.): u_{xx}
and Failed to parse (Missing texvc executable; please see math/README to configure.): u_{yy}
denote the second derivatives with respect to Failed to parse (Missing texvc executable; please see math/README to configure.): x
and Failed to parse (Missing texvc executable; please see math/README to configure.): y
, 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 Failed to parse (Missing texvc executable; please see math/README to configure.): u+u''=f . 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 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.
The first step is to convert P1 and P2 into their equivalent weak formulations.
If Failed to parse (Missing texvc executable; please see math/README to configure.): u
solves P1, then for any smooth function Failed to parse (Missing texvc executable; please see math/README to configure.): v
that satisfies the displacement boundary conditions, i.e. Failed to parse (Missing texvc executable; please see math/README to configure.): v=0
at Failed to parse (Missing texvc executable; please see math/README to configure.): x=0
and Failed to parse (Missing texvc executable; please see math/README to configure.): x=1
, we have
(1) Failed to parse (Missing texvc executable; please see math/README to configure.): \int_0^1 f(x)v(x) \, dx = \int_0^1 u''(x)v(x) \, dx.
Conversely, if Failed to parse (Missing texvc executable; please see math/README to configure.): u
with Failed to parse (Missing texvc executable; please see math/README to configure.): u(0)=u(1)=0
satisfies (1) for every smooth function Failed to parse (Missing texvc executable; please see math/README to configure.): v(x)
then one may show that this Failed to parse (Missing texvc executable; please see math/README to configure.): u
will solve P1. The proof is easier for twice continuously differentiable Failed to parse (Missing texvc executable; please see math/README to configure.): u
(mean value theorem), but may be proved in a distributional sense as well.
By using integration by parts on the right-hand-side of (1), we obtain
(2)Failed to parse (Missing texvc executable; please see math/README to configure.): \begin{align} \int_0^1 f(x)v(x) \, dx & = \int_0^1 u''(x)v(x) \, dx \\ & = u'(x)v(x)|_0^1-\int_0^1 u'(x)v'(x) \, dx \\ & = -\int_0^1 u'(x)v'(x) \, dx = -\phi (u,v). \end{align}
where we have used the assumption that Failed to parse (Missing texvc executable; please see math/README to configure.): v(0)=v(1)=0 .
If we integrate by parts using a form of Green's identities, we see that if Failed to parse (Missing texvc executable; please see math/README to configure.): u
solves P2, then for any Failed to parse (Missing texvc executable; please see math/README to configure.): v
,
- Failed to parse (Missing texvc executable; please see math/README to configure.): \int_{\Omega} fv\,ds = -\int_{\Omega} \nabla u \cdot \nabla v \, ds = -\phi(u,v),
where Failed to parse (Missing texvc executable; please see math/README to configure.): \nabla
denotes the gradient and Failed to parse (Missing texvc executable; please see math/README to configure.): \cdot
denotes the dot product in the two-dimensional plane. Once more Failed to parse (Missing texvc executable; please see math/README to configure.): \,\!\phi
can be turned into an inner product on a suitable space Failed to parse (Missing texvc executable; please see math/README to configure.): H_0^1(\Omega)
of "once differentiable" functions of Failed to parse (Missing texvc executable; please see math/README to configure.): \Omega
that are zero on Failed to parse (Missing texvc executable; please see math/README to configure.): \partial \Omega
. We have also assumed that Failed to parse (Missing texvc executable; please see math/README to configure.): v \in H_0^1(\Omega)
(see Sobolev spaces). Existence and uniqueness of the solution can also be shown.
We can loosely think of Failed to parse (Missing texvc executable; please see math/README to configure.): H_0^1(0,1)
to be the absolutely continuous functions of Failed to parse (Missing texvc executable; please see math/README to configure.): (0,1)
that are Failed to parse (Missing texvc executable; please see math/README to configure.): 0
at Failed to parse (Missing texvc executable; please see math/README to configure.): x=0
and Failed to parse (Missing texvc executable; please see math/README to configure.): x=1
(see Sobolev spaces). Such functions are (weakly) "once differentiable" and it turns out that the symmetric bilinear map Failed to parse (Missing texvc executable; please see math/README to configure.): \!\,\phi
then defines an inner product which turns Failed to parse (Missing texvc executable; please see math/README to configure.): H_0^1(0,1)
into a Hilbert space (a detailed proof is nontrivial). On the other hand, the left-hand-side Failed to parse (Missing texvc executable; please see math/README to configure.): \int_0^1 f(x)v(x)dx
is also an inner product, this time on the Lp space Failed to parse (Missing texvc executable; please see math/README to configure.): L^2(0,1)
. An application of the Riesz representation theorem for Hilbert spaces shows that there is a unique Failed to parse (Missing texvc executable; please see math/README to configure.): u
solving (2) and therefore P1. This solution is a-priori only a member of Failed to parse (Missing texvc executable; please see math/README to configure.): H_0^1(0,1)
, but using elliptic regularity, will be smooth if Failed to parse (Missing texvc executable; please see math/README to configure.): f
is.
A function in
Failed to parse (Missing texvc executable; please see math/README to configure.): H_0^1, with zero values at the endpoints (blue), and a piecewise linear approximation (red).
P1 and P2 are ready to be discretized which leads to a common sub-problem (3). The basic idea is to replace the infinite dimensional linear problem:
- Find Failed to parse (Missing texvc executable; please see math/README to configure.): u \in H_0^1
such that
- Failed to parse (Missing texvc executable; please see math/README to configure.): \forall v \in H_0^1, \; -\phi(u,v)=\int fv
with a finite dimensional version:
- (3) Find Failed to parse (Missing texvc executable; please see math/README to configure.): u \in V
such that
- Failed to parse (Missing texvc executable; please see math/README to configure.): \forall v \in V, \; -\phi(u,v)=\int fv
where Failed to parse (Missing texvc executable; please see math/README to configure.): V
is a finite dimensional subspace of Failed to parse (Missing texvc executable; please see math/README to configure.): H_0^1
. There are many possible choices for Failed to parse (Missing texvc executable; please see math/README to configure.): V
(one possibility leads to the spectral method). However, for the finite element method we take Failed to parse (Missing texvc executable; please see math/README to configure.): V
to be a space of piecewise polynomial functions.
We take the interval Failed to parse (Missing texvc executable; please see math/README to configure.): (0,1) ,choose Failed to parse (Missing texvc executable; please see math/README to configure.): n
values of Failed to parse (Missing texvc executable; please see math/README to configure.): x
with Failed to parse (Missing texvc executable; please see math/README to configure.): 0=x_0<x_1<...<x_n<x_{n+1}=1
and we define Failed to parse (Missing texvc executable; please see math/README to configure.): V
by:
- Failed to parse (Missing texvc executable; please see math/README to configure.): V=\{v:[0,1] \rightarrow \Bbb R\;: v\mbox{ is continuous, }v|_{[x_k,x_{k+1}]} \mbox{ is linear for } k=0,...,n \mbox{, and } v(0)=v(1)=0 \}
where we define Failed to parse (Missing texvc executable; please see math/README to configure.): x_0=0
and Failed to parse (Missing texvc executable; please see math/README to configure.): x_{n+1}=1
. Observe that functions in Failed to parse (Missing texvc executable; please see math/README to configure.): V
are not differentiable according to the elementary definition of calculus. Indeed, if Failed to parse (Missing texvc executable; please see math/README to configure.): v \in V
then the derivative is typically not defined at any Failed to parse (Missing texvc executable; please see math/README to configure.): x=x_k
, Failed to parse (Missing texvc executable; please see math/README to configure.): k=1,...,n . However, the derivative exists at every other value of Failed to parse (Missing texvc executable; please see math/README to configure.): x
and one can use this derivative for the purpose of integration by parts.
A piecewise linear function in two dimensions.
We need Failed to parse (Missing texvc executable; please see math/README to configure.): V
to be a set of functions of Failed to parse (Missing texvc executable; please see math/README to configure.): \Omega
. In the figure on the right, we have illustrated a triangulation of a 15 sided polygonal region Failed to parse (Missing texvc executable; please see math/README to configure.): \Omega
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 Failed to parse (Missing texvc executable; please see math/README to configure.): V
would consist of functions that are linear on each triangle of the chosen triangulation.
One often reads Failed to parse (Missing texvc executable; please see math/README to configure.): V_h
instead of Failed to parse (Missing texvc executable; please see math/README to configure.): V
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 Failed to parse (Missing texvc executable; please see math/README to configure.): h>0
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 Failed to parse (Missing texvc executable; please see math/README to configure.): V
must also change with Failed to parse (Missing texvc executable; please see math/README to configure.): h
, hence the notation Failed to parse (Missing texvc executable; please see math/README to configure.): V_h . Since we do not perform such an analysis, we will not use this notation.
Basis functions
vk (blue) and a linear combination of them, which is piecewise linear (red).
To complete the discretization, we must select a basis of Failed to parse (Missing texvc executable; please see math/README to configure.): V . In the one-dimensional case, for each control point Failed to parse (Missing texvc executable; please see math/README to configure.): x_k
we will choose the piecewise linear function Failed to parse (Missing texvc executable; please see math/README to configure.): v_k
in Failed to parse (Missing texvc executable; please see math/README to configure.): V
whose value is Failed to parse (Missing texvc executable; please see math/README to configure.): 1
at Failed to parse (Missing texvc executable; please see math/README to configure.): x_k
and zero at every Failed to parse (Missing texvc executable; please see math/README to configure.): x_j,\;j \neq k
, i.e.,
- Failed to parse (Missing texvc executable; please see math/README to configure.): 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}
for Failed to parse (Missing texvc executable; please see math/README to configure.): k=1,...,n
- this basis is a shifted and scaled tent function. For the two-dimensional case, we choose again one basis function Failed to parse (Missing texvc executable; please see math/README to configure.): v_k
per vertex Failed to parse (Missing texvc executable; please see math/README to configure.): x_k
of the triangulation of the planar region Failed to parse (Missing texvc executable; please see math/README to configure.): \Omega
. The function Failed to parse (Missing texvc executable; please see math/README to configure.): v_k
is the unique function of Failed to parse (Missing texvc executable; please see math/README to configure.): V
whose value is Failed to parse (Missing texvc executable; please see math/README to configure.): 1
at Failed to parse (Missing texvc executable; please see math/README to configure.): x_k
and zero at every Failed to parse (Missing texvc executable; please see math/README to configure.): x_j,\;j \neq k
.
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, and so might describe the 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).
Examples of methods that use higher degree piecewise polynomial basis functions are the hp-FEM and spectral FEM.
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 (hp-adaptivity)
Solving the two-dimensional problem
Failed to parse (Missing texvc executable; please see math/README to configure.): u_{xx}+u_{yy}=-4 in the disk centered at the origin and radius 1, with zero boundary conditions.
(a) The triangulation.
(c) The computed solution,
Failed to parse (Missing texvc executable; please see math/README to configure.): u(x, y)=1-x^2-y^2.
The primary advantage of this choice of basis is that the inner products
- Failed to parse (Missing texvc executable; please see math/README to configure.): \langle v_j,v_k \rangle=\int_0^1 v_j v_k\,dx
and
- Failed to parse (Missing texvc executable; please see math/README to configure.): \phi(v_j,v_k)=\int_0^1 v_j' v_k'\,dx
will be zero for almost all Failed to parse (Missing texvc executable; please see math/README to configure.): j,k . (The matrix containing Failed to parse (Missing texvc executable; please see math/README to configure.): \langle v_j,v_k \rangle
in the Failed to parse (Missing texvc executable; please see math/README to configure.): (j,k)
location is known as the Gramian matrix.)
In the one dimensional case, the support of Failed to parse (Missing texvc executable; please see math/README to configure.): v_k
is the interval Failed to parse (Missing texvc executable; please see math/README to configure.): [x_{k-1},x_{k+1}]
. Hence, the integrands of Failed to parse (Missing texvc executable; please see math/README to configure.): \langle v_j,v_k \rangle
and Failed to parse (Missing texvc executable; please see math/README to configure.): \phi(v_j,v_k)
are identically zero whenever Failed to parse (Missing texvc executable; please see math/README to configure.): |j-k|>1 .
Similarly, in the planar case, if Failed to parse (Missing texvc executable; please see math/README to configure.): x_j
and Failed to parse (Missing texvc executable; please see math/README to configure.): x_k
do not share an edge of the triangulation, then the integrals
- Failed to parse (Missing texvc executable; please see math/README to configure.): \int_{\Omega} v_j v_k\,ds
and
- Failed to parse (Missing texvc executable; please see math/README to configure.): \int_{\Omega} \nabla v_j \cdot \nabla v_k\,ds
are both zero.
If we write Failed to parse (Missing texvc executable; please see math/README to configure.): u(x)=\sum_{k=1}^n u_k v_k(x)
and Failed to parse (Missing texvc executable; please see math/README to configure.): f(x)=\sum_{k=1}^n f_k v_k(x)
then problem (3), taking Failed to parse (Missing texvc executable; please see math/README to configure.): v(x)=v_j(x)
for Failed to parse (Missing texvc executable; please see math/README to configure.): j=1,...,n
, becomes
- Failed to parse (Missing texvc executable; please see math/README to configure.): -\sum_{k=1}^n u_k \phi (v_k,v_j) = \sum_{k=1}^n f_k \int v_k v_j dx
for Failed to parse (Missing texvc executable; please see math/README to configure.): j=1,...,n
. (4)
If we denote by Failed to parse (Missing texvc executable; please see math/README to configure.): \mathbf{u}
and Failed to parse (Missing texvc executable; please see math/README to configure.): \mathbf{f}
the column vectors Failed to parse (Missing texvc executable; please see math/README to configure.): (u_1,...,u_n)^t
and Failed to parse (Missing texvc executable; please see math/README to configure.): (f_1,...,f_n)^t
, and if we let
- Failed to parse (Missing texvc executable; please see math/README to configure.): L=(L_{ij})
and
- Failed to parse (Missing texvc executable; please see math/README to configure.): M=(M_{ij})
be matrices whose entries are
- Failed to parse (Missing texvc executable; please see math/README to configure.): L_{ij}=\phi (v_i,v_j)
and
- Failed to parse (Missing texvc executable; please see math/README to configure.): M_{ij}=\int v_i v_j dx
then we may rephrase (4) as
- Failed to parse (Missing texvc executable; please see math/README to configure.): -L \mathbf{u} = M \mathbf{f}
. (5)
It is not, in fact, necessary to assume Failed to parse (Missing texvc executable; please see math/README to configure.): f(x)=\sum_{k=1}^n f_k v_k(x) . For a general function Failed to parse (Missing texvc executable; please see math/README to configure.): f(x) , problem (3) with Failed to parse (Missing texvc executable; please see math/README to configure.): v(x)=v_j(x)
for Failed to parse (Missing texvc executable; please see math/README to configure.): j=1,...,n
becomes actually simpler, since no matrix Failed to parse (Missing texvc executable; please see math/README to configure.): M
is used,
- Failed to parse (Missing texvc executable; please see math/README to configure.): -L \mathbf{u} = \mathbf{b}
, (6) where Failed to parse (Missing texvc executable; please see math/README to configure.): \mathbf{b}=(b_1,...,b_n)^t
and Failed to parse (Missing texvc executable; please see math/README to configure.): b_j=\int f v_j dx
for Failed to parse (Missing texvc executable; please see math/README to configure.): j=1,...,n
.
As we have discussed before, most of the entries of Failed to parse (Missing texvc executable; please see math/README to configure.): L
and Failed to parse (Missing texvc executable; please see math/README to configure.): M
are zero because the basis functions Failed to parse (Missing texvc executable; please see math/README to configure.): v_k
have small support. So we now have to solve a linear system in the unknown Failed to parse (Missing texvc executable; please see math/README to configure.): \mathbf{u}
where most of the entries of the matrix Failed to parse (Missing texvc executable; please see math/README to configure.): L
, 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, Failed to parse (Missing texvc executable; please see math/README to configure.): L
is symmetric and positive definite, 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 uses sparse LU, sparse Cholesky, and other factorization methods) can be sufficient for meshes with a hundred thousand vertices.
The matrix Failed to parse (Missing texvc executable; please see math/README to configure.): L
is usually referred to as the stiffness matrix, while the matrix Failed to parse (Missing texvc executable; please see math/README to configure.): M
is dubbed the mass matrix.
In general, the finite element method is characterized by the following process.
- One chooses a grid for Failed to parse (Missing texvc executable; please see math/README to configure.): \Omega
. In the preceding treatment, the grid consisted of triangles, but one can also use squares or curvilinear polygons.
- Then, one chooses basis functions. In our discussion, we used piecewise linear basis functions, but it is also common to use piecewise polynomial basis functions.
A separate consideration is the smoothness of the basis functions. For second order elliptic boundary value problems, piecewise polynomial basis function that are merely continuous suffice (i.e., the derivatives are discontinuous.) For higher order partial differential equations, one must use smoother basis functions. For instance, for a fourth order problem such as Failed to parse (Missing texvc executable; please see math/README to configure.): u_{xxxx}+u_{yyyy}=f , one may use piecewise quadratic basis functions that are Failed to parse (Missing texvc executable; please see math/README to configure.): C^1 .
Another consideration is the relation of the finite dimensional space Failed to parse (Missing texvc executable; please see math/README to configure.): V
to its infinite dimensional counterpart, in the examples above Failed to parse (Missing texvc executable; please see math/README to configure.): H_0^1
. A conforming element method is one in which the space Failed to parse (Missing texvc executable; please see math/README to configure.): V
is a subspace of the element space for the continuous problem. The example above is such a method. If this condition is not satisfied, we obtain a nonconforming element method, an example of which is the space of piecewise linear functions over the mesh which are continuous at each edge midpoint. Since these functions are in general discontinuous along the edges, this finite dimensional space is not a subspace of the original Failed to parse (Missing texvc executable; please see math/README to configure.): H_0^1
.
Typically, one has an algorithm for taking a given mesh and subdividing it. If the main method for increasing precision is to subdivide the mesh, one has an h-method (h is customarily the diameter of the largest element in the mesh.) In this manner, if one shows that the error with a grid Failed to parse (Missing texvc executable; please see math/README to configure.): h
is bounded above by Failed to parse (Missing texvc executable; please see math/README to configure.): Ch^p
, for some Failed to parse (Missing texvc executable; please see math/README to configure.): C<\infty
and Failed to parse (Missing texvc executable; please see math/README to configure.): p>0
, then one has an order p method. Under certain hypotheses (for instance, if the domain is convex), a piecewise polynomial of order Failed to parse (Missing texvc executable; please see math/README to configure.): d
method will have an error of order Failed to parse (Missing texvc executable; please see math/README to configure.): p=d+1
.
If instead of making h smaller, one increases the degree of the polynomials used in the basis function, one has a p-method. If one combines these two refinement types, one obtains an hp-method (hp-FEM). In the hp-FEM, the polynomial degrees can vary from element to element. High order methods with large uniform p are called spectral finite element methods (SFEM). These are not to be confused with spectral methods.
For vector partial differential equations, the basis functions may take values in Failed to parse (Missing texvc executable; please see math/README to configure.): \mathbb{R}^n .
The Applied Element Method, or AEM combines features of both FEM and Discrete element method, or (DEM).
The Generalized Finite Element Method (GFEM) uses local spaces consisting of functions, not necessarily polynomials, that reflect the available information on the unknown solution and thus ensure good local approximation. Then a partition of unity is used to “bond” these spaces together to form the approximating subspace. The effectiveness of GFEM has been shown when applied to problems with domains having complicated boundaries, problems with micro-scales, and problems with boundary layers.[7]
The hp-FEM combines adaptively elements with variable size h and polynomial degree p in order to achieve exceptionally fast, exponential convergence rates.[8]
The hpk-FEM combines adaptively elements with variable size h, polynomial degree of the local approximations p and global differentiability of the local approximations (k-1) in order to achieve best convergence rates.
The finite difference method (FDM) is an alternative way of approximating solutions of PDEs. The differences between FEM and FDM are:
- The most attractive feature of the FEM is its ability to handle complicated 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.
- 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 special case of the FEM approach. E.g., first order FEM is identical to FDM for Poisson's equation, if the problem is discretized by a regular rectangular mesh with each rectangle divided into two triangles.
- 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 like finite volume method (FVM). 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.
Visualization of how a car deforms in an asymmetrical crash using finite element analysis.
[1]
A variety of specializations under the umbrella of the mechanical engineering discipline (such as aeronautical, biomechanical, and automotive industries) commonly use integrated FEM in design and development of their products. Several modern FEM packages include specific components such as thermal, electromagnetic, fluid, and structural working environments. In a structural simulation, FEM helps tremendously in producing stiffness and strength visualizations and also in minimizing weight, materials, and costs.
FEM allows detailed visualization of where structures bend or twist, and indicates the distribution of stresses and displacements. FEM software provides a wide range of simulation options for controlling the complexity of both modeling and analysis of a system. Similarly, the desired level of accuracy required and associated computational time requirements can be managed simultaneously to address most engineering applications. FEM allows entire designs to be constructed, refined, and optimized before the design is manufactured.
This powerful design tool has significantly improved both the standard of engineering designs and the methodology of the design process in many industrial applications.[9] The introduction of FEM has substantially decreased the time to take products from concept to the production line.[9] It is primarily through improved initial prototype designs using FEM that testing and development have been accelerated.[10] In summary, benefits of FEM include increased accuracy, enhanced design and better insight into critical design parameters, virtual prototyping, fewer hardware prototypes, a faster and less expensive design cycle, increased productivity, and increased revenue.[9]
FEA has also been proposed to use in stochastic modelling, for numerically solving probability models. See the references list. [11] [12]
- ^ Giuseppe Pelosi (2007). "The finite-element method, Part I: R. L. Courant: Historical Corner". DOI:10.1109/MAP.2007.376627.
- ^ E. Stein (2009), Olgierd C. Zienkiewicz, a pioneer in the development of the finite element method in engineering science. Steel Construction, 2 (4), 264-272.
- ^ Matrix Analysis Of Framed Structures, 3rd Edition by Jr. William Weaver, James M. Gere, 3rd Edition, Springer-Verlag New York, LLC, ISBN 978-0-412-07861-3, First edition 1966
- ^ Strang, Gilbert; Fix, George (1973). An Analysis of The Finite Element Method. Prentice Hall. ISBN 0-13-032946-0.
- ^ Roberto Coccioli, Tatsuo Itoh, Giuseppe Pelosi, Peter P. Silvester (1996). "Finite-element methods in microwaves: a selected bibliography". DOI:10.1109/74.556518.
- ^ Ronald L. Ferrari (2007). "The Finite-Element Method, Part 2: P. P. Silvester, an Innovator in Electromagnetic Numerical Modeling". DOI:10.1109/MAP.2007.4293978.
- ^ Babuška, Ivo; Banerjee, Uday; Osborn, John E. (June 2004). "Generalized Finite Element Methods: Main Ideas, Results, and Perspective". International Journal of Computational Methods 1 (1): 67–103. DOI:10.1142/S0219876204000083.
- ^ P. Solin, K. Segeth, I. Dolezel: Higher-Order Finite Element Methods, Chapman & Hall/CRC Press, 2003
- ^ a b c Hastings, J. K., Juds, M. A., Brauer, J. R., Accuracy and Economy of Finite Element Magnetic Analysis, 33rd Annual National Relay Conference, April 1985.
- ^ McLaren-Mercedes (2006). "Vodafone McLaren-Mercedes: Feature - Stress to impress". Archived from the original on 2006-10-30. http://web.archive.org/web/20061030200423/http://www.mclaren.com/features/technical/stress_to_impress.php. Retrieved 2006-10-03.
- ^ "Methods with high accuracy for finite element probability computing" by Peng Long, Wang Jinliang and Zhu Qiding, in Journal of Computational and Applied Mathematics 59 (1995) 181-189
- ^ Achintya Haldar and Sankaran mahadan: "Reliability Assessment Using Stochastic Finite Element Analysis", John Wiley & sons.
|
|
Operations |
|
Failed to parse (Missing texvc executable; please see math/README to configure.): \dfrac{d}{dt}\left(\frac{\partial L }{\partial \dot{q}}\right)=\frac{\partial L }{\partial q}\,\!
|
|
|
Attributes |
|
|
Solution methods |
|
|