Difference between revisions of "Damping Options"

From OSUPDOCS
Jump to navigation Jump to search
 
(60 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[NairnMPM]] has several forms of artificial damping done during particle updates. Their most common use is to damp dynamic effects such that the solution converges to a static result. Some materials also support [[Common Material Properties#Artificial Viscosity|artificial viscosity]] as a damping mechanism done on the material model level. In addition, [[NairnMPM]] supports FLIP, PIC, and combinations of FLIP and PIC by representing PIC damping of FLIP.
[[NairnMPM]] has several forms of artificial damping done during particle updates. Their most common use is to damp dynamic effects such that the solution converges to a static result. Some materials also support [[Common Material Properties#Artificial Viscosity|artificial viscosity]] as a damping mechanism done on the material model level. In addition, [[NairnMPM]] supports FLIP, PIC, [[XPIC Features|XPIC]],<ref name="XPIC"/> [[XPIC Features|FMPM]]<ref name="FMPM"/> and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with PIC, XPIC, and FMPM; XPIC and FMPM enhance stability and control noise. This section focuses on grid and particle damping.


__TOC__
== Introduction ==
== Introduction ==


Many times it is useful to apply damping to results, such as when the goal to achieve a simulation of quasi-static results. This section explains various artificial damping options that are applied to the particle update in the MPM time step. The particle updates for position and velocity with damping become:
Many times it is useful to apply damping to results, such as when the goal to achieve a simulation of quasi-static results. This section explains various artificial damping options that are applied to the particle update in the MPM time step.
 
=== Grid and Particle Damping ===
 
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \vec x_p^{(n+1)} = \vec x_p^{(n)} + \left(\vec v_{g\to p}^{(n+1)} - {\Delta t\over 2}\biggl(\vec a_{g\to p}^{(n)} + \alpha_g \vec v_{g\to p}^{(n)} + \alpha_p \vec v_{p}^{(n)} + \alpha(\beta)\bigl(\vec v_{p}^{(n)} -\vec v_{g\to p}^{(n)} \bigr) + \alpha(\beta) \vec v_{*,g\to p}^{(n)}\biggr)\right)\Delta t </math>
<math> \vec X_p^{(n+1)} = \vec X_p^{(n)} + \left(\vec v_{g\to p}^{(n+1)} - {\Delta t\over 2}\biggl(\vec a_{g\to p}^{(n)} + \alpha_g \vec v_{g\to p}^{(n)} + \alpha_p \vec V_{p}^{(n)} \biggr)\right)\Delta t </math>


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \vec v_p^{(n+1)} = \vec v_p^{(n)} + \biggl(\vec a_{g\to p}^{(n)} - \alpha_g \vec v_{g\to p}^{(n)} - \alpha_p \vec v_{p}^{(n)} - \alpha(\beta)\bigl(\vec v_{p}^{(n)} -\vec v_{g\to p}^{(n)} \bigr) - \alpha(\beta) \vec v_{*,g\to p}^{(n)} \biggr)\Delta t </math>
<math> \vec V_p^{(n+1)} = \vec V_p^{(n)} + \biggl(\vec a_{g\to p}^{(n)} - \alpha_g \vec v_{g\to p}^{(n)} - \alpha_p \vec V_{p}^{(n)} \biggr)\Delta t </math>


where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&rarr;''p'' indicates a grid property that has been extrapolated to the particle. Subscripts (''n'') and (''n''+1) indicate at the start or end of time step n. The damping terms are:
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&rarr;''p'' indicates a grid property that has been extrapolated to the particle. Subscripts (''n'') and (''n''+1) indicate at the start or end of time step n. The damping terms are:
Line 15: Line 20:
* &alpha;<sub>''g''</sub> - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle
* &alpha;<sub>''g''</sub> - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle
* &alpha;<sub>''p''</sub> - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity
* &alpha;<sub>''p''</sub> - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity
* &alpha;(&beta;) - [[#PIC Damping|PIC damping]] where &beta; is the fraction FLIP in the simulation (from 0 to 1) and it scales with the extrapolation error between the particle velocity and the velocity extrapolated from the grid back to the particle.
Although these three damping options could be reduced to two that scale with either particle velocity or the velocity extrapolated from the grid to the particle, separating them as above adds physically insight into the damping mechanisms, especially for the [[#PIC Damping|PIC damping]] option. The <math>\vec v_{*,g\to p}^{(n)}</math> is a special velocity used to implement an extended for of PIC known as  [[#XPIC Method|XPIC Damping]] (and available only in [[OSParticulas]]).
=== Grid and Particle Damping ===


Two types of grid and particle damping are available. Simple damping just specifies the damping value (which can be a function of time). Alternatively, feedback damping provides a variant of Nose-Hoover feedback,<ref name="NHOne">D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).</ref><ref name="NHTwo">W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).</ref><ref name="mpmfb">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)</ref> which implements a scheme to evolve the damping coefficient depending on the current total kinetic energy. The net grid or particle damping will be a sum of the two damping options:
Two types of grid and particle damping are available. Simple damping just specifies the damping value (which can be a function of time). Alternatively, feedback damping provides a variant of Nose-Hoover feedback,<ref name="NHOne"/><ref name="NHTwo"/><ref name="mpmfb"/> which implements a scheme to evolve the damping coefficient depending on the current total kinetic energy. The net grid or particle damping will be a sum of the two damping options:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math>\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)</math>
<math>\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)</math>


A single simulation can use any combination of these damping options. The &alpha;<sub>''g,simple''</sub> and &alpha;<sub>''p,simple''</sub> are  specified with <tt>Damping</tt> and <tt>PDamping</tt> commands, respeectively. The &alpha;<sub>''g,feedback''</sub> and  &alpha;<sub>''p,feedback''</sub> are initialized to zero, but can separately evolve during a simulation based on settings in <tt>FeedbackDamping</tt>  and <tt>PFeedbackDamping</tt> commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &alpha;<sub>''g,feedback''</sub> and &alpha;<sub>''p,feedback''</sub> terms evolve by kinetic energy evaluated on the grid:
A single simulation can use any combination of these damping options. The &alpha;<sub>''g,simple''</sub> and &alpha;<sub>''p,simple''</sub> are  specified with <tt>Damping</tt> and <tt>PDamping</tt> commands, respectively. The &alpha;<sub>''g,feedback''</sub> and  &alpha;<sub>''p,feedback''</sub> are initialized to zero, but can separately evolve during a simulation based on settings in <tt>FeedbackDamping</tt>  and <tt>PFeedbackDamping</tt> commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &alpha;<sub>''g,feedback''</sub> and &alpha;<sub>''p,feedback''</sub> terms evolve by kinetic energy evaluated on the grid:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Line 35: Line 35:
=== PIC Damping ===
=== PIC Damping ===


A paper on using MPM for animation<ref name="Diz">A. Stomakhin, C. Schroeder, L. Chai, J. Teran, and A.  Selle, A material point method for snow simulation, ''ACM Transactions on Graphics (TOG) - SIGGRAPH 2013 Conference Proceedings, '' '''32'''(4), Article No. 102, July (2013)</ref> suggested that simulations could be improved by modifying the velocity update to include a fraction &beta; of standard FLIP style MPM velocity updates and a fraction (1-&beta;) of PIC style updates. In brief, an undamped FLIP update increments the particle velocity using grid acceleration:
An alternate form of MPM is the so-called Particle In Cell or PIC method that replaces particle velocity on each time step with a new velocity extrapolated from the grid. In brief, an undamped FLIP update increments the particle velocity using grid acceleration:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \vec v_{p,FLIP}^{(n+1)} = \vec v_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t </math>
<math> \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t </math>


while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \vec v_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} </math>
<math> \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} </math>


The suggestion<ref name="Diz"/> is that an improved update combines these two updates using:
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.<ref name="cutting"/> A PIC update written as a FLIP update with damping is:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} </math>
<math> \vec X_p^{(n+1)} = \vec X_p^{(n)} + \left(\vec v_{g\to p}^{(n+1)} - {\Delta t\over 2}\biggl(\vec a_{g\to p}^{(n)} + \left(\alpha_g-{1\over \Delta t}\right) \vec v_{g\to p}^{(n)} + \left(\alpha_p+{1\over \Delta t}\right)  \vec V_{p}^{(n)} \biggr)\right)\Delta t </math>
 
This FLIP/PIC option appears to provide benefit in some simulations, but its use is difficult to justify. We noticed, however, that the FLIP/PIC update is actually a special case of the above damping where the PIC damping constant is set equal to:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \alpha(\beta) = {1-\beta\over \Delta t} </math>
<math> \vec V_p^{(n+1)} = \vec V_p^{(n)} + \biggl(\vec a_{g\to p}^{(n)} - \left(\alpha_g-{1\over \Delta t}\right) \vec v_{g\to p}^{(n)} - \left(\alpha_p+{1\over \Delta t}\right)  \vec V_{p}^{(n)}\biggr)\Delta t </math>


This view leads to two significant improvements for the use of PIC in simulations:
This damping view of PIC leads to two significant improvements for the use of PIC in simulations:


* It provides insight and justification for adding PIC. The PIC damping term is related to the extrapolation error between particle velocity and extrapolated grid velocity. This error will be large in elements that contain particles with widely varying velocity (as sometimes happens in MPM simulations) and small in areas with rather uniform velocity. Thus PIC damping will selectively damp out regions with large velocity variations and have little affect on regions with smooth velocities.
* It provides insight and justification for adding PIC. The PIC damping term is related to the extrapolation error between particle velocity and extrapolated grid velocity. This error will be large in elements that contain particles with widely varying velocity (as sometimes happens in MPM simulations) and small in areas with rather uniform velocity. Thus PIC damping will selectively damp out regions with large velocity variations and have little affect on regions with smooth velocities.
* By implementing PIC as a damping mechanism, it became clear how to modify the position update to include a fraction PIC as well. The original reference<ref name="Diz"/> on this option did not alter the position update to account for addition of PIC. The above position update addresses that issue and greatly improves particle displacement results in simulations with a significant amount of PIC. Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &Delta;''t'', the PIC damping terms become first order terms in the position update.
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.<ref name="cutting"/> Some early proposals to use PIC (or to mix a fraction PIC with FLIP) used PIC update for velocity but retained the FLIP update for position.<ref name="Diz"/> The above position update addresses that issue and greatly improves particle displacement results in simulations with a significant amount of PIC.<ref name="cutting"/> Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &Delta;''t'', the PIC damping terms become first order terms in the position update.
 
The development of PIC as a damping scheme and how it modifies position update is described in a paper on simulating cutting in MPM<ref name="cutting">J.A. Nairn, "Numerical Simulation of Orthogonal Cutting using the Material Point Method," Eng. Fract. Mech., 149, 262-275 (2015)</ref>


PIC damping is added to simulations using the <tt>Damping</tt> or <tt>PDamping</tt> commands. For reference, the undamped FLIP and PIC position updates reduce to
A drawback of PIC damping is typcially that it damps too much. It can work well is quasi-static problems, but often damps too much in an dynamic problems. A paper on using MPM for animation<ref name="Diz"/> suggested that simulations could be improved by modifying the velocity update to include a fraction &beta; of standard FLIP style MPM velocity updates and a fraction (1-&beta;) of PIC style updates:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \vec x_{p,FLIP}^{(n+1)} = \vec x_p^{(n)} + \left( \vec v_{g\to p}^{(n+1)}  - {\Delta t\over 2}\vec a_{g\to p}^{(n)} \right)\Delta t</math>
<math> \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} </math>
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> \vec x_{p,PIC}^{(n+1)} = \vec x_p^{(n)} + \left( \vec v_{g\to p}^{(n+1)}  - {1\over 2}(\vec v_p^{(n)} - \vec v_{g\to p}^{(n+1)})\right)\Delta t</math>
 
=== XPIC Damping ===
 
XPIC is an improved form of PIC, which is only available in [[OSParticulas]].<ref name="XPIC">C. Hammerquist and J. A. Nairn, An Extended Particle in Cell Method (XPIC) for MPM", in preparation.</ref> The PIC method can be described as applying a projection operator that modifies (and filters) particle velocities before updating them with the grid acceleration. The problem with PIC is that its projection operator filters many problems too heavily resulting in significant dissipation of energy. In contrast, XPIC defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC is defined by an order <tt>m</tt>, where <tt>m=1</tt> is PIC, <tt>m&gt;1</tt> is XPIC, and large <tt>m</tt> approaches a FLIP method (although may actually approach an improved FLIP method). In other words, <tt>m</tt> from 1 to infinity provides an interpolation between PIC and FLIP, but is probably a better interpolation than the simple linear combination provided by [[#PIC Damping|standard PIC damping]].


The drawback of XPIC is that each higher order of XPIC requires two extra extrapolations. XPIC is therefore less efficient than PIC or FLIP (or a [[#PIC Damping|PIC damping]] linear combination of FLIP and PIC). In many problems, <tt>m=2</tt> can provide sufficient improvement over PIC and reduce undesirable energy dissipation with minimal extra calculations. Larger <tt>m</tt> can be tried but typically become very inefficient and have diminishing returns. Very high values of <tt>m</tt> (''e.g.'', <tt>m&gt;40</tt>) are typcially unstable (due to too many additional extrapolations).
If this method also mixes fraction &beta; of standard FLIP fraction (1-&beta;) of PIC position updates (although original reference did not mix position options<ref name="Diz"/>) it provides and options for controlling the amount of damping. [[NairnMPM]] provides a similar feature, but rather than mix FLIP and PIC on each time step, it intersperses FLIP time steps with PIC time steps. If a PIC time step is done every n<sup>th</sup> time step, it is nearly the same as a simulation with &beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.


XPIC is activated by using the <tt>XPIC</tt> command in combination with activating PIC by having &beta;&lt;1 in a <tt>Damping</tt> or a <tt>PDamping</tt> command.
An alternative to mixing FLIP with PIC is to use two new advanced methods that enhance PIC-style updates to minimize or eliminate their dissipation. The two methods are called [[XPIC Features|XPIC(k) and FMPM(k)]] for XPIC or FMPM of order k. XPIC(1) and FMPM(1) are two similar versions of PIC. Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are also added to simulations by using the [[PeriodicXPIC Custom Task]].
Note that XPIC can be used in combination with [[#PIC Damping|PIC damping]] where that method will now provide linear combination of fraction &beta; FLIP and (1-&beta;) of XPIC.


== Damping Commands ==
== Damping Commands ==
Line 83: Line 71:
In scripted files, grid, particle, and PIC damping are activated with the following commands
In scripted files, grid, particle, and PIC damping are activated with the following commands


  Damping (alphagVsT),<(fractionPIC)>,<(XPICOrder)>
  Damping (alphagVsT)
  FeedbackDamping (gaing),<(Tkg)>,<(maxAlphag)>
  FeedbackDamping (gaing),<(Tkg)>,<(maxAlphag)>
  PDamping (alphapVsT),<(fractionPIC)>,<(XPICOrder)>
  PDamping (alphapVsT)
  PFeedbackDamping (gainp),<(Tkp)>,<(maxAlphap)>
  PFeedbackDamping (gainp),<(Tkp)>,<(maxAlphap)>
 
The <tt>Damping</tt> and <tt>FeedbackDamping</tt> commands or the <tt>PDamping</tt> and <tt>PFeedbackDamping</tt> commands set [[#Grid and Particle Damping|grid or particle damping]] terms, respectively. Any combination of these damping options can be used in a simulation. The parameters are:
The <tt>Damping</tt> and <tt>FeedbackDamping</tt> commands or the <tt>PDamping</tt> and <tt>PFeedbackDamping</tt> commands set [[#Grid and Particle Damping|grid or particle damping]] terms, respectively. Any combination of these damping options can be used in a simulation. The parameters are:


* <tt>(alphagVsT)</tt> and <tt>(alphapVsT)</tt> are constant damping factors or [[User Defined Functions|user defined functions]] of time that evaluate to a damping constant. The units are [[ConsistentUnits Command#Legacy and Consistent Units|1/time units]] and the default value is 0.
* <tt>(alphagVsT)</tt> and <tt>(alphapVsT)</tt> are constant damping factors or [[User Defined Functions|user defined functions]] of time that evaluate to a damping constant. The units are [[ConsistentUnits Command#Legacy and Consistent Units|1/time units]] and the default value is 0.
* <tt>(gaing)</tt> and <tt>(gainp)</tt> are gains for evolution of &alpha;<sub>g</sub> or &alpha;<sub>p</sub> in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length<sup>2</sup> units]]. The default is 0 or no damping.
* <tt>(gaing)</tt> and <tt>(gainp)</tt> are gains for evolution of &alpha;<sub>g</sub> or &alpha;<sub>p</sub> in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length<sup>2</sup> units]]. The default is 0 or no damping.
* <tt>(Tkg)</tt> and <tt>(Tkp)</tt> are optional [[User Defined Functions|user-defined functions]] of time that evaluate to a target kinetic energy in &mu;J. The default value is 0.
* <tt>(Tkg)</tt> and <tt>(Tkp)</tt> are optional [[User Defined Functions|user-defined functions]] of time that evaluate to a target kinetic energy in [[ConsistentUnits Command#Legacy and Consistent Units|alt energy units]]. The default value is 0.
* <tt>(maxAlphag)</tt> and <tt>(maxAlphap)</tt> can optionally specify a maximum feedback damping coefficient (&alpha;<sub>g</sub> or &alpha;<sub>p</sub>) entered in [[ConsistentUnits Command#Legacy and Consistent Units|1/time units]]. 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.
* <tt>(maxAlphag)</tt> and <tt>(maxAlphap)</tt> can optionally specify a maximum feedback damping coefficient (&alpha;<sub>g</sub> or &alpha;<sub>p</sub>) entered in [[ConsistentUnits Command#Legacy and Consistent Units|1/time units]]. 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.
* <tt>(fractionPIC)</tt> is the [[#PIC Damping|fraction PIC]] to use in the simulation (''i.e.'', 1-&beta;). It can vary from 1 for pure PIC to 0 for pure FLIP. The default is 0. Although this parameter can be set in either the <tt>Damping</tt> or the <tt>PDamping</tt> command, only one setting is allowed;  a simulation will use whichever setting is last.
* <tt>(XPICOrder)</tt> to set the XPIC order or <tt>m</tt> to use for the [[#XPIC Damping|XPIC method]]. It must be an integer and values less than 1 are set to 1. Note that this command is ignored unless PIC is activates with <tt>(fractionPIC)</tt> &gt; 1. The default is 1, which is standard PIC.


In <tt>XML</tt> input files, grid, particle, and/or PIC damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|<tt><MPMHeader></tt> element]]:
In <tt>XML</tt> input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|<tt><MPMHeader></tt> element]]:


  <Damping PIC='(fractionPIC)' function='(alphagVsT)'>(alphagNum)</Damping>
  <Damping function='(alphagVsT)'>(alphagNum)</Damping>
  <FeedbackDamping target='(Tkg)' max='(maxAlphag)'>(gaing)</FeedbackDamping>
  <FeedbackDamping target='(Tkg)' max='(maxAlphag)'>(gaing)</FeedbackDamping>
  <PDamping function='(alphapVsT)'>(alphapNum)</PDamping>
  <PDamping function='(alphapVsT)'>(alphapNum)</PDamping>
  <PFeedbackDamping target='(Tkp)' max='(maxAlphap)'>(gainp)</PFeedbackDamping>
  <PFeedbackDamping target='(Tkp)' max='(maxAlphap)'>(gainp)</PFeedbackDamping>
<XPIC order='(XPICOrder)'/>


where
where
Line 109: Line 94:
* <tt>(alphagNum)</tt> and <tt>(alphapNum)</tt> parameters are constant grid and particle damping factors (only numbers are allowed). These constant values are only used if no function attribute is provided. The units are [[ConsistentUnits Command#Legacy and Consistent Units|1/time units]] and the default value is 0.
* <tt>(alphagNum)</tt> and <tt>(alphapNum)</tt> parameters are constant grid and particle damping factors (only numbers are allowed). These constant values are only used if no function attribute is provided. The units are [[ConsistentUnits Command#Legacy and Consistent Units|1/time units]] and the default value is 0.


== Custom Particle and PIC Damping ==
=== Custom Particle Damping ===


The above commands set global damping parameters. If desired, particles for different materials can use custom particle and/or PIC damping. The custom damping for specific materials are set within the [[Common Material Properties#Basic Properties|material properties]] when defining any material type.
The above commands set global damping parameters. If desired, particles for different materials can use custom particle damping. The custom damping for specific materials are set within the [[Common Material Properties#Basic Properties|<tt>matDamping</tt> material properties]] when defining any material type.


== Using Damping ==
== Using Damping ==
Line 119: Line 104:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math>\tau = {2\over \alpha}</math>
<math>\tau = {2\over \alpha}</math>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(or <math>\tau\ (\rm in\ ms) = {2000\over \alpha}</math> when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])


One set of tension simulations for an isotropic material with E = 2300 MPa and &rho; = 1 g/cm<sup>3</sup> were damped weill with &alpha; = 5000 sec<sup>-1</sup> or &tau; &asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &radic;(E/ρ) of the materials. When the problem involves bending, however, the damping coefficient may need to based on the transverse vibrational frequency rather than on material wave speed.
One set of tension simulations for an isotropic material with E = 2300 MPa and &rho; = 1 g/cm<sup>3</sup> were damped weill with &alpha; = 5000 sec<sup>-1</sup> or &tau; &asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &radic;(E/ρ) of the materials. When the problem involves bending, however, the damping coefficient may need to based on the transverse vibrational frequency rather than on material wave speed.
Line 133: Line 119:
The differences between [[#Grid and Particle Damping|grid and particle]] damping are typically minor. The two options are available, however, in case one type (or a combination) works better in specific problems.
The differences between [[#Grid and Particle Damping|grid and particle]] damping are typically minor. The two options are available, however, in case one type (or a combination) works better in specific problems.


[[#PIC Damping|PIC damping]] can be used alone or in addition to [[#Grid and Particle Damping|grid and particle]]. It seems to have the most affect in problems involving non-zero velocity boundary conditions, problems involving contact, and problems with crack propagation. It has less affect on problems with traction boundary conditions. The current recommendation is purely trial and error. Try adding some fraction PIC and see if it helps the results without altering them to a invalid solution.
[[#PIC Damping|PIC damping]] can be used alone or in addition to [[#Grid and Particle Damping|grid and particle damping]]. It seems to have the most affect in problems involving non-zero velocity boundary conditions, problems involving contact, and problems with crack propagation. It has less affect on problems with traction boundary conditions. The current recommendation is purely trial and error. Try adding PIC using the [[PeriodicXPIC Custom Task]] and see if it helps the results without altering them to a invalid solution. You can vary the amoiunt of PIC damping by settings in the [[PeriodicXPIC Custom Task]].


== Notes ==
== Notes ==
Line 149: Line 135:


== References ==
== References ==
<references/>
 
<references>
<ref name="XPIC">C. Hammerquist and J. A. Nairn, "A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability", <i>Computer Methods in Applied Mechanics and Engineering</i>, <b>318</b>, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])</ref>
<ref name="FMPM">J. A. Nairn and C. C. Hammerquist, "Material point method simulations using an approximate full mass matrix inverse," <i>Computer Methods in Applied Mechanics and Engineering</i>, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])</ref>
<ref name="NHOne">D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).</ref>
<ref name="NHTwo">W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).</ref>
<ref name="mpmfb">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)</ref>
<ref name="cutting">J.A. Nairn, "Numerical Simulation of Orthogonal Cutting using the Material Point Method," Eng. Fract. Mech., 149, 262-275 (2015)</ref>
<ref name="Diz">A. Stomakhin, C. Schroeder, L. Chai, J. Teran, and A.  Selle, A material point method for snow simulation, ''ACM Transactions on Graphics (TOG) - SIGGRAPH 2013 Conference Proceedings, '' '''32'''(4), Article No. 102, July (2013)</ref>
</references>

Latest revision as of 09:37, 16 August 2023

NairnMPM has several forms of artificial damping done during particle updates. Their most common use is to damp dynamic effects such that the solution converges to a static result. Some materials also support artificial viscosity as a damping mechanism done on the material model level. In addition, NairnMPM supports FLIP, PIC, XPIC,[1] FMPM[2] and periodic mixtures of FLIP with PIC, XPIC, and FMPM; XPIC and FMPM enhance stability and control noise. This section focuses on grid and particle damping.

Introduction

Many times it is useful to apply damping to results, such as when the goal to achieve a simulation of quasi-static results. This section explains various artificial damping options that are applied to the particle update in the MPM time step.

Grid and Particle Damping

The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:

      [math]\displaystyle{ \vec X_p^{(n+1)} = \vec X_p^{(n)} + \left(\vec v_{g\to p}^{(n+1)} - {\Delta t\over 2}\biggl(\vec a_{g\to p}^{(n)} + \alpha_g \vec v_{g\to p}^{(n)} + \alpha_p \vec V_{p}^{(n)} \biggr)\right)\Delta t }[/math]

      [math]\displaystyle{ \vec V_p^{(n+1)} = \vec V_p^{(n)} + \biggl(\vec a_{g\to p}^{(n)} - \alpha_g \vec v_{g\to p}^{(n)} - \alpha_p \vec V_{p}^{(n)} \biggr)\Delta t }[/math]

where x is position, v is velocity, a is acceleration, and Δt is the time step. Subscript p indicates a particle property and subscript gp indicates a grid property that has been extrapolated to the particle. Subscripts (n) and (n+1) indicate at the start or end of time step n. The damping terms are:

Two types of grid and particle damping are available. Simple damping just specifies the damping value (which can be a function of time). Alternatively, feedback damping provides a variant of Nose-Hoover feedback,[3][4][5] which implements a scheme to evolve the damping coefficient depending on the current total kinetic energy. The net grid or particle damping will be a sum of the two damping options:

      [math]\displaystyle{ \alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t) }[/math]

A single simulation can use any combination of these damping options. The αg,simple and αp,simple are specified with Damping and PDamping commands, respectively. The αg,feedback and αp,feedback are initialized to zero, but can separately evolve during a simulation based on settings in FeedbackDamping and PFeedbackDamping commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The αg,feedback and αp,feedback terms evolve 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 grid and particle feedback damping terms can set separate values for K and Tk. 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.

PIC Damping

An alternate form of MPM is the so-called Particle In Cell or PIC method that replaces particle velocity on each time step with a new velocity extrapolated from the grid. In brief, an undamped FLIP update increments the particle velocity using grid acceleration:

      [math]\displaystyle{ \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t }[/math]

while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:

      [math]\displaystyle{ \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} }[/math]

Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.[6] A PIC update written as a FLIP update with damping is:

      [math]\displaystyle{ \vec X_p^{(n+1)} = \vec X_p^{(n)} + \left(\vec v_{g\to p}^{(n+1)} - {\Delta t\over 2}\biggl(\vec a_{g\to p}^{(n)} + \left(\alpha_g-{1\over \Delta t}\right) \vec v_{g\to p}^{(n)} + \left(\alpha_p+{1\over \Delta t}\right) \vec V_{p}^{(n)} \biggr)\right)\Delta t }[/math]

      [math]\displaystyle{ \vec V_p^{(n+1)} = \vec V_p^{(n)} + \biggl(\vec a_{g\to p}^{(n)} - \left(\alpha_g-{1\over \Delta t}\right) \vec v_{g\to p}^{(n)} - \left(\alpha_p+{1\over \Delta t}\right) \vec V_{p}^{(n)}\biggr)\Delta t }[/math]

This damping view of PIC leads to two significant improvements for the use of PIC in simulations:

  • It provides insight and justification for adding PIC. The PIC damping term is related to the extrapolation error between particle velocity and extrapolated grid velocity. This error will be large in elements that contain particles with widely varying velocity (as sometimes happens in MPM simulations) and small in areas with rather uniform velocity. Thus PIC damping will selectively damp out regions with large velocity variations and have little affect on regions with smooth velocities.
  • By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.[6] Some early proposals to use PIC (or to mix a fraction PIC with FLIP) used PIC update for velocity but retained the FLIP update for position.[7] The above position update addresses that issue and greatly improves particle displacement results in simulations with a significant amount of PIC.[6] Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to Δt, the PIC damping terms become first order terms in the position update.

A drawback of PIC damping is typcially that it damps too much. It can work well is quasi-static problems, but often damps too much in an dynamic problems. A paper on using MPM for animation[7] suggested that simulations could be improved by modifying the velocity update to include a fraction β of standard FLIP style MPM velocity updates and a fraction (1-β) of PIC style updates:

      [math]\displaystyle{ \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} }[/math]

If this method also mixes fraction β of standard FLIP fraction (1-β) of PIC position updates (although original reference did not mix position options[7]) it provides and options for controlling the amount of damping. NairnMPM provides a similar feature, but rather than mix FLIP and PIC on each time step, it intersperses FLIP time steps with PIC time steps. If a PIC time step is done every nth time step, it is nearly the same as a simulation with β=(n-1)/n. To create simulations with periodic PIC, add a PeriodicXPIC Custom Task to you simulation.

An alternative to mixing FLIP with PIC is to use two new advanced methods that enhance PIC-style updates to minimize or eliminate their dissipation. The two methods are called XPIC(k) and FMPM(k) for XPIC or FMPM of order k. XPIC(1) and FMPM(1) are two similar versions of PIC. Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are also added to simulations by using the PeriodicXPIC Custom Task.

Damping Commands

In scripted files, grid, particle, and PIC damping are activated with the following commands

Damping (alphagVsT)
FeedbackDamping (gaing),<(Tkg)>,<(maxAlphag)>
PDamping (alphapVsT)
PFeedbackDamping (gainp),<(Tkp)>,<(maxAlphap)>

The Damping and FeedbackDamping commands or the PDamping and PFeedbackDamping commands set grid or particle damping terms, respectively. Any combination of these damping options can be used in a simulation. The parameters are:

  • (alphagVsT) and (alphapVsT) are constant damping factors or user defined functions of time that evaluate to a damping constant. The units are 1/time units and the default value is 0.
  • (gaing) and (gainp) are gains for evolution of αg or αp in feedback damping. It has 1/length2 units. The default is 0 or no damping.
  • (Tkg) and (Tkp) are optional user-defined functions of time that evaluate to a target kinetic energy in alt energy units. The default value is 0.
  • (maxAlphag) and (maxAlphap) can optionally specify a maximum feedback damping coefficient (αg or αp) entered in 1/time units. 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, grid and particle damping are activated with the the following commands, which must be within the <MPMHeader> element:

<Damping function='(alphagVsT)'>(alphagNum)</Damping>
<FeedbackDamping target='(Tkg)' max='(maxAlphag)'>(gaing)</FeedbackDamping>
<PDamping function='(alphapVsT)'>(alphapNum)</PDamping>
<PFeedbackDamping target='(Tkp)' max='(maxAlphap)'>(gainp)</PFeedbackDamping>

where

  • (alphagNum) and (alphapNum) parameters are constant grid and particle damping factors (only numbers are allowed). These constant values are only used if no function attribute is provided. The units are 1/time units and the default value is 0.

Custom Particle Damping

The above commands set global damping parameters. If desired, particles for different materials can use custom particle damping. The custom damping for specific materials are set within the matDamping material properties when defining any material type.

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 = {2\over \alpha} }[/math]      (or [math]\displaystyle{ \tau\ (\rm in\ ms) = {2000\over \alpha} }[/math] when using Legacy units)

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.4 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 vibrational 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.

You can monitor total grid and particle damping constants, αp and αp, by using global archiving options. Ideally the simulation α will remain as a reasonable number for the dynamics of the problem (i.e., provided damping gain is appropriate for the problem). When using a target kinetic energy, α should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the α may continue to increase and may 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.

The differences between grid and particle damping are typically minor. The two options are available, however, in case one type (or a combination) works better in specific problems.

PIC damping can be used alone or in addition to grid and particle damping. It seems to have the most affect in problems involving non-zero velocity boundary conditions, problems involving contact, and problems with crack propagation. It has less affect on problems with traction boundary conditions. The current recommendation is purely trial and error. Try adding PIC using the PeriodicXPIC Custom Task and see if it helps the results without altering them to a invalid solution. You can vary the amoiunt of PIC damping by settings in the PeriodicXPIC Custom Task.

Notes

  1. The use of feedback damping in MPM calculations was first described in Ayton, et al., 2002.[5] 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.
  2. A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.[3][4] In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.[5] 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. C. Hammerquist and J. A. Nairn, "A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability", Computer Methods in Applied Mechanics and Engineering, 318, 724-738 (2017). (See PDF)
  2. J. A. Nairn and C. C. Hammerquist, "Material point method simulations using an approximate full mass matrix inverse," Computer Methods in Applied Mechanics and Engineering, in press (2021). (See PDF)
  3. 3.0 3.1 D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. J. Chem. Phys., 83, 4069–4074 (1985).
  4. 4.0 4.1 W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. Phys. Rev. A., 31, 1695–1697 (1985).
  5. 5.0 5.1 5.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)
  6. 6.0 6.1 6.2 J.A. Nairn, "Numerical Simulation of Orthogonal Cutting using the Material Point Method," Eng. Fract. Mech., 149, 262-275 (2015)
  7. 7.0 7.1 7.2 A. Stomakhin, C. Schroeder, L. Chai, J. Teran, and A. Selle, A material point method for snow simulation, ACM Transactions on Graphics (TOG) - SIGGRAPH 2013 Conference Proceedings, 32(4), Article No. 102, July (2013)