Advanced non-linear analysis
Code_Aster, Salome-Meca course material
GNU FDL licence (http://www.gnu.org/copyleft/fdl.html)
Outline
Description of non-linear problems
Theoretical elements for solving non-linear problems
Solving non-linear problems with Newton
Using Code_Aster
2 - Code_Aster and Salome-Meca course material
GNU FDL Licence
What is a non-linear problem in mechanics ?
3 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear problems
Non-linearities come from :
Kinematic (movement and strains) : large displacement, large rotation, large strains
Material : non-linear response, history-dependent response
Contact/friction
The three non-linearities should been coupled
Numerical simulation require expert analysis
4 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear material
Material non-linearity
Experimental identification : identify macroscopical response force/displacement
Most materials are non-linear and/or history dependent
5 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear material
Displacement/force function is not linear but not history dependent
u
F = (u) with (u) a.u + b
A
C
Prescribed
displacement
AC
Response
C
Prescribed
force
6 - Code_Aster and Salome-Meca course material
u(C) = u(A)
F(C) = F(A)
GNU FDL Licence
Non-linear material
Displacement/force function is not linear and history dependent
u
F = (u) with (u) a.u + b
A
C
Prescribed
displacement
C
Prescribed
force
7 - Code_Aster and Salome-Meca course material
C
Response
u(C) u(A)
Residual displacement
Next loading : initial
displacement 0
GNU FDL Licence
Non-linear kinematic
Truss/beams/shells elements with large rotation and/or large
displacements
F
EA
l
x
u
E: Young modulus
A: section
L: length
F: load
u: displacement
k: rigidity of the spring
8 - Code_Aster and Salome-Meca course material
Response
GNU FDL Licence
Non-linear contact/friction
Contact and friction: a very difficult non-linear problem
pn
g
1
Response
(Signorini contact)
c
2
pt
pn: normal pressure
pt: tangent pressure
g: distance between solids (gap)
v: tangential speed between solids
9 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Response
(Coulomb friction)
Some theoretical elements
10 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Equations Continuous form
Measure of stress : Cauchy (true) stress
F0
F
S 0 S
= lim
Ft
F0
S 0 S 0
Ft
S 0 S t
0 = lim
t = lim
Cauchy stress : measure on deformed configuration
Measure of strain :
for finite strain, it's an arbirtray choice, depending on behavior law
For small strain
11 - Code_Aster and Salome-Meca course material
(u ) =
1
u + t u
2
GNU FDL Licence
Equations Continuous form
Defining solid which is in equilibrium with external forces
is external boundary
u to apply prescribed displacement ud
g to apply prescribed force g
c to define contact/friction
f is volumic force
div + f = 0
.n = g on
u = ud on
Lcf (u ) on
in
u
c
u
ud
12 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Equations Finite element approximation
Main shapes for elements :
segment, triangle, quadrangle, hexaedron, tetraedron, pyramid, prism
linear or quadratic (curved or straight edges)
Geometry discretization :
Coordinates in element {x}
Discretized coordinates at nodes
Shape functions N
[ g]
{xi }
x3
y3
y
x1
y1
x2
y2
x
13 - Code_Aster and Salome-Meca course material
GNU FDL Licence
{x} = [N g ].{xi }
Equations Finite element approximation
Discretization of the unknowns:
Unknowns depending on physic : displacement for mechanics temperature for
thermic, ...
Displacements in element {u}
Discretized displacement at nodes {ui }
Shape functions
Nu
[ ]
u3
v3
u1
v1
{u} = [N u ].{ui }
u2
v2
We suppose isoparametric elements
14 - Code_Aster and Salome-Meca course material
GNU FDL Licence
[N ] = [N g ] = [N u ]
Equations Finite element approximation
Weak form of equilibrium (weighted residuals) :
Find
u Eu
with
u~ Eu~
(u ) : (u~ ).d = f (u ) : u~.d + g (u ) : u~.d
Virtual displacements
With
With
Eu
u~
and virtual strains
(u~ ) =
1 ~
u + t u~
2
space of kinematically admissible displacements :
Eu~
Eu = {u
with u ( X ) = ud
X u }
space of virtual displacements :
Eu~ = {u~ with u~ ( X ) = 0 X u }
The weak form is the mechanical concept of virtual power
{u} = [N ].{ui } and {u~} = [N ].{u~i }
Galerkin form :
15 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Equations Finite element approximation
Non-linear problem : stress depending on displacement (u )
From displacement u to strain : kinematic non-linearity
From strain to stress : material non-linearity
Non-linear material
(u ) = ( (u ))
Non-linear material depending on material's history (plasticity,...) :
(u ) = ( , (u ))
Internal variables
16 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Equations Finite element approximation
Numerical quadrature : to compute continuous som, using a
Gauss approximation
.d
nb points
k .k
k =1
Stress, strain and internal variables : discretized at numerical points
X (quantities post_fixed by _ELGA in Code_Aster)
Displacement : discretized at nodes
_NOEU in Code_Aster)
k u
3
X k v
3
k
k
X k u1
k v1
17 - Code_Aster and Salome-Meca course material
(quantities post_fixed by
u2
v2
GNU FDL Licence
k
X k
k
Equations Finite element approximation
Computation of internal forces
(u ) : (u~ ).d {Lint (u )} = [Q(u )].{ (u )}
Non-linear internal forces : depending on u
Non-linear kinematic
[Q(u )]
Non-linear material
{ (u )}
18 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Equations Finite element approximation
Computation of external forces
f (u ) : u~.d + g (u ) : u~.d {Lext (u )}
Non-linear external forces : depending on u
Non-linear when following forces : pressure always normal to
boundary pressure depends on displacement
p(u)
19 - Code_Aster and Salome-Meca course material
GNU FDL Licence
p(u)
Equations Finite element approximation
Final equilibrium equation : discretized form
{Lint (u )} {Lext (u )} = {0}
Non-linear equation, depending on u
20 - Code_Aster and Salome-Meca course material
GNU FDL Licence
General algorithm for non-linear problem
21 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
To solve non-linear problem : an incremental algorithm
Problem is parametrized by the parameter t
t is not real time (quasi-static problem)
Why parametrization ?
Real boundary conditions should been applied by non-constant values
Non-linear material produced non-linear equation, precision should depends on
incremental step size
An non-linear problem is easier to solve when cut by small step size
22 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
Parametrization because boundary conditions should been
applied by non-constant values
g
t
Prescribed
volumic force
ud
C
Prescribed
surfacic force
C
Prescribed
displacement
Some examples of prescribed boundary conditions
23 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
Parametrization to cut a non-linear problem to decrease degree of
non-linearity
F
Cutting
<=
u
High degree of nonlinearity on complete
problem
24 - Code_Aster and Salome-Meca course material
Low degree of nonlinearity at each step
GNU FDL Licence
Solving non-linear problem
The parameter t in the equations :
Internal forces : dependence with respect to t is implicit, it results from the
integration of the constitutive relation in time
External forces : dependence with respect to t is explicit (applied BC) or implicit
(following forces)
{Lint (u (t ))} {Lext (t , u (t ))} = {0}
Time discretization, all quantities are parametrized by step k :
Lint
Lext
k
k
Time
Step
uk t k k k
t1
t0
t2
t4
t3
Incremental quantities :
25 - Code_Aster and Salome-Meca course material
uk = uk 1 + u
GNU FDL Licence
Solving non-linear problem
Solving a non-linear equation F ( x) = 0 : the Newton's method
( )
Construction of the series
x n nN
Taylor series expansion of the first order
0 = F ( x n ) F ( x n1 ) + F ( x n1 ).( x n x n1 )
Next value of the term of the series
x n = x n1
1
n 1
F
(
x
)
n 1
F ( x )
Properties :
Quadratic convergence near the solution
Computation of F ( x n1 ) should be very expensive
F ( x n1 ) 0
26 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
Newton's method for equilibrium equation, at step k :
{Lint (uk (tk ))} {Lext (tk , uk (tk ))} = {0}
{Lint (u (t ))} {Lext (t , u (t ))} = {0}
Simplify : we are at step k
Internal forces :
int,n
int,n 1
Lint
.u n
+
u u
n
n
n 1
with u = (u u )
n 1
External forces :
ext ,n
ext ,n 1
Lext
.u n
+
u u
n 1
27 - Code_Aster and Salome-Meca course material
GNU FDL Licence
with
u n = (u n u n1 )
Solving non-linear problem
Newton's method for equilibrium equation, at step k :
int,n 1
ext ,n 1
Lext Lint
.u n = 0
+
u u
u
n 1
K n1.u n = R n1
K n1 is tangent matrix
n 1
Lint
Lext
_
u u u u
n 1
R n1
n 1
is equilibrium residual
R n1 = Lext ,n1 Lint,n1
28 - Code_Aster and Salome-Meca course material
)
GNU FDL Licence
Solving non-linear problem
Global algorithm :
1) Compute internal and external forces
2) Compute tangent matrix
3) Solve linear system
4) Update displacements
5) Evaluate convergence
29 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
Compute internal and external forces :
Exact computation is necessary (software requirement)
Non-linear behavior is evaluated at each Gauss point
Complex behavior laws computation should be expensive
Precision of computation of some behavior laws should depend on
increment of displacement :
Visco-plasticity
Non-radial loading
PETIT_REAC strain measure
30 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
Compute tangent matrix :
Exact computation is NOT necessary
Tangent matrix is evaluated at each Gauss point
Tangent matrix computation should be expensive
31 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem Newton by graphic
Find the solution (u * , F * ) where F * is known and u * is unknown
Lext
Lint
F*
F0
u*
u0
32 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem Newton by graphic
Dividing F * in two increments (reducing degree of non-linearity) :
find (u1 , F1 ) and (u2 , F2 )
Lext
Lint
F *= F 2
F1
F0
u0
33 - Code_Aster and Salome-Meca course material
u *= u 2
u1
GNU FDL Licence
Solving non-linear problem Newton by graphic
Compute tangent matrix K1n for iteration Newton n and step 1
Lext
Lint
F *= F 2
F1
K 1n
F0
u0
u1n
34 - Code_Aster and Salome-Meca course material
u *= u 2
u1
GNU FDL Licence
Solving non-linear problem Newton by graphic
Solving
K1n .u1n = F1 F0 u1n
Lext
Lint
F *= F 2
u1n
F1
K1
F0
u0
35 - Code_Aster and Salome-Meca course material
u1
u = u2
GNU FDL Licence
Solving non-linear problem Newton by graphic
Update displacements u1n = u1n1 + u1n
Lext
Lint
F *= F 2
u1n
F1
K 1n
F0
u0
u1n
36 - Code_Aster and Salome-Meca course material
u *= u 2
u1
GNU FDL Licence
Solving non-linear problem Newton by graphic
Compute Lint (u1n ) and R = F1 Lint (u1n )
Lext
Lint
F *= F 2
u1n
F1
( )
R u1n
( )
Lint u1n
K 1n
F0
u0
u1n
37 - Code_Aster and Salome-Meca course material
u *= u 2
u1
GNU FDL Licence
Solving non-linear problem Newton by graphic
Lext
Lint
F *= F 2
ext
int
F = F2
u1n
F1
F1
K1
F0
u1n
u0
2
K 1n
u1
u = u2
Matrix computation
L
ext
F0
u0
u1
u *= u 2
u1
Solve system
int
ext
int
F = F2
F = F2
u1n
u1n
F1
F1
( )
R u1n
K1
F0
u0
K1
u1
u1
u *= u 2
F0
Update displacements
38 - Code_Aster and Salome-Meca course material
u0
( )
Lint u1n
u1
u1
u *= u 2
Evaluate convergence
GNU FDL Licence
Solving non-linear problem
1
Matrix computation :
True Newton method : K in is evaluate every step and every Newton
iteration
Quasi-Newton method : K in is evaluate every i Newton's iteration and
every n time's step
Lext
Lint
Lext
F *= F 2
F *= F 2
F1
F1
Lint
Slope changes
every Newton's
iteration
F0
u0
u1
Slope doesn't
change every
Newton's
iteration
u = u2
True Newton method
39 - Code_Aster and Salome-Meca course material
F0
u0
u1
u = u2
Quasi Newton method
GNU FDL Licence
Solving non-linear problem
1
Matrix computation :
Quasi-Newton method : compute approximate matrix (elastic matrix)
Lext
Lext
Lint
F *= F 2
F *= F 2
F1
F1
Lint
Slope is elastic
matrix
Slope is
coherent matrix
F0
u0
u1
u *= u 2
u0
u1
u = u2
Quasi Newton method
True Newton method
40 - Code_Aster and Salome-Meca course material
F0
GNU FDL Licence
Solving non-linear problem
1
Matrix computation : Why quasi-Newton methods ?
Compute exact matrix every iteration : matrix must been factorized
very expensive
Make more iterations but each iteration is quicker
Elastic matrix achieve convergence for all standard generalized materials
with a lot of iterations (thousands). Elastic matrix is computed and
factorized ONE time : very cheap
Elastic matrix is the better choice for unloading loading's cases
41 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
2
Solve system : using direct solver or iterative solver
42 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
3
Update displacement - Improving by line-search - Method
n 1
n 1
Solving K .u = R
is equivalent to minimizing functional
n 1
n
n 1
n
Solving K .u = R
give the direction u of the solution
Solving functionnal minimisation give the line-search coefficient
Update displacements
n
u n = u n1 + .u n
43 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
3
Update displacement - Improving by line-search - Functional
Functional (scalar) J is :
u J (u ) = ( (u )).d f .u.d t.u.d
With ( (u )) is the density of free energy, for hyperelastic material :
This functional is convex, minimizing convex function its gradient
vanishes :
J (u ).u~ = 0 u~ Eu~
Gradient vanishes <=> Virtual power
(u ) : (u~ ).d = f (u ) : u~.d + g (u ) : u~.d u~ Eu~
Find equilibrium : minimize J scalar functional
44 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
3
Update displacement - Improving by line-search - Minimize
functional
Derivative of the functional
{Lint (u n1 + u n )} {Lext (u n1 + u n )}= {0}
Scalar functional
}{
g ( ) = u n . Lint (u n1 + u n ) Lext (u n1 + u n ) = {0}
Using classical method for minimizing scalar convex function (dichotomy
for instance)
45 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
3
Update displacement - Improving by line-search - Notes
Only few iterations : it's not necessary to find exact zero of g
Only compute internal and external forces (no matrix)
Algorithms for minimizing scalar function are very efficient and very simple
46 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Solving non-linear problem
4
Evaluate convergence
Absolute (RESI_GLOB_MAXI)
Lext Lint,n1
Relative (RESI_GLOB_RELA)
Lext Lint,n1
ext
By reference : giving stress reference (RESI_REFE_RELA)
Lext Lint,n1
47 - Code_Aster and Salome-Meca course material
.Lref
k
GNU FDL Licence
Using non-linear in Code_Aster
48 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear in Code_Aster
Material is steel with Von Mises plasticity with isotropic hardening,
traction curve from file
FSIGM = LIRE_FONCTION(UNITE=21,PARA='EPSI')
STEEL = DEFI_MATERIAU( ELAS=_F(YOUNG=210.E9,NU=0.3),
TRACTION=_F(SIGM=FSIGM))
Steel on all mesh
CHMA
= AFFE_MATERIAU( MAILLAGE=MESH,
AFFE=_F( TOUT='OUI',
MATER='STEEL'))
49 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear in Code_Aster
Plasticity with isotropic hardening, small strains
RESUN = STAT_NON_LINE(...
CHAM_MATER = CHMA,
COMP_INCR = _F(
TOUT
='OUI',
RELATION
='VMIS_ISOT_TRAC',
DEFORMATION ='PETIT'),
...)
50 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear in Code_Aster
Loading : parametrized by time Using function in FONC_MULT
Lext
{Lext (t, u(t ))}
200
g (t ) .
{Lext (u)}
t
0
2
RAMPE = DEFI_FONCTION(PARA='INST',VALE=(0,0,2,2))
LOAD
= AFFE_CHAR_MECA(MODELE=MOD,
PRES_REP=_F(PRES=100.,
GROUP_MA='TOTO'))
RESUN = STAT_NON_LINE(...
EXCIT=_F(CHARGE
=LOAD,
FONC_MULT=RAMPE)
...)
51 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear in Code_Aster
Loading : parametrized by time Using function directly in BC
Lext
{Lext (t, u(t ))}
200
g (t ) .
{Lext (u)}
RAMPE = DEFI_FONCTION(PARA='INST',VALE=(0,0,2,200))
LOAD
= AFFE_CHAR_MECA_F(MODELE=MOD,
PRES_REP=_F(PRES=RAMPE,
GROUP_MA='TOTO'))
RESUN = STAT_NON_LINE(...
EXCIT=_F(CHARGE
...)
52 - Code_Aster and Salome-Meca course material
GNU FDL Licence
=LOAD)
Non-linear in Code_Aster
Computing is parametrized by time
Time
0.0
1.0
2.0
L_INST=DEFI_LIST_REEL( DEBUT=0.0,
INTERVALLE=(
_F(JUSQU_A=1.0,NOMBRE=3,),
_F(JUSQU_A=2.0,NOMBRE=2,),
),)
RESUN = STAT_NON_LINE(...
INCREMENT=_F(LIST_INST=L_INST)
...)
53 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear in Code_Aster
!
Loading and time definition must been consistent
Time
0.0
1.0
2.0
Lext
200
Computation on part of step
RESUN = STAT_NON_LINE(...
INCREMENT=_F(LIST_INST=L_INST,
INST_FIN =1.0)
...)
54 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear in Code_Aster Advanced controls
Automatic step cut : no convergence automatic cutting
V11
L_INST=DEFI_LIST_REEL( DEBUT=0.0,
INTERVALLE=(
_F(JUSQU_A=1.0,NOMBRE=3,)
_F(JUSQU_A=2.0,NOMBRE=2,),
),)
DEFLIST = DEFI_LIST_INST(
DEFI_LIST = _F(
LIST_INST = L_INST,),
ECHEC
= _F(
EVENEMENT = 'ERREUR',
ACTION
= 'DECOUPE',),)
RESUN = STAT_NON_LINE(...
INCREMENT=_F(LIST_INST=DEFLIST)
...)
55 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear in Code_Aster Advanced controls
V11
Automatic step adaptation :
L_INST=DEFI_LIST_REEL( DEBUT=0.0,
INTERVALLE=(_F(JUSQU_A=2.0,NOMBRE=1,),
),)
DEFLIST = DEFI_LIST_INST( DEFI_LIST
METHODE
LIST_INST
PAS_MINI
=
=
=
=
_F(
'AUTO
L_INST,
1.E-6),)
RESUN = STAT_NON_LINE(...
INCREMENT=_F(LIST_INST=DEFLIST)
...)
56 - Code_Aster and Salome-Meca course material
GNU FDL Licence
Non-linear in Code_Aster Advanced controls
Quasi-Newton method : recompute matrix every 2 Newton's iteration
RESUN = STAT_NON_LINE(...
NEWTON=_F(REAC_ITER=2,),)
Quasi-Newton method : recompute matrix every 3 time's step
RESUN = STAT_NON_LINE(...
NEWTON=_F(REAC_INCR=3,),)
Quasi-Newton method : using elastic matrix
RESUN = STAT_NON_LINE(...
NEWTON=_F(MATRICE='ELASTIQUE',),)
Default values in Code_Aster
RESUN = STAT_NON_LINE(...
NEWTON=_F(
57 - Code_Aster and Salome-Meca course material
REAC_INCR=1,
!
REAC_ITER=0,
MATRICE='ELASTIQUE',),)
GNU FDL Licence
Non-linear in Code_Aster Advanced controls
Convergence criterion : careful when change values !
RESUN = STAT_NON_LINE(...
CONVERGENCE=_F(
RESI_GLOB_MAXI=1.E-6,
RESI_GLOB_RELA=1.E-6,),)
Changing criterion convergence may produces WRONG results
Maximum number of Newton's iteration
RESUN = STAT_NON_LINE(
CONVERGENCE=_F(ITER_GLOB_MAXI=20,),)
Elastic matrix uses thousands of Newton's iterations
Default values in Code_Aster
RESUN = STAT_NON_LINE(...
CONVERGENCE=_F(
ITER_GLOB_MAXI=10,
RESI_GLOB_RELA=1.E-6,),)
58 - Code_Aster and Salome-Meca course material
GNU FDL Licence
End of presentation
Is something missing or unclear in this document?
Or feeling happy to have read such a clear tutorial?
Please, we welcome any feedbacks about Code_Aster training materials.
Do not hesitate to share with us your comments on the Code_Aster forum
dedicated thread.
59 - Code_Aster and Salome-Meca course material
GNU FDL Licence