Escolar Documentos
Profissional Documentos
Cultura Documentos
1 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
we
plot
piecewise polynomials. This means that the domain is split into subdomains and the function is a polynomial
on one or more subdomains, see Figure A function resulting from adding three local piecewise linear (hat)
functions for a sketch involving locally defined hat functions that make u = j cj j piecewise linear. At the
boundaries between subdomains one normally forces continuity of the function only so that when connecting
two polynomials from two subdomains, the derivative becomes discontinuous. These type of basis functions
are fundamental in the finite element method.
20/04/2016 10:05
2 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
A function resulting from adding three local piecewise linear (hat) functions
We first introduce the concepts of elements and nodes in a simplistic fashion as often met in the literature.
Later, we shall generalize the concept of an element, which is a necessary step to treat a wider class of
approximations within the family of finite element methods. The generalization is also compatible with the
concepts used in the FEniCS finite element software.
on which
and
(e) ,
= (0) (Ne ) .
We shall for now refer to (e) as an element, having number e . On each element we introduce a set of
points called nodes. For now we assume that the nodes are uniformly spaced throughout the element and
that the boundary points of the elements are also nodes. The nodes are given numbers both within an
element and in the global domain. These are referred to as local and global node numbers, respectively.
Figure Finite element mesh with 5 elements and 6 nodes shows element boundaries with small vertical lines,
nodes as small disks, element numbers in circles, and global node numbers under the nodes.
20/04/2016 10:05
3 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
domain in the computations. A common special case is that of a uniformly partitioned mesh where each
element has the same length and the distance between nodes is constant.
Example (2)
On = [0, 1] we may introduce two elements, (0) = [0, 0.4] and (1) = [0.4, 1] . Furthermore, let us
introduce three nodes per element, equally spaced within each element. Figure Finite element mesh with 2
elements and 5 nodes shows the mesh. The three nodes in element number 0 are x0 = 0, x1 = 0.2 , and
x2 = 0.4 . The local and global node numbers are here equal. In element number 1, we have the local
nodes x0 = 0.4 , x1 = 0.7 , and x2 = 1 and the corresponding global nodes x2 = 0.4 , x3 = 0.7 , and
x4 = 1 . Note that the global node x2 = 0.4 is shared by the two elements.
nodes[elements[1][2]]
(recall
The numbering of elements and nodes does not need to be regular. Figure Example on irregular numbering
of elements and nodes shows and example corresponding to
nodes = [1.5, 5.5, 4.2, 0.3, 2.2, 3.1]
elements = [[2, 1], [4, 5], [0, 4], [3, 0], [5, 2]]
20/04/2016 10:05
4 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
Illustration of the piecewise quadratic basis functions associated with nodes in element 1
Properties of
The construction of basis functions according to the principles above lead to two important properties of
i (x). First,
i (xj ) = ij ,
when
xj
ij = {
1, i = j,
0, i j,
(1)
i (xj ) = ij
20/04/2016 10:05
5 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
Lagrange polynomials are constructed to have exactly this property. The property also implies a convenient
interpretation of ci as the value of u at node i. To show this, we expand u in the usual way as j cj j and
choose i
= i :
u(xi ) = cj j (xi ) = cj j (xi ) = ci i (xi ) = ci .
jIs
jIs
ui
or Ui .
i j
it means that most of the elements in the coefficient matrix will be zero. We
will come back to these properties and use them actively in computations to save memory and CPU time.
We let each element have d + 1 nodes, resulting in local Lagrange polynomials of degree
requirement to have the same d value in each element, but for now we will assume so.
d.
It is not a
Figure Sketch of mesh with 4 elements and 3 nodes per element sketches the mesh and the numbering.
Nodes are marked with circles on the x axis and element boundaries are marked with vertical dashed lines in
Figure Illustration of the piecewise quadratic basis functions associated with nodes in element 1.
20/04/2016 10:05
6 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
2. The Lagrange polynomial that is 1 at local node 0 is the right part of the global basis function 2 (x) .
The left part of 2 (x) consists of a Lagrange polynomial associated with local node 2 in the
= [0.5, 0.75] .
The other global functions associated with internal nodes, 1 , 5 , and 7 , are all of the same shape as the
drawn 3 , while the global basis functions associated with shared nodes also have the same shape,
provided the elements are of the same length.
Illustration of the piecewise linear basis functions associated with nodes in element 1
Now there are no internal nodes in the elements so that all basis functions are
associated with nodes at the element boundaries and hence made up of two Lagrange polynomials from
neighboring elements. For example, 1 (x) results from the Lagrange polynomial in element 0 that is 1 at
local node 1 and 0 at local node 0, combined with the Lagrange polynomial in element 1 that is 1 at local
node 0 and 0 at local node 1. The other basis functions are constructed similarly.
Explicit mathematical formulas are needed for
show that
i (x) in
0,
(x x )/(x x ),
i1
i
i1
i (x) =
1 (x xi )/(xi+1 xi ),
0,
x < xi1 ,
xi1 x < xi ,
xi x < xi+1 ,
x xi+1 .
(2)
20/04/2016 10:05
7 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
0,
(x x )/h,
i1
i (x) =
1 (x xi )/h,
0,
j.
x < xi1 ,
xi1 x < xi ,
xi x < xi+1 ,
x xi+1
the
(3)
Illustration of the piecewise cubic basis functions associated with nodes in element 1
We see that all the piecewise linear basis functions have the same hat shape. They are naturally referred to
as hat functions, also called chapeau functions. The piecewise quadratic functions in Figure Illustration of the
piecewise quadratic basis functions associated with nodes in element 1 are seen to be of two types. Rounded
hats associated with internal nodes in the elements and some more sombrero shaped hats associated with
element boundary nodes. Higher-order basis functions also have hat-like shapes, but the functions have
pronounced oscillations in addition, as illustrated in Figure Illustration of the piecewise cubic basis functions
associated with nodes in element 1.
A common terminology is to speak about linear elements as elements with two local nodes associated with
piecewise linear basis functions. Similarly, quadratic elements and cubic elements refer to piecewise quadratic
or cubic functions over elements with three or four local nodes, respectively. Alternative names, frequently
used later, are P1 elements for linear elements, P2 for quadratic elements, and so forth: Pd signifies degree
d of the polynomial basis functions.
20/04/2016 10:05
8 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
The elements in the coefficient matrix and right-hand side are given by the formulas (3.4) and (3.5), but now
the choice of i is i . Consider P1 elements where i (x) piecewise linear. Nodes and elements numbered
consecutively from left to right in a uniformly partitioned mesh imply the nodes
xi = ih,
i = 0, , N,
i = 0, , Ne = N 1 .
We have in this case N elements and N + 1 nodes, and = [x0 , xN ] . The formula for i (x) is given
by (3) and a graphical illustration is provided in Figures Illustration of the piecewise linear basis functions
associated with nodes in element 1 and Illustration of two neighboring linear (hat) functions with general node
numbers. First we clearly see from the figures the very important property i (x)j (x) 0 if and only if
Illustration of the piecewise linear basis functions corresponding to global node 2 and 3
3 (x) = (x x2 )/h,
while 2 (x) has negative slope over [x2 , x3 ] and corresponds to setting
i = 2 in (3),
2 (x) = 1 (x x2 )/h .
We can now easily integrate,
A2,3 = 2 3 dx =
x3
x2
(1
x x2 x x2
h
)
dx = .
h
h
6
A2,2 =
x2
x1
x3
x x1 2
x x2 2
h
(
) dx +
(1
) dx = .
h
h
3
x2
The entry A2,1 has an the integral that is geometrically similar to the situation in Figure Illustration of the
piecewise linear basis functions corresponding to global node 2 and 3, so we get A2,1 = h/6 .
20/04/2016 10:05
9 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
Ai,i1 = i i1 dx
xi1
i i1 dx +
xi2
xi
xi1
i i1 dx +
i =0
xi+1
i i1 dx
xi
i1 =0
xi
x xi
x xi1
h
(
)(1
) dx = .
h
h
6
xi1
i (x)
i1 (x)
The particular formulas for i1 (x) and i (x) on [xi1 , xi ] are found from (3): i is the linear function
with positive slope, corresponding to the interval [xi1 , xi ] in (3), while i1 has a negative slope so the
definition in interval [xi , xi+1 ] in (3) must be used. (The appearance of i in (3) and the integral might be
confusing, as we speak about two different i indices.)
Illustration of two neighboring linear (hat) functions with general node numbers
The first and last row of the coefficient matrix lead to slightly different integrals:
A0,0 =
20
dx =
x1
x0
(1
x x0 2
h
) dx = .
h
3
Similarly, AN,N involves an integral over only one element and equals hence h/3 .
20/04/2016 10:05
10 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
Right-hand side integral with the product of a basis function and the given function to approximate
The general formula for bi , see Figure Right-hand side integral with the product of a basis function and the
given function to approximate, is now easy to set up
bi = i (x)f(x) dx =
xi
xi1
xi+1
x xi1
x xi
f(x) dx +
(1
) f(x) dx .
h
h
xi
We need a specific f(x) function to compute these integrals. With two equal-sized elements in
and f(x) = x(1 x) , one gets
2
h
A = 1
6
0
1
4
1
0
1,
2
(4)
= [0, 1]
2 3h
h2
b=
12 14h .
12
10 17h
h2
,
6
c0 =
c1 = h
5 2
h ,
6
c2 = 2h
23 2
h .
6
Ai,j = i j dx = Ai,j ,
(e)
Ai,j =
(e)
(e)
i j dx .
(5)
(e)
Ai,j 0 if and only if i and j are nodes in element e. Introduce i = q(e, r) as the mapping of local
node number r in element e to the global node number i. This is just a short mathematical notation for the
Now,
20/04/2016 10:05
11 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
expression i=elements[e][r] in a program. Let r and s be the local node numbers corresponding to the
global node numbers i = q(e, r) and j = q(e, s) . With d nodes per element, all the nonzero elements in
(e)
Ai,j
arise from the integrals involving basis functions with indices corresponding to the global node numbers
in element number e :
(e)
r, s = 0, , d .
These contributions can be collected in a (d + 1) (d + 1) matrix known as the element matrix. Let
Id = {0, , d} be the valid indices of r and s . We introduce the notation
~(e)
~(e)
A = {Ar,s },
for the element matrix. For the case d
r, s Id ,
= 2 we have
~(e)
A
~(e)
A0,0
~(e)
=
A1,0
A~(e)
2,0
~(e)
A0,1
~(e)
A1,1
~(e)
A2,1
~(e)
A0,2
~(e) .
A1,2
~(e)
A2,2
~(e)
Given the numbers Ar,s , we should according to (5) add the contributions to the global coefficient matrix by
~(e)
Aq(e,r),q(e,s) := Aq(e,r),q(e,s) + Ar,s ,
r, s Id .
This process of adding in elementwise contributions to the global matrix is called finite element assembly or
simply assembly. Figure Illustration of matrix assembly: regularly numbered P1 elements illustrates how
element matrices for elements with two nodes are added into the global matrix. More specifically, the figure
shows how the element matrix associated with elements 1 and 2 assembled, assuming that global nodes are
numbered from left to right in the domain. With regularly numbered P3 elements, where the element matrices
have size 4 4 , the assembly of elements 1 and 2 are sketched in Figure Illustration of matrix assembly:
regularly numbered P3 elements.
20/04/2016 10:05
12 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
20/04/2016 10:05
13 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
The associated assembly of element matrices 1 and 2 is sketched in Figure Illustration of matrix assembly:
irregularly numbered P1 elements.
These three assembly processes can also be animated.
20/04/2016 10:05
14 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
bi = f(x)i (x) dx = bi ,
(e)
(e)
bi
(e)
f(x)i (x) dx .
(e)
We observe that bi 0 if and only if global node i is a node in element e . With d nodes per element we
(e)
can collect the d + 1 nonzero contributions bi , for i = q(e, r), r Id , in an element vector
~(e)
~(e)
b r = { b r },
r Id .
These contributions are added to the global right-hand side by an assembly process similar to that for the
element matrices:
~(e)
bq(e,r) := bq(e,r) + b r ,
r Id .
~(e)
Ar,s =
(e)
over some element (e) = [xL , xR ] , it is convenient to map the element domain [xL , xR ] to a
standardized reference element domain [1, 1] . (We have now introduced xL and xR as the left and right
boundary points of an arbitrary element. With a natural, regular numbering of nodes and elements from left to
right through the domain, we have xL = xe and xR = xe+1 for P1 elements.)
Let
X [1, 1] be the coordinate in the reference element. A linear or affine mapping from X to x reads
20/04/2016 10:05
15 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
x=
1
1
(xL + xR ) + (xR xL )X .
2
2
(6)
x = xm +
1
hX,
2
(7)
xm = (xL + xR )/2
Integrating on the reference element is a matter of just changing the integration variable from x to X . Let
~(e)
Ar,s =
(e)
dx
~r (X)~s (X)
dX .
dX
1
The stretch factor dx/dX between the x and X coordinates becomes the determinant of the Jacobian
matrix of the mapping between the coordinate systems in 2D and 3D. To obtain a uniform notation for 1D, 2D,
and 3D problems we therefore replace dx/dX by det J already now. In 1D, det J = dx/dX = h/2 .
The integration over the reference element is then written as
~(e)
Ar,s =
1
1
(8)
.
The corresponding formula for the element vector entries becomes
~(e)
br =
(e)
f(x)q(e,r) (x)dx =
1
1
(9)
.
Since we from now on will work in the reference element, we need explicit mathematical formulas for the basis
~ (X). This is a
functions i (x) in the reference element only, i.e., we only need to specify formulas for
r
very convenient simplification compared to specifying piecewise polynomials in the physical domain.
~ (x) functions are simply the Lagrange polynomials defined through the local nodes in the reference
The
r
element. For d = 1 and two nodes per element, we have the linear Lagrange polynomials
Quadratic polynomials, d
1
~0 (X) = (1 X)
2
(10)
1
~1 (X) = (1 + X)
2
(11)
1
~2 (X) = (X + 1)X
2
20/04/2016 10:05
16 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
In general,
d
~r (X) =
s=0,sr
X X(s)
X(r) X(s)
X(0) , , X(d) are the coordinates of the local nodes in the reference element. These are normally
uniformly spaced: X(r) = 1 + 2r/d , r Id .
where
Why reference elements: The great advantage of using reference elements is that the formulas for the
~ (X), are the same for all elements and independent of the element geometry (length
basis functions,
r
and location in the mesh). The geometric information is factored out in the simple mapping formula and
the associated det J quantity, but this information is (here taken as) the same for element types. Also, the
integration domain is the same for all elements.
~(e)
~(e)
f(x) = x(1 x) on = [0, 1] . We have the general expressions (8) and (9) for Ar,s and b r . Writing
these out for the choices (10) and (11), and using that det J = h/2 , we can do the following calculations of
the element matrix entries:
~(e)
A0,0 =
=
1
1
h
~0 (X)~0 (X) dX
2
1
1
1
h
h 1
h
(1 X) (1 X) dX = (1 X )2 dX = ,
2
2
2
8 1
3
~(e)
A1,0 =
1
1
h
~1 (X)~0 (X) dX
2
1
1
1
h
h 1
h
(1 + X) (1 X) dX = (1 X 2 )dX = ,
2
2
2
8 1
6
~(e)
~(e)
A0,1 = A1,0 ,
~(e)
A1,1 =
1
1
(12)
(13)
h
~1 (X)~1 (X) dX
2
1
1
1
h
h 1
h
(1 + X) (1 + X) dX = (1 + X )2 dX =
2
2
2
8 1
3
.
(14)
~(e)
b0 =
1
= (xm +
1
h
f(x(X))~0 (X) dX
2
1
1
1
1
h
hX)(1 (xm + hX)) (1 X) dX
2
2
2
2
(15)
20/04/2016 10:05
17 de 17
http://hplgit.github.io/INF5620/doc/pub/sphinx-fem/._main_fem003.html
1 3 1 2
1 2 1 2
1
h + h xm
h h x m + hx m
24
6
12
2
2
~(e)
b1 =
= (xm +
1
h
f(x(X))~1 (X) dX
2
1
1
1
1
h
hX)(1 (xm + hX)) (1 + X) dX
2
2
2
2
1 3 1 2
1 2 1 2
1
h h xm +
h hxm + hxm .
24
6
12
2
2
sympy
20/04/2016 10:05