Sei sulla pagina 1di 59

RUHR-UNIVERSITT BOCHUM

Fakultt fr Bauingenieurwesen

Master of Science Programme


Computational Engineering

Lecture Notes
Computational Plasticity

by

Dr. Ulrich Hoppe

Version 0.4

(special version for the


Vietnamese German University,
May 2010)
iii

Contents

1. OneDimensional Plasticity Models 1


1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1. Material Behaviour . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Elastic Material Behaviour . . . . . . . . . . . . . . . 1
1.1.2. Viscoelastic Material Behaviour . . . . . . . . . . . . 2
1.1.3. Elastoplastic Material Behaviour . . . . . . . . . . . 2
1.1.4. Viscoplastic Material Behaviour . . . . . . . . . . . . 3
1.2. Motivation: Friction Slider Experiment . . . . . . . . . . . . . 3
2. Elementary Models for OneDimensional Plasticity . . . . . . . . . . 4
2.1. Perfect Plasticity Model . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1. Assumptions, Observations, Definitions . . . . . . . 4
2.1.2. Model Summary . . . . . . . . . . . . . . . . . . . . . 6
2.1.3. Stress-Strain Rate Form . . . . . . . . . . . . . . . . . 6
2.2. Model for Isotropic Hardening Plasticity . . . . . . . . . . . . 7
2.2.1. Additional Assumptions . . . . . . . . . . . . . . . . 7
2.2.2. Model Summary . . . . . . . . . . . . . . . . . . . . . 8
2.2.3. StressStrain Rate Form . . . . . . . . . . . . . . . . . 8
2.3. Model for Isotropic and Kinematic Hardening Plasticity . . . 9
2.3.1. Additional Assumptions . . . . . . . . . . . . . . . . 10
2.3.2. Model Summary . . . . . . . . . . . . . . . . . . . . . 11
2.3.3. Plastic Slip and Stress-Strain Rate Form . . . . . . . 11
3. Incremental Form of OneDimensional RateIndependent Plasticity 12
3.1. Incremental Setting . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2. Isotropic Hardening Model . . . . . . . . . . . . . . . . . . . . 13
3.2.1. Differential Algebraic Equations . . . . . . . . . . . . 13
3.2.2. Incremental Equations . . . . . . . . . . . . . . . . . 13
3.2.3. Operator Splitting . . . . . . . . . . . . . . . . . . . . 13
3.2.4. Elastic Step (Predictor Step) . . . . . . . . . . . . . . 14
3.2.5. Plastic Step (Corrector Step) . . . . . . . . . . . . . . 14
3.2.6. Return Mapping . . . . . . . . . . . . . . . . . . . . . 14
3.2.7. Analytical Solution of (1.1) . . . . . . . . . . . . . . . 15
3.2.8. Return Mapping algorithm . . . . . . . . . . . . . . . 15
3.2.9. Numerical Solution . . . . . . . . . . . . . . . . . . . 16
3.3. Isotropic and Kinematic Hardening Model . . . . . . . . . . . 17
3.3.1. Differential Equations . . . . . . . . . . . . . . . . . . 17
3.3.2. Incremental Equations . . . . . . . . . . . . . . . . . 18
iv Contents

3.3.3. Operator Splitting . . . . . . . . . . . . . . . . . . . . 18


3.3.4. Elastic Step (Predictor Step) . . . . . . . . . . . . . . 18
3.3.5. Plastic Step (Corrector Step) . . . . . . . . . . . . . . 19
3.3.6. Return Mapping . . . . . . . . . . . . . . . . . . . . . 19
3.3.7. Analytical Solution of Equations (1.2) . . . . . . . . 19
3.3.8. Return Mapping Algorithm . . . . . . . . . . . . . . 20
3.3.9. Direct Numerical Solution . . . . . . . . . . . . . . . 20

2. Three-dimensional Rate-Independent Plasticity 23


1. Stress Space Formulation . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.1. Model Description . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.2. Elastoplastic Tangent Modulus . . . . . . . . . . . . . . . . . . 25
1.3. Model Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2. Classical J2 Flow Theory . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1. Elastoplastic Tangent Moduli . . . . . . . . . . . . . . . . . . . 28
3. Integration Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1. Strain-driven Problems . . . . . . . . . . . . . . . . . . . . . . 28
3.2. Elastic Trial State . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3. Plastic Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4. Example: J2 Flow Theory . . . . . . . . . . . . . . . . . . . . . 29
3.4.1. Discrete Equations . . . . . . . . . . . . . . . . . . . . 29
3.4.2. Trial State . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.3. Exact Linearization . . . . . . . . . . . . . . . . . . . 30

A. Appendix: Numerical Algorithms 33


1. Numerical Integration of Ordinary Differential Equations (ODE) . . 33
1.1. General Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.2. Generalized midpoint rule . . . . . . . . . . . . . . . . . . . . 34
1.3. Accuracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.4. Stability and Stiff Differential Equations . . . . . . . . . . . . 35
1.5. Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2. Numerical Solution of Nonlinear Equations . . . . . . . . . . . . . . . 37
2.1. Scalar Newton-Raphson method . . . . . . . . . . . . . . . . . 37
2.2. Vectorial Newton-Raphson method . . . . . . . . . . . . . . . 38

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

1.1. Material Behaviour

The characterization of the mechanical behaviour of an unknown material almost


always begins with performing a tensile experiment. We consider a stepwise
change in the axial stress and measure the strain of the tensile bar as a function
of time. From these plots basic conclusions can be drawn concerning the material
behaviour.

1.1.1. Elastic Material Behaviour

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

Figure 1.1.: Elastic material response

A typically one-dimensional device that represents linear elastic behaviour is a


spring, cf. Fig. 1.2. Here and henceforth, we will use the notions stress and
strain  to describe the behaviour of springs, dash pots and sliders. These notions
have a similar meaning like force and displacement if we assume the cross section
of the bar and its initial length to be of unit area and unit length, respectively. The
linear stress strain relationship then reads
= E , E: elastic modulus.
2 1. OneDimensional Plasticity Models

E
s
,
e

Figure 1.2.: Spring

1.1.2. Viscoelastic Material Behaviour

Viscoelastic material behaviour is time-dependent. The stress is a function of the


strain rate. There is a phase difference between the stress and the strain response,
which results in a hysteresis loop, cf. Fig. 1.3.

s e

t t
t1 t2 t1 t2

Figure 1.3.: Viscoelastic material behaviour

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

Figure 1.4.: Dash pot

1.1.3. Elastoplastic Material Behaviour

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

 = 0, if || < Y , Y : yield stress.


1. Introduction 3

s e
e
e
p
t e t
t1 t2 t1 t2

Figure 1.5.: Elastoplastic material behaviour

s
y

s
,
e

Figure 1.6.: Friction slider

1.1.4. Viscoplastic Material Behaviour

When time dependent behaviour is accompanied by permanent deformation, the


behaviour is referred to as viscoplastic, cf. Fig. 1.7.

s e

t t
t1 t2 t1 t2

Figure 1.7.: Viscoplastic material behaviour

A typical system that is used to model viscoplastic behaviour is a combination of


springs, a dash pot, and a friction slider, cf. Fig. 1.8. The governing equations will
be derived later in the chapter on Programming Exercices.

1.2. Motivation: Friction Slider Experiment

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

Figure 1.8.: Viscoplastic (Perzyna) model

Figure 1.9.: Friction slider experiment

2. Elementary Models for OneDimensional Plasticity

2.1. Perfect Plasticity Model

2.1.1. Assumptions, Observations, Definitions

(i) The total strain  splits into an elastic part e and a plastic part p
 = e + p .

(ii) The stress is given by the linear elastic relationship


= Ee = 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

These cases can be recast into the following single equation

p = sign() if f () = 0,

which goes by the name flow rule. The signfunction is defined by


(
+1, if x > 0
sign(x) = .
1, if x < 0

The boundary of the elastic range E is defined by

E = { R | f () := || Y = 0}

and is called the yield surface.


(vi) The evolution of p can be completely described with the evolution equa-
tion p = sign() provided that and are restricted by certain unilateral
constraints:
(a) must be admissible, that is E , and must be nonnegative:

0 and f () 0

(b) = 0 if f () < 0 and > 0 only if f () = 0. It follows

() = 0
f

(c) Consistency condition: > 0 f = 0 and f < 0 = 0, which can be


recast into the single condition

f() = 0

Conditions (a) and (b) go by the name KuhnTucker complementary conditions.


6 1. OneDimensional Plasticity Models

2.1.2. Model Summary

OneDimensional RateIndependent Perfect Plasticity

Elastic stressstrain relationship

= E( p )

Flow rule

p = sign()

Yield function

f () = || Y

KuhnTucker complementary conditions

0, f () 0, () = 0
f

2.1.3. Stress-Strain Rate Form

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().

Substitution of this result into the flow rule yields

p =  for f () = 0

and finally
(
E  if f < 0
= .
0 if f = 0
2. Elementary Models for OneDimensional Plasticity 7

Result: The plastic slip equals the applied strain rate.


In a strain-driven tension test a material body is loaded such that the strain/time
function shown in Fig. 1.10 is obtained. The stress response of the perfect plastic
material is shown in Fig. 1.11.

e
emax

Figure 1.10.: Straintime function applied in subsequent tension tests

s
sy

e
emax

-sy

Figure 1.11.: Stressstrain response of the perfect plasticity model

2.2. Model for Isotropic Hardening Plasticity

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.

2.2.1. Additional Assumptions

(i-ii) No changes with respect to 2.1.


(iii) The center of E remains at the origin. The hardening is linear in the amount
of plastic flow (linear in |p |).

f (, ) = || (Y + K)
8 1. OneDimensional Plasticity Models

work hardening
s

perfect plasticity

Figure 1.12.: Stressstrain response of work hardening (or strain hardening)


material

K : plastic modulus
: internal hardening variable
= |p | : simplest evolution equation for
(iv-vi) No changes with respect to 2.1.

2.2.2. Model Summary

OneDimensional RateIndependent Plasticity With Isotropic Harden-


ing

Elastic stressstrain relationship

= E( p )

Flow rule

p = sign()

Isotropic hardening law

Yield function

f (, ) = || (Y + K) 0

KuhnTucker complementary conditions

0, f (, ) 0, (, ) = 0
f

2.2.3. StressStrain Rate Form

The complementary condition f = 0 implies that when f < 0 we will have = 0


and when > 0 we will have f = 0.
2. Elementary Models for OneDimensional Plasticity 9

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

The stress response of a body subjected to the straintime function shown in


Fig. 1.10 is given in Fig. 1.13.

s
sy Ka

Es e Es
emax

-sy
Ka

Figure 1.13.: Stressstrain response of the isotropic hardening model

2.3. Model for Isotropic and Kinematic Hardening Plasticity

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

Figure 1.14.: Bauschinger effect

2.3.1. Additional Assumptions

(i-ii) No changes with respect to 2.2.


(iii) The location of the center of E is defined by an additional internal variable
q called back stress. The yield function reads

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

H : kinematic hardening modulus


(iv-vi) No changes with respect to 2.2.
2. Elementary Models for OneDimensional Plasticity 11

2.3.2. Model Summary

OneDimensional RateIndependent Plasticity With Isotropic and


Kinematic Hardening

Elastic stressstrain relationship

= E( p )

Flow rule

p = sign( q), =q overstress

Isotropic and kinematic hardening law


= , sign( q)
q = H

Yield function

f (, q, ) = | q| (Y + K) 0

KuhnTucker complementary conditions

0, f (, q, ) 0, (, q, ) = 0
f

2.3.3. Plastic Slip and Stress-Strain Rate Form

The complementary 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
f = + q +
q
= sign( q) (E( p ) q)
+ K

= sign( q)E  (E + H + K) = 0
E
=  sign( q)
E+H +K
Hence, we obtain the following rate form
(
E  if f < 0
= E(H+K) .
E+H+K
 if f = 0

The stress response of a body subjected to the straintime function shown in


Fig. 1.10 is given in Fig. 1.15.
12 1. OneDimensional Plasticity Models

s Ka+q

sy

Es
q
Es e
emax

-sy

Figure 1.15.: Stressstrain response of the isotropic and kinematic hardening


model

3. Incremental Form of OneDimensional RateIndependent Plasticity

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.

3.1. Incremental Setting

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

3.2. Isotropic Hardening Model

3.2.1. Differential Algebraic Equations

We consider the rateindependent plasticity model with isotropic hardening.

= E( p ) elastic stressstrain relation

p = sign() flow rule

= isotropic hardening law

f (, ) = || (Y + K) yield function

0,

f (, ) 0, (, ) = 0 KuhnTucker complementary conditions


f

3.2.2. Incremental Equations

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

3.2.3. Operator Splitting

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

3.2.4. Elastic Step (Predictor Step)

Idea: Freezing plastic flow ( = 0).


Elastic trial state: The trial state is determined solely in terms of the initial condi-
tions and the given incremental strain. This state in general will not correspond
to any actual, physically admissible state unless the incremental process is elastic.
The assumption = 0 results in

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 )

3.2.5. Plastic Step (Corrector Step)

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

3.2.6. Return Mapping

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 :

n+1 = E(n+1 pn+1 )


= E(n+1 pn ) E(pn+1 pn )
trial
= n+1 E sign(n+1 ).

Inserting this expression into the incremental equations leads to


trial
n+1 = n+1 E sign(n+1 )
pn+1 p
= n + sign(n+1 )
(1.1)
n+1 = n +
fn+1 = |n+1 | (Y + Kn+1 ) = 0.

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

3.2.7. Analytical Solution of (1.1)

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

3.2.8. Return Mapping algorithm

The analytical solution is summarized in the following algorithm:

Algorithm 1.1: Return Mapping Algorithm (isotropic hardening model)


Initial data: pn , n
Strain increment: n+1 = n + n
Compute elastic trial stress and test for plastic loading
trial
n+1 := E(n+1 pn )
trial trial
fn+1 := |n+1 | (Y + Kn )
trial
if fn+1 0 then
Elastic step: ()n+1 = ()trial
n+1
Exit
else
n+1 f trial
:= E+K >0
trial trial
n+1 := n+1 E sign(n+1 )
p p trial
n+1 := n + sign(n+1 )
n+1 := n +
end
16 1. OneDimensional Plasticity Models

elastic trial step


return mapping
s
EK/(E+K)
sy 1

E
1
e
emax
Figure 1.16.: Return mapping algorithm

3.2.9. Numerical Solution

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 vector of unknowns is



n+1
pn+1
x= n+1 .

To apply the Newton-Raphson scheme we have to compute the Jacobian matrix


g g g g
1 1 1 1
x1 x2 x3 x4 1 E 0 0
g g g g
g 21 x22 x23 x24 0 1 0 sign(n+1 )
J= = x
g3 g3 g3 g3 =
.
x x1 x2 x3 x4 0 0 1 1
g4 g4 g4 g4 sign(n+1 ) 0 K 0
x1 x2 x3 x4

Next we have to compute the inverse of J. To simplify the writing we introduce


the abbreviation term s = sign(n+1 ) and obtain

K EK sEK sE
1 1 K sK s
J1 = .
E + K s sE E 1
s sE K 1
3. Incremental Form of OneDimensional RateIndependent Plasticity 17

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.

3.3. Isotropic and Kinematic Hardening Model

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.

3.3.1. Differential Equations

We consider the rateindependent plasticity model with isotropic and kinematic


hardening:


= E( p ) elastic stressstrain relation

p = q is the overstress or relative stress
 = sign() flow rule,




= ,
q = H sign() hardening laws

f (, q, ) = | q| (Y + K) yield function




0,

f (, q, ) 0, (, q, ) = 0 complementary conditions
f
18 1. OneDimensional Plasticity Models

3.3.2. Incremental Equations

Time incremental form using the backward Euler method.


Flow rule
pn+1 pn
= sign(n+1 qn+1 )
t t
Isotropic and kinematic hardening law
qn+1 qn
= H sign(n+1 qn+1 )
t t
n+1 n
=
t t
Yield function
fn+1 = f (n+1 , qn+1 , n+1 ) = |n+1 qn+1 | (Y + Kn+1 )
Complementary conditions
0, fn+1 0, fn+1 = 0

Notation: Relative stress = q

3.3.3. Operator Splitting

predictor + corrector
= E( p ) = E  E sign()
p = sign() = 0 + sign()
= = 0 +
sign() =
q = H 0 + sign()
H
(, q, ) =
0 = f 0 + (, q, )
f

3.3.4. Elastic Step (Predictor Step)

Freezing plastic flow ( = 0)


Elastic trial state: The trial state is determined solely in terms of the initial condi-
tions and the given incremental strain. This state in general will not correspond to
any actual, physically admissible state unless the incremental process is elastic.
Flow rule and stressstrain relationship
p,trial
n+1 = n
p

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

3.3.5. Plastic Step (Corrector Step)

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

3.3.6. Return Mapping

trial
Expression for n+1 in terms of n+1 :

n+1 = E(n+1 pn+1 )


= E(n+1 pn ) + E(pn+1 pn )
trial
= n+1 E sign(n+1 )

Inserting this expression into the incremental equations leads to


trial
n+1 = n+1 E sign(n+1 )
pn+1 p
= n + sign(n+1 )
qn+1 = qn + H sign(n+1 )
(1.2)
n+1 = n +
fn+1 = |n+1 qn+1 | (Y + Kn+1 ) = 0,
with n+1 = n+1 qn+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)

3.3.7. Analytical Solution of Equations (1.2)

An analytical solution can be found by the following considerations


trial trial
n+1 = |n+1 | sign(n+1 ) = |n+1 | sign(n+1 ) E sign(n+1 qn+1 )
introduce n+1 := n+1 qn+1
n+1 = n+1 qn+1 = E(n+1 pn+1 ) qn H sign(n+1 )
trial
= n+1 qn E sign(n+1 ) H sign(n+1 )
trial
= n+1 (E + H) sign(n+1 )
trial trial
|n+1 | sign(n+1 ) = |n+1 | sign(n+1 ) (E + H) sign(n+1 )
trial trial
(|n+1 | + (E + H)) sign(n+1 ) = |n+1 | sign(n+1 )
trial
sign(n+1 ) = sign(n+1 )
trial
(|n+1 | + (E + H)) = |n+1 |
20 1. OneDimensional Plasticity Models

fn+1 = |n+1 | (Y + Kn+1 )


trial
= |n+1 | (E + H) (Y + Kn+1 )
trial
= |n+1 | (E + H) (Y + Kn ) K (n+1 n )
| {z }

trial
= fn+1 (E + H + K) = 0
trial
fn+1
=
E+H +K

3.3.8. Return Mapping Algorithm

Algorithm 1.2: Return Mapping Algorithm (Isotropic and Kinematic Hardening)


Initial data: pn , n , qn
Strain increment: n+1 = n + n
Compute elastic trial stress and test for plastic loading
trial
n+1 := E(n+1 pn )
trial trial
n+1 := n+1 qn
trial trial
fn+1 := |n+1 | (Y + Kn )
trial
if fn+1 0 then
Elastic step: ()n+1 = ()trial
n+1
Exit
else
f trial
n+1
:= E+K+H >0
trial trial
n+1 := n+1 E sign(n+1 )
p p trial
n+1 := n + sign(n+1 )
trial
qn+1 := qn + H sign(n+1 )
n+1 := n +
end

3.3.9. Direct Numerical Solution

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

To apply the Newton-Raphson scheme we have to compute the Jacobian matrix


g1 g1 g1 g1 g1
x1 x2 x3 x4 x5 1 E 0 0 0
g2 g2 g2 g2 g2
0 1 0 0 sign(n+1 )
g x
g3
1 x2
g3
x3
g3
x4
g3
x5
g3

J= = x1 x2 x3 x4 x5 = 0 0 1 0 H sign(n+1 )
x g4 g4 g4 g4 g4
x1 x2 x3 x4 x5 0 0 0 1 1
g5 g5 g5 g5 g5 sign(n+1 ) 0 sign(n+1 ) K 0
x1 x2 x3 x4 x5

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

1. Stress Space Formulation

1.1. Model Description



ux
(i) Displacement field u = uy = ui ei . Infinitesimal strain tensor

uz
1  1
 = s u = u + (u)T = (ui,j + uj,i )ei ej
2 2
The total strain  splits into an elastic part e and a plastic part p
 = e + p , ij = eij + pij .

(ii) The stress tensor is given by the linear elastic relationship


= C : e = C : ( p ),
where C denotes the 4th-order tensor of elastic moduli, e.g. (linear isotropic
elasticity)
Cijkl = ij kl + (ik jl + il jk )

(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

(iv) The flow rule and the hardening are introduced as


 p = r(, q),
(2.4)

q = h(, q),

where r and h are prescribed functions. The parameter is a nonnegative


function and is called the consistency parameter. It is assumed to obey the fol-
lowing KuhnTucker complementary conditions (also known as loading/un-
loading conditions)

0, f (, q) 0, (, q) = 0.
f (2.5)

In addition satisfies the consistency requirement (or consistency condition)

f(, q) = 0. (2.6)

Interpretation of the Kuhn-Tucker complementary conditions:


(a) If the current state is elastic, i.e. {, q} int(E ), then we have f (, q) < 0.
Therefore we conclude from the complementary conditions

= 0 and f < 0
f = 0.

Then from the evolution equations it follows that p = 0 and q = 0. Hence,


 =  e and finally

= C : .

This type of response is called instantaneous elastic.


(b) If {, q} E , then we have f (, q) = 0. Whether is positive or zero is
concluded from the consistency condition:
(1) If f(, q) < 0 then we conclude that

f = 0 and f < 0 = 0.

Then again it follows that p = 0 and q = 0. This type of response is called


unloading from a plastic state.
(2) If f(, q) = 0 then the consistency condition is automatically satisfied. If
> 0 then the response is called plastic loading. If = 0 it is termed neutral
loading.
Altogether we summarize the following possible responses

= 0 (elastic)

f <0 (, q) int(E )

f < 0 = 0 (elastic unloading)



.

f =0 (, q) E f = 0 and = 0 (neutral loading)



f = 0 and > 0 (plastic loading)

1. Stress Space Formulation 25

1.2. Elastoplastic Tangent Modulus

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)

We also conclude that

f = 0 and f = 0,
(2.10)
0 f : C :  0.

This relationship provides a useful geometric interpretation of the of the plastic


loading and neutral loading conditions. Plastic loading or neutral loading takes
place at a point (, q) E if the angle in the inner product defined by the
elasticity tensor C between the normal f to E and the strain rate  is less or
equal than 90 .
Substituting 2.10 into the time derivative of the stress-strain relation yields the rate
of change of in terms of the total strain rate  as

= 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)

which has special significance and is called an associative flow rule.


26 2. Three-dimensional Rate-Independent Plasticity

1.3. Model Summary

ThreeDimensional RateIndependent Plasticity

Elastic stress-strain relationship

= C : e = C : ( p ),

Elastic domain in stress space

int(E ) = {(, q) S Rm | f (, q) < 0} ,

Flow rule and hardening law


general nonassociative model


 p = r(, q),

q = h(, q),

particular associative model

f
 p = ,

q = D f ,
q
D : matrix of generalized palstic moduli

Kuhn-Tucker complementary conditions

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

2. Classical J2 Flow Theory

A choice of internal plastic variables typical for metal plasticity is q = (, ) with


the equivalent plastic strain and the center of the von Mises yield surface in
stress
deviator space. The yield function is formed by taking the norm kAk =
A : A ofqa tensor A. Since this norm equals the second fundamental invariant
J2 (A) = 12 A : A except a constant factor, this kind of plasticity theory is often
called J2 flow theory. The yield function is formed by taking the norm of the
2. Classical J2 Flow Theory 27

relative stress deviator


1 1
k dev()k = (( tr()I) : ( tr()I))1/2
3 3
1
= (tr( 2 ) tr()2 )1/2 .
3
In a uniaxial tension test the stress tensor is given by

11 0 0
= 0 0 0 .
0 0 0

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 equivalent plastic strain can be defined by


Z tr Z tr r Z t r
2 p 2 2 2
(t) = k (t)k dt = kNk dt = dt = .
0 3 0 3 3 0 3
q

This relation is equivalent to the flow rule = 23 .

The functions K() and H 0 () are called the isotropic and kinematic hardening
modulus, respectively. Typical hardenings laws are

Linear isotropic and linear/nonlinear kinematic hardening

K() = Y + Hiso
H 0 () = Hkin Hnl .

Hughes formulation. The parameter is used to vary between pure isotropic


( = 1) and pure kinematic ( = 0) hardening.

K() = Y + H0 , [0, 1], H0 = const,


H 0 () = (1 )H0 .
28 2. Three-dimensional Rate-Independent Plasticity

Saturation-type hardening
K() = Y + H0 + (K K0 )(1 e ), K K0 0, 0.

. . . and many other hardening laws

2.1. Elastoplastic Tangent Moduli

The matrix (tensor) of elastoplastic tangent moduli can be found by evaluation of


the consistency condition. For the J2 flow theory we obtain
f = N
 
2 2
f : C = N : ( )I I + 2I = ( ) tr NI + 2N = 2N
3 3
f : C :  = 2N : 
f : C : r = 2N : N = 2
r r
2 0 2 0 2 2
q f h = H N : N + K = (H 0 + K 0 )
3 3 3 3
We insert these expressions into 2.9 and obtain
f : C :  N : 
f = 0 = = 0 +K 0 , with N = .
( f : C : r + q f h) 1 + H 3 kk

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

3.1. Strain-driven Problems

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

3.2. Elastic Trial State

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 ).

3.3. Plastic Loading

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)

3.4. Example: J2 Flow Theory

3.4.1. Discrete Equations

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

3.4.2. Trial State

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 .

The relative stress is given by


n+1 = sn+1 n+1 ,
" r #
2
= trial
n+1 2 + Hn+1 Nn+1 .
3
Using the relation
trial
n+1
Nn+1 = trial
k n+1 k
we obtain the following two equations which determine
r
trial 2
g() = k n+1 k K(n+1 )
" 3 #
r
2
2 + Hn+1 = 0,
3
r
2
n+1 = n + .
3
The algorithm is summarized in the following box.

Algorithm 2.1: Determination of


Data: = 0, n+1 = n
while |g()| < TOL do
Hn+1 = H(n+1 ) H(n )
q h q i
g() = k trial
n+1 k 2
3
K( n+1 ) 2 + 2
3
Hn+1
 
H 0 (n+1 )+K 0 (n+1 )
g() = 2 1 + 3
g()
g()
q
2
n+1 n + 3

end
Result: Value of which satisfies the consistency condition

3.4.3. Exact Linearization

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

The derivative of the normal field is given by the formula


N 1
= (I N N).
kk

The term is obtained by differentiation of the scalar consistency condition
n+1
1
K 0 (n+1 ) + H 0 (n+1 )


= 1+ Nn+1
n+1 3
The complete algorithm is summarized in the following box.

Algorithm 2.2: Radial Return Algorithm (J2 flow theory)


Input: n+1 , pn , n , n
Output: pn+1 , n+1 , n+1 , n+1 , Cn+1
Compute trial elastic stress:
en+1 = n+1 13 (tr n+1 )I
strial
n+1 = 2(en+1 en
p

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

A comparison of the continuum elastoplastic tangent and the constistent elasto-


plastic tangent moduli results in the following observations: For large time steps
the consistent tangent moduli may differ significantly from the continuum elasto-
plastic tangent moduli. However, as t 0 and 0 the consistent and
continuum elastoplastic tangent moduli conincide.
33

Appendix A
Appendix: Numerical Algorithms

1. Numerical Integration of Ordinary Differential Equations (ODE)

1.1. General Form

General form of a system of first order autonomous ordinary differential equations


(ODE)
z = f (z), z Rn
with initial conditions z(t = 0) = z0 . In array notation we have

z1 f1 (z1 , z2 , . . . , zn )
z2 f2 (z1 , z2 , . . . , zn )
.. =

..
. .
zn fn (z1 , z2 , . . . , zn )

Especially for a system of linear ODE we can write


z = A z, z Rn
where A is the coefficient matrix.
Remarks:
(i) Any non-autonomous ODE can be recast into an autonomous ODE. For ex-
ample y = h(y, t) can be recast into
     
y h(y, x) y
= z = f (z), with z=
x 1 x
using the definitions x = t and x = 1.
(ii) Any higher order ODE can be written as a first order ODE. For example
x(t) + kx(t) = 0 can be written as
     
x v x
= z = f (z), with z=
v kx v
using the definition v = x.

34 A. Appendix: Numerical Algorithms

1.2. Generalized midpoint rule

zn+1 z(tn+1 ) = zn + k1 t, k1 = f (zn + k1 t)


zn+1 zn + f ((1 )zn + zn+1 )t.

Special cases:
(i) Forward Euler Method (Explicit Euler method): = 0

Zn+1 zn
k1 = f (zn ) = zn+1 zn + f (zn )t.
t

(ii) Backward Euler Method (Implicit Euler method): = 1

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

Absolute error: e = z(tn+1 ) z(tn+1 )


Taylor expansion around tn , with z(tn ) = z(tn ):

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 + . . .

Absolute error: e = ( 21 )f 0 (zn )f (zn )t2 + . . .


Summary: Forward Euler and Backward Euler are first order accurate, midpoint
rule is second order accurate.
1. Numerical Integration of Ordinary Differential Equations (ODE) 35

1.4. Stability and Stiff Differential Equations

The big disadvantage of implicit methods is that we need to solve a nonlinear


equation at each step. However implicit methods, like the backward Euler method,
have the property of being stable for all step sizes. Explicit methods, like Eulers
method, are may require extremely small step sizes to maintain stability. Stiff dif-
ferential equations may be loosely defined as those for which explicit numerical
methods require very small step sizes to maintain stability. Stiff differential equa-
tions are common in applications. They typically arise where there is a slowly
varying equilibrium solution with rapidly decaying transients. Stiff differential
equations are very stable mathematically, but cause stability problems for explicit
methods. Implicit methods are the most practical method for solving stiff systems;
the disadvantage of having to solve a nonlinear system at each step is outweighed
by the advantage of being able to take reasonably sized steps.
Numerical methods to solve stiff systems should have a large area of absolute
stability to allow a large step size h. To get a stable integration it is necessary to
keep the values hlj in the stability region. So we will come to some new stability
definitions for numerical methods, which are useful for the computation of stiff
differential equations.
We will consider the following linear one-dimensional test equation

x = x, x(0) = x0

with the exact solution

x(t) = x0 et

Here is a coefficient independent of time, which is generally complex. To sim-


plify the following study we will restrict its real part to be nonpositive: <[] 0. If
so the solutions x(t) = x0 et are stable in the sense of being bounded for t > 0. We
therefore expect the time integrator to preserve this attribute. Absolute stability
on the test equation, treated by an integrator of stepsize h, is defined as follows:
The region of absolute stability is that set of values of h (real nonnegative) and
for which a perturbation in a single value xn will produce a change in subsequent
values which does not increase from step to step.
This definition is relevant for <[] 0 and will be used in the next sections. It fails
for <[] < 0, as discussed later.
The generalized midpoint rule can be written as

xn+1 = xn + h[x n+1 + (1 )x n ],

where is a coefficient in the range [0,1]. For the test equation we obtain

xn+1 = xn + h[x n+1 + (1 )x n ].

We solve for xn+1 to obtain the amplification form

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

This property is sometimes called stiff A-stability or strong A-stability.


Stability of one step integration methods:
Method z() lim |z] stability accuracy
FE 1+ (C) 1st order
1+
MP 2
1
1 (A) 2nd order
2
1
BE 1
0 (L) 1st order

1.5. Exercises

The ODE x(t) + x(t) = 0, with initial conditions x(0) = 0, x(0)


= 1 has the exact
solution x(t) = sin t. Solve the ODE numerically using the general midpoint rule.
Solution:
     
x v 0 1
= z = A z, with A=
v x 1 0

zn+1 = zn + f (zn + (zn+1 zn ))t


= zn + A (zn+1 + (1 )zn )t
 
1 0
= (I + (1 )tA) zn + A zn+1 t, I=
0 1
(I tA) zn+1 = (I + (1 )tA) zn
zn+1 = (I tA)1 (I + (1 )tA) zn
 
1 1 (1 )t2 t
=
1 + 2 t2 t 1 (1 )t2

= 100(z(t) sin t), with initial condition


The ODE z(t) z(t = 0) = 1 has the exact
1 10101

solution z(t) = 10001 e100t 100 cos t + 10000 sin t . Solve the ODE numerically
using the general midpoint rule. Describe your observations.
Observations: The solution shows rapidly changing transients. An ODE of this
type is called stiff.

2. Numerical Solution of Nonlinear Equations

2.1. Scalar Newton-Raphson method

The Newton-Raphson method is used to find a numerical solution of the nonlinear


equation f (x) = 0. The scalar algorithm is described in Algorithm 1.
38 A. Appendix: Numerical Algorithms

Algorithm A.1: Scalar Newton-Raphson algorithm


Input: tolerance T OL ,start value x0 , maximum number of iterations IM AX
/* Initialization */

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

2.2. Vectorial Newton-Raphson method

The vectorial Newton-Raphson method is used to find a numerical solution of the


system of nonlinear equations

f1 (x1 , x2 , . . . , xn )
f2 (x1 , x2 , . . . , xn )
f (x) = = 0.

..
.
fn (x1 , x2 , . . . , xn )

It is described in Algorithm 2 and requires the computation of the inverse of the


Jacobian matrix
f1 f1 f1
x1 x2
... xn
f2 f2 . . . f2
J(x) = x. 1 x. 2 xn
.

.. .. ..
.
fn fn fn
x1 x2
... xn

Algorithm A.2: Vectorial Newton-Raphson algorithm


Input: tolerance T OL ,start vector x0 , maximum number of iterations IM AX
i = 0 /* iteration counter */

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. Programming Exercise 1 (Numerical Time Integration)

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

1.2. Program Description

The java program solves differential equations of the form

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

g(zn+1 ) := zn+1 zn f (zn+1 + (1 )zn )t = 0.

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

g(z) = 0, with g(z) = z zn f (zn+ )t.

These equations are solved using the vectorial Newton-Raphson method



g1 (z1 , z2 , . . . , zn )
g2 (z1 , z2 , . . . , zn )
g(z) = = 0.

..
.
gn (z1 , z2 , . . . , zn )

It is described in Algorithm 2 and requires the computation of the inverse of the


Jacobian matrix
g1 g1 g1
z1 z2
... zn
g2 g2 . . . g2
J(z) = z. 1 z. 2 zn
.

.. .. ..
.
gn gn gn
z1 z2
... zn

Algorithm B.1: Vectorial Newton-Raphson algorithm


Input: tolerance T OL ,start vector z0 , maximum number of iterations IM AX
i = 0 /* iteration counter */

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. Program code

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

(x(t) sin t) = 0. Because it is given in non-autonomous form, we have to recast


it into the autonomous form
t
   
1
= .
x (x(t) sin t)

Hence the function f reads


   
1 t
f (z) = , z= .
(z2 sin z1 ) x

The derivative of f with respect to z is


 
f 0 0
= .
z cos z1

These results are implemented in the following code listing


public void g e t _ f _ d f d z ( double [ ] f , double [ ] [ ] dfdz , double [ ] z )
{
f [0] = 1.0;
f [ 1 ] = d e l t a ( z [ 1 ] Math . s i n ( z [ 0 ] ) ) ;

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 ;
}

1.3.2. g(z) and J(z)

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 ] ;

f o r ( i n t i = 0 ; i <n ; ++ i ) z_alpha [ i ] = alpha z [ i ] +


(1.0 alpha ) z0 [ i ] ;

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 ;
}
}
}
}

1.3.3. Newton-Raphson iteration

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 ] ;

/ / Store the current values


f o r ( i n t i = 0 ; i <n ; ++ i ) z0 [ i ] = z [ i ] ;

/ / 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 ) ;

i f ( norm_g < TOL) break ;

Li nea r_A lge bra . i n v e r s e _ m a t r i x ( dgdz_inv , dgdz ) ;

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

2. Programming Exercise 2 (1D material models)

The program consists of a main program CompPlast1D.java and an abstract


base class MaterialModel from which classes for specific material models are
derived. We consider the class LinHardeningPlasticity as an example.

2.1. class LinHardeningPlasticity

The differential-algebraic equations for our one-dimensional model of linear hard-


ening plasticity read
= E( p
p = sign( q)
=
sign( q)
q = H
f (, q, ) = | q| (Y + K)
0, f (, q, ) 0, f
(, q, ) = 0.
We use the general midpoint rule to tranfer the differential equations into a time-
discrete form, but we evaluate the algebraic equations at tn+1
n+1 = E(n+1 pn+1 )
pn+1 pn = sign(n+ qn+ )
n+1 n =
qn+1 qn = H sign(n+ qn+ )
f (n+1 , qn+1 , n+1 ) = |n+1 qn+1 | (Y + Kn+1 )
0, f (n+1 , qn+1 , n+1 ) 0, f (n+1 , qn+1 , n+1 ) = 0.
These equations are solved using a predictor-corrector scheme: In a first step (the
trial step), we assume that the response is elastic and, hence, = 0. Then we
obtain the following trial values:
trial
n+1 = E(n+1 ptrial
n+1 )
ptrial p
n+1 = n
trial
n+1 = n
trial
qn+1 = qn
f trial (n+1
trial trial trial
, qn+1 , n+1 trial
) = |n+1 trial
qn+1 trial
| (Y + Kn+1 )
Next, we check, whether the trial values satisfy the inequality f trial (n+1
trial trial trial
, qn+1 , n+1 )
0. If the inequality is satisfied, then the trial values are the final values of this time
increment and the instantaneous response is elastic. If the inequality is not satis-
fied, then we conclude that > 0 and, hence, f (n+1 , qn+1 , n+1 ) = 0 becomes an
additional equation and completes the system of 5 equations g(z)
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.
46 B. Programming Exercises

We can choose to prescribe boundary conditions on either  or . The easiest way


to do so is to introduce a sixth equation. In the case of a strain driven simulation
it reads n+1 = (tn+1 ) and be get the following set of equations

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

To apply the newton-Raphson scheme we have to compute the Jacobian matrix


g0 g0 g0 g0 g0 g0
z0 z1 z2 z3 z4 z5
g1 g1 g1 g1 g1 g1
z0 z1 z2 z3 z4 z5
g g2 g2 g2 g2 g2 g2
z0 z1 z2 z3 z4 z5
J= = g3 g3 g3 g3 g3 g3
z z0 z1 z2 z3 z4 z5

g4 g4 g4 g4 g4 g4
z z1 z2 z3 z4 z5

0
g5 g5 g5 g5 g5 g5
z0 z1 z2 z3 z4 z5

1 0 0 0 0 0
E 1 E 0 0 0

g 0 0 1 0 0 sign(n+ )
J= =
0
z 0 0 1 0 1

0 0 0 0 1 H sign(n+ )
0 sign(n+1 ) 0 K sign(n+1 ) 0
The iteration procedure reads

zi+1 = ui J(zi )1 g(zi ).

2.2. Program Code

2.2.1. MaterialModel.java

The method do_timestep computes the material response in a single timestep.


The code is written in the base class independent of the specific kind of material
to be simulated.
2. Programming Exercise 2 (1D material models) 47

Source code from MaterialModel.java


public void do_timestep ( double [ ] z , double t , double dt , double alpha )
{
i n t n = get_num_equations ( ) ;

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 ] ;

/ / Store the current values


f o r ( i n t i = 0 ; i <n ; ++ i ) z0 [ i ] = z [ i ] ;

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 ) ;

i f ( norm_g < TOL) break ;

Li nea r_A lge bra . i n v e r s e _ m a t r i x ( dgdz_inv , dgdz ) ;

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

Source code from MaterialModel_LinHardeningPlasticity.java


public double c o m p u t e _ t r i a l _ v a l u e s ( double [ ] z _ t r i a l , double [ ] z0 ,
double t , double dt , double b e t a )
{
double x i = z0 [ 1 ] z0 [ 4 ] ;
double x i _ b e t a = b e t a x i + (1.0 b e t a ) ( z0 [ 1 ] z0 [ 4 ] ) ;
double E = m a t e r i a l _ p a r a m e t e r [ 0 ] ;
double sigmaYield = m a t e r i a l _ p a r a m e t e r [ 1 ] ;
48 B. Programming Exercises

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 ] ;
}

Source code from MaterialModel_LinHardeningPlasticity.java


public void get_g_dgdz ( double [ ] g , double [ ] [ ] dgdz , double [ ] z ,
double [ ] z0 , double t , double dt , double b e t a )
{
double x i = z [ 1 ] z [ 4 ] ;
double x i _ b e t a = b e t a x i + (1.0 b e t a ) ( z0 [ 1 ] z0 [ 4 ] ) ;
double E = m a t e r i a l _ p a r a m e t e r [ 0 ] ;
double sigmaYield = m a t e r i a l _ p a r a m e t e r [ 1 ] ;
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 ] ;
g [0] = z [0] compute_total_strain ( t ) ;
g [ 1 ] = z [ 1 ] E( z [ 0 ] z [ 2 ] ) ;
g [ 2 ] = z [ 2 ] z0 [ 2 ] z [ 5 ] s i g n ( x i _ b e t a ) ;
g [ 3 ] = z [ 3 ] z0 [ 3 ] z [ 5 ] ;
g [ 4 ] = z [ 4 ] z0 [ 4 ] z [ 5 ] H s i g n ( x i _ b e t a ) ;
g [ 5 ] = Math . abs ( x i ) ( sigmaYield + K z [ 3 ] ) ;

dgdz [ 0 ] [ 0 ] = 1 . 0 ; dgdz [ 0 ] [ 1 ] = 0 . 0 ; dgdz [ 0 ] [ 2 ] = 0 . 0 ; dgdz [ 0 ] [ 3 ] =


0 . 0 ; dgdz [ 0 ] [ 4 ] = 0 . 0 ; dgdz [ 0 ] [ 5 ] = 0 . 0 ;
dgdz [ 1 ] [ 0 ] = E ; dgdz [ 1 ] [ 1 ] = 1 . 0 ; dgdz [ 1 ] [ 2 ] = E ; dgdz [ 1 ] [ 3 ] =
0 . 0 ; dgdz [ 1 ] [ 4 ] = 0 . 0 ; dgdz [ 1 ] [ 5 ] = 0 . 0 ;
dgdz [ 2 ] [ 0 ] = 0 . 0 ; dgdz [ 2 ] [ 1 ] = 0 . 0 ; dgdz [ 2 ] [ 2 ] = 1 . 0 ; dgdz [ 2 ] [ 3 ] =
0 . 0 ; dgdz [ 2 ] [ 4 ] = 0 . 0 ; dgdz [ 2 ] [ 5 ] = s i g n ( x i _ b e t a ) ;
dgdz [ 3 ] [ 0 ] = 0 . 0 ; dgdz [ 3 ] [ 1 ] = 0 . 0 ; dgdz [ 3 ] [ 2 ] = 0 . 0 ; dgdz [ 3 ] [ 3 ] =
1 . 0 ; dgdz [ 3 ] [ 4 ] = 0 . 0 ; dgdz [ 3 ] [ 5 ] = 1.0;
dgdz [ 4 ] [ 0 ] = 0 . 0 ; dgdz [ 4 ] [ 1 ] = 0 . 0 ; dgdz [ 4 ] [ 2 ] = 0 . 0 ; dgdz [ 4 ] [ 3 ] =
0 . 0 ; dgdz [ 4 ] [ 4 ] = 1 . 0 ; dgdz [ 4 ] [ 5 ] = H s i g n ( x i _ b e t a ) ;
dgdz [ 5 ] [ 0 ] = 0 . 0 ; dgdz [ 5 ] [ 1 ] = s i g n ( x i ) ; dgdz [ 5 ] [ 2 ] = 0 . 0 ;
dgdz [ 5 ] [ 3 ] = K ; dgdz [ 5 ] [ 4 ] = s i g n ( x i ) ; dgdz [ 5 ] [ 5 ] = 0 . 0 ;
}
3. Programming Exercise 3 (3D plasticity) 49

3. Programming Exercise 3 (3D plasticity)

In this programming exercise the program of exercise 2 will be contibued by split-


ting the program into several classes. The main abstract class will be the class
ConstitutiveEquations. From this class we will derive specific classes that
impement the equations for the specific material behaviour.

3.1. class J2FlowTheory

3.1.1. Theory

Differential and algebraic equations

= 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

double [ ] n = new double [ 6 ] ;


double norm_xi ;
double E = m a t e r i a l _ p a r a m e t e r [ 0 ] ;
double nu = m a t e r i a l _ p a r a m e t e r [ 1 ] ;
double lambda = Enu / ( ( 1 + nu ) (1 2nu ) ) ;
double mu = E/ ( 2 ( 1 + nu ) ) ;
double s i g m a _ y i e l d = m a t e r i a l _ p a r a m e t e r [ 2 ] ;
double Hiso = m a t e r i a l _ p a r a m e t e r [ 3 ] ;
double Hkin = m a t e r i a l _ p a r a m e t e r [ 4 ] ;
double Hnl = m a t e r i a l _ p a r a m e t e r [ 5 ] ;

/ / devsig = dev ( sigma )


devsig [ 0 ] = z [6] ( z [6]+ z [7]+ z [ 8 ] ) /3.0;
devsig [ 1 ] = z [7] ( z [6]+ z [7]+ z [ 8 ] ) /3.0;
devsig [ 2 ] = z [8] ( z [6]+ z [7]+ z [ 8 ] ) /3.0;
devsig [ 3 ] = z[9];
devsig [ 4 ] = z[10];
devsig [ 5 ] = z[11];

/ / 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 ] ) ;
}

3.1.2. Numerical Jacobian Matrix

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

double [ ] z _ p e r t u b a t e d = new double [ n ] ;


double [ ] g = new double [ n ] ;
double [ ] g0 = new double [ n ] ;
double eps = 1 . 0 e 8;

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.

Potrebbero piacerti anche