In explicit analysis, the time step is affected by element size and material sound speed.
This relationship is discussed in the Theory Manual; see the chapter on "Time Step Control".
In very rough terms, time step is proportional to (element size)/soundspeed.
So you can see how a smaller element size would reduce the time step.
Material sound speed is proportional to 1/sqrt(density).
So you can see how mass (=density/volume) would affect the time step.
The smaller the time step, the more steps it takes to complete the analysis.
More time steps means longer run time.
The idea behind mass scaling is that by adding nonphysical mass in key locations, the explicit
time step is raised. You have to be careful with this approach however.
READ THE NOTES BELOW.
______________________________________________________________________________________________________
(Conventional) Mass-scaling refers to a technique whereby nonphysical mass is added
to a structure in order to achieve a larger explicit timestep.
Anytime you add nonphysical mass to increase the timestep in a dynamic
analysis, you affect the results (think of F = ma). Sometimes the
effect is insignificant and in those cases adding nonphysical mass is
justifiable. Examples of such cases may include the addition of mass to
just a few small elements in a noncritical area or quasi-static
simulations where the velocity is low and the kinetic energy is very
small relative to the peak internal energy. In the end, it's up to the
judgement of the analyst to gage the affect of mass scaling. You may
have to reduce or eliminate mass scaling in a second run to gage the
sensitivity of the results to the amount of mass added.
One can employ mass scaling manually by artificially increasing
material density of the parts you want to mass-scale. This manual form of mass
scaling is done independently of the automatic mass scaling invoked with DT2MS
in *control_timestep.
When DT2MS is input as a negative value, mass is added (with a safety
factor; see note at end of this file) only to those
elements whose timestep would otherwise be less than TSSFAC * |DT2MS|. By
adding mass to these elements, their timestep becomes equal to TSSFAC *
|DT2MS|. An infinite number of combinations of TSSF and DT2MS will give the
same product and thus the same timestep but the added mass will be different for each
of those combinations. The trend is that the smaller the TSSF, the greater
the added mass. In return, stability may improve as TSSF is reduced (just
as in non-mass-scaled solutions). If stability is a problem with the
default TSSF of 0.9, try 0.8 or 0.7. If you reduce TSSF, you can
increase |DT2MS| proportionally so that their product, and hence timestep, is unchanged.
A test case with solids (http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/4blocks_load_body_mscale.k)
shows the body forces (*load_body)
do NOT take into account mass scaling invoked by DT2MS < 0.
When using SOFT=2 contact AND employing mass scaling, it may be wise to set PSTIFF=1, either in
*CONTROL_CONTACT or on Card F of *CONTACT.
__________________________________________________________
To determine where and when mass is automatically added, write GLSTAT and
MATSUM files. These files will allow you to plot added mass vs. time for
the complete model and for individual parts, respectively. To produce
fringe plots of added mass in parts comprised of shell elements (DT2MS negative), set STSSZ=3 in
*database_extent_binary. You can then fringe the added
mass (per element) using LS-PrePost by choosing Post > FriComp > Misc > time step size.
(Here, the label "time step size" is really the element added mass.)
The parameter MSSCL in *database_extent_binary can be set so that
either incremental nodal mass (MSSCL=1) or percentage increase in nodal mass
(MSSCL=2) is written when DT2MS is negative. This should work for any element type.
In LS-PrePost, fringe this added nodal mass or percentage nodal added mass
via Post> FriComp > Misc > mass scaling.
(See node 580 in http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/taylor.mat3.noerode.mscale.k)
______________________________________________________________
The difference between using a positive or negative number for DT2MS
in *control_timestep is as follows:
Negative: Initial time step will not be less than TSSF * -DT2MS.
Mass is added to only those elements whose timestep would otherwise
be less than TSSF*abs(DT2MS). When mass scaling is appropriate, I recommend
this method. The amount of mass that can be added using this method is limited.
'Excessive' added mass will cause the job to terminate.
Positive: Initial time step will not be less than DT2MS.
Mass is added OR TAKEN AWAY from elements so that the timestep of
every element is the same. This method is harder to rationalize although it
is not subject to termination from 'excessive' added mass.
The parameter MS1ST in *control_timestep controls whether mass is added only
once during initialization (MS1ST=1) or anytime as necessary to maintain the
desired timestep specified via DT2MS (MS1ST=0).
You can use ENDMAS in *control_termination to stop the calculation after
a certain amount of mass has been added (active for automatic mass scaling only).
___________________________________________________________________________________
RE: OVERVIEW OF SELECTIVE MASS SCALING (SMS):
The concept of conventional mass scaling is very simple, as we discussed. It's akin to just increasing the density of elements whose time step would otherwise be smaller than |DT2MS|*TSSFAC.
On the other hand, Selective mass-scaling (SMS) does not simply add mass in the manner of conventional mass scaling. It is designed to provide a more physical dynamic solution than conventional mass scaling, but it comes not without cost.
Selective mass scaling is both memory and CPU intensive. The selective mass scaling option requires the solving of a sparse equation system every time step. The mass matrix is no longer diagonal. Storing the non-diagonal mass matrix requires additional memory and the explicit solution takes additional CPU time. The system is solved iteratively.
Selective mass scaling is invoked using DT2MS and IMSCL in *control_timestep.
It can be applied either to all the parts of the model (IMSCL set to 1) or to a subset of parts (recommended over universal selective mass scaling for sake of computational efficiency; invoked by setting IMSCL<0 with
abs(IMSCL) = part set list). If selective mass scaling is applied to a subset of parts, the remaining parts are subject
to conventional mass scaling.
For systems that undergo rotation, see the optional variable RMSCL in *control_timestep.
When deformable bodies which are selectively massed share nodes with a rigid body, take note of the
variable RBSMS to 1 in *control_rigid. The Theory Manual (dated 3/29/16 or later) elaborates
on RBSMS in the rigid body dynamics chapter.
Examples illustrating conventional mass scaling and selective mass scaling.
1. http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/combo_cms_sms.k (selective mass scaling to
hex elements (ELFORM 1) and conventional mass scaling to shells).
2. http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/combo_cms2shells_sms2tets.k (selective
mass scaling to tets (ELFORM 10) and conventional mass scaling to shells).
3. http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/mscale.3cases.k
---------------------------------------------------
Output:
LS-DYNA does not output the actual added mass from SMS, as that value is never precisely
quantitied at each point in time. Instead, the "added high frequency mass" is a worst case,
or upper bound, of added mass and includes conventional added mass and the upper bound of
selective added mass.
glstat reports only the low frequency added mass, which is another name for the conventional added mass.
matsum's added mass includes conventional added mass and the upper bound of selective added mass.
Like the added mass values in matsum, the added mass values written to d3plot when MSSCL=1 includes
both conventional added mass and the upper bound of selective added mass.
Note: "added mass" reported on-screen, in glstat, in matsum, and fringed from d3plot are all
misleading when selective mass scaling is employed (pending resolution of Bug #1516, 9/3/2008)
--------------------------------------------------------
References:
L. Olovsson, K. Simonsson and M. Unosson:
Selective mass scaling for explicit finite element analyses. International Journal for Numerical
Methods in Engineering, Vol. 63, pp. 1496-1505 (2005)
http://ftp.lstc.com/anonymous/outgoing/support/FAQ_docs/olovsson2005_selective_mass_scaling.pdf
L. Olovsson and K. Simonsson:
Iterative solution technique in selective mass scaling. Communications in Numerical Methods in
Engineering, Vol. 22, pp. 77-82, (2006)
http://ftp.lstc.com/anonymous/outgoing/support/FAQ_docs/olovsson2006_selective_mass_scaling.pdf
Borrvall, T., "Selective Mass Scaling (SMS): Theory and Practice", 2011
Developers' Forum, Stuttgart, Germany, October, 2011.
http://www.dynamore.de/documents/papers/develop11/selective-mass-scaling-sms
See also:
http://www.dynasupport.com/howtos/general/selective-mass-scaling-sms-2
------------------------------------------------------------------
Some further explanation of selective added mass from the developer:
The selective added mass for rigid body translation is zero.
The selective added mass for the most critical deformation mode is the same as for conventional mass scaling.
The actual selective added mass at a given point in time and for a given element will depend
on the deformation/motion of the element and can be anything between those two extreme values.
But it is impossible to quantify this value for each point in the simulation (or at least it would require some intricate calculations).
Ref: Ticket#2016021810000021
----------------------------------------------------------
**** UPDATE: Enhancement to selective mass scaling (SMS). ****
From T.Borrvall 5/12/10:
The Release_Notes_LS-DYNA_971_R5 state "introducing flag for accounting rotations in sms [selective mass scaling] scheme".
(See RMSCL in *control_timestep.)
There is no paper to my knowledge regarding this, I came up with a generalization of
Lars's idea and implemented it. The thing is that it adds to the computational cost but
does improve things at the same time. Lars' motivation to why not treat the rotational dofs is
that their influence diminishes with mesh refinement, but Dilip sent me some models where I could
see that it had effect and that motivated me to implement it.
From T.Borrvall 11/09:
http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/cyl_sms_rot.k
http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/head_sms_rot.k
are validations of selective mass scaling with rotation option, a shell
structure (head_sms_rot.k) and solid structure (cyl_sms_rot.k) are
subjected to a load enforcing a rotation. The inertia for (default)
selective mass scaling or conventional mass scaling prevents them from
rotating but with the new option they rotate very much as if no mass
scaling is applied at all. These problems should be run in R5
rev. 56394 and later.
**** FURTHER UPDATE to SMS (R6.1 and higher only) ***
To avoid having SMS increase inertia (and mass?) of rigid bodies which share nodes with
selectively mass scaled deformable bodies, set RBSMS to 1 in *control_rigid.
TSSFAC may need to be reduced for stability when this option is invoked.
See bugzilla 6633 for example and details.
_____________________________________________________________
Note that mass scaling in ALE part is affected by IMASCL on card 3 of *control_ale.
When we choose NOT to add mass to ALE elements (IMASCL=0 (default)) but do mass-scale Lagrangian parts
(DT2MS<0), the actual time step will be >= tssf*|dt2ms| even if the minimum ALE element time step
drops below that threshold. This can bring about unstable behavior and warnings are written to d3hsp.
______________________________________________________________
Time variation of mass scaling:
Mass-scaling can also be specified by a load curve with DT2MSLC parameter in *CONTROL_TIMESTEP.
When DT2MSLC is greater than zero, it overrides the value of DT2MS.
Load curve based mass-scaling, defined using a monotonically increasing curve,
is helpful when early part of the simulations is dominated by inertia effects and mass-scaling
during this time could affect the responses. In such cases, a load curve based DT2MS can be defined
with either a zero or small mass-scaled timestep until the end of the dynamic simulation after which
a non-zero or a larger mass-scaled timestep can be input. It must be noted that LS-DYNA always
takes the maximum of the current timestep and the ordinate value of the DT2MSLC to compute the mass-scaling.
____________________________________________________________________________
Mass-scaling of deformable spotweld beams:
The mass-scaling parameter in *mat_spotweld (DT) affects only the spotwelds. If
no mass-scaling is invoked in *control_timestep (DT2MS=0.) AND the timestep is
controlled by the deformable spotwelds, DT can be used to add inertia to the
spotwelds during intialization in order to increase the timestep to a value of
DT. When DT is nonzero, mass added to spotweld beams is reported to d3hsp.
MATSUM momentum and KE does NOT factor in added mass to def. spotwelds.
GLSTAT DOES factor in added mass to total KE (spotweld.beam.type9.mscale.initvel.k)
Consider 3 cases of invoking mass-scaling in a model with deformable spotwelds:
1. Although "percentage mass increase" under "Deformable Spotwelds:" in
d3hsp is bogus when
DT2MS is neg. and DT in *mat_spotweld = 0, the following are correct:
"added spotweld mass" in d3hsp
"added mass" and "percentage increase" in d3hsp AFTER the first time step
"added mass" in glstat and matsum
2. Added spotweld mass controlled by DT in *mat_spotweld is
NOT INCLUDED in "added mass"
given in d3hsp, glstat, or matsum when DT2MS is neg. and DT in
*mat_spotweld is nonzero.
This can be quite misleading. User must check for "added spotweld
mass" in d3hsp.
Recommended: Do not invoke both mass-scaling criteria. Neg. DT2MS
with DT=0 (case 1 above) is preferred.
3. If DT is nonzero and DT2MS=0, the initial timestep will NOT consider
added spotweld
mass but the time step will increase by 10% each cycle until the
correct timestep (considering
added spotweld mass) is achieved. Glstat and matsum contain no
"added mass" line item.
The above can be illustrated using http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/spotweld.beam.type9.mscale.k
__________________________________________________________________________________
Note that added mass may cause the energy ratio to rise.
(See http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/taylor.mat3.noerode.mscale.k)
_______________________________________________________________________
Note regarding mass added due to negative DT2MS:
There is a safety factor of sorts applied to the added mass, i.e., more mass
is added than is theoretically required. This is intentional and based on experience.
Crash models were seen to often go unstable if the unfactored,
theoretical added mass was used. There is also a safety factor for
solid element added mass but it's less than for shells.
Case study: http://ftp.lstc.com/anonymous/outgoing/support/FAQ_kw/negDT2MS.safetyfactor.tar
test.dyn (in the tar file) establishes the natural time step for a simple
shell model to be 4.17e-7. The total mass, all physical, is 7.8e-8.
test1.dyn uses dt2ms to raise the time step to 5.04e-7. According to
simple theory (mass is proportional to dt^2), the added mass necessary
to achieve this time step should be...
physical mass + added mass = physical mass * (dt1/dt2)^2
added mass = 7.8e-8 * (5.04/4.17)^2 - 7.8e-8 = 3.6e-8
However, d3hsp reports the added mass to be TWICE this theoretical value
or 7.2e-8. By plotting acceleration of the body in test1.dyn, I
confirmed that the mass is force/acceleration = 1.0/6.6643e6 = 15.0e-8.
This is the sum of physical mass and added mass reported in d3hsp.
____________________________________________________________________________
RE: More differences on added mass for shells vs. for solids
After comparing the mass scaling between solids and shells [when a curve DT2MSLC is used in *CONTROL_TIMESTEP],
I found that the shells always use the max scaled mass unlike the solids which uses the scaled mass computed at each cycle.
This can be considered to be intended behavior.
I did another test to countercheck the mass scaling behavior for solid and shell elements.
By applying deformation to the solid and shell element the crit. timestep is first decreasing and afterwards increasing.
Mass scaling is defined by constant DT2MS=-2.0e7.
In that case mass is added to the shell and the solid element but stays constant afterwards for both element types: solid and shell.
So in that case both element types use the max scaled mass.
ah
Ticket#2018110210000076
_______________________________________________________________________
RE: Changing added mass via change in DT2MS in a small restart
The model and small restart deck in
http://ftp.lstc.com/anonymous/outgoing/support/EXAMPLES/change_dt2ms_in_smallrestart.tar can be used to illustrate that a change to DT2MS in a small restart to affect the time step but will not result in a reduction of total added mass. In other words, using this small restart approach, you can't get rid of added mass once it's been added. My conclusion is based on time history plots of added mass and time step from glstat, but also based on nodal time history plots of y-acceleration. If the added mass were to suddenly changes during the simulation, there would have to be a corresponding jump in the y-acceleration since the y-force applied to the free body is constant with time (accel = force/mass).
To remove added mass, in lieu of a restart, one could write dynain data using *INTERFACE_SPRINGBACK_LSDYNA and then use that dynain data in a new analysis to initialize deformation, stress, etc. In the new analysis, you'd leave DT2MS blank so there would be no added mass.
jd
Ticket#2019050710000175
_______________________________________________________________________
See also these text files:
http://ftp.lstc.com/anonymous/outgoing/support/FAQ/long_run_times
http://ftp.lstc.com/anonymous/outgoing/support/FAQ/quasistatic
__________________________________________________________
RE: Time scaling
Time scaling is another technique used to reduce run time in an explicit analysis.
Here, you increase the rate of loading, e.g., by a factor of 10 or 100, and decrease the
termination time by the same factor.
To some extent, you may be able to employ this technique and still obtain a quasi-static solution, if that's your aim.
jd