Professional Documents
Culture Documents
ebugging Techniques
ebugging Techniques
A computation may be wrong even if the run does not fail. If the calculation goes to the end,
it illustrates a good numerical behavior but not inevitably a good physical response. However,
it is required to receive the message "Normal termination" at the end of the Engine output
file, to validate numerical resolution procedures. The validity of results can be demonstrated
by satisfying the following conditions:
• Numerical stability
• Physical behavior
• Physical reliability
The numerical stability is ensured if a message "Normal termination" and energy and mass
balance are verified. If the numerical model does not really represent the physical problem,
the wrong results may be obtained. To understand the problem, first you need to ask good
questions, which should be answered to put in evidence the reliability of results:
• How dependent is the result on friction?
• How dependent is the model on rupture phenomena?
• How dependent is the result on unknown material parameters?
• How dependent is the model on other phenomena that are difficult to simulate?
If the results are highly dependent to a given parameter, then the experimental test must be
realized to use high precision values for computation.
Note: The best model is that for which you know the values of physical parameters!
Divergence
Divergence occurs when one of the following conditions is observed:
• Positive energy error (except for the first cycle)
• Negative energy error by more than 15% (except for the first cycle)
• Kinematic time step activation in interface Type 7
• Time step given by a rigid body
• Unexplained changes in time step
• Quick increase of mass
There are three types of divergence:
Quick divergence; Energy error increase is often exponential. The calculation fails in few
cycles. Potential causes are:
• Incompatible kinematic conditions
• Negative stiffness in spring
• Negative stiffness in tabulated material law
• Slave nodes too far from the master surface in interface TYPE2 Late divergence
• Time step is too low. The structure is distorted and high penetrations in a lot of
interfaces are observed.
• Potential cause is the mesh quality
Slow divergence; The final error is not necessarily the cause of divergence. Potential causes:
• For a linear divergence, the cause can be the existence of incompatible kinematic
conditions.
• For a sinusoidal divergence, it is typically liberated or generated energy (example:
initial penetrations and spring stiffness functions).
• Too soft of a material can also be the cause.
It is important to find which event triggered the problem. The event just before the divergence
needs to be checked. If a strange behavior is observed for a given part, the connected parts
and previous events also have to be studied.
Run Problems
Run Stops at Cycle 0
The data is not written in the Engine output file runname_0001.out. This is generally due to
bad running procedure when the Restart file cannot be read properly.
Run Stops After Few Cycles
The data is written in the Engine output file runname_0001.out. The origin of the problem can
either be the incompatible kinematic conditions (for example: rigid bodies with a common
slave node) or out of bounds values in material or element properties; although, initial
penetrations may be the cause.
Run Stops During Computation
First check the required disk space, then the behavior just before and after divergence can be
studied. The time step evolution and the energy error need to be observed.
Negative Volume Message
This is mainly due to high deformation of solid meshes. Fully integrated brick elements are
especially affected by this problem which may be caused by a bad interface behavior or bad
material definitions. In any case, the use of co-rotational formulation is recommended to
avoid bad shear deformation response. The Stress Strain Computation Options (/PROP)
assumption can be used with /DT/BRICK/CST to avoid negative volumes (refer to Time Step
and Finite Elements for more details about this option).
Numerical validation includes the following steps which will be discussed below:
a) Starter output file diagnostics
b) Engine output file diagnostics
c) Review of simulation energies
d) Typical debugging scenarios
e) Validation
In general:
• Many modeling errors can be checked in the pre-processor
• The RADIOSS Starter will check the model completely
• All errors need to be corrected for the simulation to run
• All warnings must be reviewed to ensure a valid simulation
• Review penetrations
• Fix real incompatible kinematic conditions
• Check time step (element and nodal)
• Check mass and center of gravity calculated by starter
In this Example Engine there is mass scaling & only gravity loading (no initial energy):
Time Step: Notice at t=0 the natural time step is reported, then at cycle=100, the time step
shown is that set on /DT/NODA/CST in engine file (0.100E-05). Note: If the time step decreases
and then it goes up quickly, there is not a problem. If it varies greatly from one cycle to
another, it is maybe due to the interface stiffness. If the time step remains low, a problem has
occurred. In this case, you have to find the node (or element) controlling the time step and try
to understand why the decrease occurred.
Mass Error: Non-zero value printed because of mass added to meet specified time step
Energy Error: In the first cycle of a run for which the initial energy of the system is null, a false
energy balance introduces large relative error which can be ignored
c) Energy Error
• If the error is negative, it means that some energy has been dissipated.
• In case of under integrated elements (Belytschko shells, solids with 1 integration point),
the Hourglass Energy can explain a negative Energy Error since it is not counted in the
energy balance. The normal amount of Hourglass energy is about 10% to 15%.
• If the error is positive, there is an energy creation.
• In case of using QEPH shell formulation or fully integrated elements, the Energy Error can
be slightly positive since there is no Hourglass energy and the computation is much more
accurate. An error of 1% or 2% will be acceptable.
• In case of a larger positive energy, the source of this energy has to be identified.
Incompatible kinematic conditions can lead to such a situation.
• If the error reaches ±99%, the computation has diverged; except in the first cycle of a run
for which the initial energy of the system was null, so that a relatively false energy balance
often introduces large relative error.
• It is recommended that
• If using mass scaling to control time-step, the mass variation should be smaller than 1%
• (Above 1%, check whether the nodes with added mass are moving and
• consequently, increasing kinetic energy), use /ANIM/NODA/ DMAS, /ANIM/MASS
• Check Energies of parts critical to your analysis (Specify critical parts in Time History)
/TH/PART, /TH/SUBS
• Review animations closely along with stress and strain contours
• If simulating a quasi-static loading then, ideally:
Energy Balance
Considering the external works, the total energy must remain constant or decrease slightly.
The total energy can increase at the end of the computation, during the spring back or at the
beginning during the first cycles.
Internal energy + Kinetic energy + Hourglass energy + Contact Energy + … = Variation
of the External Work
If under-integrated elements are used, the total hourglass energy must remain lower than
10% of the total energy. If this is not the case, the mesh should be reworked or elements with
physical stabilization method should be used. The contact energy is not really physical. For
each subset and for each part the following limitation is recommended:
Mass Balance
If the mass increases, its variation must remain smaller than 1% for each subset and for each
part (dM/M < 1%). If the mass variation is between 1% to 3%, you have to check if the nodes
with the added mass are moving or not. If this is the case, the added mass results in an increase
in kinetic energy. For more than 3% of variation, the results are probably bad.
• The added mass can be due to Interface Type 2, Spotflag =1. In this case, the added mass
is totally made at time t=0.
• In case of added mass in the model, it is necessary to check if it is insignificant with respect
to the total mass of the model (see the DM/M value in the last column in the RADIOSS
Engine listing file (Runname_nnnn.out)).
• It is also important to post-process this added mass in order to check that it is not too
large locally, since this could mean false results (for checking this, the Animations written
with /ANIM/NODA/DMAS have to be visualized).
Momentum Balance
The dynamic equilibrium of each node is satisfied by the Newton law at the end of each cycle.
As RADIOSS resolves the equilibrium equations at each cycle, normally the momentum
balance is satisfied. However, in case of a problem, a cross-check between nodal accelerations
and the impactor forces (interface, rigid wall, barrier, etc.) can help to better understand
problems.
Meaningless Results
Contact forces, von Mises stress, nodal velocities and accelerations have to be checked
carefully. If the values are meaningless (for example: von Mises stress = 1 GPa), the first check
may be the unit system consistency. Refer to the Unit Systems conversion table below for
more information.
Basic Relations
Unit System
d) Typical Debugging Scenarios
Energy Error
• Check the last animation file (written before the computation stops with option /STOP
in the engine file).
• Usual issue :
• Imposed time step too high
• Material badly defined
• Elastic material with large deformation
• Contact interface (stiffness, gap, contact penetrations and intersections) not correctly
defined Mass Error
• Check the last animation file (written before the computation stops with option /STOP
in the engine file).
• Usual issue :
• Imposed time step too high
• Material and property (spring) badly defined
• Elastic material with large deformation
• Contact interface (stiffness, gap) not correctly defined
Negative Volume
• The material is not correctly defined for large deformation (densification phase)
Countermeasure:
• Improve the material definition
• Add a self-impact interface in the solid block with a gap value corresponding to the
maximum compression value of the solid element.
• Add failure in the material model
In the following video series Rahul Rajan describes some typical debugging techniques
Results Checking
How Is the Energy Error in The Listing File (Runname_0001Out) Computed?
How to Understand the Energy Error, And Which Values Are Reasonable Values?
The Energy Error computed by RADIOSS is a percentage.
If the error is negative, it means that some energy has been dissipated.
In case of under integrated elements (Belytschko shells, solids with 1 integration point), the
Hourglass energy can also explain a negative Energy Error since it is not counted in the energy
balance. The normal amount of Hourglass energy is about 10% to 15%.
If the error is positive, there is an energy creation.
In case of using QEPH shell formulation or fully integrated elements, the Energy Error can be
slightly positive since there is no Hourglass energy and the computation is much more
accurate. An error of 1% or 2% will be acceptable.
In case of a more important positive energy, the source of this energy has to be identified.
Incompatible kinematic conditions can lead to such a situation. If the error reaches
symbol_plus-minus99%, the computation has diverged; except in the first cycle of a run for
which the initial energy of the system was null, so that a relatively false energy balance often
introduces large relative error.