Difference between revisions of "Damping Options"
Line 32: | Line 32: | ||
== Damping Commands == | == Damping Commands == | ||
In scripted files, | In scripted files, grid damping is activated with the two commands | ||
Damping (alphaVsT) | Damping (alphaVsT) |
Revision as of 13:03, 31 March 2014
NairnMPM has two forms of grid damping. Their most common use to damp dynamic effects such that the solution converges to a static result.
Introduction
Grid damping is a damping term applied to each node on the grid that alters the grid forces (or accelerations). In brief, the force on node i for step n with damping is modified to be:
[math]\displaystyle{ \vec f_{i}^{(n)*} =\vec f_{i}^{(n)} - \alpha \vec p_i^{(n)} }[/math]
where fi is total force on node i from all sources, pi is nodal momentum, and α is the grid damping constant (in units of 1/sec). The nodal velocity update becomes:
[math]\displaystyle{ \vec v_{i}(t+\Delta t) = \vec v_{i}(t) + {\vec f_{i}^{(n)*}\over m_i^{(n)}}\Delta t = \vec v_{i}(t) + (\vec a_i - \alpha \vec v_i) \Delta t }[/math]
where ai = fi(n)/mi(n) is nodal acceleration without damping, vi = pi(n)/mi(n) is nodal velocity, and mi(n) is nodal mass. Similarly, the particle velocity update (when done using grid accelerations) is
[math]\displaystyle{ \vec v_{p}(t+\Delta t) = \vec v_{p}(t) + \vec a_{g\to p}^{(n)*}\Delta t = \vec v_{p}(t) + (\vec a_{g\to p}^{(n)} - \alpha\vec v_{g\to p}^{(n)})\Delta t }[/math]
where g→p indicates acceleration or velocity extrapolated from the grid to the particle, superscript * means extrapolation using force modified for damping, and no superscript means extrapolation using unmodified force.
The two types of grid damping available in NairnMPM differ only in entry end evolution of the damping term α. Simple damping just specifies α as a constant value (or optionally as a function of time). Alternatively, feedback damping provides a variant of Nose-Hoover feedback,[1][2][3] which implements a scheme to evolve the damping coefficient depending on the current total kinetic energy. This approach can evolve the kinetic energy to zero (for a static result) or to any provided non-zero target kinetic energy. In feedback damping, α is initialized to zero and then evolves by kinetic energy evaluated on the grid:
[math]\displaystyle{ {d\alpha\over dt} = {2K\over m_{tot}} \left(\sum_{{\rm node}\ i} {1\over 2} m_i |v_i|^2 - T_k \right) }[/math]
where K is a gain parameter, mtot is total mass, and Tk is the target kinetic energy. The (2/mtot) is an arbitrary scaling used to make K similar to a different feedback damping method used in earlier versions of this code and an attempt to make K less dependent on problem size. A single simulation can use one or the other type or combine them. If both used the net α will be a sum of damping terms by each option:
[math]\displaystyle{ \alpha = \alpha_{simple} + \alpha_{feedback} }[/math]
Damping Commands
In scripted files, grid damping is activated with the two commands
Damping (alphaVsT) FeedbackDamping (gain),<(Tk)>,<(maxAlpha)>
Although both can be used, usually only one damping method is used in a simulation. The parameters are:
- (alphaVsT) is a constant damping factor or a user defined function of time that evaluates to a grid damping constant. The units are 1/sec and the default value is 0.
- (gain) is gain for evolution of α in feedback damping. It has units of 1/mm2. The default is 0 or no damping.
- (Tk) in an optional user-defined function of time that evaluates to a target kinetic energy in μJ. The default value is 0.
- (maxAlpha) can optionally specify a maximum damping coefficient (α) entered in units of 1/sec. The default is to have no limit to damping, but a maximum can be used to prevent out-of-control overdamping. When a limit is needed, however, it might be a symptom of a poor simulation with too much kinetic energy.
In XML input files, damping is activated with the the following commands, which must be within the <MPMHeader> element:
<Damping function='(alphaVsT)'>(alphaNum)</Damping> <FeedbackDamping target='(Tk)' max='(maxAlpha)'>(gain)</FeedbackDamping>
where the extra (alphaNum) parameter is a constant damping factor (only numbers are allowed). This constant value is only used if no function attribute is provided. The units are 1/sec and the default value is 0.
Using Damping
Adding damping allows a dynamic calculation to approach static or quasi static results after sufficiently long times. Too much damping, however, will alter the results. The challenge is to select the appropriate amount of damping. The amount of damping to approach static results without over damping depends on the problem being damped. Under static conditions (no longer applying forces or moving particles), damping will cause the total kinetic energy on the grid to decay with a exponential time constant on the order of
[math]\displaystyle{ \tau = {1\over 2\alpha} }[/math]
One set of tension simulations for an isotropic material with E = 2300 MPa and ρ = 1 g/cm3 were damped weill with α = 5000 sec-1 or τ ≈ 0.1 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed √(E/ρ) of the materials. When the problem involves bending, however, the damping coefficient may need to based on the transverse vibration frequency rather than on material wave speed.
For problems with monotonic loading, you would not want to damp to zero kinetic energy, but rather to a non-zero kinetic energy appropriate for the problem. For example, a simple tension test the x direction on a bar with one end (at x=0) fixed and the other end (at x=l) moving at velocity v in quasi-static conditions, would have position-dependent velocity of vx/l. The quasi-static kinetic energy for this simulation would be
[math]\displaystyle{ T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2 }[/math]
where m is total mass of the object. This problem is best damped using feedback damping with the target kinetic energy equal to this evaluated Tk. The (gain) parameter would have to be selected by trial and error to avoid too little or too much damping.
When using feedback damping, you can monitor the evolved damping constant α by using global archiving options. Ideally the evolved α would be a reasonable number for the dynamics of the problem (i.e., comparable to an α picked with simple damping command). When using a target kinetic energy, α should decrease toward zero as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the α may continue to increase and may then eventually cause overdamping. The (maxAlpha) parameter can be used to prevent α growing too large, but typically a need to use this parameter might mean the simulations will not work well and other methods should be considered.
Notes
- The use of feedback damping in MPM calculations was first described in Ayton, et al., 2002.[3] This reference evolved α using
[math]\displaystyle{ {d\alpha\over dt} = K \sum_p |v_p|^2 }[/math]
In other words the update was based on sum of particle velocities and there was no target kinetic energy. This approach is only suitable for problems with static boundary conditions. The modifications in NairnMPM allow the use of damping with variable boundary conditions (assuming you can estimate the expected kinetic energy) and uses kinetic energy rather than a velocity sum. The use of kinetic energy makes the method more general and therefore better able to handle composite materials having particles of different masses. Furthermore, the kinetic energy for NairnMPM damping is found from grid masses and velocities rather than particle masses and velocities becuase in some problems particle kinetric energy can develop artifacts while grid kinetic energy is more robust estimate of total kinetic energy. - A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.[1][2] In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.[3] When boundary conditions are constant, either simple damping or feedback damping with no target kinetic energy will help the problem converge to the static solution. For non-constant boundary conditions, you need to use feedback damping, estimate the "static" (i.e., very slow loading) kinetic energy, and set (Tk) parameter to this estimate to have this thermostat work correctly.
References
- ↑ 1.0 1.1 D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. J. Chem. Phys., 83, 4069–4074 (1985).
- ↑ 2.0 2.1 W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. Phys. Rev. A., 31, 1695–1697 (1985).
- ↑ 3.0 3.1 3.2 G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, "Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles," Biophys J, 83, 1026-1038 (2002)