1
1M Müller – Elasto-Plastic FEM
ETH Zurich
Interactive Simulation of Elasto-Plastic Materials using the Finite Element Method
Matthias MüllerSeminar – Wintersemester 02/03
Movie
2M Müller – Elasto-Plastic FEM
ETH ZurichOutline
FEM vs. Mass-SpringStiffness
The Stiffness MatrixStatic/Dynamic Deformation
Continuum Mechanics and FEMStrain and Stress TensorsContinuous PDE’sFEM Discretization
PlasticityPlastic StrainUpdate Rules
FracturePrincipal StressesCrack Computation
3M Müller – Elasto-Plastic FEM
ETH ZurichMass-Spring vs. FEM
1. Discretization of an object into mass points
2. Representation of forces between mass points with springs
3. Computation of the dynamics
deformable mass-spring system
1. Discretization of an object into elements (tetrahedra)
2. Discretization of continuousenergy equations into algebraic equations for forces acting at vertices
3. Computation of the dynamics
deformable FEM system
4M Müller – Elasto-Plastic FEM
ETH ZurichPros and Cons of FEM
Pros:• No individual spring constants needed
(only 2 known material parameters E,ν)• No inversion problems
(inverted tetrahedra produce forces)• Stress and strain tensors allow
• fracture and• plasticity simulations
Cons:• (Pre-)compute stiffness matrix• Store stiffness matrix (3x3) per edge• Store original and actual positions of vertices
2
5M Müller – Elasto-Plastic FEM
ETH ZurichOutline
FEM vs. Mass-SpringStiffness
The Stiffness MatrixStatic/Dynamic Deformation
Continuum Mechanics and FEMStrain and Stress TensorsContinuous PDE’sFEM Discretization
PlasticityPlastic StrainUpdate Rules
FracturePrincipal StressesCrack Computation
6M Müller – Elasto-Plastic FEM
ETH ZurichOne-dimensional Spring
f
∆x
f = k · ∆x
7M Müller – Elasto-Plastic FEM
ETH ZurichThree-dimensional Object
Finite Element Mesh• 903 tetrahedra• 393 vertices• 3 x 393 = 1179 dof.
∆x1x
∆x1y
∆x1z...∆xnx
∆xny
∆xnz
∆x =
f1x
f1y
f1z
...fn
x
fny
fnz
f =
8M Müller – Elasto-Plastic FEM
ETH ZurichThree-dimensional Object
f
∆x
fel = K · ∆x (Stiffness Matix K ∈ R3nx3n)
fel = F(∆x) (Function F : R3n→R3n)
3
9M Müller – Elasto-Plastic FEM
ETH ZurichStatic Deformation
f
∆xfext = fel = K · ∆x∆x = K-1 · fext
fext = fel = F(∆x)∆x = F-1(fext)
Solve linear system(Conjugate Gradients)
Solve non-linear system(Newton-Raphson - generalized Newton-Method)
10M Müller – Elasto-Plastic FEM
ETH ZurichDynamic Deformation
Mx´´ + Cx´ + K∆x = fext
• Coupled system of 3n linear ODEs• Explicit integration: No solver needed• Implicit integration: Linear solver per time step
Mx´´ + Cx´ + F(∆x) = fext
• Coupled system of 3n non-linear ODEs• Explicit integration: No solver needed• Implicit integration: Linearize at every time step: K = dF/dx
11M Müller – Elasto-Plastic FEM
ETH ZurichOutline
FEM vs. Mass-SpringStiffness
The Stiffness MatrixStatic/Dynamic Deformation
Continuum Mechanics and FEMStrain and Stress TensorsContinuous PDE’sFEM Discretization
PlasticityPlastic StrainUpdate Rules
FracturePrincipal StressesCrack Computation
12M Müller – Elasto-Plastic FEM
ETH ZurichContinuous Elasticity 1-d
fn/A = E ∆l/l
fnA
∆l l
strain ε [1](Dehnung)
Elasticity (Young‘s) Modulus[N/m2]
Metal: ~1011 N/m2
Soft material: ~106 N/m2
stress σ [N/m2](Normal-Spannung)
4
13M Müller – Elasto-Plastic FEM
ETH ZurichContinuous Elasticity 3-d
Deformation:
xy
z
• Continuous 3-d vector field u: R3 → R3
• Defined within undeformed object
u(x)u(x,y,z)v(x,y,z)w(x,y,z)
x+u(x)x
14M Müller – Elasto-Plastic FEM
ETH ZurichLinear 3-d Strain
normal strain in x - direction:
x x+dx
u(x) u(x+dx)
dx
dx u(x+dx)-u(x)εx = u(x+dx)–u(x)
dx= ∂/∂xu = ux
shear strain:
x x+dx
v(x) v(x+dx)
dx
v(x+dx)-v(x)γxy = v(x+dx)–v(x)
dx= ∂/∂xv = vx
15M Müller – Elasto-Plastic FEM
ETH ZurichLinear 3-d Strain
Linear strain tensor:
++++++
=
==
zzyzx
yzyyx
xzxyx
zzyzx
yzyyx
xzxyx
wvwuw
wvvuv
wuvuu
zyx
εγγγεγγγε
),,(εε
∂∂∂∂∂∂∂∂
∂∂∂∂∂∂
∂∂∂∂
=
=w
v
u
xz
yz
xy
z
y
x
zx
yz
xy
z
y
x
/0/
//0
0//
/00
0/0
00/
γγγεεε
ε
Symmetric, 3x3 matrix → 6 vector:
16M Müller – Elasto-Plastic FEM
ETH ZurichNon-Linear 3-d Strain
Green-Saint-Venant strain tensor:
( )
+∂∂+∂∂+∂∂
+∂∂+∂∂+∂∂
+∂∂+∂∂+∂∂
==)(/
)(/
)(/
,
)(/
)(/
)(/
,
)(/
)(/
)(/
,,
wzz
vyz
uxz
wzy
vyy
uxy
wzx
vyx
uxx
zyx JJJJ
• Transformation we use: x → x + u(x):• Use Jacobian of transformation:
IJJε −= TGreen
• Interpretation:
xy
zx
x + u(x)
Jx
JyJz
5
17M Müller – Elasto-Plastic FEM
ETH Zurich3-d Stress
An
f
A
fσ⋅
==dA
d
d
d
Stress is force per (oriented) area:
A
zyzxz
yzyxy
xzxyx
AdA
dnnσf ⋅
=⋅=στττστττσ
xz
xy
x
ττσ
yz
y
yx
τστ
z
zy
zx
σττ
nA
f
A
18M Müller – Elasto-Plastic FEM
ETH ZurichConstitutive Relation (isotropic)
The stress tensor is symmetric, 3x3 matrix → 6 vector:
Only two scalar parameters:E: Young’s modulus, ν: Poisson ratio
⋅
−−
−
=
zx
yz
xy
z
y
x
zx
yz
xy
z
y
x
G
G
G
ccc
ccc
ccc
γγγεεε
ννννννννν
τττσσσ
0
)1(
0)1(
)1(
)1(2,)21)(1( ννν +
=−+
= EG
Ec
E εσ =Hooke‘s law:
19M Müller – Elasto-Plastic FEM
ETH ZurichPutting it all together
Given u(x) we can compute• strain ε(x) and• stress σ(x) = E ε(x) at every point x within the object.
→ Find u(x) such that corresponding stresses σ(x) are in balance with external forces f(x) everywhere within object:
0
0
0
,,,
,,,
,,,
=+++
=+++
=+++
zzzyzyxzx
yzyzyyxyx
xzxzyxyxx
fσττfτστfττσ • Strong formulation
• Coupled system of partial differential equations!
20M Müller – Elasto-Plastic FEM
ETH ZurichEnergy Formulation
• Energy U is a scalar• U at point x is given by „displacement × force“:
Eεεσε TTelastic 2
1
2
1 ==U
• The total Energy of the deformed body:
∫
⋅−=
body
Tbody fu
2
1dVU Eεε
• Given f, E we can compute Ubody for any u(x)• Find u(x) such that Ubody is a minimum (δU = 0)
6
21M Müller – Elasto-Plastic FEM
ETH ZurichOutline
FEM vs. Mass-SpringStiffness
The Stiffness MatrixStatic/Dynamic Deformation
Continuum Mechanics and FEMStrain and Stress TensorsContinuous PDE’sFEM Discretization
PlasticityPlastic StrainUpdate Rules
FracturePrincipal StressesCrack Computation
22M Müller – Elasto-Plastic FEM
ETH ZurichFinite Element Formulation
• So far we looked for a continuous field u(x)
u
x
• Now we look for u1, u2, .. un at fixed locations: x1, x2, .. xn
• and interpolate u(x) with fixed basis functions: u(x) ≈ Σi ui φi(x)
u
xxi
ui
φi(x)
u(x)
23M Müller – Elasto-Plastic FEM
ETH ZurichLinear Displacement Tetrahedron
• 12 unknowns (a1,..a12), 12 equations• ui, vi, wi are variables, xi, yi, zi are given numbers
+++++++++
=
zayaxaa
zayaxaa
zayaxaa
zyxw
zyxv
zyxu
1211109
8765
4321
),,(
),,(
),,(
=
4
4
4
444
444
444
),,(
),,(
),,(
w
v
u
zyxw
zyxv
zyxu
=
2
2
2
222
222
222
),,(
),,(
),,(
w
v
u
zyxw
zyxv
zyxu
=
1
1
1
111
111
111
),,(
),,(
),,(
w
v
u
zyxw
zyxv
zyxu
=
3
3
3
333
333
333
),,(
),,(
),,(
w
v
u
zyxw
zyxv
zyxu
24M Müller – Elasto-Plastic FEM
ETH ZurichDisplacements
The displacement function u(x) can be expressed as• a matrix of basis functions H(x) times• a vector of displacements:
⋅
=
4
4
4
3
3
3
2
2
2
1
1
1
4321
4321
4321
00000000
00000000
00000000
),,(
),,(
),,(
w
v
u
w
v
u
w
v
u
w
v
u
NNNN
NNNN
NNNN
zyxw
zyxv
zyxu
uxHxu à)()( ⋅=
7
25M Müller – Elasto-Plastic FEM
ETH ZurichStrain
Linear displacements yield constant strain:
uBuxHε àà)(
/0/
//0
0//
/00
0/0
00/
⋅=⋅
∂∂∂∂∂∂∂∂
∂∂∂∂∂∂
∂∂∂∂
=
=
xz
yz
xy
z
y
x
zx
yz
xy
z
y
x
γγγεεε
• Matrix B ∈ R6x12 is constant (independent of x,y,z)• B depends on the original geometry of the tetrahedron only
26M Müller – Elasto-Plastic FEM
ETH ZurichStress and Energy
Stress as a function of the displacements:
uEBEεσ à⋅==
Energy as a function of the displacements:
∫
=
element
Telement 2
1dVU Eεε
∫=element
TT àà2
1dVuEBBu
[ ]uEBBuuEBBu àà2
1àà
2
1 Telement
T
element
TT VdV =
= ∫
uKu àà2
1 T=
27M Müller – Elasto-Plastic FEM
ETH ZurichStiffness Matrix
Forces are the derivatives of the energywith respect to the degrees of freedom:
uKu àà2
1 Tbody =U
fuKu
==∂
∂à
àbodyU
The matrix K ∈ R12x12 is the stiffness matrix of the element!
EBBEBBK Telement
element
T VdV == ∫
28M Müller – Elasto-Plastic FEM
ETH ZurichAssembly of elements
Single element:
f1xf1yf1z…f4xf4yf4z
∆x1x∆x1y∆x1z…∆x4x∆x4y∆x4z
=3x33x3
Ke
=
f1..
fn
∆x1..
∆xn
Entire body:
8
29M Müller – Elasto-Plastic FEM
ETH ZurichImplementation
• K is sparse• 3x3 block at (3i,3j) describes how ∆xj influences fi• every vertex stores adjacency list of
(3x3-matrix, vertex-reference) pairs
=
f1..
fn
∆x1..
∆xn
K
30M Müller – Elasto-Plastic FEM
ETH ZurichOutline
FEM vs. Mass-SpringStiffness
The Stiffness MatrixStatic/Dynamic Deformation
Continuum Mechanics and FEMStrain and Stress TensorsContinuous PDE’sFEM Discretization
PlasticityPlastic StrainUpdate Rules
FracturePrincipal StressesCrack Computation
31M Müller – Elasto-Plastic FEM
ETH ZurichPlastic Strain
→No internal forces are present when εû = εplastic
Might be for û ≠ 0!
An element is under strain εû due to displacements û:
εû = [εx, εy, εz, γxy, γyz, γzx]T = B⋅û
A plastic element „stores“ strain in a state variable:
εplastic
The elastic strain (that causes internal forces) is now:
εelastic = εû - εplastic
32M Müller – Elasto-Plastic FEM
ETH ZurichPlastic Update Rules
Initialization:
Update rule (every time step):
• Compute εû = B⋅û from actual displacements• Compute εelastic = εû - εplastic
• if ||εelastic|| > yield then εplastic = εplastic + creep ⋅ εelastic
• if ||εplastic|| > max then εplastic = εplastic ⋅ max / ||εplastic||
εplastic = 0
ε (6 dimensional)
0 εplastic εelastic
εû
beforeafter
9
33M Müller – Elasto-Plastic FEM
ETH ZurichImplementation
ε = B⋅ûSince
the displacements that correpsond to the plastic strain are:ûplastic = B-1⋅εplastic
and the correpsonding forces are:
fplastic = KB-1⋅εplastic = [vBTEB] B-1⋅εplastic = vBTE⋅εplastic
→ add plastic forces to external forces
34M Müller – Elasto-Plastic FEM
ETH ZurichOutline
FEM vs. Mass-SpringStiffness
The Stiffness MatrixStatic/Dynamic Deformation
Continuum Mechanics and FEMStrain and Stress TensorsContinuous PDE’sFEM Discretization
PlasticityPlastic StrainUpdate Rules
FracturePrincipal StressesCrack Computation
35M Müller – Elasto-Plastic FEM
ETH ZurichFracture criterion
• Break if internal elastic force exeeds threshold• stress is a tensor• the force w.r.t. normal nA is:
A
zyzxz
yzyxy
xzxyx
AdA
dnnσf ⋅
=⋅=στττστττσ
• Find nmax such that df/dA is maximal!• nmax is direction of maximal tensile stress
36M Müller – Elasto-Plastic FEM
ETH ZurichPrincipal Stresses
• The stress tensor σ is symmetric• → there is a rotation matrix R such that
RR
=
pz
py
px
zyzxz
yzyxy
xzxyx
σσ
σ
στττστττσ
00
00
00T
• the diagonal entries are the eigenvalues of σ• the columns of R are the corresponing eigenvectors• there is always a rotated coordinate system
where σ is diagonal!
10
37M Müller – Elasto-Plastic FEM
ETH ZurichPrincipal Stresses
• the σp are the principal (extremal) stresses• → find maximal eigenvalue of σ• corresponding eigenvector is the direction of maximal
stress
x
y
z
σpx
σpy
σpz
38M Müller – Elasto-Plastic FEM
ETH ZurichCrack computation
• for all elements: compute maximal tensile stress σpmax
39M Müller – Elasto-Plastic FEM
ETH ZurichCrack computation
• for all elements: compute maximal tensile stress σpmax
• if σpmax exceeds yield stress
σpmax
40M Müller – Elasto-Plastic FEM
ETH ZurichCrack computation
• for all elements: compute maximal tensile stress σpmax
• if σpmax exceeds yield stress
• select a vertex v (crack tip / random)
σpmax
v
11
41M Müller – Elasto-Plastic FEM
ETH ZurichCrack computation
• for all elements: compute maximal tensile stress σpmax
• if σpmax exceeds yield stress
• select a vertex v (crack tip / random)• set plane α normal σp
max to through v
σpmax
α
v
42M Müller – Elasto-Plastic FEM
ETH ZurichCrack computation
• for all elements: compute maximal tensile stress σpmax
• if σpmax exceeds yield stress
• select a vertex v (crack tip / random)• set plane α normal σp
max to through v• mark tetras w.r.t. α
σpmax +
+
+
-
-
α
v
43M Müller – Elasto-Plastic FEM
ETH ZurichCrack computation
• for all elements: compute maximal tensile stress σpmax
• if σpmax exceeds yield stress
• select a vertex v (crack tip / random)• set plane α normal σp
max to through v• mark tetras w.r.t. α• split vertex σp
max +
+
+
-
-
α
v
44M Müller – Elasto-Plastic FEM
ETH ZurichThe End
Thank you for your attention!