Professional Documents
Culture Documents
E LEMENT M ETHOD
G. P. Nikishkov
1 Introduction 7
1.1 What is the finite element method . . . . . . . . . . . . . . . . . 7
1.2 How the FEM works . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Formulation of finite element equations . . . . . . . . . . . . . . 8
1.3.1 Galerkin method . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Variational formulation . . . . . . . . . . . . . . . . . . . 11
4 Finite Elements 29
4.1 Two-dimensional triangular element . . . . . . . . . . . . . . . . 29
4.2 Two-dimensional isoparametric elements . . . . . . . . . . . . . 31
4.2.1 Shape functions . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.2 Strain-displacement matrix . . . . . . . . . . . . . . . . . 32
4.2.3 Element properties . . . . . . . . . . . . . . . . . . . . . 33
4.2.4 Integration in quadrilateral elements . . . . . . . . . . . . 34
4.2.5 Nodal equivalent of the surface load . . . . . . . . . . . . 34
4.2.6 Calculation of strains and stresses . . . . . . . . . . . . . 36
4.3 Three-dimensional isoparametric elements . . . . . . . . . . . . . 37
4.3.1 Shape functions . . . . . . . . . . . . . . . . . . . . . . . 37
4.3.2 Strain-displacement matrix . . . . . . . . . . . . . . . . . 39
3
4 CONTENTS
5 Discretization 47
5.1 Discrete model of the problem . . . . . . . . . . . . . . . . . . . 47
5.2 Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2.1 Mesh generators . . . . . . . . . . . . . . . . . . . . . . 48
5.2.2 Mapping technique . . . . . . . . . . . . . . . . . . . . . 49
5.2.3 Delaunay triangulation . . . . . . . . . . . . . . . . . . . 50
7 Nonlinear Problems 63
7.1 Physical and geometrical nonlinearity . . . . . . . . . . . . . . . 63
7.2 Constitutive relations for elastic-plastic material . . . . . . . . . . 63
7.3 Computing finite stress increments . . . . . . . . . . . . . . . . . 66
7.3.1 Determining elastic fraction of stress increment . . . . . . 66
7.3.2 Subincrementation for computing stress increment . . . . 67
7.3.3 Midpoint integration of constitutive relations . . . . . . . 68
7.4 Nonlinear solution procedure . . . . . . . . . . . . . . . . . . . . 68
7.4.1 Newton-Raphson method . . . . . . . . . . . . . . . . . . 69
7.4.2 Initial stress method . . . . . . . . . . . . . . . . . . . . 70
7.4.3 Convergence criteria . . . . . . . . . . . . . . . . . . . . 72
CONTENTS 5
8 Visualization 73
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.2 Overview of algorithm . . . . . . . . . . . . . . . . . . . . . . . 74
8.3 Geometry and results data . . . . . . . . . . . . . . . . . . . . . 74
8.3.1 Geometry relations for 20-node element . . . . . . . . . . 75
8.3.2 Surface of the finite element model . . . . . . . . . . . . 77
8.3.3 Continuous field of secondary results . . . . . . . . . . . 77
8.4 Subdivision of quadratic surfaces . . . . . . . . . . . . . . . . . . 78
8.4.1 Curvature-based subdivision . . . . . . . . . . . . . . . . 78
8.4.2 Results-based subdivision . . . . . . . . . . . . . . . . . 80
8.4.3 Delaunay triangulation . . . . . . . . . . . . . . . . . . . 81
8.5 Using Java3D API for visualization . . . . . . . . . . . . . . . . 82
6 CONTENTS
Chapter 1
Introduction
7
8 CHAPTER 1. INTRODUCTION
d2 u
a + b = 0, 0 ≤ x ≤ 2L (1.1)
dx2
1.3. FORMULATION OF FINITE ELEMENT EQUATIONS 9
u1 u2
1 2 3
x
x
0 L 2L x1 x2
Figure 1.1: Two one-dimensional linear elements and function interpolation inside
element.
u|x=0 = 0
du (1.2)
a |x=2L = R
dx
where u is an unknown solution. We are going to solve the problem using two
linear one-dimensional finite elements as shown in Fig. 1.1.
Fist, consider a finite element presented on the right of Figure. The element
has two nodes and approximation of the function u(x) can be done as follows:
u = N1 u1 + N2 u2 = [N ]{u}
[N ] = [N1 N2 ] (1.3)
{u} = {u1 u2 }
d2
a [N ]{u} + b = ψ (1.5)
dx2
where ψ is a nonzero residual because of approximate representation of a function
inside a finite element. The Galerkin method provides residual minimization by
10 CHAPTER 1. INTRODUCTION
multiplying terms of the above equation by shape functions, integrating over the
element and equating to zero:
x2 x2
T d2
[N ] a 2 [N ]{u}dx+ [N ]T bdx = 0 (1.6)
x1 dx x1
Use of integration by parts leads to the following discrete form of the differential
equation for the finite element:
x2 x2
dN T dN
a dx{u} − [N ]T bdx
x1 dx dx x1 (1.7)
0 du 1 du
− a |x=x2 + a |x=x1 = 0
1 dx 0 dx
[k]{u} = {f }
x2
dN T dN
[k] = a dx
x1 dx dx (1.8)
x2 0 du 1 du
{f } = [N ]T bdx + a |x=x2 − a |x=x1
x1 1 dx 0 dx
In solid mechanics [k] is called stiffness matrix and {f } is called load vector. In
the considered simple case for two finite elements of length L stiffness matrices
and the load vectors can be easily calculated:
a 1 −1
[k1 ] = [k2 ] =
L −1 1
(1.9)
bL 1 bL 1 0
{f1 } = , {f2 } = +
2 1 2 1 R
The above relations provide finite element equations for the two separate finite
elements. A global equation system for the domain with 2 elements and 3 nodes
can be obtained by an assembly of element equations. In our simple case it is
clear that elements interact with each other at the node with global number 2. The
assembled global equation system is:
⎡ ⎤⎧ ⎫ ⎧ ⎫ ⎧ ⎫
1 −1 0 ⎪⎨ u1 ⎪
⎬ ⎪ 1 ⎪ ⎪ 0 ⎪
a⎢ ⎥ bL ⎨ ⎬ ⎨ ⎬
⎣ −1 2 −1 ⎦ u2 = 2 + 0 (1.10)
⎪ ⎪ ⎪ ⎪ ⎪ ⎪
1 ⎩ u3 ⎭
2 ⎩
1 ⎭ ⎩ R ⎭
L
0 −1
1.3. FORMULATION OF FINITE ELEMENT EQUATIONS 11
4
u
3
Exact
2
1
FEM x
0
0.0 0.5 1.0 1.5 2.0
Nodal values ui are obtained as results of solution of linear algebraic equation sys-
tem. The value of u at any point inside a finite element can be calculated using the
shape functions. The finite element solution of the differential equation is shown
in Fig. 1.2 for a = 1, b = 1, L = 1 and R = 1.
Exact solution is a quadratic function. The finite element solution with the use
of the simplest element is piece-wise linear. More precise finite element solution
can be obtained increasing the number of simple elements or with the use of el-
ements with more complicated shape functions. It is worth noting that at nodes
the finite element method provides exact values of u (just for this particular prob-
lem). Finite elements with linear shape functions produce exact nodal values if the
sought solution is quadratic. Quadratic elements give exact nodal values for the
cubic solution etc.
d2 u
a + b = 0, 0 ≤ x ≤ 2L
dx2
u|x=0 = 0 (1.12)
du
a |x=2L = R
dx
12 CHAPTER 1. INTRODUCTION
b R
1 2 3
x
0 L 2L
Figure 1.3: Tension of the one dimensional bar subjected to a distributed load and
a concentrated load.
Using representation of {u} with shape functions (1.3)-(1.4) we can write the value
of potential energy for the second finite element as:
x2 T
1 dN
dN
Πe = a{u} T
{u}dx
x 2 dx
dx
x21 (1.14)
0
− {u} [N ] bdx − {u}
T T T
x1 R
∂Π ∂Π
δΠ = δu1 + ... + δun = 0 (1.15)
∂u1 ∂un
which is equivalent to
∂Π
= 0 , i = 1...n (1.16)
∂ui
1.3. FORMULATION OF FINITE ELEMENT EQUATIONS 13
Example. Obtain shape functions for the one-dimensional quadratic element with
three nodes. Use local coordinate system −1 ≤ ξ ≤ 1.
1 2 3
-1 0 1
Solution. With shape functions, any field inside element is presented as:
u(ξ) = Ni ui , i = 1, 2, 3
u(−1) = u1
u(0) = u2
u(1) = u3
Since the element has three nodes the shape functions can be quadratic polynomials
(with three coefficients). The shape function N1 can be written as:
N1 = α1 + α2 ξ + α3 ξ 2
N1 (−1) = α1 − α2 + α3 = 1
N1 (0) = α1 = 0
N1 (1) = α1 + α2 + α3 = 0
Similarly it is possible to obtain that the shape functions N2 and N3 are equal to:
N2 = 1 − ξ 2
1
N3 = ξ(1 + ξ)
2
Chapter 2
Here qx , qy and qz are components of heat flow through the unit area; Q =
Q(x, y, z, t) is the inner heat generation rate per unit volume; ρ is material den-
sity; c is heat capacity; T is temperature and t is time. According to the Fourier’s
law the components of heat flow can be expressed as follows:
∂T
qx = −k
∂x
∂T
qy = −k (2.2)
∂y
∂T
qz = −k
∂z
where k is the thermal conductivity coefficient of the media. Substitution of Fourier’s
relations gives the following basic heat transfer equation:
∂ ∂T ∂ ∂T ∂ ∂T ∂T
k + k + k + Q = ρc (2.3)
∂x ∂x ∂y ∂y ∂z ∂z ∂t
15
16 CHAPTER 2. FINITE ELEMENT EQUATIONS FOR HEAT TRANSFER
1. Specified temperature
Ts = T (x, y, z, t) on S1
qx nx + qy ny + qz nz = −qs on S2
qx nx + qy ny + qz nz = h(Ts − Te ) on S3
4. Radiation
qx nx + qy ny + qz nz = σεTs4 − αqr on S4
∂qx ∂qy ∂qz ∂T
+ + − Q + ρc Ni dV = 0 (2.7)
∂x ∂y ∂z ∂t
V
Applying the divergence theorem to the first three terms, we arrive to the relations:
∂T ∂Ni ∂Ni ∂Ni
ρc Ni dV − {q}dV
∂t ∂x ∂y ∂z
V V
= QNi dV − {q}T {n}Ni dS (2.8)
V S
{q}T = [ qx qy qz ]
{n}T = [ nx ny nz ]
where {n} is an outer normal to the surface of the body. After insertion of boundary
conditions into the above equation, the discretized equations are as follows:
∂T ∂Ni ∂Ni ∂Ni
ρc Ni dV − {q}dV
∂t ∂x ∂y ∂z
V V
= QNi dV − {q}T {n}Ni dS (2.9)
V S1
+ qs Ni dS − h(T − Te )Ni dS − (σεT 4 − αqr )Ni dS
S2 S3 S4
The discretized finite element equations for heat transfer problems have the follow-
ing finite form:
[Rh ] = hTe [N ]T dS
3
S
[Rr ] = αqr [N ]T dS
S4
{u} = {u v w} (3.1)
Six different strain components can be placed in the strain vector {ε}:
For small strains the relationship between strains and displacements is:
21
22 CHAPTER 3. FEM FOR SOLID MECHANICS PROBLEMS
Six different stress components are formed the stress vector {σ}:
which are related to strains for elastic body by the Hook’s law:
Here {εe } is the elastic part of strains; {εt } is the thermal part of strains; α is the
coefficient of thermal expansion; T is temperature. The elasticity matrix [E] has
the following appearance:
⎡ ⎤
λ + 2μ λ λ 0 0 0
⎢ λ λ + 2μ λ 0 0 0 ⎥
⎢ ⎥
⎢ ⎥
⎢ λ λ λ + 2μ 0 0 0 ⎥
[E] = ⎢ ⎥ (3.7)
⎢ 0 0 0 μ 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 μ 0 ⎦
0 0 0 0 0 μ
where λ and μ are elastic Lame constants which can be expressed through the
elasticity modulus E and Poisson’s ratio ν:
νE
λ=
(1 + ν)(1 − 2ν)
E (3.8)
μ=
2(1 + ν)
The purpose of finite element solution of elastic problem is to find such displace-
ment field which provides minimum to the functional of total potential energy Π:
1 e T
Π= {ε } {σ}dV − {u}T {pV }dV − {u}T {pS }dS (3.9)
V 2 V S
3.2. FINITE ELEMENT EQUATIONS 23
Here {pV } = {pVx pVy pVz } is the vector of body force and {pS } = {pSx pSy pSz }
is the vector of surface force. Prescribed displacements are specified on the part of
body surface where surface forces are absent.
Displacement boundary conditions are not present in the functional of Π. Be-
cause of these, displacement boundary conditions should be implemented after
assembly of finite element equations.
Displacements at some point inside a finite element {u} can be determined with
the use of nodal displacements {q} and shape functions Ni :
u = Ni ui
v = Ni vi (3.11)
w = Ni wi
These relations can be rewritten in a matrix form as follows:
{u} = ⎡[N ]{q} ⎤
N1 0 0 N2 ...
⎢ ⎥ (3.12)
[N ] = ⎣ 0 N1 0 0 ... ⎦
0 0 N1 0 ...
{ε} = [B]{q}
(3.13)
[B] = [D][N ] = [B1 B2 B3 ...]
Now using relations for stresses and strains we are able to express the total potential
energy through nodal displacements:
1
Π= ([B]{q} − {εt })T [E]([B]{q} − {εt })dV
V 2 (3.15)
− ([N ]{q}) {p }dV − ([N ]{q})T {pS }dS
T V
V S
[k]{q} = {f }
{f } = {p} + {h}
[k] = [B]T [E][B]dV (3.18)
V
{p} = [N ]T {pV }dV + [N ]T {pS }dS
V S
{h} = [B]T [E]{εt }dV
V
Here [k] is the element stiffness matrix; {f } is the load vector; {p} is the vector
of actual forces and {h} is the thermal vector which represents fictitious forces for
modeling thermal expansion.
[K]{Q} = {F } (3.19)
3.3. ASSEMBLY OF THE GLOBAL EQUATION SYSTEM 25
Here [ki ], [qi ] and [fi ] are the stiffness matrix, the displacement vector and the
load vector of the ith finite element; [K], {Q} and {F } are global stiffness matrix,
displacement vector and load vector.
In order to derive an assembly algorithm let us present the total potential energy
for the body as a sum of element potential energies πi :
1
Π= πi = {qi }T [ki ]{qi } − {qi }T {fi } + Ei0 (3.21)
2
where Ei0 is the fraction of potential energy related to free thermal expansion:
1 t T
Ei0 = {ε } [E]{εt }dV (3.22)
Vi 2
Let us introduce the following vectors and a matrix where element vectors and
matrices are simply placed:
{Qd } = [A]{Q}
(3.25)
{Fd } = [A]{F }
The total potential energy for the body can be rewritten in the following form:
1
Π = {Qd }T [Kd ]{Qd } − {Qd }T {Fd } + Ei0
2 (3.26)
1
= {Q}T [A]T [Kd ][A]{Q} − {Q}T [A]T {Fd } + Ei0
2
Using the condition of minimum of the total potential energy
∂Π
=0 (3.27)
∂Q
26 CHAPTER 3. FEM FOR SOLID MECHANICS PROBLEMS
The last equation shows that algorithms of assembly the global stiffness matrix and
the global load vector are:
Here [A] is the matrix providing transformation from global to local enumeration.
Fraction of nonzero (unit) entries in the matrix [A] is very small. Because of this
the matrix [A] is never used explicitly in actual computer codes.
Example. Write down a matrix [A], which relates local (element) and global
(domain) node numbers for the following finite element mesh:
7 8
Node order
3 for an element
4 5 6 4 3
1 2
1 2 3 1 2
Solution. To make the matrix representation compact let us assume that each
node has one degree of freedom (note that in three-dimensional solid mechanics
problem there are three degrees of freedom at each node). The matrix [A] relates
element and global nodal values in the following way:
{Qd } = [A]{Q}
3.3. ASSEMBLY OF THE GLOBAL EQUATION SYSTEM 27
where {Q} is a global vector of nodal values and {Qd } is vector containing element
vectors. The explicit rewriting of the above relation looks as follows:
⎧ ⎧ ⎫ ⎫ ⎡ ⎤
⎪
⎪ ⎪
⎪ Q1 ⎪⎪ ⎪
⎪ 1 0 0 0 0 0 0 0
⎪
⎪ ⎪
⎨ Q ⎪ ⎬ ⎪
⎪⎢ ⎥
⎪
⎪ 2 ⎪
⎪⎢ 0 1 0 0 0 0 0 0 ⎥⎧
⎪
⎪ ⎪
⎪⎢ ⎥ ⎫
⎪
⎪ ⎪ Q ⎪ ⎪
⎪⎢ 0 0 0 0 1 0 0 0 ⎥⎪ Q1 ⎪
⎪
⎪ ⎪
⎪ 5 ⎪
⎪ ⎪ ⎥⎪ ⎪
⎪
⎪ ⎩ ⎭ ⎪
⎪
⎪
⎢
⎢
⎪
⎪
⎥⎪
⎪
⎪
⎪
⎪
⎪ ⎧ Q 4 ⎫ ⎪
⎪⎢ 0 0 0 1 0 0 0 0 ⎥⎪
⎪ Q2 ⎪
⎪
⎪
⎪ ⎪
⎪⎢ ⎪
⎥⎪ ⎪
⎪
⎪
⎪ ⎪
⎪ Q2 ⎪⎪ ⎪
⎪⎢ 0 1 0 0 0 0 0 0 ⎥⎪
⎪ Q3 ⎪
⎪
⎪
⎨ ⎪
⎨ Q ⎪ ⎬ ⎪
⎬⎢ ⎥⎪
⎨ ⎪
⎬
3 ⎢ 0 0 1 0 0 0 0 0 ⎥ Q4
=⎢ ⎥
⎪
⎪ ⎪
⎪ Q ⎪ ⎪
⎪ ⎪ ⎢ 0 0 0 0 0 1 0 0 ⎥⎪ Q5 ⎪
⎪
⎪ ⎪
⎩
6
⎭ ⎪
⎪ ⎪ ⎢ ⎥⎪
⎪ ⎪
⎪
⎪
⎪ ⎪
⎪ ⎢ ⎥⎪
⎪ ⎪
⎪
⎪
⎪ ⎧ Q 5 ⎪
⎫ ⎪ ⎢ 0 0 0 0 1 0 0 0 ⎥⎪
⎪ Q6 ⎪
⎪
⎪
⎪ ⎪
⎪ ⎢ ⎥⎪
⎪ ⎪
⎪
⎪
⎪
⎪
⎪ Q5 ⎪⎪ ⎪
⎪ ⎢ 0 0 0 0 1 0 0 0 ⎥⎪
⎪ Q7 ⎪
⎪
⎪
⎪
⎪
⎨ ⎪
⎬ ⎪
⎪ ⎢ ⎥⎪
⎩ ⎪
⎭
⎪
⎪ Q 6 ⎪
⎪ ⎢ 0 0 0 0 0 1 0 0 ⎥ Q8
⎪
⎪ ⎪
⎪ ⎢ ⎥
⎪
⎪ ⎪
⎪ Q8 ⎪⎪ ⎪
⎪ ⎣ 0 0 0 0 0 0 0 1 ⎦
⎪ ⎪
⎩ ⎩ ⎪ ⎪
⎭ ⎭
Q7 0 0 0 0 0 0 1 0
28 CHAPTER 3. FEM FOR SOLID MECHANICS PROBLEMS
Chapter 4
Finite Elements
u(x, y) = N1 u1 + N2 u2 + N3 u3
v(x, y) = N1 v1 + N2 v2 + N3 v3 (4.1)
Ni = αi + βi x + γi y
Shape functions Ni (x, y) can be determined from the following equation system:
u(xi , yi ) = ui , i = 1, 2, 3 (4.2)
y 3
v2
1 2
u2
x
29
30 CHAPTER 4. FINITE ELEMENTS
1
Ni = (ai + bi x + ci y)
2Δ
ai = xi+1 yi+2 − xi+2 yi+1
bi = yi+1 − yi+2 (4.3)
ci = xi+2 − xi+1
1
Δ = (x2 y3 + x3 y1 + x1 y2 − x2 y1 − x3 y2 − x1 y3 )
2
where Δ is the element area. The matrix [B] for interpolating strains using nodal
displacements is equal to:
⎡ ⎤
b 0 b2 0 b3 0
1 ⎢ 1 ⎥
[B] = ⎣ 0 c1 0 c2 0 c3 ⎦ (4.4)
2Δ
c1 b1 c2 b2 c3 b3
The elasticity matrix [E] has the following appearance for plane problems:
⎡ ⎤
λ + 2μ λ 0
⎢ ⎥
[E] = ⎣ λ λ + 2μ 0 ⎦ (4.5)
0 0 μ
νE
λ= for plane strain
(1 + ν)(1 − 2ν)
νE
λ= for plane stress (4.6)
1 − ν2
E
μ=
2(1 + ν)
Here it was taken into account that both matrices [B] and [E] do not depend on
coordinates. It was assumed that the element has unit thickness. Since the matrix
[B] is constant inside the element the strains and stresses are also constant inside
the triangular element.
4.2. TWO-DIMENSIONAL ISOPARAMETRIC ELEMENTS 31
6
4 7 5 1
3
8 4 -1 1
2
1 3
1 2
-1
Linear element Quadratic element
Figure 4.2: Linear and quadratic finite elements and their representation in the local
coordinate system.
where u, v are displacement components at point with local coordinates (ξ, η);
ui , vi are displacement values at the nodes of the finite element; x, y are point
coordinates and xi , yi are coordinates of element nodes. Matrix form of the above
relations is as follows:
{u} = [N ]{q}
{u} = {u v} (4.9)
{q} = {u1 v1 u2 v2 ...}
{x} = [N ]{xe }
{x} = {x y} (4.10)
{xe } = {x1 y1 x2 y2 ...}
32 CHAPTER 4. FINITE ELEMENTS
Derivatives can be easily converted from one coordinate system to the other by
means of the chain rule of partial differentiation:
⎧ ⎫ ⎧ ⎫⎧ ⎫ ⎧ ⎫
⎪
⎪ ∂Ni ⎪
⎪ ⎪
⎪ ∂x ∂y ⎪
⎪⎪ ∂Ni ⎪ ⎪ ∂Ni ⎪
⎨ ⎬ ⎨ ⎬⎪
⎨ ⎪
⎬ ⎪
⎨ ⎪
⎬
∂ξ = ∂ξ ∂ξ ∂x ∂x
⎪ ∂N ⎪ ⎪ ∂x ∂y ⎪⎪ ∂Ni ⎪ = [J]⎪ ∂Ni ⎪ (4.16)
⎪
⎩
i ⎪
⎭ ⎪ ⎩ ⎭⎪
⎪⎩ ⎪
⎭ ⎪
⎩ ⎪
⎭
∂η ∂η ∂η ∂y ∂y
where [J] is the Jacobian matrix. The derivatives in respect to the global coordi-
nates are computed with the use of inverse of the Jacobian matrix:
⎧ ⎫ ⎧ ⎫
⎪
⎪ ∂Ni ⎪
⎪ ⎪
⎪
∂Ni ⎪
⎪
⎨ ⎬ ⎨ ⎬
∂x ∂ξ
= [J]−1 ∂N (4.17)
⎪
⎪
∂Ni ⎪
⎪ ⎪
⎪ i ⎪
⎪
⎩ ⎭ ⎩ ⎭
∂y ∂η
The components of the Jacobian matrix are calculated using derivatives of shape
functions Ni in respect to the local coordinates ξ, η and global coordinates of
element nodes xi , yi :
∂x ∂Ni ∂x ∂Ni
= xi , = xi
∂ξ ∂ξ ∂η ∂η (4.18)
∂y ∂Ni ∂y ∂Ni
= yi , = yi
∂ξ ∂ξ ∂η ∂η
The determinant of the Jacobian matrix |J| is used for the transformation of inte-
grals from the global coordinate system to the local coordinate system:
dV = dxdy = |J|dξdη (4.19)
where ξi , ηj are abscissae and wi are weighting coefficients of the Gauss integra-
tion rule. Abscissae and weights of Gauss quadrature for n = 1,2,3 are given in
Table:
Here s is a global coordinate along the element side and ξ is a local coordinate
along the element side. If the distributed load load is applied along the normal to
the element side as shown in Fig. 4.3 then the nodal equivalent of such load is:
⎧ ⎫ ⎧ ⎫
⎪dy ⎪ ⎪
⎪
dy ⎪
⎪
⎨ ⎬ ds 1 ⎨ ⎬
{p} = [N ]T p ds dξ = [N ]T p dξ dξ (4.26)
⎪
⎩ − dx ⎪
⎭ dξ ⎪
⎪ dx ⎪
⎪
S −1 ⎩ − ⎭
ds dξ
4.2. TWO-DIMENSIONAL ISOPARAMETRIC ELEMENTS 35
d
ds
Px
Py P
Figure 4.3: Distributed normal load on a side of a quadratic element.
1 2 3
-1 0 1
l=1 x
The example shows that physical approach cannot be used for the estimation
of nodal equivalents of a distributed load. It works for linear elements; however, it
does not work for more complicated elements.
4 h 3
(4) (3)
x
(1) (2)
1 2
Figure 4.4: Numbering of integration points and vertices for the 8-node isopara-
metric element.
where f(m) are known function values at reduces integration points; fi are function
values at vertex nodes and Li(m) is the symmetric extrapolation matrix:
⎡ ⎤
A B C B
⎢ A B C ⎥
⎢ ⎥
Li(m) = ⎢ ⎥
⎣ A B ⎦
√ A
3 (4.31)
A=1+
2
1
B=−
2 √
3
C =1−
2
{u} = [N ]{q}
{u} = {u v w} (4.32)
{q} = {u1 v1 w1 u2 v2 w2 ...}
38 CHAPTER 4. FINITE ELEMENTS
8 19 18
7 20 17
5
6 13 14 15 16
11
9
12
10
4 8 7 6
3
5
1 1 2 4
2 3
Linear element Quadratic element
Figure 4.5: Linear and quadratic three-dimensional finite elements and their repre-
sentation in the local coordinate system.
{x} = [N ]{xe }
{x} = {x y z} (4.33)
{xe } = {x1 y1 z1 x2 y2 z2 ...}
Here u, v, w are displacements at point with local coordinates ξ, η, ζ; ui , vi , wi
are displacement values at nodes; x, y, z are point coordinates and xi , yi , zi are
coordinates of nodes. The matrix of shape functions is:
⎡ ⎤
N1 0 0 N2 0 0 ...
⎢ ⎥
[N ] = ⎣ 0 N1 0 0 N2 0 ... ⎦ (4.34)
0 0 N1 0 0 N2 ...
Shape functions of the linear element are equal to:
1
Ni = (1 + ξ0 )(1 + η0 )(1 + ζ0 )
8 (4.35)
ξ0 = ξξi , η0 = ηηi , ζ0 = ζζi
For the quadratic element with 20 nodes the shape functions can be written in the
following form:
1
Ni = (1 + ξ0 )(1 + η0 )(1 + ζ0 )(ξ0 + η0 + ζ0 − 2) vertices
8
1
Ni = (1 − ξ 2 )(1 + η0 )(1 + ζ0 ) , i = 2, 6, 14, 18
4 (4.36)
1
Ni = (1 − η 2 )(1 + ξ0 )(1 + ζ0 ) , i = 4, 8, 16, 20
4
1
Ni = (1 − ζ 2 )(1 + ξ0 )(1 + η0 ) , i = 9, 10, 11, 12
4
In the above relations ξi , ηi , ζi are values of local coordinates ξ, η, ζ at nodes.
4.3. THREE-DIMENSIONAL ISOPARAMETRIC ELEMENTS 39
[k]{q} = {f }
(4.44)
{f } = {p} + {h}
⎡ ⎤
λ + 2μ λ λ 0 0 0
⎢ λ λ + 2μ λ 0 0 0 ⎥
⎢ ⎥
⎢ ⎥
⎢ λ λ λ + 2μ 0 0 0 ⎥
[E] = ⎢ ⎥ (4.48)
⎢ 0 0 0 μ 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 μ 0 ⎦
0 0 0 0 0 μ
where λ and μ are elastic Lame constants which can be expressed through the
elasticity modulus E and Poisson’s ratio ν:
νE
λ=
(1 + ν)(1 − 2ν)
E (4.49)
μ=
2(1 + ν)
4.3. THREE-DIMENSIONAL ISOPARAMETRIC ELEMENTS 41
Here m, n are local node numbers; i, j are indices related to coordinate axes (x1 ,
x2 , x3 ). Cyclic rule is employed in the above equation if coordinate indices become
greater than 3.
∂x ∂Nm ∂x ∂Nm
= xm , = xm , ... (4.54)
∂ξ ∂ξ ∂η ∂η
The normal vector g is equal to the vector product of the vectors eξ and eη :
∂y ∂z ∂z ∂y
gx = −
∂ξ ∂η ∂ξ ∂η
∂z ∂x ∂x ∂z
gy = − (4.56)
∂ξ ∂η ∂ξ ∂η
∂x ∂y ∂y ∂x
gz = −
∂ξ ∂η ∂ξ ∂η
Since integration of the surface load is performed in the local coordinate system
ξ, η, the Jacobian of transformation between physical surface coordinate and local
coordinates should be determined:
åh h
x
åx
Figure 4.6: Determination of a normal vector ḡ on the curved face of the finite
element.
The nodal equivalent for the surface load applied to a finite element face is calcu-
lated as follows:
1 1
[p] = [N (ξ, η)]T {pS (ξ, η)} |J(ξ, η)|dξdη. (4.58)
−1 −1
In the case of the surface load directed along the surface normal, the compo-
nents of unit normal vector (normalized vector g ) are used to produce components
of the surface load at integration points.
8 7
5 6
(8) (7)
(5) (6)
(4) (3)
(1) (2)
4 3
1 2
Figure 4.7: Numbering of integration points and vertices for the 20-node isopara-
metric element.
It should be noted that displacement gradients (and hence strains and stresses) have
quite difference precision at different point inside finite elements. The highest pre-
cision for displacement gradients are at the geometric center for the linear element
and at reduced integration points 2 × 2 × 2 for the quadratic hexagonal element.
where f(m) are known function values at reduces integration points; fi are function
4.3. THREE-DIMENSIONAL ISOPARAMETRIC ELEMENTS 45
Discretization
2. Material properties
Elasticity modulus = 2.0e+5 MPa
Poisson’s ratio = 0.3
47
48 CHAPTER 5. DISCRETIZATION
y 2 4 6 0.5
1
1 2
1 3 5 0.5
0
x
0 1 2
1) 0 0 2) 0 1 3) 1 0 4) 1 1 5) 2 0 6) 2 1
While for simple example like the demonstrated above the finite element model
can be coded by hand, it is not practical for real-life models. Various automatic
mesh generators are used for creating finite element models for complex shapes.
y
h
E1 6 7
8 x
1 2 9
3 10
4 Dh
E2 5
x Dx
Block mesh generators require some initial form of gross partitioning. The
solution domain is partitioned in some relatively small number of blocks. Each
block should have some standard form. The mesh inside block is usually generated
by mapping technique.
Triangulators are typically generate irregular mesh inside arbitrary domains.
Voronoi polygons and Delaunay triangulation are widely used to generate mesh.
Later triangular mesh can be transformed to the mesh consisting of quadrilateral
elements. Delaunay triangulation can be generalized for three-dimensional do-
mains.
Δξ = 2/nξ Δη = 2/nη
ξ = −1 + Δξ(C − 1)
η = −1 + Δη(R − 1)
x = Nk (ξ, η)xk
y = Nk (ξ, η)yk
i1 = (R − 1)(nξ + 1) + C
i2 = i1 + 1
i3 = R(nξ + 1) + C + 1
i4 = i3 − 1
Shifting of midside nodes closer to some corner of the domain helps to refine (make
smaller elements) mesh near this corner. If refinement is done on the element side
which is parallel to the local axis ξ and the size of the smallest element near the
corner node is Δl then the midside node should be moved to the position:
lm 1 + Δl 2
l n ξ − nξ
α= = ! "
l 4 1 − n1ξ
Here [A] is the matrix providing correspondence between global and local numbers
of nodes (or degrees of freedom), {Q} is the global vector and {Qd } is the vector
composed of the element vectors
For matrices the disassembly operation is not necessary for the finite element pro-
cedure implementation.
Assembly is the operation of joining element vectors (matrices) in a global
vector (matrix). For vectors the assembly operation is given by the relation:
Here [K] is the global matrix and [Kd ] is the following matrix consisting of the
element matrices:
⎡ ⎤
[k1 ] 0 0
⎢ ⎥
[Kd ] = ⎣ 0 [k2 ] 0 ⎦ (6.5)
0 0 ...
53
54 CHAPTER 6. ASSEMBLY AND SOLUTION
Fraction of nonzero (unit) entries in the matrix [A] is very small. Because of this
the matrix [A] is never used explicitly in actual computer codes.
6.3 Assembly
6.3.1 Assembly algorithm for vectors
Instead of matrix [A], assembly procedures are usually based on direct summation
with the use of the element connectivity array.
Suppose that we need to assemble global load vector F using element load
vectors f and connectivity array C. A pseudocode of assembly algorithm is as
6.3. ASSEMBLY 55
follows:
Assembly of the global vector
n = number of degrees of freedom per element
N = total number of degrees of freedom
E = number of elements
C[E, n] = connectivity array
f [n] = element load vector
F [N ] = global load vector
do i = 1, N
F [i] = 0
end do
do e = 1, E
generate f
do i = 1, n
F [C[e, i]] = F [C[e, i]] + f [i]
end do
end do
Element load vectors are generated when they are necessary for assembly. It can
be seen that connectivity entry C[e, i] simply provides address in the global vector
where the ith entry of the load vector for element e goes. We assume that connec-
tivity array is written in terms of degrees of freedom. In actual codes the connec-
tivity array contains node numbers which are transformed to degrees of freedom
for the current assembled element.
K[i, j] = 0
end do
end do
do e = 1, E
generate k
do i = 1, n
do j = 1, n
K[C[e, i], C[e, j]] = K[C[e, i], C[e, j]] + k[i, j]
end do
end do
end do
Here for simplicity, element matrices are assembled fully in the full square global
matrix. Since the global stiffness matrix is symmetric and sparse, these facts are
used to economize space and time in actual finite element codes.
Qm = d (6.6)
to the global equation system. Two methods can be used for the specification of
the displacement boundary condition.
j
1 2 4
3 5 9
6 7 10
i 8 11 13 16
12 14 17
15 18 20
19 21
22 23
24
nonzero element and ends at the diagonal element. The matrix is represented by
two arrays:
a[pcol[N + 1]] array of doubles containing matrix elements
pcol[N + 1] integer pointer array for columns.
The ith element of pcol contains the address of the first column element minus one.
The length of the ith column is given by pcol[i + 1] − pcol[i]. The length of the
array a is equal to pcol[N + 1] (assuming that array indices begin from 1).
For example, for the matrix shown above, array pcol has the following contents:
pcol = {0, 1, 3, 6, 8, 12, 15, 19, 22, 24}
It should be noted that proper node ordering can decrease the matrix profile sig-
nificantly. Usually node ordering algorithms are based on some heuristic methods
because full ordering problem with seeking global minimum is too time consum-
ing.
We are going to present algorithms in full matrix notation aij . Then, it is nec-
essary to have relations between two-index notation for the global stiffness matrix
aij and array a used in FORTRAN or C codes. The location of the first nonzero
element in the ith column of the matrix a is given by the following function:
The following correspondence relations can be easily obtained for a transition from
two-index notation to FORTRAN/C notation for a one-dimensional array a:
Cdivt(j) =
do i = F N (j)), j − 1
ti = Aij /Aii
end do
Cmod(j, i) =
do k = max(F N (i), F N (j)), j − 1
Aji = Aji − tk Aki
end do
Cdiv(j) =
do i = F N (j)), j − 1
Aij / = Aii
end do
Forward solution with triangular matrix and back substitution are given by the
pseudo-code:
Forward reduction and back substitution
do j = 2, N
60 CHAPTER 6. ASSEMBLY AND SOLUTION
do i = F N (j), j − 1
bj = bj − Aij ∗ bi
end do
end do
do j = 1, N
bj = bj /Ajj
end do
do j = N, 1, −1
do i = F N (j), j − 1
bi = bi − Aij ∗ bj
end do
end do
Bdivt(k, d) =
do j = k, k + d − 1
do i = F N (k)), j − 1
tij = Aij /Aii
end do
do i = j, k + d − 1
do l = max(F N (j), F N (i)), j − 1
6.5. SOLUTION OF FINITE ELEMENT EQUATIONS 61
BBmod(j, i, d = 2) =
do k = max(F N (j), F N (i)), j − 1
Aji = Aji − tkj Aki
Aj+1i = Aj+1i − tkj+1 Aki
Aji+1 = Aji+1 − tkj Aki+1
Aj+1i+1 = Aj+1i+1 − tkj+1 Aki+1
end do
if j >= F N (j)then
Aj+1i = Aj+1i − tjj+1 Aji
Aj+1i+1 = Aj+1i+1 − tjj+1 Aji+1
end if
contains only diagonal entries of the matrix [A]. Typical algorithm of PCG method
can be presented as the following sequence of computations:
PCG algorithm
Compute [M ]
{x0 } = 0
{r0 } = {b}
do i = 0, 1...
{wi } = [M ]−1 {ri }
γi = {ri }T {wi }
if i = 0 {pi } = {wi }
else {pi } = {wi } + (γi /γi−1 ){pi−1 }
{wi } = [A]{pi }
βi = {pi }T {wi }
{xi } = {xi−1 } + (γi /βi ){pi }
{ri } = {ri−1 } − (γi /βi ){pi }
if γi /γ0 < ε exit
end do
In the above PCG algorithm, matrix [A] is not changed during computations. This
means that no additional fill arise in the solution process. Because of this, the
sparse row-wise format is an efficient storage scheme for PCG iterative method. In
this scheme, the values of nonzero entries of matrix [A] are stored by rows along
with their corresponding column indices; additional array points to the beginning
of each row. Thus the matrix in the sparse row-wise format is represented by the
following three arrays:
A[pcol[N + 1]] = array containing nonzero entries of the matrix;
col[pcol[N + 1]] = column numbers for nonzero entries;
pcol[N + 1] = pointers to the beginning of each row.
The following pseudocode explains matrix-vector multiplication {w} = [A]{p}
when matrix [A] is stored in the sparse row-wise format:
Matrix-vector multiplication in sparse-row format
do j = 1, N
w[j] = 0
do i = pcol[j], pcol[j + 1] − 1
w[j] = w[j] + A[i] ∗ p[coln[i]]
end do
end do
Chapter 7
Nonlinear Problems
stress increment {dσ} can be calculated through elastic strain increment {dεe } and
the elasticity matrix [E] according to the Hooke’s law:
63
64 CHAPTER 7. NONLINEAR PROBLEMS
and the plastic deformation does not change the body volume:
p
εii = 0 (7.4)
Let us assume that the elastic-plastic material behavior is governed by the von
Mises yield criterion (von Mises yield surface):
f = σi − Y (κ) = 0 (7.5)
1
sij = σij − σii (7.8)
3
During plastic flow the stresses must remain on the yield surface. With the above
introduced vector {a} the condition for stress-strain state on the yield surface can
be written as follows:
∂f ∂Y
df = dσij − dκ = {a}T {dσ} − Hdεpi = 0 (7.11)
∂σij ∂κ
7.2. CONSTITUTIVE RELATIONS FOR ELASTIC-PLASTIC MATERIAL 65
∂f
dεpij = λ = λ{a} (7.12)
∂σij
where λ is the plastic strain-rate multiplier. Substitution of the above equation into
(7.9) gives the following simple expression for plastic multiplier:
dεpi = λ (7.13)
{a}T [E]{dεep }
λ= (7.15)
{a}T [E]{a} + H
where {dεep } = {dεe } + {dεp }. Using this expression for the plastic multiplier
λ and Equation (7.12) the Hooke’s law (7.2) can be transformed to the follow-
ing constitutive equation relating stress increment and increment of elastic-plastic
strains:
[E]{a}{a}T [E]
{dσ} = [E] − {dεep } (7.16)
{a}T [E]{a} + H
It is possible to take into account that for von Mises yield function the following
equality is kept:
where G is the shear modulus. Finally the constitutive relation for increments of
stresses and elastic-plastic strains is:
{dσ} = [E ep ]{dεep }
[E]{a}{a}T [E] (7.18)
[E ep ] = [E] −
3G + H
66 CHAPTER 7. NONLINEAR PROBLEMS
f0
r0 = − (7.22)
fe − f0
7.3. COMPUTING FINITE STRESS INCREMENTS 67
and then to improve its value in an iterative manner using truncated Taylor series:
do
f (ri−1 )
Δri = −
{a(ri−1 )}{Δσ e } (7.23)
ri = ri−1 + Δri
while Δri > ε.
{Δε}
{dε} = (7.24)
m
The number of subincrements m can be estimated as:
f ({σ0 } + {Δσ e })
m= +1 (7.25)
βσY
where {σ0 } is the stress vector at the beginning of stress increment (on the yield
surface), {Δσe } is the elastic stress increment, σY is the material yield stress and
β is a tolerance (typical value of β can be selected as 0.05).
The algorithm of subincrementation for computing finite elastic-plastic stress
increment is given by the following pseudo-code:
f ({σi }){a}
{σi1 } = {σi } − (7.27)
{a}T {a}
Then the incremental finite element equation expressed through displacement in-
crement {dq} has the following appearance:
where {dp} is an increment of the actual force load, which we consider indepen-
dent of the strain-stress level.
The incremental finite element equation is valid for infinitesimally small incre-
ments of force or displacements. Usually in elastic-plastic problems the applied
load is divided into a number of increments (in some cases this division is nec-
essary in order to reproduce load history). However, we cannot afford very small
load increments because the solution of the global equation system is an expensive
operation. Hence, we need a nonlinear solution procedure that works for finite load
increments.
In general, nonlinear problems are formulated in terms of some unknown pa-
rameters. The finite element elastic-plastic problem can be stated as follows: start-
ing from an equilibrium state, for a given load increment it is necessary to find
displacement field which satisfies the stress equilibrium equation:
{p} − [B]T {σ}dV = 0 (7.32)
V
This can be done using iterative techniques, which decrease a residual vector
{ψ} due to imbalance of external and internal forces:
{ψ} = {p} − [B]T {σ}dV (7.33)
V
Several iterative techniques are used for the solution of finite element nonlin-
ear problems. Among them the most famous techniques are the Newton-Raphson
method and the initial stress method.
The initial stress method uses iterative procedure which is similar to that of the
Newton-Raphson method. Main difference is that the initial stress method em-
ploys the elastic stiffness matrix for computing the displacement increment. The
7.4. NONLINEAR SOLUTION PROCEDURE 71
p
p1
p0
u0 u1 u
following pseudo-code present the iterative procedure of the initial stress method:
p
p1
p0
u0 u1 u
The other possibility is to control the displacement increment during current it-
eration. The convergence criterion based on the norm of displacement increment
is:
Visualization
8.1 Introduction
Visualization techniques for finite element models and analysis results have been
developing during last decades. Previously, when graphics libraries supported just
simple graphical primitives, the development of visualization software was a com-
plicated task. At present the situation with graphics libraries has changed. An ex-
ample of a rich graphics library is the Java3D API. The Java 3D API contains Java
classes for a sophisticated three-dimensional graphics rendering. The programmer
works with high-level interface for creating and manipulating 3D geometric ob-
jects. Despite all its wide functionality, the API can be easily learned and used.
The Java3D employs linear triangular and quadrilateral filled polygons for surface
representation. Because of this the visualization of FEM models consisting of sim-
plest elements is almost straightforward. However, for higher order elements the
transformation of element surfaces into triangular polygons should be done care-
fully taking into account both geometry and result fields.
73
74 CHAPTER 8. VISUALIZATION
2. connectivity array.
1. element surfaces located at the surface of the finite element model and di-
vided into triangles of appropriate size;
xk = ΣNi xik
(8.1)
f = ΣNi fi
76 CHAPTER 8. VISUALIZATION
where Ni are shape functions; xk are coordinates of a point inside element; xik
is the kth coordinate of the ith element node; f is the result function value at
a point; fi is the result function value at node i; ξ, η, ζ are local coordinates
(−1 ≤ ξ, η , ζ ≤ 1); ξi , ηi , ζi are nodal values of the local coordinates.
Surfaces of 20-node finite elements have the same interpolation functions as
8-node two-dimensional elements elements but the interpolation is made in the
three-dimensional space.
Shape functions used for coordinate (or results function) interpolation inside 8-
node quadrilateral element are:
A normal to the surface at any point with the specified local coordinates is calcu-
lated as a vector product of two tangent vectors along ξ and η directions:
n = e$1 × e2 %
e1 = ∂x 1 ∂x2 ∂x3
(8.4)
$ ∂ξ ∂ξ ∂ξ %
∂x1 ∂x2 ∂x3
e2 = ∂η ∂η ∂η
Derivatives of the global coordinates in respect to the local coordinates are deter-
mined with the use of the shape functions:
8 7
5 6
(8) (7)
(5) (6)
(4) (3)
(1) (2)
4 3
1 2
where f(m) are known function values at reduces integration points; fi are function
values at vertex nodes and Li(m) is the symmetric extrapolation matrix:
⎡ ⎤
A B C B B C D C
⎢ ⎥
⎢ A B C C B C D ⎥
⎢ ⎥
⎢ A B D C B C ⎥
⎢ ⎥
⎢ A C D C B ⎥
Li(m) =⎢
⎢
⎥
⎥
⎢ A B C B ⎥
⎢ ⎥
⎢ A B C ⎥ (8.7)
⎢ ⎥
⎣ A B ⎦
√ A
A = (5 +
√ 3)/4
B = −(
√ 3 + 1)/4 √
C = ( 3 − 1)/4, D = (5 − 3)/4
Secondary results are extrapolated from integration points to all nodes of elements.
Values for midside nodes can be calculated as an average between values for two
vertex nodal values. Then for all nodes of the finite element model, averaging
of contributions from the neighboring finite elements is performed. After that we
obtain a continuous field of secondary results specified at nodes of the model with
quadratic variation inside finite elements. Later, the results can be interpolated to
any point inside element or on its surface using shape functions.
3
a3
a1 2
R a2
that define the side of a finite element surface or the side a boundary element. Since
we do not need precise value of the curvature radius, its estimate can be simplified
as shown.
Connecting three nodes 1, 2 and 3 on the curved side by straight lines produces a
triangle with sides a1 , a2 and a3 . In the ordinary finite and boundary elements mid-
side node 2 has equal distances to corner nodes 1 and 3. In this case the curvature
radius R can be roughly estimated as:
a1
R= (8.8)
2 sin α
Sine of the angle α can be found using dual representation of the area of triangle
123:
1
s= p(p − a1 )(p − a2 )(p − a3 ) , p = (a1 + a2 + a3 ) (8.9)
2
1
s = a1 a3 sin α (8.10)
2
Figure 8.6: RGB peace-wise linear functions are used to create one-dimensional
color patterns.
where c is the number of color intervals with linear change of color function (=5),
8.4. SUBDIVISION OF QUADRATIC SURFACES 81
Delaunay triangulation is used to subdivide element surfaces into triangles. The tri-
angulation is performed in the local coordinate system ξ, η. Then local coordinates
of triangles are converted to the global coordinate system using shape functions.
To apply Delaunay triangulation algorithm it is necessary to have locations of both
boundary and interior points. Locations of boundary points are defined by dividing
element surface sides into equal parts using number of subdivisions obtained on
the basis of side curvature and result range.
To seed interior points the following procedure can be used. Boundary points
located at the first side are copied to interior with interval, which is equal to the
distance between points at the side. The copying is stopped at the surface center
filling half of the surface. The same procedure is performed sequentially for all
sides. But starting from the second side the actual placement of a point takes
place only if this point has a distance from any existing point, which is larger
than the specified distance. The specified distance is computed depending on the
number of side subdivisions. After completion of the seeding process the Delaunay
triangulation is performed. Then local coordinates of triangles are converted to the
global coordinate system using shape functions.
82 CHAPTER 8. VISUALIZATION
scene (BG)
transform (TG)
shape behavior
geometry appearence
ject is used for the initial scaling of models. With the background object it is easy to
specify background color of the scene. Both an ambient light and directional lights
are used to illuminate objects. The transform and mouse behavior objects are em-
ployed for rotating, zooming and translating the scene visual objects on the screen.
The geometry and appearance objects contain the whole information about visual
objects. The TriangleArray class is used to create surface of a geometry object.
The Appearance object allows one to specify attributes, which define rendering of
the visual objects.
84 CHAPTER 8. VISUALIZATION
Bibliography
[1] K.-J. Bathe, Finite Element Procedures. Englewood Cliffs: Prentice- Hall,
1996.
[2] M.A. Crisfield, Non-linear Finite Element Analysis of Solids and Structures,
Vol. 1: Essentials. J. Wiley & Sons, New York, 1991, 345 pp.
[3] O.C. Zienkiewicz and R.L. Taylor, Finite Element Method: Volume 1 - The
Basis. Butterworth Heinemann, London, 2000, 712 pp.
[4] O.C. Zienkiewicz and R.L. Taylor, Finite Element Method: Volume 2 - Solid
Mechanics. Butterworth Heinemann, London, 2000, 480 pp.
85