Académique Documents
Professionnel Documents
Culture Documents
1
Code Aster STA10.3
Plasticity tutorial for CAELinux.com by Paul Carrico
Translated and reworked by Claus Andersen
5. April 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
Table of Contents
1 Introduction part one.........................................................................................................4
2 Introduction part two.........................................................................................................4
3 Preparation of the model..................................................................................................5
4 The mesh.........................................................................................................................6
5 Objective of modelization................................................................................................8
6 Procedure of the simulation..............................................................................................8
6.1 Stage 1: Mechanical calculation................................................................................8
6.2 Stage 2: Post-processing of data MED format.......................................................8
7 Chronological list of the stages.........................................................................................9
8 Note on units in Code Aster..............................................................................................9
9 Stage 1 - The command file.............................................................................................9
9.1 Loading the mesh and defining the finite element model..........................................9
9.2 Definition of the material..........................................................................................10
9.3 Converting element groups to node groups............................................................11
9.4 Definition of the boundary conditions......................................................................12
9.5 Load........................................................................................................................12
9.5.1 Group diagram.................................................................................................14
9.5.2 LIAISON_OBLIQUE diagram...........................................................................17
9.6 Definition of lists......................................................................................................17
9.7 Nonlinear calculation...............................................................................................18
9.8 COMP_INCR...........................................................................................................18
9.9 DEFORMATION......................................................................................................18
9.10 INCREMENT.........................................................................................................19
9.11 NEWTON..............................................................................................................19
9.12 CONVERGENCE..................................................................................................19
9.13 ARCHIVAGE.........................................................................................................19
10 Stage 2 Post processing............................................................................................21
10.1 The command file..................................................................................................21
10.1.1 Calculating elements and nodes....................................................................21
2 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
3 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
1 Introduction part one
4 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
3 Preparation of the model
5 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
4 The mesh
4 The mesh
The mesh is mainly comprised of second order hexahedrals. See figures 4.1, 4.2 and 4.3
6 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
4 The mesh
7 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
5 Objective of modelization
5 Objective of modelization
The imposed displacement at the wheel hub is somewhat a simplification of a real world
scenario. If the simulation were to be closer to real world conditions, contact conditions
should be introduced at the wheel hub and the support boundary conditions (extremities of
the wheel rim) to allow for local rotation as the displacement is enforced.
In this case, it will result in an overestimation of the stresses and strains.
We seek to determine:
1. The elasto-plastic stress field resulting from the displacement imposed
2. Plastic strain resulting from the displacement imposed
6.1
F
F
R
F
F
6.2
F
F
R
F
F
F
./rim_solution.comm
./rim.med
./base
./rim_solution.mess
./rim_solution.resu
D
D
R
R
R
1
20
0
6
8
./rim_postprocess.comm
./rim_resu.med
./base
./rim_postprocess .mess
./rim_postprocess .resu
./rim_curve.dat
D
R
D
R
R
R
1
80
0
6
8
51
Above demonstrates the two setups in ASTK; be sure to take special note of the letter
denoting whether a file/folder is a result or data. A wrong setting in the post-processing
8 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
6.2 Stage 2: Post-processing of data MED format
stage will render the data calculated in the mechanical stage, useless.
Solution
Separate post-processing
DEBUT();
#Read the mesh - name the concept 'Mesh'
Mesh=LIRE_MAILLAGE(UNITE=20,
FORMAT='MED',);
#Definition & assignment of finite element model
Model=AFFE_MODELE(MAILLAGE=Mesh,
AFFE=_F(GROUP_MA='RIM',
PHENOMENE='MECANIQUE',
MODELISATION='3D',),);
9 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.2 Definition of the material
9.2
The material chosen for this study, is an aluminum from the 6000 family with a Young's
module of 70000 MPa, a Poissons ratio of 0.3 and a yield strength (Rp0.2) of 105 MPa.
The traction curve for this material is an experimental point by point curve generated from
monotone traction on a test piece (See figure 9.1)
Plasticity is implemented in Code Aster in the form of
10 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.2 Definition of the material
9.3
Some of the keywords require node groups instead of element groups in order to perform
their action therefore we ask Code Aster to convert these groups and retain their
respective names.
#Definition of node groups based on element groups.
Mesh=DEFI_GROUP(reuse =Mesh,
MAILLAGE=Mesh,
CREA_GROUP_NO=(_F(GROUP_MA='PLAN_XOY',),
_F(GROUP_MA='PLAN_120',),
_F(GROUP_MA='suprt1',),
_F(GROUP_MA='suprt2',),
_F(GROUP_MA='disp1',),
_F(GROUP_MA='disp2',),),);
11 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.4 Definition of the boundary conditions
9.4
Face- and volume-groups have only 3 translatable degrees of freedom (DDL), DX, DY and
DZ to avoid pivoting (singular matrix) and to have a static situation, the 'support' facegroups need to have these movements blocked. (See figures 9.2, 9.3 and 9.4)
The cyclic symmetry of the model is imposed with the command LIAISON_OBLIQUE
[U4.44.01].
1. The plane of symmetry PLAN_XOY is blocked from global Z-axis movements
(DZ=0)
2. The plane of symmetry PLAN_120 is blocked from Z-axis movements in its local
coordinate system (as assigned by LIAISON_OBLIQUE) equivalent to blocking
DX and DZ in the global coordinate system.
3. The extremity of the rim is blocked from movements in the Y-axis.
#Definition of boundary conditions
BC=AFFE_CHAR_MECA(MODELE=Model,
DDL_IMPO=(_F(GROUP_NO='PLAN_XOY',
DZ=0.0,),
_F(GROUP_NO='suprt1',
DY=0.0,),),
LIAISON_OBLIQUE=_F(GROUP_NO='PLAN_120',
ANGL_NAUT=(0,-120,0,),
DZ=0.0,),);
9.5
Load
A forced displacement is imposed on the hub of the rim (disp1) in the Y-axis. Note that
unlike a linear elastic case (MECA_STATIQUE) where only the final result in considered,
every intermittent step of an nonlinear case must converge before the next step is initiated.
Assigning an appropriate time stepping list (one step = one time increment) for a nonlinear
calculation, is a compromise of having the largest possible steps to save computations
time, versus having time steps small enough to let the solution of each step converge.
An approach is to make a step neither too large nor too small and let Code Aster
automatically divide the step in case of non-convergence. A simplified approach has been
applied here using the keyword DEFI_LIST_INST (as described in the next paragraph).
DEFI_LIST_INST takes an existent list of real numbers (DEFI_LIST_REEL) for the time
stepping scheme, and in the event of non-convergence divides the time step 5 times
12 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.5 Load
13 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.5.1 Group diagram
9.5.1
Group diagram
14 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.5.1 Group diagram
15 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.5.1 Group diagram
16 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.5.2 LIAISON_OBLIQUE diagram
9.5.2
LIAISON_OBLIQUE diagram
9.6
Definition of lists
17 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.7 Nonlinear calculation
9.7
Nonlinear calculation
Some simple parameters for the nonlinear solver is set up; we'll go through them briefly.
9.8
COMP_INCR
VMIS_ISOT_TRAC; which means the material has a plastic potential based on Von Mises
(widespread in ferrous metals), has nonlinear isotropic hardening and utilizes a traction
curve.
9.9
DEFORMATION
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.9 DEFORMATION
For more information, read the document [U4.51.11] Comportements non linaires and
the reference papers [R5.03.02] and [R5.03.21].
9.10
INCREMENT
Uses the previously defined list 'ListInst' that automatically subdivides time steps in the
event of non-convergence.
9.11
NEWTON
9.12
CONVERGENCE
Here we define the greatest residual value we can accept if we are to consider the results
valid and continue to the next time step we also define how many iterations each time
step can have before either stopping the calculation or subdividing the time step.
1. RESI_GLOB_MAXI / RESI_GLOB_RELA: A maximum value of 10-4 is considered
'okay' for this study, but for greater precision, a value of e.g. 10-6 should be used, at
the cost of greater computational time of course.
2. ITER_GLOB_MAXI: A maximum of 10 iterations per time step can be used to reach
the above convergence criteria, otherwise stop the the calculation or subdivide the
time step.
9.13
ARCHIVAGE
Considering that the calculation might subdivide many time steps and perhaps several
times, generating a lot of output, an alternative list is used to tell the solver only to save
certain time steps for later post processing. The keyword LIST_INST uses the list of real
numbers 'Archive' to tell the solver to save only 10 time steps (calculation ends at
JUSQU_A=10 and PAS=1 means that time steps 1,2,3,4,5,6,7,8,9,10 will be saved)
19 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
9.13 ARCHIVAGE
#Nonlinear solution
RESOL_NL=STAT_NON_LINE(MODELE=Model,
CHAM_MATER=Material,
EXCIT=(_F(CHARGE=BC,),
_F(CHARGE=Load,),),
COMP_INCR=_F(RELATION='VMIS_ISOT_TRAC',
DEFORMATION='SIMO_MIEHE',),
INCREMENT=_F(LIST_INST=ListInst,),
NEWTON=_F(PREDICTION='TANGENTE',
REAC_ITER=0,),
CONVERGENCE=_F(RESI_GLOB_MAXI=1e-4,
RESI_GLOB_RELA=1e-4,
ITER_GLOB_MAXI=10,),
ARCHIVAGE=_F(LIST_INST=Archive,
ARCH_ETAT_INIT='OUI',),);
FIN();
20 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10 Stage 2 Post processing
10
As noted before, the second stage of this study utilizes the previously obtained data
generated from the mechanical calculation, to further process the data.
The second command file begins with the keyword POURSUITE - [U4.11.03] which tells
Code Aster to use the data contained in the 'base' folder. As such, when opening a
'poursuite command file' in EFICAS, EFICAS will ask which command file it should
continue from (i.e. rim_solution.comm) . This is so that it knows what concept names are
available/valid for post processing.
10.1
10.1.1
For this study, we will use two output file formats: POS and MED this ensures that the
results can be read by both Salom and GMSH - if one prefers one over the other.
Results are obtained from the integration points (Gauss points - ELGA) for optimal
accuracy. More on this subject later.
By using the same concept name as used for the nonlinear solver (RESOL_NL), we tell
Code Aster to 'enrich' the obtained results, with values calculated on the elements. The
same is done when values on the nodes are calculated.
For the element calculation, values are only calculated at the last time step (INST=10),
whereas the values for the forces on the nodes (FORC_NODA) are calculated for the
entire simulation (TOUT_ORDRE=OUI) this is because we need the evolution of the
node forces later on. Furthermore we only calculate the node forces on the group 'disp1'.
Element fields calculated:
Note: The displacement field DEPL and VARI_ELGA does not need to be
calculated as it is extracted directly from the mechanical calculation.
21 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.1.1 Calculating elements and nodes
POURSUITE();
#Calculate values at integration points (Gauss - ELGA) and on
element nodes (ELNO)
RESOL_NL=CALC_ELEM(reuse =RESOL_NL,
RESULTAT=RESOL_NL,
INST=10,
OPTION=('SIEF_ELNO_ELGA','EQUI_ELGA_EPSI','EQUI
_ELGA_SIGM',),);
#Calculate values at nodes
RESOL_NL=CALC_NO(reuse =RESOL_NL,
RESULTAT=RESOL_NL,
TOUT_ORDRE='OUI',
OPTION='FORC_NODA',
GROUP_NO_RESU='disp1',);
10.1.2
22 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.1.3 Writing the results to POS
10.1.3
GMSH cannot display the vector components from a field in a MED file, but when writing
the results to a POS file, all the vectors and scalars are presented in the main windows,
and this can however, can create somewhat of a mess. Because of this, we divide the
IMPR_RESU keyword up into four parts, and for each field we select what components we
want to include (NOM_CMP). In the special case of the displacement, we tell Code Aster
that we want the resultant (TYPE_CHAM=3D_VECT) of the three displacement vectors
DX,DY,DZ.
IMPR_RESU(FORMAT='GMSH',
UNITE=80,
RESU=(_F(MAILLAGE=Mesh,
RESULTAT=RESOL_NL,
NOM_CHAM='EQUI_ELGA_SIGM',
INST=10,
NOM_CMP='VMIS',),
_F(MAILLAGE=Mesh,
RESULTAT=RESOL_NL,
NOM_CHAM='DEPL',
INST=10,
TYPE_CHAM='VECT_3D',
NOM_CMP=('DX','DY','DZ',),),
_F(MAILLAGE=Mesh,
RESULTAT=RESOL_NL,
NOM_CHAM='EQUI_ELGA_EPSI',
INST=10,
NOM_CMP='INVA_2',),
_F(MAILLAGE=Mesh,
RESULTAT=RESOL_NL,
NOM_CHAM='VARI_ELNO_ELGA',
INST=10,
NOM_CMP=('V1','V8',),),),);
Note: Normally a POS file will have a unit number of 37, but any number can be assigned
with the UNITE keyword it must of course have a corresponding number in ASTK.
23 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.2 Reviewing the results
10.2
10.2.1
Figures 10.1, 10.2 and 10.3 shows the deformed shape compared to the original mesh at
last instant.
24 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.2.1 Deformation
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.2.2 Equivalent von Mises stress
10.2.2
Figures 10.4 and 10.5 shows equivalent von Mises stress (EQUI_ELGA_SIGM,
CMP=VMIS for POS files) at last instant.
26 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.2.2 Equivalent von Mises stress
27 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.2.3 Equivalent strain
10.2.3
Equivalent strain
Figures 10.6 and 10.7 shows equivalent strain (EQUI_ELGA_EPSI, CMP=INVA_2) at last
instant.
28 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
29 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.2.4 Cumulative plastic strain
10.2.4
30 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.2.5 Indication of plasticity
10.2.5
Indication of plasticity
Figures 10.9 and 10.10 indicates where the material has yielded (VARI_ELGA, CMP=V8).
A value of 0 indicates no yield whereas a value of 1 indicates material yield.
31 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.2.5 Indication of plasticity
10.3
To show how forces evolve on the imposed displacement, the node reactions must be
extracted on the data post-processed. This requires a few steps:
Print (write) the generated curve for force vs. displacement with XMGrace
32 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.3.1 Extracting nodal forces
10.3.1
10.3.2
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.3.2 Recover a function for Uy and Fy
PARA_X='INST',
PARA_Y='DY',
FILTRE=_F(NOM_PARA='INTITULE',
VALE_K='Resultante',),);
10.3.3
To write a curve with XMGrace, we tell Code Aster to use XMGrace as for-matter,
and the file format Postscript.
The curve is composed of the previously created functions Uy and Dy.
(The meaning of the rest of the settings can be found in IMPR_FONCTION [U4.33.01])
IMPR_FONCTION(FORMAT='XMGRACE',
PILOTE='POSTSCRIPT',
UNITE=51,
COURBE=_F(FONC_X=Dy,
FONC_Y=FY,
LEGENDE='Fy vs. Uy',
STYLE=8,
COULEUR=1,
MARQUEUR=1,),
TITRE='Force VS displacement',
LEGENDE_X='Uy [mm]',
LEGENDE_Y='Fy [N]',);
FIN();
Alternatively one can extract the values from the group disp1, and use the resultant vector
instead. This way, the reaction force can be divided over the area of the hub. Remember
to multiply the force by 3, since we work with 1/3 of the model. The surface of the imposed
displacement at the hub is ~9000mm (Figure 10.11)
34 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
10.3.3 Write / print the curve with XMGrace
35 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
11 Getting accurate results with Code Aster
11
11.1
In this tutorial every field we've extracted and printed, we've used the fields generated from
the integration points on the elements, the Gauss points (ELGA element Gauss). This is
because these are the exact values calculated by Code Aster - every other type of field
such as elements nodes (ELNO) and nodes (NOEU) are generated by extrapolating and
interpolating the values from the integration points. While these fields (ELNO and NOEU)
generates very pretty fields in post processors (such as Salom), this
interpolation/extrapolation of values leads to inaccurate or ridiculous results, such as
negative von Mises stress.
11.2
Linear triangles (TRIA3) and tetrahedrons (TETRA4) should never be used for anything
other than adjusting time steps, preliminary results and such. For anything else, the
element type is too stiff and will not generate reliable results. One must convert them to
quadratic (2nd order) elements (TRIA6 and TETRA10) using either a preprocessor or within
Code Aster.
Quadrangles and hexahedrons behave much better with finite element programs and one
should strive to use them where possible. Quads and hexas however, also benefit from
being converted into quadratic elements. Especially in areas where changes in the stress-,
strain gradients etc. are steep.
At the cost of increased computational time, quadratic quadrangle/hexahedron elements
will always provide a superior and accurate result.
36 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
12 Conclusion, remarks and author(s)
12
Remark:
Any and all information and content in this document is published under the GPL license
and can as such be used or reproduced in any way. The author(s) only ask for
acknowledgment in such an event.
Acknowledgment goes out to EDF for releasing Code Aster as free software and to all
those who help out by answering questions in the forum and writing documentation /
tutorials.
Contributions and/or corrections to this tutorial are always welcomed.
Author(s)
Original author: Paul Carrico paul.carrico_[at]_free.fr
Translator etc.: Claus Andersen ClausAndersen81_[at]_gmail.com
37 of 38
Apr 5, 2011
Plasticity tutorial for CAELinux.com by Paul Carrico Translated and reworked by Claus Andersen
13 System of units
13
System of units
Unit
Length
Time
Mass
Force
Temperature
Area
Volume
Velocity
Acceleration
Angle, rotation
Angular velocity
Volumetric mass
Moment, couple
Linear force
Surface force
(Stress, pressure, Young's module)
Thermal dilation coefficient
2nd moment of inertia in a beam Igz
Transverse inertial moment in a beam
Energy, work, heat
Energy, transfer rate
Temperature gradient
Thermal flux
Metric
MKS
Metric
MmNS
m
sec
Kg
N
C
m
m
m/sec
m/sec
rad
rad/sec
Kg/m
N-m
N/m
mm
sec
tonne
N
C
mm
mm
mm/sec
mm/sec
rad
rad/sec
Tonne/mm
N-mm
N/mm
ft
sec
slug
lbf
F
ft
ft (cu-ft)
ft/sec
ft/sec
rad
rad/sec
slug/ft
Ft-lbf
lbf/ft
in
sec
Lbf-sec
lbf
F
in
in (cu-in)
in/sec
in/sec
rad
rad/sec
lbf-sec /in
In-lbf
lbf/in
N/m2 (Pa)
/ C (/K)
m
Kg-m
J
W
C/m
W/m
W/m- C
N/mm (Mpa)
/ C (/K)
mm
Tonne-mm
mJ
mW
C/mm
mW/mm2
lbf/ft
/ F (/K)
ft
Slug-ft
Ft-lbf
ft-lbf/sec
F/ft
lbf/ft-sec
lbf/in (Psi)
/ F (/K)
in
Lbf-in-sec
In-lbf
in-lbf/sec
F/in
lbf/in-sec
mW/mm- C
lbf/sec- F
lbf/sec- F
mJ/tonne- C
ft-lbf/slug- F
in /sec - F
Thermal conductivity
Anglo-Saxon Anglo-Saxon
FPS
IPS
J/Kg- C
Specific heat C_p
38 of 38
Apr 5, 2011