Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fakultt fr Bauingenieurwesen
Lecture Notes
Computational Plasticity
by
Version 0.4
Contents
B. Programming Exercises 41
1. Programming Exercise 1 (Numerical Time Integration) . . . . . . . . 41
1.1. Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.2. Program Description . . . . . . . . . . . . . . . . . . . . . . . . 41
1.3. Program code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.3.1. f (z) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.3.2. g(z) and J(z) . . . . . . . . . . . . . . . . . . . . . . . 43
1.3.3. Newton-Raphson iteration . . . . . . . . . . . . . . . 44
2. Programming Exercise 2 (1D material models) . . . . . . . . . . . . . 45
2.1. class LinHardeningPlasticity . . . . . . . . . . . . . . . . . . . 45
2.2. Program Code . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.2.1. MaterialModel.java . . . . . . . . . . . . . . . . . . . 46
2.2.2. MaterialModel_LinHardeningPlasticity.java . . . . . 47
3. Programming Exercise 3 (3D plasticity) . . . . . . . . . . . . . . . . . 49
3.1. class J2FlowTheory . . . . . . . . . . . . . . . . . . . . . . 49
Contents v
3.1.1. Theory . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.1.2. Numerical Jacobian Matrix . . . . . . . . . . . . . . . 51
C. Literature 53
1
Chapter 1
OneDimensional Plasticity Models
1. Introduction
For an elastic material the strain follows the stress immediately and becomes zero
after stress release, cf. Fig. 1.1. The material behaviour is characterized by a direct
relation between stress and strain. When the relation between engineering stress
and strain is linear, the elastic behaviour is generally referred to as linear.
s e
t t
t1 t2 t1 t2
E
s
,
e
s e
t t
t1 t2 t1 t2
A typical device that shows viscous behaviour is a dash pot, cf. Fig. 1.4. The stress
strain relationship of the dash pot is given by
= ,
: viscosity.
h
s
,
e
For elastoplastic material behaviour the strain also follows the stress immediately
but there may be a permanent deformation after stress release, cf. Fig. 1.5.
A typical system that is used to model rigid plastic behaviour is a friction slider,
cf. Fig. 1.6. The stress strain relationship of the friction slider is given by
s e
e
e
p
t e t
t1 t2 t1 t2
s
y
s
,
e
s e
t t
t1 t2 t1 t2
An experiment using a friction slider and a spring is carried out during the lecture,
cf. Fig. 1.9. We observe that the friction slider starts sliding when the applied stress
(force) reaches a certain flow stress. Neglecting dynamic effects we further observe
that the applied stress cannot be greater than the flow stress.
4 1. OneDimensional Plasticity Models
h
H E
s
,
e
s
y
(i) The total strain splits into an elastic part e and a plastic part p
= e + p .
(iii) The stress cannot be greater in absolute value than Y . That means, the
admissible stresses are constrained to lie in an interval [Y , Y ]. The set of
admissible stresses is denoted by
E = { R | f () := || Y 0} .
Y is called the flow stress or yield stress; f goes by the name yield function.
(iv) If || is less than the flow stress, no change in p takes place, that is,
p = 0 if f () < 0.
2. Elementary Models for OneDimensional Plasticity 5
We say the instantaneous response is elastic. The elastic range is defined as the
open set
int E = { R | f () := || Y < 0} .
(v) A change in p can take place only if f () = 0. If this condition is met the
material experiences slip in the direction of the applied stress with constant
slip rate 0.
(
+, if = +Y > 0
p =
, if = Y < 0
p = sign() if f () = 0,
E = { R | f () := || Y = 0}
0 and f () 0
() = 0
f
f() = 0
= E( p )
Flow rule
p = sign()
Yield function
f () = || Y
0, f () 0, () = 0
f
We derive the rate form of the stress for the perfect plasticity model. The comple-
mentary condition f = 0 implies that when f < 0 we will have = 0 and when
> 0 we will have f = 0.
In the first case = 0 the material shows instantaneous elastic response. Thus
p = 0 and we obtain the rate form = E .
In the second case > 0 and consequently f = 0. Because f = 0 remains constant
as long as > 0 also the rate of f vanishes, f = 0, and we obtain
f f
f = = E( p )
f f
= E E sign().
Using
|x|
= sign(x) and (sign(x))2 = 1
x
we obtain
f = sign()E E
=0 = sign().
p = for f () = 0
and finally
(
E if f < 0
= .
0 if f = 0
2. Elementary Models for OneDimensional Plasticity 7
e
emax
s
sy
e
emax
-sy
Real metal materials do not show perfect plastic behaviour, but exhibit a charac-
teristics known as work or strain hardening. Strain hardening is the strengthening
of a metal by plastic deformation. This strengthening occurs because of disloca-
tion movements within the crystal structure of the material. The difference in the
stressstrain curve between strain hardening material and perfect plastic material
is shown in Fig. 1.12.
f (, ) = || (Y + K)
8 1. OneDimensional Plasticity Models
work hardening
s
perfect plasticity
K : plastic modulus
: internal hardening variable
= |p | : simplest evolution equation for
(iv-vi) No changes with respect to 2.1.
= E( p )
Flow rule
p = sign()
Yield function
f (, ) = || (Y + K) 0
0, f (, ) 0, (, ) = 0
f
In the first case = 0 the material shows instantaneous elastic response. Thus
p = 0 and we obtain the rate form = E .
In the second case > 0 and consequently f = 0. Because f = 0 remains constant
as long as > 0 also the rate of f vanishes, f = 0, and we obtain
f f
f = +
= sign()E( p ) + K
= sign()E (E + K) = 0
E
= sign()
E+K
Hence, we obtain the following rate form
E if f < 0
= EK .
if f = 0
E+K
s
sy Ka
Es e Es
emax
-sy
Ka
While tensile cold working increases the tensile yield strength, the local initial
compressive yield strength after tensile cold working is actually reduced. This
effect is known as Bauschinger effect Fig. 1.14. The simple isotropic hardening
model does not account for this effect. To include the Bauschinger effect into the
model we will add the so-called backstress q to model kinematic hardening.
10 1. OneDimensional Plasticity Models
Bauschinger effect
s
sy
2sy
sy
f (, q, ) = | q| (Y + K)
The simplest form of the evolution of the back stress q is given by Zieglers
rule
sign( q)
q = H p = H
= E( p )
Flow rule
= , sign( q)
q = H
Yield function
f (, q, ) = | q| (Y + K) 0
0, f (, q, ) 0, (, q, ) = 0
f
s Ka+q
sy
Es
q
Es e
emax
-sy
We derive the incremental form of the isotropic hardening model and the isotrop-
ic/kinematic hardening model in detail. Both derivations are similar and can eas-
ily generalized to more complex hardening laws with additional internal variables.
Some details on numerical integration algorithms can be found in Appendix A.
We consider strain driven problems where the strain is given as a function of time.
The continuous time scale is discretized into separate time steps. For simplicity we
assume that the time steps t are of equal duration. The discrete time instances
t0 , t1 , t2 , . . . are indicated by subscripts. A general instance is often denoted tn and
tn+1 is the subsequent time instance, e.g.
tn+1 = tn + t.
A time dependent function, e.g. the strain , which is evaluated at tn will e denoted
n (tn ). A strain increment is written n and denoted by
n+1 = n + n .
The slip rate increment is defined by = t.
3. Incremental Form of OneDimensional RateIndependent Plasticity 13
f (, ) = || (Y + K) yield function
0,
The differential equations will be transformed into an incremental form using the
backward Euler method. The algebraic equations will be evaluated at the time
instant tn+1 . Then we obtain
Flow rule
pn+1 pn
= sign(n+1 )
t t
Isotropic hardening law
n+1 n
=
t t
Yield function
f (n+1 , n+1 ) = |n+1 | (Y + Kn+1 )
Complementary conditions
0, fn+1 0, fn+1 = 0
Using the backward Euler method the differential equations have been trans-
formed into algebraic equations. Nevertheless, there are still two inequalities,
which avoid a direct solution of the algebraic equations. How do we get rid of
the inequalities ?
Answer: Operator splitting of the time step into an elastic and a plastic step:
predictor+ corrector
= E( p ) = E E sign()
p = sign = 0 + sign()
= = 0 +
(, ) =
0 = f 0 + (, )
f
Further information on operator splitting methods can be found in Appendix A.
14 1. OneDimensional Plasticity Models
p,trial
n+1 = n
p
trial
n+1 = E(n+1 pn ) = E((n+1 n ) + (n pn )) = n + En
trial
n+1 = n
trial trial
fn+1 = |n+1 | (Y + Kn )
trial
(i) If fn+1 0 the trial state is admissible, that is pn+1 = pn , n+1 = n and
trial
n+1 = n+1 satisfy the incremental equations.
trial
(ii) If fn+1 > 0 the trial state violates the complementary condition f (, ) 0.
Thus we require > 0.
Summary
(
trial 0 elastic step, = 0
fn+1 = .
>0 plastic step, > 0
If the trial state is not an admissible state then the trial stress lies outside of the
yield surface. The return mapping algorithm brings the stress back onto the yield
surface. A geometric interpretation of the algorithm is given in the figure Fig. 1.16.
trial
First, we find an expression for n+1 in terms of n+1 :
This is a set of 4 algebraic equations to be solved for the unknowns n+1 , pn+1 ,
n+1 , .
3. Incremental Form of OneDimensional RateIndependent Plasticity 15
The sign of the stress equals the sign of the trial stress:
trial trial
n+1 = |n+1 | sign(n+1 ) = |n+1 | sign(n+1 ) E sign(n+1 )
trial trial
(|n+1 | + E) sign(n+1 ) = |n+1 | sign(n+1 )
| {z } | {z }
>0 >0
trial
sign(n+1 ) = sign(n+1 )
trial
(|n+1 | + E) = |n+1 |.
With this result we find
fn+1 = |n+1 | (Y + Kn+1 )
trial
= |n+1 | (Y + Kn+1 )
trial
= |n+1 | (Y + Kn ) K (n+1 n )
| {z }
trial
= fn+1 (E + K) = 0
trial
fn+1
=
E+K
and hence we obtain from (1.1)
trial
Efn+1
trial trial
n+1 =
n+1 sign(n+1 )
E+K
trial
fn+1
pn+1 p
= n + trial
sign(n+1 )
E+K
f trial
n+1 = n + n+1
E+K
fn+1 =0
E
1
e
emax
Figure 1.16.: Return mapping algorithm
We solve (1.1) by the NewtonRaphson method to show that the numerical solu-
tion and the analytical solution are identical. The set of nonlinear equations to be
solved reads
n+1 E(n+1 pn+1 )
0
pn+1 pn sign(n+1 ) 0
g(x) = =
n+1 n 0
|n+1 | (Y + Kn+1 ) 0
The initial vector of unknowns is formed using the values of the unknowns at the
trial step
trial
n+1
pn
x0 =
n .
0
The iteration procedure reads
xi+1 = xi J(xi )1 g(xi ).
The first iteration results in
trial
n+1 n+1 K EK sEK sE 0
pn+1 pn 1 1 K sK s
0 .
n+1 = n E + K
s sE E 1 0
trial
0 s sE K 1 fn+1
| {z }
g(x0 )
trial
With s = sign(n+1 ) = sign(n+1 ) we get
trial
trial fn+1 trial
n+1 = n+1 E sign(n+1 )
E+K
f trial
pn+1 = pn + n+1 sign(n+1 trial
)
E+K
f trial
n+1 = n + n+1
E+K
trial
f
= n+1
E+K
Hence, the NewtonRaphson scheme converges within 1 iteration to the analytical
solution. This is a result of the simple form of the model. A more advanced and
nonlinear model would certainly require more iterations.
Here, we demonstrate that the procedure for the model with additional kinematic
hardening variables is similar and can easily be generalized for more complex
models.
predictor + corrector
= E( p ) = E E sign()
p = sign() = 0 + sign()
= = 0 +
sign() =
q = H 0 + sign()
H
(, q, ) =
0 = f 0 + (, q, )
f
trial
n+1 = E(n+1 p,trial
n ) = E(n+1 n + n pn ) = n + En
Isotropic and kinematic hardening law
trial trial
n+1 = n , qn+1 = qn
Yield function
trial trial trial
fn+1 = |n+1 | (Y + Kn+1 )
3. Incremental Form of OneDimensional RateIndependent Plasticity 19
trial
(i) If fn+1 0 the trial state is admissible, that is pn+1 = pn , qn+1 = qn , n+1 = n
trial
and n+1 = n+1 satisfy the incremental equations.
trial
(ii) If fn+1 > 0 the trial state violates the constraints condition fn+1 0. Thus we
require > 0.
(
trial 0 elastic step, = 0
fn+1 = .
>0 plastic step, > 0
trial
Expression for n+1 in terms of n+1 :
This is a set of 5 algebraic equations to be solved for the unknowns n+1 , pn+1 , qn+1 ,
n+1 , . Numerical algorithm: NewtonRaphson (see appendix)
We solve (1.2) by the NewtonRaphson method to show that the numerical solu-
tion and the analytical solution is identical. The set of nonlinear equations to be
solved reads
n+1 E(n+1 pn+1 )
pn+1 pn sign(n+1 )
0
g(x) = q
n+1 q n H sign( )
n+1
= 0
n+1 n 0
|n+1 | (Y + Kn+1 )
with n+1 = n+1 qn+1 . The vector of unknowns is
n+1
pn+1
x= qn+1 .
n+1
3. Incremental Form of OneDimensional RateIndependent Plasticity 21
Next we have to compute the inverse of J. Again we use the shorthand form with
s = sign n+1 :
H + K E(K + H) E sEK sE
1 H +K 1 sK s
1 1
J = H EH E + K sKH sH .
E+K +H
s sE s E + H 1
s sE s K 1
The initial vector of unknowns is chosen to be
trial
n+1
pn
x0 = q n
.
n
0
The iteration procedure reads
xi+1 = xi J(xi )1 g(xi ).
The first iteration results in
p p
n+1 n
qn+1 qn 1
n+1 = n E + K + H
0
H + K E(K + H) E sEK sE 0
1
H +K 1 sK s
0
H
EH E + K sKH sH 0
.
s sE s E + H 1 0
trial
s sE s K 1 f
| n+1
{z }
g(x0 )
We obtain
trial
trial trial fn+1
n+1 = n+1 sign(n+1 )E
E+K +H
trial
fn+1
pn+1 = pn + sign(n+1
trial
)
E+K +H
trial
trial fn+1
qn+1 = qn + sign(n+1 )H
E+K +H
trial
fn+1
n+1 = n +
E+K +H
trial
fn+1
=
E+K +H
Again, the NewtonRaphson scheme converges within 1 iteration to the analytical
solution.
23
Chapter 2
Three-dimensional Rate-Independent
Plasticity
(iii) The internal variables (fluxes) are denoted by q. The function f (, q) denotes
the yield function. The set of admissibile states is defined by
E = {(, q) S Rm | f (, q) 0} . (2.1)
The interior of E , denoted by int(E ), is refered to as the elastic domain
int(E ) = {(, q) S Rm | f (, q) < 0} , (2.2)
whereas the boundary of E , denoted by E , is refered to as the yield surface
in stress space
E = {(, q) S Rm | f (, q) = 0} . (2.3)
24 2. Three-dimensional Rate-Independent Plasticity
p = r(, q),
(2.4)
q = h(, q),
0, f (, q) 0, (, q) = 0.
f (2.5)
f(, q) = 0. (2.6)
= 0 and f < 0
f = 0.
= C : .
f = 0 and f < 0 = 0.
= 0 (elastic)
f <0 (, q) int(E )
In the case of plastic loading we evaluate the time derivative of f with respect to
the variables and q and make use of the consistency condition
f = f : + q f q
= f : C : ( p ) + q f q (2.7)
= f : C : ( f : C : r + q f h) = 0.
We assume that
( f : C : r + q f h) > 0 (2.8)
for all admissible states (, q) E . (Proof: see book of Simo & Hughes). Then we
obtain
f : C :
f = 0 = . (2.9)
( f : C : r + q f h)
f = 0 and f = 0,
(2.10)
0 f : C : 0.
= Cep :
where Cep is th so-called tensor of tangent elastoplastic moduli given by the ex-
pression
C if = 0,
Cep = C : r C : f (2.11)
C if > 0.
f : C : r + q f h
Note that Cep is generally nonsymmetric for arbitrary r except in the case for which
r(, q) = f (, q) (2.12)
= C : e = C : ( p ),
p = r(, q),
q = h(, q),
f
p = ,
q = D f ,
q
D : matrix of generalized palstic moduli
0, f (, q) 0, (, q) = 0.
f
Exercise 2.1. Show that the one-dimensional elastoplastic model with isotropic and kine-
matic hardening is obtained if q, f and D are chosen as follows
K 0
q = (, ) , f (, q) = | + | (Y + K), D= .
0 H
Inserting this representation into the expression for the stress deviator norm yields
r
2 1 2 1/2 2
k dev()k = (11 11 ) = 11 .
3 3
p
Hence, an effective stress value has to be scaled by the factor 2/3.
The equations for the J2 flow theory with hardening read
= dev() , tr() = 0,
r
2
f (, q) = kk K(),
3
p = N, N := ,
kk
2
= H 0 ()N,
3
r
2
= .
3
The functions K() and H 0 () are called the isotropic and kinematic hardening
modulus, respectively. Typical hardenings laws are
K() = Y + Hiso
H 0 () = Hkin Hnl .
Saturation-type hardening
K() = Y + H0 + (K K0 )(1 e ), K K0 0, 0.
Finally, we get the matrix of elastoplastic tangent moduli for the J2 flow theory
" #
1 N N
Cep = I I + 2 I I I 0 +K 0 . (2.13)
3 1 + H 3
3. Integration Algorithm
The governing equations and differential equations are evaluated at the time in-
stant tn+1 and result in the following discrete equations:
Elastic stress-strain relationship
n+1 = C : en+1 = C : (n+1 pn+1 ),
Flow rule and hardening law
pn+1 = pn + f ( n+1 , qn+1 ),
qn+1 = qn D q f ( n+1 , qn+1 )
Kuhn-Tucker loading/unloading conditions
0,
f ( n+1 , qn+1 ) 0,
f ( n+1 , qn+1 ) =0
.
3. Integration Algorithm 29
We assume that the plastic deformation is frozen ( = 0) and obtain trial values
for the following variables
e,trial p
n+1 = n+1 n ,
e,trial
trial
n+1 = C : n+1 ,
p,trial p
n+1 = n ,
qtrial
n+1 = qn ,
trial
fn+1 = f ( trial trial
n+1 , qn+1 ).
The trial values for the yield function can be used to check whether plastic loading
happens within this time increment. If f is convex, then the trial value f trial is
always greater than or equal to the real value of f ,
trial
fn+1 fn+1 .
trial
Hence, whether loading or unloading applies is decided solely from fn+1 accord-
ing to the conditions
trial
fn+1 0 = 0, (elastic step)
trial
fn+1 >0 > 0, (plastic step)
In the case of J2 flow theory the previous equations take the following specific
form:
n+1 = C : (n+1 pn+1 ),
pn+1 = pn + Nn+1 ,
r
2
n+1 = n + ,
3
r
2
n+1 = n + Hn+1 Nn+1 .
3
Here, we have transformed H 0 into the following form
r r
() =
0 3 0 3
H H () = H(),
2 2
which is recast in to the discrete form
r r r
3 3 3
H()t = Hn+1 = (H(n+1 ) H(n )) .
2 2 2
The normal tensor N is defined by
n+1
Nn+1 = .
k n+1 k
30 2. Three-dimensional Rate-Independent Plasticity
We use s = dev to denote the stress deviator and e = dev to denote the strain
deviator. Then we obtain
strial
n+1 = sn + 2en+1 ,
trial trial
n+1 = sn+1 n .
In order to obtain a matrix of tangent moduli which is consistent with the solution
algorithm, we linearize the stress-strain relationship and obtain
.
h i
n+1 = C : n+1 2 () Nn+1 + N n+1 ,
Nn+1
= C 2Nn+1 2 : n+1 .
n+1 n+1
3. Integration Algorithm 31
trial trial
n+1 = sn+1 n
Check yield condition:
q
trial
fn+1 == k trial
n+1 k 2
3
K(n )
trial
if fn+1 0 then
p
n+1 = pn
n+1 = n
n+1 = n
n+1 = strial
n+1 + (tr n+1 )I
else
Compute from Algorithm ?? and set
trial
n+1
nn+1 = ktrial
n+1 k
q
2
n+1 = n + 3
Update the back stress, the plastic strain, and the stress:
q
n+1 = n + 23 (H(n+1 ) H(n ))nn+1
pn+1 = pn + nn+1
n+1 = strial
n+1 + (tr n+1 )I 2nn+1
Compute the consistent elastoplastic tangent moduli:
Cn+1 = I I + 2n+1 I 3 I I 2n+1 nn+1 nn+1
1
with
2
n+1 = 1 trial
k n+1 k
1
n+1 = K 0 (n+1 )+H 0 (n+1 )
(1 n+1 )
1+ 3
end
Appendix A
Appendix: Numerical Algorithms
Special cases:
(i) Forward Euler Method (Explicit Euler method): = 0
Zn+1 zn
k1 = f (zn ) = zn+1 zn + f (zn )t.
t
Zn+1 zn
k1 = f (zn + k1 t) = zn+1 zn + f (zn+1 )t.
t
1
(iii) Midpoint rule: = 2
1 Zn+1 zn 1
k1 = f (zn + k1 t) = zn+1 zn + f ( (zn+1 + zn ))t.
2 t 2
1.3. Accuracy
1 d2 z
dz
z(tn + t) = z(tn ) + t + t2 + . . .
dt t=0 2 dt2 t=0
1
= z(tn ) + f (zn )t + f 0 (zn )f (zn )t2 + . . .
2
1 d2 z
d
z
z(tn + t) = z(tn ) + t + 2
t2 + . . .
dt t=0
2 dt t=0
1 d2 (k1 t)
d(k1 t)
= z(tn ) + t + t2 + . . .
dt t=0 2 dt2 t=0
= z(tn ) + f (zn )t + f 0 (zn )f (zn )t2 + . . .
x = x, x(0) = x0
x(t) = x0 et
where is a coefficient in the range [0,1]. For the test equation we obtain
1 + (1 )h 1 + (1 )
xn+1 = xn = xn = zxn , where = h.
1 h 1
36 A. Appendix: Numerical Algorithms
Here z denotes the amplification factor. This is the amount by which the solution
at one step is multiplied to get the next step, hence the name. If is complex, so
is z. The criterion for stability is that its modulus does not exceed unity:
1 + (1 )
|z| = | | 1. (A.1)
1
Note that this is verified for stepsize h = 0 because if so = h = 0 for any
ANALYSIS and z = 1. So the question is:36 what happens for finite h > 0? There are three
possibilities:
Y ANALYSIS 36
(C) If (A.1) is verified for h = [0, hmax ], with hmax > 0, the integrator is called con-
behavior for differentditionally stable.In
can be simply this case
obtained hmax is the stability limit and [0, hmax ] the stability
by the
rplot of z versus
behavior =range.
for different hcan [0,be4] for FE,
simply BE andby
obtained TRthe
= = 1
(U) If
= (A.1)
h [0, 4] for FE,
ation plot. Clearly
d plot of z versus BE ( 1) and TR ( ) are in
is violated forBE 2 and
an TR h > 0, the integrator is called unconditionally
stepsize
ocation
showplot.
that this happens
Clearlyunstable. for all h >
BE ( = 1) and TR ( = 2 ) are in
0. On the 1 other
t fact, thatthis
setting
to show = 0happens
in (3.5)for gives = 0.
all hA > 1 +On ,the which
other
2Ifand
fact,goes to
setting =asIf0in
(A)
(A.1) .
(3.5)isgives A = for
verified 1 +all , hwhich
0, the integrator is called A-stable.
2 and goes to as .
Obviously (A) is the most desirable objective, followed by (C), whereas (U) is
unacceptable.
hen the 1
d orderthe z 1
BE
when 0z
ion plot
ond order BE
0
TR Stable
lay that
ation plot 1
ections, TR Stable
splay that 1 FE
irections, 2
ing the
FE
e. Thethe Unstable
wing 2
mplex 3 Unstable
ze. The 4 2 1 0
ctively, 3 = h
omplex
4 = h factor 2 1 0
s. This
pectively, Figure 3.2. Amplication z for real , =
ons. This h [0, 4] and three integrators.
Figure 3.2. Amplication factor z for real , =
h [0, 4] and three integrators.
s[(1+(1-)*)/(1-*)]<=1,1,0];
The complex case is of particular interest when the test equation comes from the
R+I*I,0],{R,-4,0},{I,-2,2},
Abs[(1+(1-)*)/(1-*)]<=1,1,0];
reduction of a second order equation with oscillatory solutions. An amplification
ourLines->False];
[R+I*I,0],{R,-4,0},{I,-2,2},
plot can be done with a 2D plot over the complex plane, with <[] and =[] along
ntourLines->False];
nerate the plot ofxFigure
and3.4.
y, respectively, and displaying only the stable and unstable regions. This is
generate the plotcalled
of Figurea3.4.
stability chart.
duces a sta- 2
e 3.4 forathe
roduces sta- Im()
2
plane.
ure Thethe
3.4 for Im()
1
plane. The
nction
1
function
(3.6) Stable 0
(3.6) Stable 0
is complex
Unstable 1
chSois given
complexa
able. When Unstable 1
e. So given a
Re()
ur plot in the
stable. When 4 2
3 2 1 0
ntour
(requested
plot in the Re()
2
are very Figure 4
ines(requested 3
3.4. Stability 2 for complex
chart 1 = 0 h,
ion
and the Forward Euler integrator.
r lines are very Figure 3.4. Stability chart for complex = h,
and the Forward Euler integrator.
4, which shows the stability boundary to be the circle
asks
3.4, that contour
which lines
shows the not be shown
stability to reduce
boundary clutter,
to be the circle
on
se colors sharper.
asks that contour lines not be shown to reduce clutter,
2. Numerical Solution of Nonlinear Equations 37
There are methods with a rational stability function z(), for which A-stability is
not as desirable a property as it seems to be, because for rational stability functions
z() we have that for real and very negative, |z()| is less than 1 but very close
to 1, so that the stiff components are damped out very slowly. This motivates the
following definition:
(L) L-STABILITY: A method is said to be L-stable if is A-stable and if in addition
lim z() 0, as 1
1.5. Exercises
i = 0 /* iteration counter */
repeat
xi = ff0(x i)
(xi )
xi+1 = xi + xi
i=i+1
if i>IMAX then ERROR: No convergence within IMAX iterations
until xi < T OL
repeat
xi = J1 (xi ) f (xi )
xi+1 = xi + xi
i=i+1
if i>IMAX then ERROR: No convergence within IMAX iterations
until kxi k < T OL
2. Numerical Solution of Nonlinear Equations 39
41
Appendix B
Programming Exercises
1.1. Exercises
Download the source files from the blackboard course page. Unpack the source
files and compile the main program TimeIntegration.java using your favorite java
programming environment (netbeans, eclipse, etc.).
Please note that the jar-file plot.jar has to be included in the project.
The following ordinary differential equations are implemented in the program
code:
(i) Damped harmonic oscillation
+ 2 x(t) = 0,
x(t) + 2 x(t) x(t = 0) = x0 , x(t
= 0) = v0 .
Parameters: ,
Initial conditions: x0 , v0
(ii) Stiff differential equation
+ (x(t) sin t) = 0.
x(t)
Parameters: (= 100)
Initial conditions: t0 = 0, x0
(iii) Simple first order differential equation
x(t) = 0.
x(t)
Parameters: < 0
Initial conditions: x0
z = f (z)
42 B. Programming Exercises
At first, we apply the general midpoint rule to replace the differential equations
by difference equations of the following form
zn+1 zn
= f (zn+1 + (1 )zn ).
t
These equations can be recast into
Let us denote the unknowns zn+1 by z and let us introduce zn+ = zn+1 +(1)zn .
Then the set of (nonlinear) equations to be solved reads
repeat
zi = J1 (zi ) g(zi )
zi+1 = zi + zi
i=i+1
if i>IMAX then ERROR: No convergence within IMAX iterations
until kzi k < T OL
1.3.1. f (z)
The function f and its derivative with respect to z are computed in a single method
named get_f_dfdz. As an example consider the differential equation x(t) +
1. Programming Exercise 1 (Numerical Time Integration) 43
dfdz [ 0 ] [ 0 ] = 0.0;
dfdz [ 0 ] [ 1 ] = 0.0;
dfdz [ 1 ] [ 0 ] = d e l t a Math . cos ( z [ 0 ] ) ;
dfdz [ 1 ] [ 1 ] = d e l t a ;
}
The function g is obtained using g(z) = zzn f (zn+ )t. The derivative of g with
respect to z is the Jacobian matrix which is required to do the Newton-Raphson
iteration. It can be computed by
g f
= I t,
z z
where I is the identity matrix. This is implemented in the following code snippet
public void get_g_dgdz ( double [ ] g , double [ ] [ ] dgdz , double [ ] z ,
double [ ] z0 , double dt , double alpha )
{
i n t n = get_num_equations ( ) ;
double [ ] z_alpha = new double [ n ] ;
double [ ] f = new double [ n ] ;
double [ ] [ ] dfdz = new double [ n ] [ n ] ;
g e t _ f _ d f d z ( f , dfdz , z_alpha ) ;
f o r ( i n t i = 0 ; i <n ; ++ i )
{
g [ i ] = z [ i ] z0 [ i ] f [ i ] dt ;
44 B. Programming Exercises
f o r ( i n t j = 0 ; j <n ; ++ j )
{
i f ( i == j )
{
dgdz [ i ] [ j ] = 1 . 0 dfdz [ i ] [ j ] alpha dt ;
}
else
{
dgdz [ i ] [ j ] = 0 . 0 dfdz [ i ] [ j ] alpha dt ;
}
}
}
}
Finally, the nonlinear equations are solved using the Newton-Raphson scheme
described above. The corresponding code reads
public void do_timestep ( double [ ] z , double dt , double alpha )
{
i n t n = get_num_equations ( ) ;
double norm_g ;
double dz ;
double [ ] z0 = new double [ n ] ;
double [ ] g = new double [ n ] ;
double [ ] [ ] dgdz_inv = new double [ n ] [ n ] ;
double [ ] [ ] dgdz = new double [ n ] [ n ] ;
/ / NewtonRaphson i t e r a t i o n
f o r ( i n t i = 0 ; i < m a x _ i t e r a t i o n s ; ++ i )
{
get_g_dgdz ( g , dgdz , z , z0 , dt , alpha ) ;
norm_g = 0 . 0 ;
f o r ( i n t j = 0 ; j <n ; ++ j ) norm_g += g [ j ] g [ j ] ;
norm_g = Math . s q r t ( norm_g ) ;
f o r ( i n t j = 0 ; j <n ; ++ j )
{
dz = 0 . 0 ;
f o r ( i n t k = 0 ; k<n ; ++k ) dz = dz + dgdz_inv [ j ] [ k ] g [ k ] ;
z [ j ] = z [ j ] dz ;
}
}
}
2. Programming Exercise 2 (1D material models) 45
g0 = n+1 (tn+1 ) = 0
g1 = n+1 E(n+1 pn+1 ) = 0
g2 = pn+1 pn sign(n+ qn+ ) = 0
g3 = n+1 n = 0
g4 = qn+1 qn H sign(n+ qn+ ) = 0
g5 = f (n+1 , qn+1 , n+1 ) = |n+1 qn+1 | (Y + Kn+1 ) = 0
which has to be solved for the six unknowns n+1 , n+1 , pn+1 , qn+1 , n+1 , .
The solution is obtained using the NewtonRaphson method. The start vector is
the vector resulting from the trial step
n+1
trial
n+1
p
n
n .
z0 =
qn
0
2.2.1. MaterialModel.java
double norm_g ;
double dz , f ;
double [ ] z0 = new double [ n ] ;
double [ ] g = new double [ n ] ;
double [ ] [ ] dgdz_inv = new double [ n ] [ n ] ;
double [ ] [ ] dgdz = new double [ n ] [ n ] ;
f = c o m p u t e _ t r i a l _ v a l u e s ( z , z0 , t , dt , alpha ) ;
if ( f >0.0)
{
f o r ( i n t i = 0 ; i <n ; ++ i ) z0 [ i ] = z [ i ] ;
/ / R e t u r n mapping
/ / NewtonRaphson i t e r a t i o n
f o r ( i n t i = 0 ; i < m a x _ i t e r a t i o n s ; ++ i )
{
get_g_dgdz ( g , dgdz , z , z0 , t , dt , alpha ) ;
norm_g = 0 . 0 ;
f o r ( i n t j = 0 ; j <n ; ++ j ) norm_g += g [ j ] g [ j ] ;
norm_g = Math . s q r t ( norm_g ) ;
f o r ( i n t j = 0 ; j <n ; ++ j )
{
dz = 0 . 0 ;
f o r ( i n t k = 0 ; k<n ; ++k ) dz = dz + dgdz_inv [ j ] [ k ] g [ k ] ;
z [ j ] = z [ j ] dz ;
}
}
}
}
2.2.2. MaterialModel_LinHardeningPlasticity.java
double K = m a t e r i a l _ p a r a m e t e r [ 2 ] ;
double H = m a t e r i a l _ p a r a m e t e r [ 3 ] ;
z _ t r i a l [0] = compute_total_strain ( t ) ;
z _ t r i a l [ 1 ] = E ( c o m p u t e _ t o t a l _ s t r a i n ( t ) z0 [ 2 ] ) ;
z _ t r i a l [ 2 ] = z0 [ 2 ] ;
z _ t r i a l [ 3 ] = z0 [ 3 ] ;
z _ t r i a l [ 4 ] = z0 [ 4 ] ;
z _ t r i a l [ 5 ] = Math . abs ( z _ t r i a l [ 1 ] z0 [ 4 ] ) ( sigmaYield + K z0 [ 3 ] ) ;
return z _ t r i a l [ 5 ] ;
}
3.1.1. Theory
= dev() , tr() = 0,
r
2
f (, q) = kk (y + Hiso ),
3
p = N, N := ,
kk
2
= (Hkin N + Hnl ) ,
3
r
2
= .
3
Discrete equations using the backward Euler method
g0 = n+1 (tn+1 )
g1 = n+1 C : (n+1 pn+1 )
g2 = pn+1 pn Nn+1 , Nn+1 := n+1 ,
k n+1 k
r
2
g3 = n+1 n ,
3
2
g4 = n+1 n Hkin Nn+1 + Hnl n+1 ,
3 r
2
g5 = f ( n+1 , n+1 , n+1 ) = k n+1 k (y + Hiso n+1 ), = dev .
3
Material parameter in the program: E, , Y , Hiso , Hkin , Hnl
Source code from J2FlowTheoryl.java
{
/ v a r i a b l e s :
z [0...5] : total_strain
z [ 6 . . . 1 1 ] : sigma
z [12...17] : plastic_strain
z [18] : alpha
z [19...24] : beta
z [25] : delta_lambda
/
double [ ] x i = new double [ 6 ] ;
double [ ] devsig = new double [ 6 ] ;
50 B. Programming Exercises
/ / xi = devsig beta
xi [0] = devsig [ 0 ] z[19];
xi [1] = devsig [ 1 ] z[20];
xi [2] = devsig [ 2 ] z[21];
xi [3] = devsig [ 3 ] z[22];
xi [4] = devsig [ 3 ] z[23];
xi [5] = devsig [ 5 ] z[24];
/ / norm ( x i )
norm_xi = Math . s q r t ( x i [ 0 ] x i [ 0 ] + x i [ 1 ] x i [ 1 ] + x i [ 2 ] x i [ 2 ] +
2 x i [ 3 ] x i [ 3 ] + 2 x i [ 4 ] x i [ 4 ] + 2 x i [ 5 ] x i [ 5 ] ) ;
/ / n = x i / norm ( x i )
i f ( norm_xi > 1 . 0 e 8)
{
n [ 0 ] = x i [ 0 ] / norm_xi ;
n [ 1 ] = x i [ 1 ] / norm_xi ;
n [ 2 ] = x i [ 2 ] / norm_xi ;
n [ 3 ] = x i [ 3 ] / norm_xi ;
n [ 4 ] = x i [ 4 ] / norm_xi ;
n [ 5 ] = x i [ 5 ] / norm_xi ;
}
else
{
n[0] = 1.0;
n[1] = 1.0;
n[2] = 1.0;
n[3] = 0.0;
n[4] = 0.0;
n[5] = 0.0;
}
// total strain
g [0] = z [0] compute_total_strain ( t ) ;
g[1] = z [1];
g[2] = z [2];
g[3] = z [3];
g[4] = z [4];
g[5] = z [5];
// stress
3. Programming Exercise 3 (3D plasticity) 51
g [ 6 ] = z [ 6 ] lambda ( z [ 0 ] + z [ 1 ] + z [ 2 ] ( z [ 1 2 ] + z [ 1 3 ] + z [ 1 4 ] ) )
2mu ( z [0] z [ 1 2 ] ) ;
g [ 7 ] = z [ 7 ] lambda ( z [ 0 ] + z [ 1 ] + z [ 2 ] ( z [ 1 2 ] + z [ 1 3 ] + z [ 1 4 ] ) )
2mu ( z [1] z [ 1 3 ] ) ;
g [ 8 ] = z [ 8 ] lambda ( z [ 0 ] + z [ 1 ] + z [ 2 ] ( z [ 1 2 ] + z [ 1 3 ] + z [ 1 4 ] ) )
2mu ( z [2] z [ 1 4 ] ) ;
g[9] = z [9]
2mu ( z [3] z [ 1 5 ] ) ;
g[10] = z [10]
2mu ( z [4] z [ 1 6 ] ) ;
g[11] = z [11]
2mu ( z [5] z [ 1 7 ] ) ;
// plastic strain
g [ 1 2 ] = z [ 1 2 ] z0 [ 1 2 ] z [25]n [ 0 ] ;
g [ 1 3 ] = z [ 1 3 ] z0 [ 1 3 ] z [25]n [ 1 ] ;
g [ 1 4 ] = z [ 1 4 ] z0 [ 1 4 ] z [25]n [ 2 ] ;
g [ 1 5 ] = z [ 1 5 ] z0 [ 1 5 ] z [25]n [ 3 ] ;
g [ 1 6 ] = z [ 1 6 ] z0 [ 1 6 ] z [25]n [ 4 ] ;
g [ 1 7 ] = z [ 1 7 ] z0 [ 1 7 ] z [25]n [ 5 ] ;
/ / alpha
g [ 1 8 ] = z [ 1 8 ] z0 [ 1 8 ] z [ 2 5 ] ;
/ / beta
g[19] = z [19] z0 [ 1 9 ] z [ 2 5 ] ( Hkinn [ 0 ] + Hnlz [ 1 9 ] ) ;
g[20] = z [20] z0 [ 2 0 ] z [ 2 5 ] ( Hkinn [ 1 ] + Hnlz [ 2 0 ] ) ;
g[21] = z [21] z0 [ 2 1 ] z [ 2 5 ] ( Hkinn [ 2 ] + Hnlz [ 2 1 ] ) ;
g[22] = z [22] z0 [ 2 2 ] z [ 2 5 ] ( Hkinn [ 3 ] + Hnlz [ 2 2 ] ) ;
g[23] = z [23] z0 [ 2 3 ] z [ 2 5 ] ( Hkinn [ 4 ] + Hnlz [ 2 3 ] ) ;
g[24] = z [24] z0 [ 2 4 ] z [ 2 5 ] ( Hkinn [ 5 ] + Hnlz [ 2 4 ] ) ;
// f
g [ 2 5 ] = norm_xi ( s i g m a _ y i e l d + Hiso z [ 1 8 ] ) ;
}
The manual computation of the Jacobian matrix for all 26 equations is a cum-
bersome and error-prone task. It can be done by the help of a symbolic algebra
system or it can be done numerically. The numerical computation of the Jacobian
is done as follows. Assume that we consider a vector of functions g(z). To compute
J = g we use the difference quotient
gi (z1 , z2 , . . . , zj + , . . . , zn ) gi (z1 , z2 , . . . , zj , . . . , zn )
Jij = lim .
0
A good approximation of the derivative is found if the pertubation is the square
root of the machine accuracy. In a double precision computation we choose =
108 . The numerical Jacobian is computed in the follow code segment
Source code from MaterialModel.java
public void compute_numerical_Jacobian ( double [ ] [ ] dgdz , double [ ] z ,
double [ ] z0 , double t , double dt , double alpha )
{
i n t n = get_num_equations ( ) ;
52 B. Programming Exercises
get_g ( g0 , z , z0 , t , dt , alpha ) ;
f o r ( i n t j = 0 ; j <n;++ j )
{
f o r ( i n t i = 0 ; i <n ; ++ i )
{
z_pertubated [ i ] = z [ i ] ;
}
z _ p e r t u b a t e d [ j ] += eps ;
get_g ( g , z_pertubated , z0 , t , dt , alpha ) ;
f o r ( i n t i = 0 ; i <n ; ++ i )
{
dgdz [ i ] [ j ] = ( g [ i ] g0 [ i ] ) /eps ;
}
}
}
53
Appendix C
Literature
The following list contains selected text books on computational plasticity, contin-
uum mechanics, theory of plasticity and non-linear finite element method.
The book by Simo & Hughes covers most of the topics presented in this course.
[1] J.C. Simo & T.J.R. Hughes, Computational Inelasticity, Springer Verlag, 1998.
[2] F. Dunne & N. Petrinic (2005): Introduction to Computational Plasticity, Oxford
University Press.
[3] Hughes, T.J.R. (2000): The Finite Element Method-Linear Static and Dynamic
Finite Element Analysis, Dover Publications, Mineola, New York.
[4] Zienkiewicz, O.C. and Taylor, R.L. (2002) The Finite Element Method, Vol. 1
and Vol. 2, Butterworth-Heinemann.
[5] Marsden, J.E. and Hughes, T.J.R. (1994): The Mathematical Foundations of
Elasticity, Dover Publications, Mineola, New York.
[6] Khan, A.S. & Huang, S. [1994], Continuum Theory of Plasticity, John Wiley &
Sons.
[7] Lemaitre, J. & Chaboche, J.-L. [2000], Mechanics of solid materials, 3rd Printing
Cambridge University Press.
[8] Maugin, G. A. [1992], The Thermomechanics of Plasticity and Fracture, Cam-
bridge University Press.
[9] Ogden, R. W. [1984], Non-linear elastic deformations, Dover Publications.
[10] Belytschko, T., Wam, K. L., Moran, B., Liu, W. K. [2000], Nonlinear Finite Ele-
ments for Continua and Structures, John Wiley & Sons.
[11] Bathe, K.-J. [1996], Finite Element Procedures, Prentice Hall.