<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://osupdocs.forestry.oregonstate.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nairnj</id>
	<title>OSUPDOCS - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://osupdocs.forestry.oregonstate.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nairnj"/>
	<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Special:Contributions/Nairnj"/>
	<updated>2026-06-01T18:29:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26262</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26262"/>
		<updated>2026-04-12T19:40:11Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}-\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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.&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; Also note that standard damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping term is a first order term in the position update.&lt;br /&gt;
&lt;br /&gt;
A drawback of PIC damping is it usually damps too much. It can work well is quasi-static problems, but often damps too much in dynamic problems. A paper on using MPM for animation&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this approach also mixes fraction &amp;amp;beta; of standard FLIP position update with fraction (1-&amp;amp;beta;) of PIC position update (although original reference incorrectly did not mix position updates&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;), it provides one option 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC but sample simulations show to FMPM(1) is better than XPIC(1) and both are much better then a PIC method that omits PIC damping in the position update. Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26261</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26261"/>
		<updated>2026-04-12T19:39:22Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}-\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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.&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; Also note that standard damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping term is a first order term in the position update.&lt;br /&gt;
&lt;br /&gt;
A drawback of PIC damping is it usually damps too much. It can work well is quasi-static problems, but often damps too much in dynamic problems. A paper on using MPM for animation&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP position update with fraction (1-&amp;amp;beta;) of PIC position update (although original reference incorrectly did not mix position updates&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;), it provides one option 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC but sample simulations show to FMPM(1) is better than XPIC(1) and both are much better then a PIC method that omits PIC damping in the position update. Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26260</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26260"/>
		<updated>2026-04-12T19:38:13Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}-\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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.&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; Also note that standard damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping term is a first order term in the position update.&lt;br /&gt;
&lt;br /&gt;
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 dynamic problems. A paper on using MPM for animation&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP position update with fraction (1-&amp;amp;beta;) of PIC position update (although original reference incorrectly did not mix position updates&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;), it provides one option 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC but sample simulations show to FMPM(1) is better than XPIC(1) and both are much better then a PIC method that omits PIC damping in the position update. Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26259</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26259"/>
		<updated>2026-04-12T19:35:50Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}-\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that standard damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping term is a first order term in the position update.&lt;br /&gt;
&lt;br /&gt;
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 dynamic problems. A paper on using MPM for animation&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP position update with fraction (1-&amp;amp;beta;) of PIC position update (although original reference incorrectly did not mix position updates&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;), it provides one option 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC but sample simulations show to FMPM(1) is better than XPIC(1) and both are much better then a PIC method that omits PIC damping in the position update. Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26258</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26258"/>
		<updated>2026-04-12T19:31:52Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}-\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that standard damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping term is a first order term in the position update.&lt;br /&gt;
&lt;br /&gt;
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 dynamic problems. A paper on using MPM for animation&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP position update with fraction (1-&amp;amp;beta;) of PIC position update (although original reference incorrectly did not mix position updates&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;), it provides one option 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26257</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26257"/>
		<updated>2026-04-12T19:29:03Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}-\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that standard damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping term is a first order term in the position update.&lt;br /&gt;
&lt;br /&gt;
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 dynamic problems. A paper on using MPM for animation&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26256</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26256"/>
		<updated>2026-04-12T19:28:41Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}-\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that standard damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping term is a first order term in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26255</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26255"/>
		<updated>2026-04-12T19:27:16Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}-\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26254</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26254"/>
		<updated>2026-04-12T19:26:37Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec v_{g\to p}^{(n)}-\vec V_{p}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26253</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26253"/>
		<updated>2026-04-12T19:25:16Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extra damping created by adopting PIC methods are seen to be&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
PIC Damping = &amp;lt;math&amp;gt;\frac{\vec V_{p}\vec v_{g\to p}^{(n)}}{\Delta t}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping interpretion of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26252</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26252"/>
		<updated>2026-04-12T19:22:25Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping view of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations using PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26251</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26251"/>
		<updated>2026-04-12T19:21:18Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* PIC Damping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping view of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;. The above position update addresses that issue and greatly improves particle displacement results in simulations with a significant amount of PIC&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt;. Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26250</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26250"/>
		<updated>2026-04-12T19:16:56Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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 damping options that are applied to the particle update in the MPM time step.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping view of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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.&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; The above position update addresses that issue and greatly improves particle displacement results in simulations with a significant amount of PIC.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26249</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26249"/>
		<updated>2026-04-12T19:16:05Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping view of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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.&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; The above position update addresses that issue and greatly improves particle displacement results in simulations with a significant amount of PIC.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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 [[FMPM Features|FMPM(k) and (XPIC(k)]] for FMPM or XPIC of order k. FMPM(1) and XPIC(1) are two similar versions of PIC (note that FMPM(1) is better than XPIC(1)). Orders greater than one provide new methods that can stabilize simulations without causing too much dissipation. These two methods are added to simulations by using the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26248</id>
		<title>PeriodicXPIC Custom Task</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26248"/>
		<updated>2026-04-12T19:13:17Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[MPM Input Files#Custom Tasks|custom task]] to use [[FMPM Features|FMPM(k) (or XPIC(k)) methods]] on all or selected time steps&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt; (or XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;) method is an [[FMPM Features|advanced method]] makes use of an approximate inverse of the full mass matrix to filter out unwanted noise (in the null space) without damping out useful information. A drawback is that it adds calculation time as order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; increases. Many simulations (especially those with stability issues) will run better by using FMPM(k) (or XPIC(k)). The methods can be done every time step or only on periodic time steps. This custom tasks adds FMPM(k) (or XPIC(k)) to any simulation and lets you select the frequency of those calculations.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) or XPIC(k) For Mechanics ==&lt;br /&gt;
&lt;br /&gt;
MPM simulations will use standard FLIP method be default. To switch to FMPM(k) or XPIC(k) for all time steps (or just for some), schedule this task and specify all needed parameters. In scripted files, a &amp;lt;tt&amp;gt;PeriodicXPIC&amp;lt;/tt&amp;gt; custom task is scheduled with&lt;br /&gt;
&lt;br /&gt;
 CustomTask PeriodicXPIC&lt;br /&gt;
 Parameter FMPMOrder,(order)&lt;br /&gt;
 (... or Parameter XPICOrder,(order))&lt;br /&gt;
 Parameter periodicSteps,(stepInterval)&lt;br /&gt;
 Parameter periodicTime,(timeInterval)&lt;br /&gt;
 Parameter periodicCFL,(CFLfactor)&lt;br /&gt;
 Parameter verbose,{verbose}&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this task is scheduled using a &amp;lt;tt&amp;gt;&amp;lt;Schedule&amp;gt;&amp;lt;/tt&amp;gt; element, which must be within the single &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Schedule name='PeriodicXPIC'&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='FMPMOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;amp;lt;!-- or &amp;lt;Parameter name='XPICOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;--&amp;amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicSteps'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicTime'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicCFL'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='verbose'&amp;gt;(verbose)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the parameters are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(order)&amp;lt;/tt&amp;gt; - Enter FMPM or XPIC order (the &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;) to use when doing periodic FMPM(k) or XPIC(k) calculations. Select &amp;lt;tt&amp;gt;(order&amp;gt;&amp;lt;/tt&amp;gt; using an &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; command to run using FMPM(k) or an &amp;lt;tt&amp;gt;XPICOrder&amp;lt;/tt&amp;gt; command to run using XPIC(k). FMPM(k) is usually preferred; XPIC(k) is available mostly for comparisons to older methods.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; - sets the frequency for running periodic FMPM(k) or XPIC(k) time steps for mechanics. The &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; option sets number of time steps between each FMPM(k) or XPIC(k) time step, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; sets frequency in  [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]], and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; sets frequency relative to the basic time step for the momentum equation. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is provided, it is used and the other two are ignored. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is not provided, the time step is found from the &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; (if provided) or from &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;. One of these three parameters is required to enable periodic FMPM(k) or XPIC(k) calculations.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(verbose)&amp;lt;/tt&amp;gt; - If a non-zero integer, a comment line is printed in the output file every time FMPM(k) or XPIC(k) time steps are done. The default is 0.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) For Transport Properties ==&lt;br /&gt;
&lt;br /&gt;
You can also use FMPM(k) for temperature (when doing [[Thermal Calculations|conduction calculations]]), for concentration (when doing [[Diffusion Calculations|diffusion calculations]]), for pore pressure (when doing [[Poroelasticity Calculations|poroelasticity calculations]]) or for [[Additional Transport Calculations|other transports calculations]].&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; FMPM(k) seems to provide significant improvement of transport modeling and can eliminate oscillations sometimes seen for transport value for particles within one cell. Note the transport modeling must use the same FMPM order as selected for mechanics. Furthermore, it will always uses FMPM(k) even if mechanics is using XPIC(k).&lt;br /&gt;
&lt;br /&gt;
To use FMPM(k) for transport equations, select order [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] and then select periodicity of FMPM(k) for conduction and/or diffusion with following task parameters:&lt;br /&gt;
&lt;br /&gt;
 Parameter periodicStepsConduction,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeConduction,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLConduction,(CFLfactor)&lt;br /&gt;
 Parameter periodicStepsDiffusion#,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeDiffusion#,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLDiffusion#,(CFLfactor)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this new parameter options within the &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block are&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsConduction'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeConduction'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLConduction'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsDiffusion#'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeDiffusion#'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLDiffusion#'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here &amp;quot;#&amp;quot; in the diffusion commands should be &amp;quot;0&amp;quot; (or omitted) to set values for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] calculations or can refer to [[Additional Transport Calculations|other transport]] calculations by number in the order they were created in the input command file by extra &amp;lt;tt&amp;gt;Diffusion&amp;lt;/tt&amp;gt; commands (starting with 1 and not counting commands for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] where ever they occurred).&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;tt&amp;gt;(stepInterval)&amp;amp;ge;1&amp;lt;/tt&amp;gt;, its meaning is the same as in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]]. But if &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;, it invokes a new feature not available for mechanics modeling. In this range the simulation will blend FMPM(k) and FLIP methods using a fraction &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; of FMPM(k) and fraction &amp;lt;tt&amp;gt;1-(stepInterval)&amp;lt;/tt&amp;gt; of FLIP. Because the full extra cost of FMPM(k) occurs on every time step, even if only used at a small fraction, this approach is less efficient than doing FMPM(k) periodically. In some simulations, however, it might give smoother results while a periodic method could have transients around each time step that uses FMPM(k).&lt;br /&gt;
&lt;br /&gt;
The meanings of values &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; are given in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] except that CFL factor is applied to [[MPM_Methods_and_Simulation_Timing#Theory:_MPM_Time_Step|transport time step]] and not the simulation time step.&lt;br /&gt;
&lt;br /&gt;
When using FMPM(k) for transport equations, you should never pick &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; because it causes too much numerical diffusion. Any higher order works, unless the FMPM(k) time steps are done too frequently. Because transport time step is usually much longer then mechanics time step, it is usually best to pick transport FMPM(k) frequency using the CFL parameter options and the chosen CFL factor should be 2 or higher for FMPM(2) and 0.5 or higher for FMPM(k&amp;amp;gt;2) to avoid numerical diffusion.&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; Alternatively, one could pick blended method (with &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;) and use a small enough fraction of FMPM(k) to avoid numerical diffusion.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724–738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;377&amp;lt;/b&amp;gt;, 113667 (2021). (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;transport&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Coupling Transport Equations to Mechanics in the Material Point Method Using an Approximate Full Capacity Matrix Inverse,&amp;quot; ''Computer Methods in Applied Mechanics and Engineering'', '''420''', 116757 (2024). ([https://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/TransportPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26247</id>
		<title>PeriodicXPIC Custom Task</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26247"/>
		<updated>2026-04-12T19:12:25Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[MPM Input Files#Custom Tasks|custom task]] to use [[FMPM Features|FMPM(k) (or XPIC(k)) methods]] on all or selected time steps&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt; (or XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;) method is an [[FMPM Features|advanced method]] makes use of an approximate inverse of the full mass matrix to filter out unwanted noise (in the null space) without damping out useful information. A drawback is that it adds calculation time as order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; increases. Many simulations (especially those with stability issues) will run better by using FMPM(k) (or XPIC(k)). The methods can be done every time step or only on periodic time steps. This custom tasks adds FMPM(k) (orm XPIC(k)) to any simulation and lets you select the frequency of those calculations.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) or XPIC(k) For Mechanics ==&lt;br /&gt;
&lt;br /&gt;
MPM simulations will use standard FLIP method be default. To switch to FMPM(k) or XPIC(k) for all time steps (or just for some), schedule this task and specify all needed parameters. In scripted files, a &amp;lt;tt&amp;gt;PeriodicXPIC&amp;lt;/tt&amp;gt; custom task is scheduled with&lt;br /&gt;
&lt;br /&gt;
 CustomTask PeriodicXPIC&lt;br /&gt;
 Parameter FMPMOrder,(order)&lt;br /&gt;
 (... or Parameter XPICOrder,(order))&lt;br /&gt;
 Parameter periodicSteps,(stepInterval)&lt;br /&gt;
 Parameter periodicTime,(timeInterval)&lt;br /&gt;
 Parameter periodicCFL,(CFLfactor)&lt;br /&gt;
 Parameter verbose,{verbose}&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this task is scheduled using a &amp;lt;tt&amp;gt;&amp;lt;Schedule&amp;gt;&amp;lt;/tt&amp;gt; element, which must be within the single &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Schedule name='PeriodicXPIC'&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='FMPMOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;amp;lt;!-- or &amp;lt;Parameter name='XPICOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;--&amp;amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicSteps'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicTime'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicCFL'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='verbose'&amp;gt;(verbose)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the parameters are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(order)&amp;lt;/tt&amp;gt; - Enter FMPM or XPIC order (the &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;) to use when doing periodic FMPM(k) or XPIC(k) calculations. Select &amp;lt;tt&amp;gt;(order&amp;gt;&amp;lt;/tt&amp;gt; using an &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; command to run using FMPM(k) or an &amp;lt;tt&amp;gt;XPICOrder&amp;lt;/tt&amp;gt; command to run using XPIC(k). FMPM(k) is usually preferred; XPIC(k) is available mostly for comparisons to older methods.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; - sets the frequency for running periodic FMPM(k) or XPIC(k) time steps for mechanics. The &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; option sets number of time steps between each FMPM(k) or XPIC(k) time step, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; sets frequency in  [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]], and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; sets frequency relative to the basic time step for the momentum equation. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is provided, it is used and the other two are ignored. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is not provided, the time step is found from the &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; (if provided) or from &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;. One of these three parameters is required to enable periodic FMPM(k) or XPIC(k) calculations.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(verbose)&amp;lt;/tt&amp;gt; - If a non-zero integer, a comment line is printed in the output file every time FMPM(k) or XPIC(k) time steps are done. The default is 0.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) For Transport Properties ==&lt;br /&gt;
&lt;br /&gt;
You can also use FMPM(k) for temperature (when doing [[Thermal Calculations|conduction calculations]]), for concentration (when doing [[Diffusion Calculations|diffusion calculations]]), for pore pressure (when doing [[Poroelasticity Calculations|poroelasticity calculations]]) or for [[Additional Transport Calculations|other transports calculations]].&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; FMPM(k) seems to provide significant improvement of transport modeling and can eliminate oscillations sometimes seen for transport value for particles within one cell. Note the transport modeling must use the same FMPM order as selected for mechanics. Furthermore, it will always uses FMPM(k) even if mechanics is using XPIC(k).&lt;br /&gt;
&lt;br /&gt;
To use FMPM(k) for transport equations, select order [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] and then select periodicity of FMPM(k) for conduction and/or diffusion with following task parameters:&lt;br /&gt;
&lt;br /&gt;
 Parameter periodicStepsConduction,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeConduction,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLConduction,(CFLfactor)&lt;br /&gt;
 Parameter periodicStepsDiffusion#,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeDiffusion#,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLDiffusion#,(CFLfactor)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this new parameter options within the &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block are&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsConduction'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeConduction'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLConduction'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsDiffusion#'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeDiffusion#'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLDiffusion#'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here &amp;quot;#&amp;quot; in the diffusion commands should be &amp;quot;0&amp;quot; (or omitted) to set values for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] calculations or can refer to [[Additional Transport Calculations|other transport]] calculations by number in the order they were created in the input command file by extra &amp;lt;tt&amp;gt;Diffusion&amp;lt;/tt&amp;gt; commands (starting with 1 and not counting commands for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] where ever they occurred).&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;tt&amp;gt;(stepInterval)&amp;amp;ge;1&amp;lt;/tt&amp;gt;, its meaning is the same as in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]]. But if &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;, it invokes a new feature not available for mechanics modeling. In this range the simulation will blend FMPM(k) and FLIP methods using a fraction &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; of FMPM(k) and fraction &amp;lt;tt&amp;gt;1-(stepInterval)&amp;lt;/tt&amp;gt; of FLIP. Because the full extra cost of FMPM(k) occurs on every time step, even if only used at a small fraction, this approach is less efficient than doing FMPM(k) periodically. In some simulations, however, it might give smoother results while a periodic method could have transients around each time step that uses FMPM(k).&lt;br /&gt;
&lt;br /&gt;
The meanings of values &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; are given in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] except that CFL factor is applied to [[MPM_Methods_and_Simulation_Timing#Theory:_MPM_Time_Step|transport time step]] and not the simulation time step.&lt;br /&gt;
&lt;br /&gt;
When using FMPM(k) for transport equations, you should never pick &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; because it causes too much numerical diffusion. Any higher order works, unless the FMPM(k) time steps are done too frequently. Because transport time step is usually much longer then mechanics time step, it is usually best to pick transport FMPM(k) frequency using the CFL parameter options and the chosen CFL factor should be 2 or higher for FMPM(2) and 0.5 or higher for FMPM(k&amp;amp;gt;2) to avoid numerical diffusion.&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; Alternatively, one could pick blended method (with &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;) and use a small enough fraction of FMPM(k) to avoid numerical diffusion.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724–738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;377&amp;lt;/b&amp;gt;, 113667 (2021). (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;transport&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Coupling Transport Equations to Mechanics in the Material Point Method Using an Approximate Full Capacity Matrix Inverse,&amp;quot; ''Computer Methods in Applied Mechanics and Engineering'', '''420''', 116757 (2024). ([https://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/TransportPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26246</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26246"/>
		<updated>2026-04-12T18:53:15Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* XPIC(k) and FMPM(k) Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. It is referred to as FMPM(k) where ''k'' is the order of approximation used to find the full mass matrix inverse. FMPM(k) is an incremental improvement an an early methods known as XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;. They are very similar, but FMPM(k) is now the preferred option.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, an incremental improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are both supported, simulation results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) is therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and higher &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has been removed. If these commands are found in old input files, they should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26245</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26245"/>
		<updated>2026-04-12T18:52:31Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* XPIC(k) and FMPM(k) Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. It is referred to as FMPM(k) where ''k'' is the order of approximation used to find the full mass matrix inverse. FMPM(k) is an incremental improvement an an early methods known as XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;. They are very similar, but FMPM(k) is now the preferred option.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, an incremental improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are both supported, simulation results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) is therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and higher &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has been removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26244</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26244"/>
		<updated>2026-04-12T18:51:27Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. It is referred to as FMPM(k) where ''k'' is the order of approximation used to find the full mass matrix inverse. FMPM(k) is an incremental improvement an an early methods known as XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;. They are very similar, but FMPM(k) is now the preferred option.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, an incremental improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are both supported, simulation results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) is therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and higher &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26243</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26243"/>
		<updated>2026-04-12T18:50:54Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. It is referred to as FMPM(k) where ''k'' is the order of approximation used to find the full mass matrix inverse. FMPM(k) is an incremental improvement an an early methods known as XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;. They are very similar, but FMPM(k) is now the preferred option.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, an incremental improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are both supported, simulation results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) is therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26242</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26242"/>
		<updated>2026-04-12T18:50:15Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. It is referred to as FMPM(k) where ''k'' is the order of approximation used to find the full mass matrix inverse. FMPM(k) is an incremental improvement an an early methods known as XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;. They are very similar, but FMPM(k) is now the preferred option.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, an incremental improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are both supported, simulation results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26241</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26241"/>
		<updated>2026-04-12T18:49:26Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. It is referred to as FMPM(k) where ''k'' is the order of approximation used to find the full mass matrix inverse. FMPM(k) is an incremental improvement an an early methods known as XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;. They are very similar, but FMPM(k) is now the preferred option.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, an incremental improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26240</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26240"/>
		<updated>2026-04-12T18:48:08Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. It is referred to as FMPM(k) where ''k'' is the order of approximation used to find the full mass matrix inverse. FMPM(k) is an incremental improvement an an early methods known as XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;. They are very similar, but FMPM(k) is now the preferred option.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26239</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26239"/>
		<updated>2026-04-12T18:47:55Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. It is referred to as FMPM(k) where ``k'' is the order of approximation used to find the full mass matrix inverse. FMPM(k) is an incremental improvement an an early methods known as XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt;. They are very similar, but FMPM(k) is now the preferred option.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=XPIC_Features&amp;diff=26238</id>
		<title>XPIC Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=XPIC_Features&amp;diff=26238"/>
		<updated>2026-04-12T18:44:04Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: Nairnj moved page XPIC Features to FMPM Features: To emphasize FMPM is better than XPIC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[FMPM Features]]&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26237</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26237"/>
		<updated>2026-04-12T18:44:04Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: Nairnj moved page XPIC Features to FMPM Features: To emphasize FMPM is better than XPIC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26236</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26236"/>
		<updated>2026-04-12T18:42:23Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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,[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping view of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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.&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; The above position update addresses that issue and greatly improves particle displacement results in simulations with a significant amount of PIC.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26235</id>
		<title>Damping Options</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Damping_Options&amp;diff=26235"/>
		<updated>2026-04-12T18:40:41Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[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, [[FMPM Features|XPIC]],[[FMPM Features|FMPM(k) or XPIC(k)]]&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; &amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and [[PeriodicXPIC Custom Task|periodic mixtures]] of FLIP with FMPM(k) or XPIC(k). This section section describes only the options for grid and particle damping.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Grid and Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
The particle updates (when using FLIP) for position and velocity with damping related to grid velocity, particle velocity, or both are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''x'' is position, ''v'' is velocity, ''a'' is acceleration, and &amp;amp;Delta;''t'' is the time step. Subscript ''p'' indicates a particle property and subscript ''g''&amp;amp;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:&lt;br /&gt;
&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''g''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|grid damping]] that scales with the velocity extrapolated to the particle&lt;br /&gt;
* &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; - [[#Grid and Particle Damping|particle damping]] that scales with the particle velocity&lt;br /&gt;
&lt;br /&gt;
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,&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\alpha_g = \alpha_{g,simple}(t) + \alpha_{g,feedback}(t) \qquad {\rm and}\qquad \alpha_p = \alpha_{p,simple}(t) + \alpha_{p,feedback}(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A single simulation can use any combination of these damping options. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,simple''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,simple''&amp;lt;/sub&amp;gt; are  specified with &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; commands, respectively. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and  &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; are initialized to zero, but can separately evolve during a simulation based on settings in &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt;  and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; commands. Feedback damping will evolve such that kinetic energy approaches zero (for a static result) or approaches any non-zero target kinetic energy. The &amp;amp;alpha;&amp;lt;sub&amp;gt;''g,feedback''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p,feedback''&amp;lt;/sub&amp;gt; terms evolve by kinetic energy evaluated on the grid:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} =  {2K\over m_{tot}} \left(\sum_{{\rm node}\  i} {1\over 2} m_i |v_i|^2 - T_k \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''K'' is a gain parameter, &amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is total mass, and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt; is the target kinetic energy. The grid and particle feedback damping terms can set separate values for ''K'' and &amp;lt;i&amp;gt;T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;. The (2/&amp;lt;i&amp;gt;m&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;&amp;lt;/i&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
=== PIC Damping ===&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,FLIP}^{(n+1)} = \vec V_p^{(n)} + \vec a_{g\to p}^{(n)} \Delta t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
while an undamped PIC update sets particle velocity to the grid velocity extrapolated to the particle:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec V_{p,PIC}^{(n+1)} = \vec v_{g\to p}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than PIC being an alternative MPM update method, a revised view is that it is a new style of damping.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; A PIC update written as a FLIP update with damping is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \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 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This damping view of PIC leads to two significant improvements for the use of PIC in simulations:&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* By implementing PIC as a damping mechanism, it became clear how to modify the position update in PIC as well.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; 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.&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; The above position update addresses that issue and greatly improves particle displacement results in simulations with a significant amount of PIC.&amp;lt;ref name=&amp;quot;cutting&amp;quot;/&amp;gt; Also note that the damping terms in the position update are second order, but because PIC damping is inversely proportional to &amp;amp;Delta;''t'', the PIC damping terms become first order terms in the position update.&lt;br /&gt;
&lt;br /&gt;
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&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt; suggested that simulations could be improved by modifying the velocity update to include a fraction &amp;amp;beta; of standard FLIP style MPM velocity updates and a fraction (1-&amp;amp;beta;) of PIC style updates:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; \vec v_{p}^{(n+1)} = \beta \vec v_{p,FLIP}^{(n+1)} + (1-\beta)\vec v_{p,PIC}^{(n+1)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this method also mixes fraction &amp;amp;beta; of standard FLIP fraction (1-&amp;amp;beta;) of PIC position updates (although original reference did not mix position options&amp;lt;ref name=&amp;quot;Diz&amp;quot;/&amp;gt;) 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&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step, it is nearly the same as a simulation with &amp;amp;beta;=(n-1)/n. To create simulations with periodic PIC, add a [[PeriodicXPIC Custom Task]] to you simulation.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
== Damping Commands ==&lt;br /&gt;
&lt;br /&gt;
In scripted files, grid, particle, and PIC damping are activated with the following commands&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT)&lt;br /&gt;
 FeedbackDamping (gaing),&amp;lt;(Tkg)&amp;gt;,&amp;lt;(maxAlphag)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT)&lt;br /&gt;
 PFeedbackDamping (gainp),&amp;lt;(Tkp)&amp;gt;,&amp;lt;(maxAlphap)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;FeedbackDamping&amp;lt;/tt&amp;gt; commands or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;PFeedbackDamping&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagVsT)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapVsT)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(gaing)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(gainp)&amp;lt;/tt&amp;gt; are gains for evolution of &amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; in feedback damping. It has [[ConsistentUnits Command#Legacy and Consistent Units|1/length&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; units]]. The default is 0 or no damping.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(Tkg)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(Tkp)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxAlphag)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(maxAlphap)&amp;lt;/tt&amp;gt; can optionally specify a maximum feedback damping coefficient (&amp;amp;alpha;&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt; or &amp;amp;alpha;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;) 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.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, grid and particle damping are activated with the the following commands, which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;FeedbackDamping target='(Tkg)' max='(maxAlphag)'&amp;gt;(gaing)&amp;lt;/FeedbackDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PDamping function='(alphapVsT)'&amp;gt;(alphapNum)&amp;lt;/PDamping&amp;gt;&lt;br /&gt;
 &amp;lt;PFeedbackDamping target='(Tkp)' max='(maxAlphap)'&amp;gt;(gainp)&amp;lt;/PFeedbackDamping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(alphagNum)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(alphapNum)&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== Custom Particle Damping ===&lt;br /&gt;
&lt;br /&gt;
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|&amp;lt;tt&amp;gt;matDamping&amp;lt;/tt&amp;gt; material properties]] when defining any material type.&lt;br /&gt;
&lt;br /&gt;
== Using Damping ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\tau = {2\over \alpha}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(or &amp;lt;math&amp;gt;\tau\ (\rm in\ ms) = {2000\over \alpha}&amp;lt;/math&amp;gt; when using [[ConsistentUnits Command#Legacy and Consistent Units|Legacy units]])&lt;br /&gt;
&lt;br /&gt;
One set of tension simulations for an isotropic material with E = 2300 MPa and &amp;amp;rho; = 1 g/cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; were damped weill with &amp;amp;alpha; = 5000 sec&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; or &amp;amp;tau; &amp;amp;asymp; 0.4 msec. For other materials, an appropriate amount of damping will likely scale from this choice approximately with wave speed &amp;amp;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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;T_k = \int_V {\rho\over2} \left({vx\over l}\right)^2 dV = {1\over 6} m v^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 ''T&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;''. The &amp;lt;tt&amp;gt;(gain)&amp;lt;/tt&amp;gt; parameter would have to be selected by trial and error to avoid too little or too much damping.&lt;br /&gt;
&lt;br /&gt;
You can monitor total grid and particle damping constants, &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt; and &amp;amp;alpha;&amp;lt;sub&amp;gt;''p''&amp;lt;/sub&amp;gt;, by using [[MPM Global Archiving Options|global archiving options]]. Ideally the simulation &amp;amp;alpha; 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, &amp;amp;alpha; should decrease as kinetic energy moves toward the target result. If the damping cannot keep up with dynamic effects, the &amp;amp;alpha; may continue to increase and may eventually cause overdamping. The &amp;lt;tt&amp;gt;(maxAlpha)&amp;lt;/tt&amp;gt; parameter can be used to prevent &amp;amp;alpha; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[#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]].&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The use of feedback damping in MPM calculations was first described in Ayton, ''et al.'', 2002.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; This reference evolved &amp;amp;alpha; using&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{d\alpha\over dt} = K \sum_p |v_p|^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A Nose-Hoover thermostat works in molecular calculations by tying kinetic energy to temperature.&amp;lt;ref name=&amp;quot;NHOne&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;/&amp;gt; In MPM the thermostat ties kinetic energy to an expected kinetic energy after vibrations are damped out.&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;/&amp;gt; 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 &amp;quot;static&amp;quot; (''i.e''., very slow loading) kinetic energy, and set &amp;lt;tt&amp;gt;(Tk)&amp;lt;/tt&amp;gt; parameter to this estimate to have this thermostat work correctly.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. Hammerquist and J. A. Nairn, &amp;quot;A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability&amp;quot;, &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724-738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHOne&amp;quot;&amp;gt;D. J. Evans and B. L. Holian, The Nose-Hoover Thermostat. ''J. Chem. Phys.,'' '''83''', 4069–4074 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;NHTwo&amp;quot;&amp;gt;W. G. Hoover, Canonical dynamics: equilibrium phase-space distributions. ''Phys. Rev. A.,'' '''31''', 1695–1697 (1985).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;mpmfb&amp;quot;&amp;gt;G. Ayton, A. M. Smondyrev, S. G. Bardenhagen, P. McMurtry, and G. A. Voth, &amp;quot;Interfacing Molecular Dynamics and Macro-Scale Simulations for Lipid Bilayer Vesicles,&amp;quot; ''Biophys J'', '''83''', 1026-1038 (2002)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;cutting&amp;quot;&amp;gt;J.A. Nairn, &amp;quot;Numerical Simulation of Orthogonal Cutting using the Material Point Method,&amp;quot; Eng. Fract. Mech., 149, 262-275 (2015)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Diz&amp;quot;&amp;gt;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)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=MPM_Input_Files&amp;diff=26234</id>
		<title>MPM Input Files</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=MPM_Input_Files&amp;diff=26234"/>
		<updated>2026-04-12T18:37:21Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MPM simulations are run using [[NairnMPM]]. Some of the key features of these code engines (with links) are listed [[NairnMPM|here]]. The documentation on this page explains how to run MPM calculations by described all the sections of input command files.&lt;br /&gt;
&lt;br /&gt;
== Input Command File Overview ==&lt;br /&gt;
&lt;br /&gt;
When using [[NairnFEAMPM]] or [[NairnFEAMPMViz]] to set up calculations, the input command files are usually script files written using the custom [[Scripting Language Syntax|scripting language]]. When you interpret these scripts, the applications will create an &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input command file that is needed to drive the code engines. Click this link to see a [[Sample MPM Input Command File|sample scripted MPM input command file]] for simulation of two colliding disks.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can directly create &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input command files. Because this approach cannot use the language control options of a [[Scripting Language Syntax|scripting language]], it is much less powerful then scripting methods and much harder to customize for a range of simulations. If you do use the manual &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; method, the files must conform to the structure defined [[XML Input Files for NairnMPM|here]]. Click this link to see a [[Sample MPM Input Command File#XML MPM Input Command File|sample XML MPM input command file]] for simulation of two colliding disks.&lt;br /&gt;
&lt;br /&gt;
Some input commands for calculations support the use of [[User Defined Functions|user defined functions]] to increase options for setting up simulations. These functions can be used in both scripting commands and in &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; commands. Scripting commands can build  functions using [[Expression Syntax|string expressions]]. In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, you enter the entire function.&lt;br /&gt;
&lt;br /&gt;
== Main Header ==&lt;br /&gt;
&lt;br /&gt;
This section defines the type of analysis to run, number of processors (for parallel code), the units for input parameters, and provides an optional description of the calculations. When using a scripting language, the header is created automatically and its content is controlled by commands defined below. When manually writing &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, the header, which is required, is defined in a single header block:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;Header&amp;amp;gt;&lt;br /&gt;
   (commands)&lt;br /&gt;
 &amp;amp;lt;/Header&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The possible header commands are&lt;br /&gt;
&lt;br /&gt;
* [[Analysis Command]] - pick the type of MPM analysis to run.&lt;br /&gt;
* [[ConsistentUnits Command]] - pick units for the calculations&lt;br /&gt;
* [[Processors Command]] - pick number of processors for parallel code.&lt;br /&gt;
* [[Description Command|Annotation Commands]]  - these commands let you annotate the calculations.&lt;br /&gt;
* [[RandSeed Command]] - to pick a seed for random number generation&lt;br /&gt;
* [[Setting Developer Flags]]&lt;br /&gt;
&lt;br /&gt;
== MPM Header ==&lt;br /&gt;
&lt;br /&gt;
This section defines many settings and features for the MPM calculations. When using a scripting language, the MPM header is created automatically by various commands defined in this section. When writing &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, all these commands must be within a single MPM header block:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;MPMHeader&amp;amp;gt;&lt;br /&gt;
   (commands)&lt;br /&gt;
 &amp;amp;lt;/MPMHeader&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The possible MPM header commands are given below by categories.&lt;br /&gt;
&lt;br /&gt;
* [[MPM Methods and Simulation Timing]] - these commands determine the MPM method to use, the time step, and the maximum simulations time.&lt;br /&gt;
* [[Damping Options]] - these commands set up grid-based damping options.&lt;br /&gt;
* [[FMPM Features|FMPM(k) (or XPIC(k)) Features]] - improved MPM that approximates the full mass matrix inverse that can enhanced stability and reduce noise.&lt;br /&gt;
* [[LeaveLimit Command]] - this command determines what happens when particles leave the grid.&lt;br /&gt;
* [[DeleteLimit Command]] - this command determines what happens when particles get nan values.&lt;br /&gt;
* [[ExtrapolateRigid Command]] - activates a mode where rigid materials extrapolate to the grid before setting boundary conditions.&lt;br /&gt;
&lt;br /&gt;
== Archiving Results ==&lt;br /&gt;
&lt;br /&gt;
MPM results can be saved as particle results or global results, where global results are averages over all particles, or specific material types during the calculations:&lt;br /&gt;
&lt;br /&gt;
* [[MPM Archiving Options]] - these commands determine which particle results are archived and where they are saved.&lt;br /&gt;
* [[MPM Global Archiving Options]] - these commands determine which averaged, global results are archived in a global results file.&lt;br /&gt;
&lt;br /&gt;
Besides the above built-in archiving options, some [[#Custom Tasks|custom tasks]] provide additional options:&lt;br /&gt;
&lt;br /&gt;
* [[VTKArchive Custom Task]] - to archive results extrapolated to the grid in &amp;quot;VTK Legacy&amp;quot; files.&lt;br /&gt;
* [[HistoryArchive Custom Task]] -  to archive material history data to a tab-delimited file.&lt;br /&gt;
&lt;br /&gt;
If more archiving options are needed, you can always [[Writing a Custom Task|write a new custom task]].&lt;br /&gt;
&lt;br /&gt;
== Creating the MPM Background Grid ==&lt;br /&gt;
&lt;br /&gt;
Although MPM is a particle method, it uses a background grid for calculations. In general, this grid is a regular grid of orthogonal elements with linear shape functions. The background grid is easily [[MPM Grid Generation|generated with a few commands]]. [[NairnMPM]] does allow [[Explicit FEA Mesh Generation#Explicit MPM Grid|explicitly generated grids]], but you should never use them because many important features of MPM rely on a regular grid and are only efficient for a regular grid (''e.g.'', [[MPM Methods and Simulation Timing|uGIMP and CPDI shape functions]]).&lt;br /&gt;
&lt;br /&gt;
== Creating the Material Points ==&lt;br /&gt;
&lt;br /&gt;
In MPM the object is discretized by a collection of material points. Once the [[MPM Grid Generation|background grid is created]], the material points are added to that grid using a series of [[MPM Region and Hole Commands|&amp;lt;tt&amp;gt;Region&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Hole&amp;lt;/tt&amp;gt; commands]] or additionally by [[BMPRegion Command|directly translating pixels in an image to an MPM model]]. Each of these command fills part of the grid with a collection of material points and those material points are assigned initial conditions and [[Material Models|material type]].&lt;br /&gt;
&lt;br /&gt;
When using [[#Custom Tasks|custom tasks]] that inject particles, a simulation must fill the [[Material Point Reservoir]] with any material point types needed by that task.&lt;br /&gt;
&lt;br /&gt;
== Defining Material Models ==&lt;br /&gt;
&lt;br /&gt;
Each material point is assigned a material type. [[NairnMPM]] supports numerous [[Material Models|material models]]. For plasticity materials, each material type can choose from among a set of [[Hardening Laws|hardening laws]]. For softening materials, each material type can choose amoung a set of [[Damage Initiation Laws|damage initiation laws]] and [[Softening Laws|softening laws]]. When [[#Using Explicit Cracks|using explicit cracks]], the material points along the cracks can be assigned to various [[Traction Laws|traction laws]]. Finally when using [[Multimaterial MPM|multimaterial mode]] or  [[#Using Explicit Cracks|using explicit cracks]], the contact mechanics at that interfaces can be controlled by [[Contact Laws|contact laws]]. The information on these options are in the following sections:&lt;br /&gt;
&lt;br /&gt;
* [[Material Models]] - all material models available for MPM simulations, which have the following types&lt;br /&gt;
** [[Material Models#Linear Elastic Small Strain Materials|Linear Elastic Small Strain]]&lt;br /&gt;
** [[Material Models#Hyperelastic Materials|Hyperelastic]]&lt;br /&gt;
** [[Material Models#Elastic-Plastic Small Strain Materials|Elastic-Plastic Small Strain]]&lt;br /&gt;
** [[Material Models#Hyperelastic-Plastic Materials|Hyperelastic-Plastic]]&lt;br /&gt;
** [[Material Models#Softening Materials| Softening]]&lt;br /&gt;
** [[Material Models#Viscoelastic Materials| Viscoelastic]]&lt;br /&gt;
** [[Material Models#Phase Transition Materials|Phase Transition]]&lt;br /&gt;
** [[Material Models#Membrane Materials| Membrane]]&lt;br /&gt;
** [[Material Models#Rigid Materials|Rigid]]&lt;br /&gt;
* [[Traction Laws]] - all traction laws available for modeling cohesive zones on cracks&lt;br /&gt;
* [[Contact Laws]] - all contact laws used for implementing friction or imperfect interface on cracks or between materials&lt;br /&gt;
* [[Hardening Laws]] - all hardening laws available for plasticity materials&lt;br /&gt;
* [[Damage Initiation Laws]] - all damage initiation laws available for modeling softening materials&lt;br /&gt;
* [[Softening Laws]] - all softening laws available for modeling softening materials&lt;br /&gt;
&lt;br /&gt;
== Using Explicit Cracks ==&lt;br /&gt;
&lt;br /&gt;
An advanced feature of [[NairnMPM]] is that it can model explicit cracks including multiple cracks, interacting cracks, and crack propagation. To create a simultion with cracks, you first [[Defining Cracks|define the cracks]] and then optionally [[Crack Settings|customize crack settings]] to customize crack modeling methods. To include crack propagation, you also need to set all needed [[Common Material Properties|material fracture properties]]. By choosing a default [[Contact Laws|contact law]] (or by choosing custom [[Contact Laws|contact laws]] for each crack), crack surfaces can model either [[Friction|frictional contact]] or model the crack plane as an [[Imperfect Interfaces|imperfect interface]]. By adding [[Traction Laws|traction laws]] to cracks, they can model cohesive zones.&lt;br /&gt;
&lt;br /&gt;
== Multimaterial MPM ==&lt;br /&gt;
&lt;br /&gt;
Running in [[Multimaterial MPM|multimaterial mode]] allows a simulation to model contact between materials. By choosing a default [[Contact Laws|contact law]] (or by choosing custom [[Contact Laws|contact laws]] for each material pair), multimaterial mode simulations can model material interfaces as [[Friction|frictional contact]] or as an [[Imperfect Interfaces|imperfect interface]].&lt;br /&gt;
&lt;br /&gt;
== Boundary Conditions ==&lt;br /&gt;
&lt;br /&gt;
In MPM, boundary conditions can be applied to nodes on the grid or applied directly on the particles:&lt;br /&gt;
&lt;br /&gt;
* [[Grid-Based Boundary Conditions]] - These boundary conditions are applied to nodes on the grid and are used to set velocity, temperature, and concentration. Grid-based velocity conditions can also set up object symmetry planes.&lt;br /&gt;
* [[Particle-Based Boundary Conditions]] - Most of the commands set boundary conditions that are applied to the particles for such things as forces, tractions, and fluxes. Some commands in these blocks instead set initial conditions for particle such as damage state.&lt;br /&gt;
&lt;br /&gt;
== Thermal Calculations ==&lt;br /&gt;
&lt;br /&gt;
MPM simulations can do [[Thermal Calculations|thermal calculations]] that account for thermal strains in the stress analysis and can model [[Thermal Calculations#Conduction|thermal conduction]].&lt;br /&gt;
&lt;br /&gt;
== Diffusion, Poroelasticity, or Other Transport Calculations ==&lt;br /&gt;
&lt;br /&gt;
MPM simulations can model [[Diffusion Calculations|diffusion]] and track concentration of an absorbed solvent in the materials. The concentration is coupled to strains by solvent expansion coefficients of the [[Material Models|materials]].&lt;br /&gt;
&lt;br /&gt;
Alternatively, MPM simulations can model [[Poroelasticity Calculations|poroelastic materials]] and track pore pressure within a material saturated with fluid. The fluid transport between particles is modeled using Darcey's law. The pore pressure is coupled to changes in volume by [[Common_Material_Properties#Poroelasticity_Properties|poroelasticity properties of the materials]].&lt;br /&gt;
&lt;br /&gt;
In additional to diffusion or poroelasticity (only one of which can be in any simulation), MPM simulations can [[Additional Transport Calculations|couple to other transport properties]] into the analysis.&lt;br /&gt;
&lt;br /&gt;
== Gravitation Field ==&lt;br /&gt;
&lt;br /&gt;
MPM calculations can apply a [[Gravitational Field|gravitation field]] (or actually any constant body forces).&lt;br /&gt;
&lt;br /&gt;
== Custom Tasks ==&lt;br /&gt;
&lt;br /&gt;
Custom tasks are special calculations that are performed at the end of each time step in MPM calculations. Custom tasks can be written by users working with [[NairnMPM]] source code. These user-defined custom tasks can then be scheduled when needed in some calculations. The current custom tasks are:&lt;br /&gt;
&lt;br /&gt;
* [[PeriodicXPIC Custom Task]] - implement [[FMPM Features|FMPM(k) simulations]] with an option to run them periodically instead of every time step&lt;br /&gt;
* [[AdjustTimeStep Custom Task]] - to adjust time step during the calculations according to current stress state of the particles.&lt;br /&gt;
* [[VTKArchive Custom Task]] - to archive results extrapolated to the grid in &amp;quot;VTK Legacy&amp;quot; files.&lt;br /&gt;
* [[HistoryArchive Custom Task]] -  to archive material history data to a tab-delimited file.&lt;br /&gt;
* [[ReverseLoad Custom Task]] - to monitor crack length and perform actions when a specified crack length is reached.&lt;br /&gt;
* [[PropertyRamp Custom Task]] - to gradually change a particle property&lt;br /&gt;
* [[DeleteDamaged Custom Task]] - to delete failure particles or remove unneeded particles&lt;br /&gt;
* [[FluidSource Custom Task]] - to inject liquid particles into a simulation&lt;br /&gt;
* [[TrackError Custom Task]] - archive simulations errors in a tab-delimited file&lt;br /&gt;
* [[LoadControl Custom Task]] - to run load control simulation based on calculations of contact or reaction forces.&lt;br /&gt;
&lt;br /&gt;
The following custom tasks are currently available only in [[OSParticulas]]&lt;br /&gt;
&lt;br /&gt;
* CarnotCycle Custom Task - demonstration task to run simulation through a Carnot cycle.&lt;br /&gt;
* PressureDependentMelting Custom Task - method to change melting temperature with pressure&lt;br /&gt;
* ReactionEnergy Custom Task - research task for chemical reaction modeling&lt;br /&gt;
* Crack3DArchive Custom Task - research task for 3D cracks&lt;br /&gt;
* JiggleGrid Custom Tasks - research task for grid changes&lt;br /&gt;
* JPIC Custom Task - research task for noise reduction&lt;br /&gt;
&lt;br /&gt;
Custom tasks are a good way to add features or to test out new feature. See help on [[Writing a Custom Task|writing a custom task]] for steps on writing source code for a new custom task. If you do add a new custom taks, the following link explains how to include it in you input command files:&lt;br /&gt;
&lt;br /&gt;
* [[Undocumented Custom Task]] - you can include custom tasks that are in [[NairnMPM]] but not yet supported by scripted files.&lt;br /&gt;
&lt;br /&gt;
== XML Insertion ==&lt;br /&gt;
&lt;br /&gt;
When writing scripted input files, it is sometimes useful to insert raw &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; commands into the automatically-format &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input file. The two commands that help in this task are:&lt;br /&gt;
&lt;br /&gt;
* [[Entity Command]] - to define entities that will appear in the automatically-format &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input file.&lt;br /&gt;
* [[XMLData Command]] - to insert raw &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; data into various sections of the automatically-format &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input file.&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=NairnMPM&amp;diff=26233</id>
		<title>NairnMPM</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=NairnMPM&amp;diff=26233"/>
		<updated>2026-04-12T18:34:21Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''NairnMPM''' is the open-source code engine in this package for doing material point method (MPM) simulations. It is object-oriented &amp;lt;tt&amp;gt;C++&amp;lt;/tt&amp;gt; code that can run on many platforms. The main calculations are parallel code. You run calculations by creating [[MPM Input Files|Input Files for MPM Calculations]]. Once the calculations are done, you have a variety of options for [[Main Page#Visualization|visualizing and analyzing]] the output.&lt;br /&gt;
&lt;br /&gt;
'''NairnMPM''' does 2D, axisymmetric, and 3D simulations with a wide range of [[Material Models|material types]]. Some of its features are (click each link for details):&lt;br /&gt;
&lt;br /&gt;
* [[MPM Methods and Simulation Timing|Several options for particle update methods]]&lt;br /&gt;
* [[MPM Methods and Simulation Timing|Several types of shape function including spline-based shaped functions]]&lt;br /&gt;
* Can implement method that approximates the inverse of the full mass matrix known as [[FMPM Features|FMPM(k)]]&lt;br /&gt;
* [[Material Models|Many material models]] including elastic, plastic, isotropic, anisotropic, viscoelastic, small strain, and large strain.&lt;br /&gt;
* Plasticity materials can use a variety of [[Hardening Laws|hardening laws]].&lt;br /&gt;
* [[Material Models#Softening Materials|Softening materials]] to implement anisotropic damage mechanics (IsoPlasticity only).&lt;br /&gt;
* Simulations can include [[Defining Cracks|explicit cracks]], do fracture mechanics calculations, and model [[Crack Propagation Commands|crack propagation]].&lt;br /&gt;
* Crack can include [[Traction Laws|tractions laws]] to model cohesive zones, including dynamic cohesive zones in the wake of [[Crack Propagation Commands|crack propagation]].&lt;br /&gt;
* Cracks can add [[Contact Laws|contact laws]] to model either [[Friction|frictional contact]] or an  [[Imperfect Interfaces|imperfect interface]].&lt;br /&gt;
* Advanced [[Multimaterial MPM|multimaterial mode MPM]] with latest [[Surface Normals|contact methods]] and [[Contact Laws|contact laws]] to model material-material interactions as either [[Friction|frictional contact]] or an  [[Imperfect Interfaces|imperfect interface]].&lt;br /&gt;
* Both 2D and 3D objects images can be [[BMPRegion Command|directly converted to an MPM model]].&lt;br /&gt;
* Advanced [[Thermal Calculations|thermal calculations]] including [[Thermal Calculations#Conduction|thermal conductivity]] and accurate heat tracking to find [[Thermal Calculations#Tracking Thermodynamic Quantities|internal energy, entropy, and Helmholz free energy]].&lt;br /&gt;
* [[Diffusion Calculations|Coupled solvent diffusion calculations]].&lt;br /&gt;
* Many [[MPM Archiving Options|archiving options]] along with [[MPM Global Archiving Options|global archiving]] and archiving to [[VTKArchive Custom Task|VTK Legacy files]].&lt;br /&gt;
* [[Rigid Material|Rigid particles]] for moving boundary conditions and special rigid-contact interactions.&lt;br /&gt;
* Many options for boundary conditions [[Grid-Based Boundary Conditions|on the grid]] or [[Particle-Based Boundary Conditions|on the particles]] (including tractions, heat fluxes, and concentration fluxes) and special grid conditions to create accurate [[MPM Grid Generation#Symmetry Planes|symmetry planes]].&lt;br /&gt;
* Several [[Damping Options|damping options]]&lt;br /&gt;
* Simulations in a [[Gravitational Field|gravitational field]]&lt;br /&gt;
* A method to deform shapes when adding particles to the grid and to deform the particles in those shapes. One common use is to have rigid particles conform to a shape that is not aligned with grid axes such as a cutting tool with various cutting angles.&lt;br /&gt;
Some planned features being investigated are:&lt;br /&gt;
* [[MPM Input Files#Custom Tasks|Custom Tasks]] for additional features&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26232</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26232"/>
		<updated>2026-04-12T18:31:03Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; and XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26231</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26231"/>
		<updated>2026-04-12T18:30:32Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* XPIC(k) and FMPM(k) Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26230</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26230"/>
		<updated>2026-04-12T18:29:05Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* XPIC(k) and FMPM(k) Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)).&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
The following two commands used to implement XPIC(k) in all versions of this code:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; used to blend FLIP and XPIC(k) and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; was order of XPIC(k) calculations. These commands are no longer available the blending option has be removed. If these commands are found in old input files, those commands should convert to scheduling a [[PeriodicXPIC Custom Task]]. The &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is recommended to change to using FMPM(k). The &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; option can be replaced by periodically using FMPM(k) with FLIP on other time steps rather then blending them on every time steps (''i.e.'', change &amp;lt;tt&amp;gt;(fractionPIC)=0.25&amp;lt;/tt&amp;gt; to using FMPM(k) every 4&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; time step). The results are similar the periodic methods is much more efficient.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26229</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26229"/>
		<updated>2026-04-12T18:20:55Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduced to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26228</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26228"/>
		<updated>2026-04-12T18:20:38Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the [[MPM Methods and Simulation Timing#Theory: MPM Time Step|Courant–Friedrichs–Lewy factor (C)]] is reduces to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26227</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26227"/>
		<updated>2026-04-12T18:18:33Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost and high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; eventually provides diminishing benefits. If used, very high &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the CFL factor is reduces to below about 0.25 &amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26226</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26226"/>
		<updated>2026-04-12T18:17:20Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
A drawback of FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. FMPM(k) therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost. Eventually, high &amp;lt;tt&amp;gt;k&amp;lt;\tt&amp;gt; provides diminishing benefits. If used, very high values of &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can become unstable unless the CFL factor is reduces to below about 0.25.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26225</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26225"/>
		<updated>2026-04-12T18:15:14Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
The drawback of XPIC(k)/FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. XPIC and FMPM are therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost. Very high values of &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; can get unstable unless the CFL factor is reduces to below 0.25.&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26224</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26224"/>
		<updated>2026-04-12T18:13:23Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;. Although both XPIC(k) and FMPM(k) are supported, simulations results show that FMPM(k) is better. XPIC(k) should only be used for comparison purposes.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
The drawback of XPIC(k)/FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. XPIC and FMPM are therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost. Very high values of &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; (''e.g.'', &amp;lt;tt&amp;gt;k&amp;amp;gt;40&amp;lt;/tt&amp;gt;) are typically unstable (due to too many additional extrapolations or to changes in effective eigenvalues for the equations).&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26223</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26223"/>
		<updated>2026-04-12T18:11:15Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. The XPIC(k) methods was developed to reduce energy dissipation problem thereby filtering out noise that should enhances overall stability of MPM. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches a method with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
The drawback of XPIC(k)/FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. XPIC and FMPM are therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost. Very high values of &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; (''e.g.'', &amp;lt;tt&amp;gt;k&amp;amp;gt;40&amp;lt;/tt&amp;gt;) are typically unstable (due to too many additional extrapolations or to changes in effective eigenvalues for the equations).&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=MPM_Methods_and_Simulation_Timing&amp;diff=26222</id>
		<title>MPM Methods and Simulation Timing</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=MPM_Methods_and_Simulation_Timing&amp;diff=26222"/>
		<updated>2026-04-12T18:09:18Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Theory: MPM Time Step */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[#Input Commands|input commands]] described below set details about the MPM method and control the simulation timing. Before describing the commands, the first few sections give background theory about these options.&lt;br /&gt;
&lt;br /&gt;
== Theory: Shape Functions ==&lt;br /&gt;
&lt;br /&gt;
Many tasks in MPM involve extrapolations from particles to the grid or from the grid to particles. These extrapolations are controlled by &amp;quot;Shape Functions,&amp;quot; and the various MPM methods correspond to various methods for evaluating the shape functions. In the most generalized description of MPM (called GIMP for General Interpolation Material Point&amp;lt;ref name='GIMP'&amp;gt;S. G. Bardenhagen and E. M. Kober, &amp;quot;The Generalized Interpolation Material Point Method,&amp;quot; ''Computer Modeling in Engineering &amp;amp; Sciences'', '''5''', 477-496 (2004).&amp;lt;/ref&amp;gt;), the shape function (S&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt;) and shape function gradient (G&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt;) for extrapolation from node i to particle p are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;S_{pi} = {\int_{\Omega_p} \chi_p(\vec x)N_i(\vec x) dV\over \int_{\Omega_p} \chi_p(\vec x) dV}\qquad{\rm and}\qquad G_{pi} = {\int_{\Omega_p} \chi_p(\vec x)\nabla N_i(\vec x) dV\over \int_{\Omega_p} \chi_p(\vec x) dV}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;Omega;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; is the domain for particle p, &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) is the characteristic function for particle p, and N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) is grid shape function for node i. The various MPM methods depend on choices for &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) and N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) and on the technique used for evaluating the shape function integrals. The chart on the right shows an MPM &amp;quot;genealogy&amp;quot; or shows how the various MPM methods descend from GIMP. The methods colored in blue are the ones supported in [[NairnMPM]].&lt;br /&gt;
[[File:MPMTree2.png|right]]&lt;br /&gt;
&lt;br /&gt;
=== Particle Shape Functions ===&lt;br /&gt;
&lt;br /&gt;
One choice is for  &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) or the particle shape functions &amp;amp;mdash; the chart shows three options. The choice of the Dirac delta function (&amp;amp;delta;(x)) leads to classic MPM methods. The choice of a Heaviside function (''i.e.'', &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) = 1 in &amp;amp;Omega;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; and 0 elsewhere) leads to a family of Heaviside GIMP methods. Finally the choice of some other function (''e.g.'', a Gaussian centered on the particle) could lead to other MPM methods, but is currently an unexplored area.&lt;br /&gt;
&lt;br /&gt;
=== Spline Grid Shape Functions ===&lt;br /&gt;
&lt;br /&gt;
A second choice is for grid shape functions can be derived from B&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; spline basis functions, which are C&amp;lt;sup&amp;gt;(n-1)&amp;lt;/sup&amp;gt; continuous spline functions on the grid. Most MPM methods choose B&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; order spline functions or linear shape functions.  In 1D, linear shape functions have the form:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;N_i(x) = \left\{ \begin{array}{cc} 1+{x-x_i\over \Delta x} &amp;amp; {\rm for\ } x_i-\Delta x &amp;lt; x &amp;lt; x_i \\&lt;br /&gt;
     1-{x-x_i\over \Delta x} &amp;amp; {\rm for\ } x_i \le x &amp;lt; x_i+\Delta x \\&lt;br /&gt;
    0 &amp;amp; {\rm otherwise}&lt;br /&gt;
\end{array} \right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; is coordinate of node i and &amp;amp;Delta;x is cell size (assumed same on both sides of node i).&lt;br /&gt;
&lt;br /&gt;
Another choice supported in [[NairnMPM]] is to use B&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; spline functions or quadratic spline functions. In 1D, quadratic spline shape functions have the form:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;N_i(x) = \left\{ \begin{array}{cc} {1\over 8}\left(3+{2(x-x_i)\over \Delta x}\right)^2 &amp;amp; {\rm for\ } x_i-{3\Delta x\over 2} &amp;lt; x &amp;lt; x_i-{\Delta x\over 2} \\&lt;br /&gt;
      {3\over 4} - \left({x-x_i\over \Delta x}\right)^2 &amp;amp; {\rm for\ } x_i-{\Delta x\over 2} \le x \le x_i+{\Delta x\over 2}  \\&lt;br /&gt;
      {1\over 8}\left(3-{2(x-x_i)\over \Delta x}\right)^2 &amp;amp; {\rm for\ } x_i+{\Delta x\over 2} &amp;lt; x &amp;lt; x_i+{3\Delta x\over 2} \\&lt;br /&gt;
    0 &amp;amp; {\rm otherwise}&lt;br /&gt;
\end{array} \right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Classic MPM  Methods ==&lt;br /&gt;
&lt;br /&gt;
If &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) = &amp;amp;delta;(x), the shape functions reduce to the grid shape function (''e.g.'', S&amp;lt;sub&amp;gt;ip&amp;lt;/sub&amp;gt; = N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;)), which recovers &amp;quot;Classic MPM&amp;quot; or the original derivation of MPM.&amp;lt;ref name='SS'&amp;gt;D. Sulsky, Z. Chen, and H. L. Schreyer, &amp;quot;A Particle Method for History-Dependent Materials,&amp;quot; ''Comput. Methods Appl. Mech. Engrg.'', '''118''', 179-186 (1994).&amp;lt;/ref&amp;gt;&amp;lt;ref name='SZS'&amp;gt;D. Sulsky, S. -J. Zhou, and H. L. Schreyer, &amp;quot;Application of a Particle-in-Cell Method to Solid Mechanics,&amp;quot; ''Comput. Phys. Commun.'', '''87''', 236-252 (1995).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;S. -J. Zhou, &amp;quot;The Numerical Prediction of Material Failure Based on the Material Point Method,&amp;quot; Ph.D. Thesis, University of Mexico (1998).&amp;lt;/ref&amp;gt; (when using linear N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x)).  Note that &amp;quot;Classic GIMP&amp;quot; predates GIMP even though it descends from GIMP in the MPM &amp;quot;genealogy.&amp;quot; The &amp;quot;Dirac&amp;quot; method options are&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;Classic&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;Dirac&amp;lt;/tt&amp;gt;) chooses &amp;quot;Classic MPM&amp;quot; with linear N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) on the grid.&lt;br /&gt;
* &amp;lt;tt&amp;gt;B2SPLINE&amp;lt;/tt&amp;gt; chooses Dirac particle functions with quadratic spline N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) on the grid (do not use yet for axisymmetric MPM).&lt;br /&gt;
&lt;br /&gt;
Although Classic MPM is the most efficient method, it is rarely used because it is not very robust for large displacement problems. Whenever particles cross cell boundaries, they can cause noise that soon leads to unsatisfactory results. These cell-crossing artifacts are reduced by using &amp;lt;tt&amp;gt;B2SPLINE&amp;lt;/tt&amp;gt; (because first derivatives are continuous), but problems often still persist. The better approach to handling cell cross artifacts in to choose a different &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) (''e.g.'', the Heaviside methods).&lt;br /&gt;
&lt;br /&gt;
== Heaviside GIMP Methods ==&lt;br /&gt;
&lt;br /&gt;
MPM results are greatly improved by choosing &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) to be a Heaviside function. With this function, the shape function integrals reduce to integrals over the particle domain of the grid-based shape functions, which are normalized to particle volume (see chart). Many MPM methods descend from this selection. The specific descendant methods  depend on how they integrate over the particle domain.&lt;br /&gt;
&lt;br /&gt;
=== Undeformed GIMP ===&lt;br /&gt;
&lt;br /&gt;
The simplest approach is to assume the particle domain has the same shape as the initial domain and merely translates with particle motion. This method, which is called &amp;quot;Undeformed GIMP&amp;quot;, has the greatest efficiency because shape functions can be explicitly calculated for all possible particle locations relative to a regular grid. Undeformed GIMP works well from small to fairly large deformation and greatly reduces cell-crossing artifacts. The two undeformed GIMP methods can be selected using:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;uGIMP&amp;lt;/tt&amp;gt; or undeformed GIMP with linear N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) on the grid.&lt;br /&gt;
* &amp;lt;tt&amp;gt;B2GIMP&amp;lt;/tt&amp;gt; or undefomed GIMP with quadratic spline N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) on the grid (do not use yet for axisymmetric MPM).&lt;br /&gt;
 &lt;br /&gt;
Very large tension strains (&amp;gt;50%), however, can cause undeformed particle domains to become numerically separated, which can lead to non-physical fracture of the object. When this occurs, one option is to use a different method that accounts for deformed particle domain.&lt;br /&gt;
&lt;br /&gt;
=== Deformed GIMP ===&lt;br /&gt;
&lt;br /&gt;
The following GIMP methods attempt to account for particle deformation in evaluation of the shape function integrals. The methods differ in how they do the domain integration and in the grid shape functions that are integrated.&lt;br /&gt;
&lt;br /&gt;
==== 1. Finite GIMP ====&lt;br /&gt;
&lt;br /&gt;
In finite GIMP, the shape function integrals are fully integrated over the deformed particle domain. This option can be selected using &amp;lt;tt&amp;gt;Finite&amp;lt;/tt&amp;gt; for shape function method. This exact integration is available only in [[OSParticulas]], only for 2D calculations, and only for linear grid shape functions. The full integration compared to approximate integral is similar in efficiency, but surprisingly, the results are not improved over other methods. The reasons are not yet clear. One hypothesis is that while finite GIMP exactly integrates the full particle domain, the particle shape function is still treating particle properties (such as velocity) as constant over the domain (due to Heaviside &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) function). These contrary views may be inconsistent.&lt;br /&gt;
&lt;br /&gt;
==== 2. Convected Partical Domain Integration ====&lt;br /&gt;
&lt;br /&gt;
A useful improvement for large to massive deformation is Convected Particle Domain Integration approach or CPDI.&amp;lt;ref name='CPDI'&amp;gt;A. Sadeghirad, R. M. Brannon, and J. Burghardt, &amp;quot;A convected particle domain interpolation technique to extend applicability of the material point method for problems involving massive deformations,&amp;quot; &amp;lt;i&amp;gt;Int. J. Numer. Meth. Engng.&amp;lt;/i&amp;gt;, '''86''', 1435–1456 (2011)&amp;lt;/ref&amp;gt; In CPDI, the integral over the deformed particle domain is approximated. In brief:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The deformed particle domain is discretized by isoparametric finite elements. In practice, the discretization uses a single element, but it could use more.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The Integrands for S&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt; and G&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt; are then approximated by expanding them in the finite element shape functions:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;N_i(\vec x) \approx \sum_j N_i(c_j) M_j(\vec x)\qquad{\rm and}\qquad \nabla N_i(\vec x) \approx \sum_j N_i(c_j) \nabla M_j(\vec x)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
where c&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; are nodes of the deformed particle domain (''e.g.'', usually corners of the domain) and M&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;(x) are isoparametric finite element shape functions for the elements used to discretize the deformed particle domain.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Integrals over the deformed domain can then be evaluated to give S&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt; and G&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt; in terms for N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(c&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version of CPDI available here finds the corners of the deformed domain using the deformation gradient on the particle.&amp;lt;ref name='CPDI'/&amp;gt; If r&amp;lt;sub&amp;gt;j0&amp;lt;/sub&amp;gt; is a vector from the particle to any edge location j in the undeformed domain, then r&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; = F&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;r&amp;lt;sub&amp;gt;j0&amp;lt;/sub&amp;gt;, where F&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; is the deformation gradient on the particle, is the vector to that location in the deformed domain. When using this approach, an initial 2D rectangle domain deforms to a parallelogram and an initial 3D orthogonal box deforms to a parallelepiped. The subclasses of this method depend on grid shape functions being used and on the finite element types used to map that particle domain:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;lCPDI&amp;lt;/tt&amp;gt; for &amp;quot;linear&amp;quot; CPDI: this method uses linear grid shape functions and maps the corners of the domain to a single linear element (4 node element in 2D and 8 node element in 3D) resulting in an isoparametric element with linear shape functions.&lt;br /&gt;
* &amp;lt;tt&amp;gt;qCPDI&amp;lt;/tt&amp;gt; for &amp;quot;quadratic&amp;quot; CPDI: this method uses linear grid shape functions and additionally maps midpoints of edges to nodes (''e.g''., 8 node element in 2D) resulting in an isoparametric element with quadratic shape functions. This method is only available for 2D simulations.&lt;br /&gt;
* &amp;lt;tt&amp;gt;B2CPDI&amp;lt;/tt&amp;gt; for &amp;quot;B2 Spline&amp;quot; CPDI: this method uses B&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; spline grid shapes functions and maps the deformed domain as in lCPDI.&lt;br /&gt;
&lt;br /&gt;
CPDI methods are less efficient the undeformed GIMP because of the extra overhead required to locate corner nodes needed for evaluating shape functions. Nevertheless, the use of CPDI is crucial for handling problems with deformation beyond the capabilities of undeformed GIMP.&lt;br /&gt;
&lt;br /&gt;
==== 3. Convected Particle Domain Integration 2 ====&lt;br /&gt;
&lt;br /&gt;
A second version of CPDI, known as CPDI2, has been developed.&amp;lt;ref name='CPDIQ'&amp;gt;A. Sadeghirad, R. M. Brannon,and J. E. Guilkey, &amp;quot;Second-order convected particle domain interpolation (CPDI2) with enrichment for weak discontinuities at material interfaces,&amp;quot; &amp;lt;i&amp;gt;Int. J. Numer. Meth. Engng.&amp;lt;/i&amp;gt;, '''95''', 928–952 (2013)&amp;lt;/ref&amp;gt; In CPDI2 the corner locations are separately tracked during the analysis and their current locations are used to define the deformed particle domain. For example, a 2D domain deforms to an arbitrary quadrilateral element and a 3D domain to an arbitrary 8-cornered brick element. The efficiency should be similar to CPDI, but CPDI2 adds the additional overheard of tracking and updating corner particles. CPDI2 options are currently not implemented in either  [[NairnMPM]] or [[OSParticulas]].&lt;br /&gt;
&lt;br /&gt;
==== 4. cpGIMP ====&lt;br /&gt;
&lt;br /&gt;
In cpGIMP, or convected particle GIMP, the deformed domain is stretched in orthogonal directions but is never sheared. In other words, particle domains that start as squares (in 2D) or cubes (in 3D) will deform to rectangles (in 2D) or orthogonal boxes (in 3D). In 1D, cpGIMP is a true [[#Finite GIMP|finite GIMP]] method, but in 2D or 3D, it does not account for arbitrary deformation that includes shear deformation. Compared to undeformed GIMP, cpGIMP may handle uniaxial deformation better, but may not be any better for general deformation modes. This approach is currently not implemented in either  [[NairnMPM]] or [[OSParticulas]].&lt;br /&gt;
&lt;br /&gt;
== Theory: Stress and Strain Updates ==&lt;br /&gt;
&lt;br /&gt;
The basic tasks in an MPM time step are:&lt;br /&gt;
&lt;br /&gt;
# Extrapolate particle mass and momentum to the grid&lt;br /&gt;
# Find internal and external forces&lt;br /&gt;
# Update momenta on the grid using those forces&lt;br /&gt;
# Update particle position and velocity using updated grid information&lt;br /&gt;
&lt;br /&gt;
To correctly model internal forces, this loop needs to track stresses and strains on the particles. This tracking is done by calculating velocities on the grid (from the grid momenta). Once these velocities are found, they can be extrapolated to the particle using gradient shape functions to get velocity gradients on the particle. Particle velocity gradients provide the key input for updating particle strains and through constitutive laws to update particle stresses. In the first MPM work,&amp;lt;ref name='SS'/&amp;gt; the strain and stress update was done using the updated momenta on the grid. It is easy to show, however, that this approach is unstable if the update particle position interacts with a node having zero mass. This numerical challenge can be eliminated by two variants to MPM:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; - follow the recommendation of Sulsky, Zhou, and Schreyer&amp;lt;ref name='SZS'/&amp;gt; which was to do a second extrapolation of momenta after updating momenta on the grid and use those new momenta to update strains and stresses. This approach adds step 5 to MPM time step above to reextrapolate momenta to the grid and then update stress and strain after that step.&lt;br /&gt;
* &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; - update strains and stresses first or to update them after the initial extrapolation in step 1 of above time step tasks.&amp;lt;ref name=&amp;quot;USF'&amp;gt;S. G. Bardenhagen, &amp;quot;Energy Conservation Error in the Material Point Method,&amp;quot; &amp;lt;i&amp;gt;J. Comp. Phys.&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;180&amp;lt;/b&amp;gt;, 383-403 (2002).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two approaches give similar results. The &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; method is more efficient than &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; because it avoids the need to do a second extrapolation of momenta.&lt;br /&gt;
&lt;br /&gt;
A unique option in [[NairnMPM]] combines these two methods:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; - update strains after the first extrapolation and after a second extrapolation of updated momenta on the grid.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; method seems to behave like a midpoint rule. In observations of temporal convergence, the &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; method for a given time step gives results close to &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; using half that time step. In other words,  compared to &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt;, the &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; is analogous to using half the time step without the cost of doubling the number of calculations. In most simulation, the &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; method also exhibits improved energy conservation&amp;lt;ref name='CRAMP'&amp;gt;J. A. Nairn, &amp;quot;Material Point Method Calculations with Explicit Cracks,&amp;quot; &amp;lt;i&amp;gt;Computer Modeling in Engineering &amp;amp;amp; Sciences&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt;, 649-664 (2003). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/MPMCracks.pdf See PDF])&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Although  Sulsky, Zhou, and Schreyer&amp;lt;ref name='SZS'/&amp;gt; recommend a second momentum extrapolation prior to update, that second extrapolation is not needed provided one is careful in calculation of shape functions. Skipping the second extrapolation is always more efficient and can result in better simulations. Whether or not to use the second extrapolation, however, seems to depend on the problem. Some problems with contact or cracks seem to require it while problems with liquids seem improved without it. The default is to include the second extrapolation, but [[#Input Commands|commands below]] let you pick from the following options:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;USL+&amp;lt;/tt&amp;gt; - update strains after momentum update and after a second extrapolation (same as &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; above).&lt;br /&gt;
* &amp;lt;tt&amp;gt;USL-&amp;lt;/tt&amp;gt; - update strains after momentum update, but do not do a second extrapolation.&lt;br /&gt;
* &amp;lt;tt&amp;gt;USAVG+&amp;lt;/tt&amp;gt; - update strains after the first extrapolation and after a second extrapolation of updated momenta on the grid (same as &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; above).&lt;br /&gt;
* &amp;lt;tt&amp;gt;USAVG-&amp;lt;/tt&amp;gt; - update strains before and after the momentum update, but do not do a second extrapolation.&lt;br /&gt;
&lt;br /&gt;
The key to skipping the second extrapolation compared to early MPM work,&amp;lt;ref name='SS'/&amp;gt; is to extrapolate velocity gradient from updated momenta by using gradient shape function based on the original particle position rather then the updated position.&lt;br /&gt;
&lt;br /&gt;
=== Incremental Deformation Gradient ===&lt;br /&gt;
&lt;br /&gt;
During strain updating, some [[Material Models|materials]] (''e.g.'', hyperelastic materials) use the full incremental deformation gradient, ''dF'', which is defined by&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{dF\over dt} = \nabla\vec v F&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;Delta;t is the time step and &amp;amp;nabla;v is the velocity gradient calculated from the current nodal velocities. If velocity gradient is constant for the time step, the exact solution is&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; F(t+\Delta t) = \exp(\Delta t \nabla\vec v) F(t) = dF\cdot F(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;dF = \exp(\Delta t \nabla\vec v)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is the incremental deformation gradient. An interesting review article&amp;lt;ref name='expM'&amp;gt;C. Moler and C. Van Loan, &amp;quot;Nineteen Dubious Ways to Compute the Exponential of a Matrix. Twenty Five Years Later.&amp;quot; ''SIAM Review'', '''46''', (2003)&amp;lt;/ref&amp;gt; on finding the exponential of a matrix, which is needed here, concludes no single way is stable and efficient for all problems, but in MPM with sufficiently small time steps, an expansion method should work well&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\exp(\Delta t \nabla\vec v) = \sum_{k=0}^{k_{max}} {(\nabla u)^k \over k!} &lt;br /&gt;
            =  I + \nabla u + \sum_{k=2}^{k_{max}} {(\nabla u)^k \over k!}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;nabla;u = &amp;amp;Delta;t &amp;amp;nabla;v is the incremental displacement gradient for the current time step. Many computational mechanics methods truncate after the first term (the linear term), because it avoids the need to take powers of a matrix. But, using just the linear term can have issues for problems with lots of rotational motion. Fortunately the extra terms can all be evaluated with no matrix multiplications (in 2D) and with only the square of a matrix (in 3D) by using the &amp;quot;Cayley-Hamilton&amp;quot; theory (see method #8 in the review article&amp;lt;ref name='expM'/&amp;gt;). You can select the number of terms to use in the expansion with the [[#Input Commands|&amp;amp;lt;DefGradTerms&amp;amp;gt; command]].&lt;br /&gt;
&lt;br /&gt;
== Theory: MPM Time Step ==&lt;br /&gt;
&lt;br /&gt;
In explicit computation mechanics, the Courant–Friedrichs–Lewy condition (CFL condition) is a necessary condition for convergence. It states that the time step, &amp;amp;Delta;''t'', must satisfy:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta t \le { \Delta x\over v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;Delta;''x'' is the minimum dimension of any cell in the background grid and ''v'' is the maximum wave speed in the material (''i.e.'', the highest wave speed in anisotropic materials). It is usually better to be below this minimum by a input factor of less than one. The factor is also known as the &amp;quot;Courant&amp;quot; factor:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; C = { v\Delta t\over \Delta x} \qquad {\rm or} \qquad\Delta t =C { \Delta x\over v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The entered ''C'' must be less then 1.0. The default in [[NairnMPM]] is ''C'' = 0.5. Lower values may be needed depending on simulations features such as [[Setting Velocity and Transport Values|fixed-velocity boundary conditions]] on the grid or created by [[Rigid Material|rigid particles]] when modeling [[Multimaterial MPM|contact]], when modeling brittle materials using [[Material Models#Softening Materials|damage mechanics]], or when using [[PeriodicXPIC Custom Task|high order FMPM(k)]]. An alternative to very low ''C'' is to try [[#Restarting Time Steps|restarting time steps]] that develop high accelerations on the grid.&lt;br /&gt;
&lt;br /&gt;
When transport tasks are activated ([[Thermal Calculations|conduction]], [[Diffusion Calculations|diffusion]], or [[Poroelasticity Calculations|poroelasticity]]), convergence of transport calculations requires the time step to satisfy&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta t_T \le { \Delta x^2\over 2}{C_T\over \max(\kappa)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''C&amp;lt;sub&amp;gt;T&amp;lt;/sub&amp;gt;'' and &amp;lt;math&amp;gt;\kappa&amp;lt;/math&amp;gt; depend on the type of transport being modeled. For [[Thermal Calculations|conduction]], &amp;lt;math&amp;gt;C_T=\rho C_v&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\kappa&amp;lt;/math&amp;gt; is thermal conductivity. For [[Diffusion Calculations|diffusion]], ''C&amp;lt;sub&amp;gt;T&amp;lt;/sub&amp;gt;=1'' and &amp;lt;math&amp;gt;\kappa&amp;lt;/math&amp;gt; is diffusion coefficient. For [[Poroelasticity Calculations|poroelasticity]], ''C&amp;lt;sub&amp;gt;T&amp;lt;/sub&amp;gt;=1/Q'' and &amp;lt;math&amp;gt;\kappa&amp;lt;/math&amp;gt; is Darcy's law permittivity divided by fluid viscosity. It is usually better to be below this minimum by a input factor of less than one. The factor is also known as the &amp;quot;Transport Courant&amp;quot; factor or transport time step is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta t_T = F { \Delta x^2\over 2}{C_T\over \max(\kappa)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The entered ''F'' must be less then 1.0. The default in [[NairnMPM]] is ''F'' = 0.5.&lt;br /&gt;
&lt;br /&gt;
When running coupled calculations, the simulation time step must use the minimum of mechanics and transport time steps or:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta t_{final} = \min(\Delta t,\Delta t_T)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For realistic properties, the minimum is usually &amp;lt;math&amp;gt;\Delta t&amp;lt;/math&amp;gt; by several orders of magnitude, which means entered value for ''F'' has no effect. Notice, however, that transport time step scales with &amp;lt;math&amp;gt;\Delta x^2&amp;lt;/math&amp;gt; while mechanics time step is linear in &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. The minimum value could change if using very small cells.&lt;br /&gt;
&lt;br /&gt;
=== Restarting Time Steps ===&lt;br /&gt;
&lt;br /&gt;
Some problems might develop high accelerations on the grid that cause simulations to break down (such as particles leaving the grid). The first steps to fixing such problems should be:&lt;br /&gt;
&lt;br /&gt;
# Use a smaller [[#Theory: MPM Time Step|time step ''C'' factor]]&lt;br /&gt;
# Add an [[AdjustTimeStep Custom Task]]&lt;br /&gt;
# Increase number of terms used to find the [[#Incremental Deformation Gradient|incremental deformation gradient]] - this option works for all materials except [[Material Models|small-strain materials]] when they are not using the [[Common Material Properties#Basic Properties|largeRotation=1]] option.&lt;br /&gt;
&lt;br /&gt;
If none of these work, you can restart time steps as needed based on nodal velocities and accelerations. Each MPM time step extrapolates mass (''m''), momentum (''p''), and force (''f'') to the grid. When time-step restarting is activated, each step checks the virtual nodal displacement on each node implied by extrapolated nodal values:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;d = \| \vec p + {1\over2}\vec f\Delta t\|{\Delta t\over m}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;Delta;''t'' is the current time step. If any node's ''d'' relative to its cell size is greater than an entered rescaling factor, the time step is discarded and restarted using a smaller time step. This option is invoked using the [[#Input Commands|&amp;amp;lt;RestartScaling&amp;amp;gt; command]]. To prevent the time step from permanently remaining small (and making a simulation too slow), this option should always be used in conjunction with an [[AdjustTimeStep Custom Task]]. This tasks will allow the time step to increase once nodal accelerations get under control, but should include its &amp;lt;tt&amp;gt;maxIncrease&amp;lt;/tt&amp;gt; parameter to prevent returning immediately to the previous time step.&lt;br /&gt;
&lt;br /&gt;
Note that not all simulations can restart time steps. If your simulation is using a feature that cannot be restarted and you invoke restarting, an error message will be printed and the simulation will not start. Most prominently, simulations with restarting are limited to [[#Theory: Stress and Strain Updates|USL- and USL+ strain updates]].&lt;br /&gt;
&lt;br /&gt;
== Input Commands ==&lt;br /&gt;
&lt;br /&gt;
The [[#Theory: Shape Functions|MPM shape functions]], the [[#Theory: Stress and Strain Updates|strain updating method]], the number of points per element, and [[#Theory: MPM Time Step|simulation timing]] are set with one or more of the commands in this section. In script input files, the commands are:&lt;br /&gt;
&lt;br /&gt;
 MPMMethod (strainUpdate),&amp;lt;(MPM_method)&amp;gt;&lt;br /&gt;
 PtsPerElement (axisNumber)&lt;br /&gt;
 TimeStep (timeStep),&amp;lt;(maxTime)&amp;gt;,&amp;lt;(timeFactor)&amp;gt;&lt;br /&gt;
 MaximumTime (maxTime)&lt;br /&gt;
 CFLFactor (timeFactor),&amp;lt;(transTimeFactor)&amp;gt;&lt;br /&gt;
 CPDIrcrit (rcrit)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, the settings are made with one or more of the following commands (all of which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MPMMethod&amp;gt;(strainUpdate number)&amp;lt;/MPMMethod&amp;gt;&lt;br /&gt;
 &amp;lt;SkipPostExtrapolation/&amp;gt;&lt;br /&gt;
 &amp;lt;GIMP type='(MPM_method)'/&amp;gt;&lt;br /&gt;
 &amp;lt;CPDIrcrit&amp;gt;(rcrit)&amp;lt;/CPDIrcrit&amp;gt;&lt;br /&gt;
 &amp;lt;MatlPtsPerElement&amp;gt;(totalNumber)&amp;lt;/MatlPtsPerElement&amp;gt;&lt;br /&gt;
 &amp;lt;TimeStep&amp;gt;(timeStep)&amp;lt;/TimeStep&amp;gt;&lt;br /&gt;
 &amp;lt;TimeFactor&amp;gt;(timeFactor)&amp;lt;/TimeFactor&amp;gt;&lt;br /&gt;
 &amp;lt;TransTimeFactor&amp;gt;(transTimeFactor)&amp;lt;/TimeFactor&amp;gt;&lt;br /&gt;
 &amp;lt;MaxTime&amp;gt;(maxTime)&amp;lt;/MaxTime&amp;gt;&lt;br /&gt;
 &amp;lt;DefGradTerms&amp;gt;(kmax)&amp;lt;/DefGradTerms&amp;gt;&lt;br /&gt;
 &amp;lt;RetartScaling CFL='(restartFactor)'&amp;gt;(restartScaling)&amp;lt;/RestartScaling&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(strainUpdate)&amp;lt;/tt&amp;gt; - the method used to [[#Theory: Stress and Strain Updates|update stresses and strains]] on the particles. The options are (scripted files can use name or number while &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files must use number):&lt;br /&gt;
** &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; (or 0) - update first&lt;br /&gt;
** &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;USAVG+&amp;lt;/tt&amp;gt; (or 2) - update strain first and last. This option is the default option.&lt;br /&gt;
** &amp;lt;tt&amp;gt;USAVG-&amp;lt;/tt&amp;gt;  (no number) - update strain first and last, but last is [[#Notes|modified&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]. Because there is no number option, &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files should add the &amp;lt;tt&amp;gt;&amp;lt;SkipPostExtraolation&amp;gt;&amp;lt;/tt&amp;gt; command to get this method.&lt;br /&gt;
** &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;USL+&amp;lt;/tt&amp;gt; (or 3) - update strain last (&amp;lt;tt&amp;gt;SZS&amp;lt;/tt&amp;gt; is old name for this method that is still accepted)&lt;br /&gt;
** &amp;lt;tt&amp;gt;USL-&amp;lt;/tt&amp;gt;  (no number) - update strain last, using [[#Notes|modified&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]] method. Because there is no number option, &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files should add the &amp;lt;tt&amp;gt;&amp;lt;SkipPostExtraolation&amp;gt;&amp;lt;/tt&amp;gt; command to get this method.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(MPM_method)&amp;lt;/tt&amp;gt; - the [[#Theory: Shape Functions|MPM method]] used for finding shape functions. The options are:&lt;br /&gt;
** &amp;lt;tt&amp;gt;Classic&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;Dirac&amp;lt;/tt&amp;gt; or 0) - classic MPM. This method is the default if no option is specified or if no &amp;lt;tt&amp;gt;&amp;lt;GIMP&amp;gt;&amp;lt;/tt&amp;gt; command is used in an &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input file.&lt;br /&gt;
** &amp;lt;tt&amp;gt;uGIMP&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;GIMP&amp;lt;/tt&amp;gt; or 1)[[#Notes|&amp;lt;sup&amp;gt;2,3&amp;lt;/sup&amp;gt;]] - undeformed GIMP. If &amp;lt;tt&amp;gt;&amp;lt;GIMP&amp;gt;&amp;lt;/tt&amp;gt; command is used in &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files without a &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt; attribute, this option is used.&lt;br /&gt;
** &amp;lt;tt&amp;gt;lCPDI&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;CPDI&amp;lt;/tt&amp;gt; or 2)[[#Notes|&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;]] - CPDI using linear shape functions.&lt;br /&gt;
** &amp;lt;tt&amp;gt;qCPDI&amp;lt;/tt&amp;gt; (or 3)[[#Notes|&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;]] - CPDI using quadratic shape functions (available in 2D only).[[#Notes|&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
** &amp;lt;tt&amp;gt;Finite&amp;lt;/tt&amp;gt; (or 4)[[#Notes|&amp;lt;sup&amp;gt;2,3&amp;lt;/sup&amp;gt;]] - exactly integrated finite GIMP (available in 2D only and only in [[OSParticulas]]).&lt;br /&gt;
** &amp;lt;tt&amp;gt;B2GIMP&amp;lt;/tt&amp;gt; (or 5)[[#Notes|&amp;lt;sup&amp;gt;2,4&amp;lt;/sup&amp;gt;]] - undeformed GIMP methods using quadratic spline grid shape functions.&lt;br /&gt;
** &amp;lt;tt&amp;gt;B2SPLINE&amp;lt;/tt&amp;gt; (or 6)[[#Notes|&amp;lt;sup&amp;gt;2,4&amp;lt;/sup&amp;gt;]] - Classic method using quadratic spline grid shape functions.&lt;br /&gt;
** &amp;lt;tt&amp;gt;B2CPDI&amp;lt;/tt&amp;gt; (or 7)[[#Notes|&amp;lt;sup&amp;gt;2,4&amp;lt;/sup&amp;gt;]] - CPDI methods using quadratic spline grid shape functions.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(axisNumber)&amp;lt;/tt&amp;gt; (scripted files only) - the number of material points along each axis in the grid.[[#Notes|&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;]] The options are&lt;br /&gt;
** 1 to 5 for 2D - these settings results in 1, 4, 9, 16, or 25 points per element. The default is 2 or 4 points per element.&lt;br /&gt;
** 1 to 3 for 3D - these settings results in 1, 8 or 27 points per element. The default is 2 or 8 points per element.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(rcrit)&amp;lt;/tt&amp;gt; - one problem with CPDI shape functions is that if a particle deforms too much, its' corners may extend beyond ghost rows into other patches used in parallel coding. If that becomes a problem, this parameter will restrict corner deformation to keep them within a single patch. Enter maximum allowed particle radius in units of cell size. Truncation occurs when half of any diagonal of the deformed particle exceeds &amp;lt;tt&amp;gt;(rcrit)&amp;lt;/tt&amp;gt;. The particle domain truncation implements the methods described in Homel ''et al.''&amp;lt;ref&amp;gt;Homel, M. A., Brannon, R. M., and Guilkey, J. (2016). Controlling the onset of numerical fracture in parallelized implementations of the material point method (MPM) with convective particle domain interpolation (CPDI) domain scaling. ''Int. J. Numer. Meth. Engng'', '''107''':31–48.&amp;lt;/ref&amp;gt; (see Eqs. (4) to (11)).&lt;br /&gt;
* &amp;lt;tt&amp;gt;(totalNumber)&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files only) - the number of material points in each element of the background grid.[[#Notes|&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;]] The options are&lt;br /&gt;
** 1, 4, 9, 16, or 25 for 2D. The default is 4 points per element.&lt;br /&gt;
** 1, 8 or 27  for 3D. The default is 8 points per element.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(timeStep)&amp;lt;/tt&amp;gt; - the MPM time step in [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]] (in &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, the time is in [[ConsistentUnits Command#Legacy and Consistent Units|time units]] or determined by a [[Units Attribute|units attribute]]). This input will be ignored unless it is less that time step calculated for input (or default) values for &amp;lt;tt&amp;gt;(timeFactor)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(transTimeFactor)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxTime)&amp;lt;/tt&amp;gt; - the time that the calculations will stop in [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]] (in &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, the time is in [[ConsistentUnits Command#Legacy and Consistent Units|time units]] or determined by a [[Units Attribute|units attribute]]). In scripted files, this value can be entered as second argument to the &amp;lt;tt&amp;gt;TimeStep&amp;lt;/tt&amp;gt; command or in a separate &amp;lt;tt&amp;gt;MaximumTime&amp;lt;/tt&amp;gt; command (whichever is last will be the one that is used) (it can be an [[Entity Command|entity]]).&lt;br /&gt;
* &amp;lt;tt&amp;gt;(timeFactor)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(transTimeFactor)&amp;lt;/tt&amp;gt; - the  [[#Theory: MPM Time Step|Courant factors]] to use when determining the MPM time step. The time step used in the analysis will be the minimum of the one determined using these factors and the one entered in &amp;lt;tt&amp;gt;(timeStep)&amp;lt;/tt&amp;gt;. The default [[#Theory: MPM Time Step|Courant factors]] are 0.5. In scripted files, The &amp;lt;tt&amp;gt;(timeFactor)&amp;lt;/tt&amp;gt; can be entered as third argument to the &amp;lt;tt&amp;gt;TimeStep&amp;lt;/tt&amp;gt; command or first argument in a &amp;lt;tt&amp;gt;CFLFactor&amp;lt;/tt&amp;gt; command&lt;br /&gt;
* &amp;lt;tt&amp;gt;(kmax)&amp;lt;/tt&amp;gt; - the number of terms to use when evaluating the [[#Incremental Deformation Gradient|incremental deformation gradient]].[[#Notes|&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;]] The default is 2 for 2D and 1 for 3D.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(restartFactor)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(restartScaling)&amp;lt;/tt&amp;gt; - these parameters invoke the [[#Restarting Time Steps|time-step restarting option]]. If the implied displacement of any node is greater than &amp;lt;tt&amp;gt;(restartFactor)*(cell size)&amp;lt;/tt&amp;gt;, the time step is changed to &amp;lt;tt&amp;gt;|(restartScaling)|*&amp;lt;/tt&amp;gt;*&amp;amp;Delta;''t'' where &amp;amp;Delta;''t'' is the current time step. The entered &amp;lt;tt&amp;gt;(restartFactor)&amp;lt;/tt&amp;gt; should be between -1 and 1. The scaling uses absolute value of the entered value. Negative values are a &amp;quot;verbose&amp;quot; mode that prints a warning eah time the time step is restarted; postive values restart time steps without notice. Values out side the range -1 to 1 are change to 0.5 (preserving the sign). A report at the end of a simulations summarizes the number of times steps that had to be restarted.[[#Notes|&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;tt&amp;gt;USAVG+&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;USL+&amp;lt;/tt&amp;gt; methods re-extrapolate momenta to the grid and re-impose contact conditions prior to updating the strain after the momenta update. The &amp;lt;tt&amp;gt;USAVG-&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;USL-&amp;lt;/tt&amp;gt; methods skip the second extrapolation. The method to use may depend on the problem, but some problems with contact seem to require the &amp;quot;+&amp;quot; methods. If both are equal, the &amp;quot;-&amp;quot; methods are more efficient.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;uGIMP&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Finite&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;B2GIMP&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;B2SPLINE&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;B2CPDI&amp;lt;/tt&amp;gt; all require use of a regular grid (''i.e.'', a grid with constant size and orthogonal elements).&lt;br /&gt;
&amp;lt;li&amp;gt;These methods are based on linear N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) grid shape functions.&lt;br /&gt;
&amp;lt;li&amp;gt;These methods are based on quadratic spline N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) grid shape functions.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;qCPDI&amp;lt;/tt&amp;gt; is less efficient than &amp;lt;tt&amp;gt;lCPDI&amp;lt;/tt&amp;gt; and in trial runs appears to have little or no benefit. It is available for comparison and potential future research into MPM shape function methods. &lt;br /&gt;
&amp;lt;li&amp;gt;The number of points per element must be set before defining material points in your analysis. If desired, however you can use a different number of points per element in selected [[MPM Region and Hole Commands|regions]] or when [[BMPRegion Command|assigning particles using an image]]. Note that script files and &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files set this number differently. Script files set the number for each axis (which is squared for 2D or cubed for 3D) while &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files gives the total number per element.&lt;br /&gt;
&amp;lt;li&amp;gt;The default number of terms for the incremental deformation gradient is 2 for 2D simulations and 1 for 3D simulations (the latter for efficieny). Because these settings work well for most calculations, there is currently no script command to change this setting. If necessary, you use an [[XMLData Command]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;XMLData &amp;quot;MPMHeader&amp;quot;&lt;br /&gt;
    &amp;lt;DefGradTerms&amp;gt;(kmax)&amp;lt;/DefGradTerms&amp;gt;&lt;br /&gt;
EndXMLData&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Because [[#Restarting Time Steps|restarting time steps]] is uncommon (and often does not fix the modeling problems), there is currently no script command to invoke it. If necessary, you can use an [[XMLData Command]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;XMLData &amp;quot;MPMHeader&amp;quot;&lt;br /&gt;
     &amp;lt;RetartScaling CFL='(restartFactor)'&amp;gt;(restartScaling)&amp;lt;/RestartScaling&amp;gt;&lt;br /&gt;
EndXMLData&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=MPM_Methods_and_Simulation_Timing&amp;diff=26221</id>
		<title>MPM Methods and Simulation Timing</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=MPM_Methods_and_Simulation_Timing&amp;diff=26221"/>
		<updated>2026-04-12T18:07:30Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Theory: MPM Time Step */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[#Input Commands|input commands]] described below set details about the MPM method and control the simulation timing. Before describing the commands, the first few sections give background theory about these options.&lt;br /&gt;
&lt;br /&gt;
== Theory: Shape Functions ==&lt;br /&gt;
&lt;br /&gt;
Many tasks in MPM involve extrapolations from particles to the grid or from the grid to particles. These extrapolations are controlled by &amp;quot;Shape Functions,&amp;quot; and the various MPM methods correspond to various methods for evaluating the shape functions. In the most generalized description of MPM (called GIMP for General Interpolation Material Point&amp;lt;ref name='GIMP'&amp;gt;S. G. Bardenhagen and E. M. Kober, &amp;quot;The Generalized Interpolation Material Point Method,&amp;quot; ''Computer Modeling in Engineering &amp;amp; Sciences'', '''5''', 477-496 (2004).&amp;lt;/ref&amp;gt;), the shape function (S&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt;) and shape function gradient (G&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt;) for extrapolation from node i to particle p are:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;S_{pi} = {\int_{\Omega_p} \chi_p(\vec x)N_i(\vec x) dV\over \int_{\Omega_p} \chi_p(\vec x) dV}\qquad{\rm and}\qquad G_{pi} = {\int_{\Omega_p} \chi_p(\vec x)\nabla N_i(\vec x) dV\over \int_{\Omega_p} \chi_p(\vec x) dV}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;Omega;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; is the domain for particle p, &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) is the characteristic function for particle p, and N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) is grid shape function for node i. The various MPM methods depend on choices for &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) and N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) and on the technique used for evaluating the shape function integrals. The chart on the right shows an MPM &amp;quot;genealogy&amp;quot; or shows how the various MPM methods descend from GIMP. The methods colored in blue are the ones supported in [[NairnMPM]].&lt;br /&gt;
[[File:MPMTree2.png|right]]&lt;br /&gt;
&lt;br /&gt;
=== Particle Shape Functions ===&lt;br /&gt;
&lt;br /&gt;
One choice is for  &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) or the particle shape functions &amp;amp;mdash; the chart shows three options. The choice of the Dirac delta function (&amp;amp;delta;(x)) leads to classic MPM methods. The choice of a Heaviside function (''i.e.'', &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) = 1 in &amp;amp;Omega;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; and 0 elsewhere) leads to a family of Heaviside GIMP methods. Finally the choice of some other function (''e.g.'', a Gaussian centered on the particle) could lead to other MPM methods, but is currently an unexplored area.&lt;br /&gt;
&lt;br /&gt;
=== Spline Grid Shape Functions ===&lt;br /&gt;
&lt;br /&gt;
A second choice is for grid shape functions can be derived from B&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; spline basis functions, which are C&amp;lt;sup&amp;gt;(n-1)&amp;lt;/sup&amp;gt; continuous spline functions on the grid. Most MPM methods choose B&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; order spline functions or linear shape functions.  In 1D, linear shape functions have the form:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;N_i(x) = \left\{ \begin{array}{cc} 1+{x-x_i\over \Delta x} &amp;amp; {\rm for\ } x_i-\Delta x &amp;lt; x &amp;lt; x_i \\&lt;br /&gt;
     1-{x-x_i\over \Delta x} &amp;amp; {\rm for\ } x_i \le x &amp;lt; x_i+\Delta x \\&lt;br /&gt;
    0 &amp;amp; {\rm otherwise}&lt;br /&gt;
\end{array} \right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; is coordinate of node i and &amp;amp;Delta;x is cell size (assumed same on both sides of node i).&lt;br /&gt;
&lt;br /&gt;
Another choice supported in [[NairnMPM]] is to use B&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; spline functions or quadratic spline functions. In 1D, quadratic spline shape functions have the form:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;N_i(x) = \left\{ \begin{array}{cc} {1\over 8}\left(3+{2(x-x_i)\over \Delta x}\right)^2 &amp;amp; {\rm for\ } x_i-{3\Delta x\over 2} &amp;lt; x &amp;lt; x_i-{\Delta x\over 2} \\&lt;br /&gt;
      {3\over 4} - \left({x-x_i\over \Delta x}\right)^2 &amp;amp; {\rm for\ } x_i-{\Delta x\over 2} \le x \le x_i+{\Delta x\over 2}  \\&lt;br /&gt;
      {1\over 8}\left(3-{2(x-x_i)\over \Delta x}\right)^2 &amp;amp; {\rm for\ } x_i+{\Delta x\over 2} &amp;lt; x &amp;lt; x_i+{3\Delta x\over 2} \\&lt;br /&gt;
    0 &amp;amp; {\rm otherwise}&lt;br /&gt;
\end{array} \right.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Classic MPM  Methods ==&lt;br /&gt;
&lt;br /&gt;
If &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) = &amp;amp;delta;(x), the shape functions reduce to the grid shape function (''e.g.'', S&amp;lt;sub&amp;gt;ip&amp;lt;/sub&amp;gt; = N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;)), which recovers &amp;quot;Classic MPM&amp;quot; or the original derivation of MPM.&amp;lt;ref name='SS'&amp;gt;D. Sulsky, Z. Chen, and H. L. Schreyer, &amp;quot;A Particle Method for History-Dependent Materials,&amp;quot; ''Comput. Methods Appl. Mech. Engrg.'', '''118''', 179-186 (1994).&amp;lt;/ref&amp;gt;&amp;lt;ref name='SZS'&amp;gt;D. Sulsky, S. -J. Zhou, and H. L. Schreyer, &amp;quot;Application of a Particle-in-Cell Method to Solid Mechanics,&amp;quot; ''Comput. Phys. Commun.'', '''87''', 236-252 (1995).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;S. -J. Zhou, &amp;quot;The Numerical Prediction of Material Failure Based on the Material Point Method,&amp;quot; Ph.D. Thesis, University of Mexico (1998).&amp;lt;/ref&amp;gt; (when using linear N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x)).  Note that &amp;quot;Classic GIMP&amp;quot; predates GIMP even though it descends from GIMP in the MPM &amp;quot;genealogy.&amp;quot; The &amp;quot;Dirac&amp;quot; method options are&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;Classic&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;Dirac&amp;lt;/tt&amp;gt;) chooses &amp;quot;Classic MPM&amp;quot; with linear N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) on the grid.&lt;br /&gt;
* &amp;lt;tt&amp;gt;B2SPLINE&amp;lt;/tt&amp;gt; chooses Dirac particle functions with quadratic spline N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) on the grid (do not use yet for axisymmetric MPM).&lt;br /&gt;
&lt;br /&gt;
Although Classic MPM is the most efficient method, it is rarely used because it is not very robust for large displacement problems. Whenever particles cross cell boundaries, they can cause noise that soon leads to unsatisfactory results. These cell-crossing artifacts are reduced by using &amp;lt;tt&amp;gt;B2SPLINE&amp;lt;/tt&amp;gt; (because first derivatives are continuous), but problems often still persist. The better approach to handling cell cross artifacts in to choose a different &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) (''e.g.'', the Heaviside methods).&lt;br /&gt;
&lt;br /&gt;
== Heaviside GIMP Methods ==&lt;br /&gt;
&lt;br /&gt;
MPM results are greatly improved by choosing &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) to be a Heaviside function. With this function, the shape function integrals reduce to integrals over the particle domain of the grid-based shape functions, which are normalized to particle volume (see chart). Many MPM methods descend from this selection. The specific descendant methods  depend on how they integrate over the particle domain.&lt;br /&gt;
&lt;br /&gt;
=== Undeformed GIMP ===&lt;br /&gt;
&lt;br /&gt;
The simplest approach is to assume the particle domain has the same shape as the initial domain and merely translates with particle motion. This method, which is called &amp;quot;Undeformed GIMP&amp;quot;, has the greatest efficiency because shape functions can be explicitly calculated for all possible particle locations relative to a regular grid. Undeformed GIMP works well from small to fairly large deformation and greatly reduces cell-crossing artifacts. The two undeformed GIMP methods can be selected using:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;uGIMP&amp;lt;/tt&amp;gt; or undeformed GIMP with linear N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) on the grid.&lt;br /&gt;
* &amp;lt;tt&amp;gt;B2GIMP&amp;lt;/tt&amp;gt; or undefomed GIMP with quadratic spline N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) on the grid (do not use yet for axisymmetric MPM).&lt;br /&gt;
 &lt;br /&gt;
Very large tension strains (&amp;gt;50%), however, can cause undeformed particle domains to become numerically separated, which can lead to non-physical fracture of the object. When this occurs, one option is to use a different method that accounts for deformed particle domain.&lt;br /&gt;
&lt;br /&gt;
=== Deformed GIMP ===&lt;br /&gt;
&lt;br /&gt;
The following GIMP methods attempt to account for particle deformation in evaluation of the shape function integrals. The methods differ in how they do the domain integration and in the grid shape functions that are integrated.&lt;br /&gt;
&lt;br /&gt;
==== 1. Finite GIMP ====&lt;br /&gt;
&lt;br /&gt;
In finite GIMP, the shape function integrals are fully integrated over the deformed particle domain. This option can be selected using &amp;lt;tt&amp;gt;Finite&amp;lt;/tt&amp;gt; for shape function method. This exact integration is available only in [[OSParticulas]], only for 2D calculations, and only for linear grid shape functions. The full integration compared to approximate integral is similar in efficiency, but surprisingly, the results are not improved over other methods. The reasons are not yet clear. One hypothesis is that while finite GIMP exactly integrates the full particle domain, the particle shape function is still treating particle properties (such as velocity) as constant over the domain (due to Heaviside &amp;amp;chi;&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;(x) function). These contrary views may be inconsistent.&lt;br /&gt;
&lt;br /&gt;
==== 2. Convected Partical Domain Integration ====&lt;br /&gt;
&lt;br /&gt;
A useful improvement for large to massive deformation is Convected Particle Domain Integration approach or CPDI.&amp;lt;ref name='CPDI'&amp;gt;A. Sadeghirad, R. M. Brannon, and J. Burghardt, &amp;quot;A convected particle domain interpolation technique to extend applicability of the material point method for problems involving massive deformations,&amp;quot; &amp;lt;i&amp;gt;Int. J. Numer. Meth. Engng.&amp;lt;/i&amp;gt;, '''86''', 1435–1456 (2011)&amp;lt;/ref&amp;gt; In CPDI, the integral over the deformed particle domain is approximated. In brief:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The deformed particle domain is discretized by isoparametric finite elements. In practice, the discretization uses a single element, but it could use more.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The Integrands for S&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt; and G&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt; are then approximated by expanding them in the finite element shape functions:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;N_i(\vec x) \approx \sum_j N_i(c_j) M_j(\vec x)\qquad{\rm and}\qquad \nabla N_i(\vec x) \approx \sum_j N_i(c_j) \nabla M_j(\vec x)&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
where c&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; are nodes of the deformed particle domain (''e.g.'', usually corners of the domain) and M&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;(x) are isoparametric finite element shape functions for the elements used to discretize the deformed particle domain.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Integrals over the deformed domain can then be evaluated to give S&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt; and G&amp;lt;sub&amp;gt;pi&amp;lt;/sub&amp;gt; in terms for N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(c&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt;).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version of CPDI available here finds the corners of the deformed domain using the deformation gradient on the particle.&amp;lt;ref name='CPDI'/&amp;gt; If r&amp;lt;sub&amp;gt;j0&amp;lt;/sub&amp;gt; is a vector from the particle to any edge location j in the undeformed domain, then r&amp;lt;sub&amp;gt;j&amp;lt;/sub&amp;gt; = F&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt;r&amp;lt;sub&amp;gt;j0&amp;lt;/sub&amp;gt;, where F&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; is the deformation gradient on the particle, is the vector to that location in the deformed domain. When using this approach, an initial 2D rectangle domain deforms to a parallelogram and an initial 3D orthogonal box deforms to a parallelepiped. The subclasses of this method depend on grid shape functions being used and on the finite element types used to map that particle domain:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;lCPDI&amp;lt;/tt&amp;gt; for &amp;quot;linear&amp;quot; CPDI: this method uses linear grid shape functions and maps the corners of the domain to a single linear element (4 node element in 2D and 8 node element in 3D) resulting in an isoparametric element with linear shape functions.&lt;br /&gt;
* &amp;lt;tt&amp;gt;qCPDI&amp;lt;/tt&amp;gt; for &amp;quot;quadratic&amp;quot; CPDI: this method uses linear grid shape functions and additionally maps midpoints of edges to nodes (''e.g''., 8 node element in 2D) resulting in an isoparametric element with quadratic shape functions. This method is only available for 2D simulations.&lt;br /&gt;
* &amp;lt;tt&amp;gt;B2CPDI&amp;lt;/tt&amp;gt; for &amp;quot;B2 Spline&amp;quot; CPDI: this method uses B&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; spline grid shapes functions and maps the deformed domain as in lCPDI.&lt;br /&gt;
&lt;br /&gt;
CPDI methods are less efficient the undeformed GIMP because of the extra overhead required to locate corner nodes needed for evaluating shape functions. Nevertheless, the use of CPDI is crucial for handling problems with deformation beyond the capabilities of undeformed GIMP.&lt;br /&gt;
&lt;br /&gt;
==== 3. Convected Particle Domain Integration 2 ====&lt;br /&gt;
&lt;br /&gt;
A second version of CPDI, known as CPDI2, has been developed.&amp;lt;ref name='CPDIQ'&amp;gt;A. Sadeghirad, R. M. Brannon,and J. E. Guilkey, &amp;quot;Second-order convected particle domain interpolation (CPDI2) with enrichment for weak discontinuities at material interfaces,&amp;quot; &amp;lt;i&amp;gt;Int. J. Numer. Meth. Engng.&amp;lt;/i&amp;gt;, '''95''', 928–952 (2013)&amp;lt;/ref&amp;gt; In CPDI2 the corner locations are separately tracked during the analysis and their current locations are used to define the deformed particle domain. For example, a 2D domain deforms to an arbitrary quadrilateral element and a 3D domain to an arbitrary 8-cornered brick element. The efficiency should be similar to CPDI, but CPDI2 adds the additional overheard of tracking and updating corner particles. CPDI2 options are currently not implemented in either  [[NairnMPM]] or [[OSParticulas]].&lt;br /&gt;
&lt;br /&gt;
==== 4. cpGIMP ====&lt;br /&gt;
&lt;br /&gt;
In cpGIMP, or convected particle GIMP, the deformed domain is stretched in orthogonal directions but is never sheared. In other words, particle domains that start as squares (in 2D) or cubes (in 3D) will deform to rectangles (in 2D) or orthogonal boxes (in 3D). In 1D, cpGIMP is a true [[#Finite GIMP|finite GIMP]] method, but in 2D or 3D, it does not account for arbitrary deformation that includes shear deformation. Compared to undeformed GIMP, cpGIMP may handle uniaxial deformation better, but may not be any better for general deformation modes. This approach is currently not implemented in either  [[NairnMPM]] or [[OSParticulas]].&lt;br /&gt;
&lt;br /&gt;
== Theory: Stress and Strain Updates ==&lt;br /&gt;
&lt;br /&gt;
The basic tasks in an MPM time step are:&lt;br /&gt;
&lt;br /&gt;
# Extrapolate particle mass and momentum to the grid&lt;br /&gt;
# Find internal and external forces&lt;br /&gt;
# Update momenta on the grid using those forces&lt;br /&gt;
# Update particle position and velocity using updated grid information&lt;br /&gt;
&lt;br /&gt;
To correctly model internal forces, this loop needs to track stresses and strains on the particles. This tracking is done by calculating velocities on the grid (from the grid momenta). Once these velocities are found, they can be extrapolated to the particle using gradient shape functions to get velocity gradients on the particle. Particle velocity gradients provide the key input for updating particle strains and through constitutive laws to update particle stresses. In the first MPM work,&amp;lt;ref name='SS'/&amp;gt; the strain and stress update was done using the updated momenta on the grid. It is easy to show, however, that this approach is unstable if the update particle position interacts with a node having zero mass. This numerical challenge can be eliminated by two variants to MPM:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; - follow the recommendation of Sulsky, Zhou, and Schreyer&amp;lt;ref name='SZS'/&amp;gt; which was to do a second extrapolation of momenta after updating momenta on the grid and use those new momenta to update strains and stresses. This approach adds step 5 to MPM time step above to reextrapolate momenta to the grid and then update stress and strain after that step.&lt;br /&gt;
* &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; - update strains and stresses first or to update them after the initial extrapolation in step 1 of above time step tasks.&amp;lt;ref name=&amp;quot;USF'&amp;gt;S. G. Bardenhagen, &amp;quot;Energy Conservation Error in the Material Point Method,&amp;quot; &amp;lt;i&amp;gt;J. Comp. Phys.&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;180&amp;lt;/b&amp;gt;, 383-403 (2002).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two approaches give similar results. The &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; method is more efficient than &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; because it avoids the need to do a second extrapolation of momenta.&lt;br /&gt;
&lt;br /&gt;
A unique option in [[NairnMPM]] combines these two methods:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; - update strains after the first extrapolation and after a second extrapolation of updated momenta on the grid.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; method seems to behave like a midpoint rule. In observations of temporal convergence, the &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; method for a given time step gives results close to &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; using half that time step. In other words,  compared to &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt;, the &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; is analogous to using half the time step without the cost of doubling the number of calculations. In most simulation, the &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; method also exhibits improved energy conservation&amp;lt;ref name='CRAMP'&amp;gt;J. A. Nairn, &amp;quot;Material Point Method Calculations with Explicit Cracks,&amp;quot; &amp;lt;i&amp;gt;Computer Modeling in Engineering &amp;amp;amp; Sciences&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt;, 649-664 (2003). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/MPMCracks.pdf See PDF])&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Although  Sulsky, Zhou, and Schreyer&amp;lt;ref name='SZS'/&amp;gt; recommend a second momentum extrapolation prior to update, that second extrapolation is not needed provided one is careful in calculation of shape functions. Skipping the second extrapolation is always more efficient and can result in better simulations. Whether or not to use the second extrapolation, however, seems to depend on the problem. Some problems with contact or cracks seem to require it while problems with liquids seem improved without it. The default is to include the second extrapolation, but [[#Input Commands|commands below]] let you pick from the following options:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;USL+&amp;lt;/tt&amp;gt; - update strains after momentum update and after a second extrapolation (same as &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; above).&lt;br /&gt;
* &amp;lt;tt&amp;gt;USL-&amp;lt;/tt&amp;gt; - update strains after momentum update, but do not do a second extrapolation.&lt;br /&gt;
* &amp;lt;tt&amp;gt;USAVG+&amp;lt;/tt&amp;gt; - update strains after the first extrapolation and after a second extrapolation of updated momenta on the grid (same as &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; above).&lt;br /&gt;
* &amp;lt;tt&amp;gt;USAVG-&amp;lt;/tt&amp;gt; - update strains before and after the momentum update, but do not do a second extrapolation.&lt;br /&gt;
&lt;br /&gt;
The key to skipping the second extrapolation compared to early MPM work,&amp;lt;ref name='SS'/&amp;gt; is to extrapolate velocity gradient from updated momenta by using gradient shape function based on the original particle position rather then the updated position.&lt;br /&gt;
&lt;br /&gt;
=== Incremental Deformation Gradient ===&lt;br /&gt;
&lt;br /&gt;
During strain updating, some [[Material Models|materials]] (''e.g.'', hyperelastic materials) use the full incremental deformation gradient, ''dF'', which is defined by&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;{dF\over dt} = \nabla\vec v F&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;Delta;t is the time step and &amp;amp;nabla;v is the velocity gradient calculated from the current nodal velocities. If velocity gradient is constant for the time step, the exact solution is&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; F(t+\Delta t) = \exp(\Delta t \nabla\vec v) F(t) = dF\cdot F(t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;dF = \exp(\Delta t \nabla\vec v)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is the incremental deformation gradient. An interesting review article&amp;lt;ref name='expM'&amp;gt;C. Moler and C. Van Loan, &amp;quot;Nineteen Dubious Ways to Compute the Exponential of a Matrix. Twenty Five Years Later.&amp;quot; ''SIAM Review'', '''46''', (2003)&amp;lt;/ref&amp;gt; on finding the exponential of a matrix, which is needed here, concludes no single way is stable and efficient for all problems, but in MPM with sufficiently small time steps, an expansion method should work well&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\exp(\Delta t \nabla\vec v) = \sum_{k=0}^{k_{max}} {(\nabla u)^k \over k!} &lt;br /&gt;
            =  I + \nabla u + \sum_{k=2}^{k_{max}} {(\nabla u)^k \over k!}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;nabla;u = &amp;amp;Delta;t &amp;amp;nabla;v is the incremental displacement gradient for the current time step. Many computational mechanics methods truncate after the first term (the linear term), because it avoids the need to take powers of a matrix. But, using just the linear term can have issues for problems with lots of rotational motion. Fortunately the extra terms can all be evaluated with no matrix multiplications (in 2D) and with only the square of a matrix (in 3D) by using the &amp;quot;Cayley-Hamilton&amp;quot; theory (see method #8 in the review article&amp;lt;ref name='expM'/&amp;gt;). You can select the number of terms to use in the expansion with the [[#Input Commands|&amp;amp;lt;DefGradTerms&amp;amp;gt; command]].&lt;br /&gt;
&lt;br /&gt;
== Theory: MPM Time Step ==&lt;br /&gt;
&lt;br /&gt;
In explicit computation mechanics, the Courant–Friedrichs–Lewy condition (CFL condition) is a necessary condition for convergence. It states that the time step, &amp;amp;Delta;''t'', must satisfy:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta t \le { \Delta x\over v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;Delta;''x'' is the minimum dimension of any cell in the background grid and ''v'' is the maximum wave speed in the material (''i.e.'', the highest wave speed in anisotropic materials). It is usually better to be below this minimum by a input factor of less than one. The factor is also known as the &amp;quot;Courant&amp;quot; factor:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt; C = { v\Delta t\over \Delta x} \qquad {\rm or} \qquad\Delta t =C { \Delta x\over v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The entered ''C'' must be less then 1.0. The default in [[NairnMPM]] is ''C'' = 0.5. Lower values may be needed depending on simulations features such as [[Setting Velocity and Transport Values|fixed-velocity boundary conditions]] on the grid or created by [[Rigid Material|rigid particles]] when modeling [[Multimaterial MPM|contact]], when modeling brittle materials using [[Material Models#Softening Materials|damage mechanics]] or when using high order FMPM(k). An alternative to very low ''C'' is to try [[#Restarting Time Steps|restarting time steps]] that develop high accelerations on the grid.&lt;br /&gt;
&lt;br /&gt;
When transport tasks are activated ([[Thermal Calculations|conduction]], [[Diffusion Calculations|diffusion]], or [[Poroelasticity Calculations|poroelasticity]]), convergence of transport calculations requires the time step to satisfy&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta t_T \le { \Delta x^2\over 2}{C_T\over \max(\kappa)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''C&amp;lt;sub&amp;gt;T&amp;lt;/sub&amp;gt;'' and &amp;lt;math&amp;gt;\kappa&amp;lt;/math&amp;gt; depend on the type of transport being modeled. For [[Thermal Calculations|conduction]], &amp;lt;math&amp;gt;C_T=\rho C_v&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\kappa&amp;lt;/math&amp;gt; is thermal conductivity. For [[Diffusion Calculations|diffusion]], ''C&amp;lt;sub&amp;gt;T&amp;lt;/sub&amp;gt;=1'' and &amp;lt;math&amp;gt;\kappa&amp;lt;/math&amp;gt; is diffusion coefficient. For [[Poroelasticity Calculations|poroelasticity]], ''C&amp;lt;sub&amp;gt;T&amp;lt;/sub&amp;gt;=1/Q'' and &amp;lt;math&amp;gt;\kappa&amp;lt;/math&amp;gt; is Darcy's law permittivity divided by fluid viscosity. It is usually better to be below this minimum by a input factor of less than one. The factor is also known as the &amp;quot;Transport Courant&amp;quot; factor or transport time step is:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta t_T = F { \Delta x^2\over 2}{C_T\over \max(\kappa)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The entered ''F'' must be less then 1.0. The default in [[NairnMPM]] is ''F'' = 0.5.&lt;br /&gt;
&lt;br /&gt;
When running coupled calculations, the simulation time step must use the minimum of mechanics and transport time steps or:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta t_{final} = \min(\Delta t,\Delta t_T)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For realistic properties, the minimum is usually &amp;lt;math&amp;gt;\Delta t&amp;lt;/math&amp;gt; by several orders of magnitude, which means entered value for ''F'' has no effect. Notice, however, that transport time step scales with &amp;lt;math&amp;gt;\Delta x^2&amp;lt;/math&amp;gt; while mechanics time step is linear in &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. The minimum value could change if using very small cells.&lt;br /&gt;
&lt;br /&gt;
=== Restarting Time Steps ===&lt;br /&gt;
&lt;br /&gt;
Some problems might develop high accelerations on the grid that cause simulations to break down (such as particles leaving the grid). The first steps to fixing such problems should be:&lt;br /&gt;
&lt;br /&gt;
# Use a smaller [[#Theory: MPM Time Step|time step ''C'' factor]]&lt;br /&gt;
# Add an [[AdjustTimeStep Custom Task]]&lt;br /&gt;
# Increase number of terms used to find the [[#Incremental Deformation Gradient|incremental deformation gradient]] - this option works for all materials except [[Material Models|small-strain materials]] when they are not using the [[Common Material Properties#Basic Properties|largeRotation=1]] option.&lt;br /&gt;
&lt;br /&gt;
If none of these work, you can restart time steps as needed based on nodal velocities and accelerations. Each MPM time step extrapolates mass (''m''), momentum (''p''), and force (''f'') to the grid. When time-step restarting is activated, each step checks the virtual nodal displacement on each node implied by extrapolated nodal values:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;math&amp;gt;d = \| \vec p + {1\over2}\vec f\Delta t\|{\Delta t\over m}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;amp;Delta;''t'' is the current time step. If any node's ''d'' relative to its cell size is greater than an entered rescaling factor, the time step is discarded and restarted using a smaller time step. This option is invoked using the [[#Input Commands|&amp;amp;lt;RestartScaling&amp;amp;gt; command]]. To prevent the time step from permanently remaining small (and making a simulation too slow), this option should always be used in conjunction with an [[AdjustTimeStep Custom Task]]. This tasks will allow the time step to increase once nodal accelerations get under control, but should include its &amp;lt;tt&amp;gt;maxIncrease&amp;lt;/tt&amp;gt; parameter to prevent returning immediately to the previous time step.&lt;br /&gt;
&lt;br /&gt;
Note that not all simulations can restart time steps. If your simulation is using a feature that cannot be restarted and you invoke restarting, an error message will be printed and the simulation will not start. Most prominently, simulations with restarting are limited to [[#Theory: Stress and Strain Updates|USL- and USL+ strain updates]].&lt;br /&gt;
&lt;br /&gt;
== Input Commands ==&lt;br /&gt;
&lt;br /&gt;
The [[#Theory: Shape Functions|MPM shape functions]], the [[#Theory: Stress and Strain Updates|strain updating method]], the number of points per element, and [[#Theory: MPM Time Step|simulation timing]] are set with one or more of the commands in this section. In script input files, the commands are:&lt;br /&gt;
&lt;br /&gt;
 MPMMethod (strainUpdate),&amp;lt;(MPM_method)&amp;gt;&lt;br /&gt;
 PtsPerElement (axisNumber)&lt;br /&gt;
 TimeStep (timeStep),&amp;lt;(maxTime)&amp;gt;,&amp;lt;(timeFactor)&amp;gt;&lt;br /&gt;
 MaximumTime (maxTime)&lt;br /&gt;
 CFLFactor (timeFactor),&amp;lt;(transTimeFactor)&amp;gt;&lt;br /&gt;
 CPDIrcrit (rcrit)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, the settings are made with one or more of the following commands (all of which must be within the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MPMMethod&amp;gt;(strainUpdate number)&amp;lt;/MPMMethod&amp;gt;&lt;br /&gt;
 &amp;lt;SkipPostExtrapolation/&amp;gt;&lt;br /&gt;
 &amp;lt;GIMP type='(MPM_method)'/&amp;gt;&lt;br /&gt;
 &amp;lt;CPDIrcrit&amp;gt;(rcrit)&amp;lt;/CPDIrcrit&amp;gt;&lt;br /&gt;
 &amp;lt;MatlPtsPerElement&amp;gt;(totalNumber)&amp;lt;/MatlPtsPerElement&amp;gt;&lt;br /&gt;
 &amp;lt;TimeStep&amp;gt;(timeStep)&amp;lt;/TimeStep&amp;gt;&lt;br /&gt;
 &amp;lt;TimeFactor&amp;gt;(timeFactor)&amp;lt;/TimeFactor&amp;gt;&lt;br /&gt;
 &amp;lt;TransTimeFactor&amp;gt;(transTimeFactor)&amp;lt;/TimeFactor&amp;gt;&lt;br /&gt;
 &amp;lt;MaxTime&amp;gt;(maxTime)&amp;lt;/MaxTime&amp;gt;&lt;br /&gt;
 &amp;lt;DefGradTerms&amp;gt;(kmax)&amp;lt;/DefGradTerms&amp;gt;&lt;br /&gt;
 &amp;lt;RetartScaling CFL='(restartFactor)'&amp;gt;(restartScaling)&amp;lt;/RestartScaling&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(strainUpdate)&amp;lt;/tt&amp;gt; - the method used to [[#Theory: Stress and Strain Updates|update stresses and strains]] on the particles. The options are (scripted files can use name or number while &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files must use number):&lt;br /&gt;
** &amp;lt;tt&amp;gt;USF&amp;lt;/tt&amp;gt; (or 0) - update first&lt;br /&gt;
** &amp;lt;tt&amp;gt;USAVG&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;USAVG+&amp;lt;/tt&amp;gt; (or 2) - update strain first and last. This option is the default option.&lt;br /&gt;
** &amp;lt;tt&amp;gt;USAVG-&amp;lt;/tt&amp;gt;  (no number) - update strain first and last, but last is [[#Notes|modified&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]]. Because there is no number option, &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files should add the &amp;lt;tt&amp;gt;&amp;lt;SkipPostExtraolation&amp;gt;&amp;lt;/tt&amp;gt; command to get this method.&lt;br /&gt;
** &amp;lt;tt&amp;gt;USL&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;USL+&amp;lt;/tt&amp;gt; (or 3) - update strain last (&amp;lt;tt&amp;gt;SZS&amp;lt;/tt&amp;gt; is old name for this method that is still accepted)&lt;br /&gt;
** &amp;lt;tt&amp;gt;USL-&amp;lt;/tt&amp;gt;  (no number) - update strain last, using [[#Notes|modified&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;]] method. Because there is no number option, &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files should add the &amp;lt;tt&amp;gt;&amp;lt;SkipPostExtraolation&amp;gt;&amp;lt;/tt&amp;gt; command to get this method.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(MPM_method)&amp;lt;/tt&amp;gt; - the [[#Theory: Shape Functions|MPM method]] used for finding shape functions. The options are:&lt;br /&gt;
** &amp;lt;tt&amp;gt;Classic&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;Dirac&amp;lt;/tt&amp;gt; or 0) - classic MPM. This method is the default if no option is specified or if no &amp;lt;tt&amp;gt;&amp;lt;GIMP&amp;gt;&amp;lt;/tt&amp;gt; command is used in an &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input file.&lt;br /&gt;
** &amp;lt;tt&amp;gt;uGIMP&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;GIMP&amp;lt;/tt&amp;gt; or 1)[[#Notes|&amp;lt;sup&amp;gt;2,3&amp;lt;/sup&amp;gt;]] - undeformed GIMP. If &amp;lt;tt&amp;gt;&amp;lt;GIMP&amp;gt;&amp;lt;/tt&amp;gt; command is used in &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files without a &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt; attribute, this option is used.&lt;br /&gt;
** &amp;lt;tt&amp;gt;lCPDI&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;CPDI&amp;lt;/tt&amp;gt; or 2)[[#Notes|&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;]] - CPDI using linear shape functions.&lt;br /&gt;
** &amp;lt;tt&amp;gt;qCPDI&amp;lt;/tt&amp;gt; (or 3)[[#Notes|&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;]] - CPDI using quadratic shape functions (available in 2D only).[[#Notes|&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
** &amp;lt;tt&amp;gt;Finite&amp;lt;/tt&amp;gt; (or 4)[[#Notes|&amp;lt;sup&amp;gt;2,3&amp;lt;/sup&amp;gt;]] - exactly integrated finite GIMP (available in 2D only and only in [[OSParticulas]]).&lt;br /&gt;
** &amp;lt;tt&amp;gt;B2GIMP&amp;lt;/tt&amp;gt; (or 5)[[#Notes|&amp;lt;sup&amp;gt;2,4&amp;lt;/sup&amp;gt;]] - undeformed GIMP methods using quadratic spline grid shape functions.&lt;br /&gt;
** &amp;lt;tt&amp;gt;B2SPLINE&amp;lt;/tt&amp;gt; (or 6)[[#Notes|&amp;lt;sup&amp;gt;2,4&amp;lt;/sup&amp;gt;]] - Classic method using quadratic spline grid shape functions.&lt;br /&gt;
** &amp;lt;tt&amp;gt;B2CPDI&amp;lt;/tt&amp;gt; (or 7)[[#Notes|&amp;lt;sup&amp;gt;2,4&amp;lt;/sup&amp;gt;]] - CPDI methods using quadratic spline grid shape functions.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(axisNumber)&amp;lt;/tt&amp;gt; (scripted files only) - the number of material points along each axis in the grid.[[#Notes|&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;]] The options are&lt;br /&gt;
** 1 to 5 for 2D - these settings results in 1, 4, 9, 16, or 25 points per element. The default is 2 or 4 points per element.&lt;br /&gt;
** 1 to 3 for 3D - these settings results in 1, 8 or 27 points per element. The default is 2 or 8 points per element.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(rcrit)&amp;lt;/tt&amp;gt; - one problem with CPDI shape functions is that if a particle deforms too much, its' corners may extend beyond ghost rows into other patches used in parallel coding. If that becomes a problem, this parameter will restrict corner deformation to keep them within a single patch. Enter maximum allowed particle radius in units of cell size. Truncation occurs when half of any diagonal of the deformed particle exceeds &amp;lt;tt&amp;gt;(rcrit)&amp;lt;/tt&amp;gt;. The particle domain truncation implements the methods described in Homel ''et al.''&amp;lt;ref&amp;gt;Homel, M. A., Brannon, R. M., and Guilkey, J. (2016). Controlling the onset of numerical fracture in parallelized implementations of the material point method (MPM) with convective particle domain interpolation (CPDI) domain scaling. ''Int. J. Numer. Meth. Engng'', '''107''':31–48.&amp;lt;/ref&amp;gt; (see Eqs. (4) to (11)).&lt;br /&gt;
* &amp;lt;tt&amp;gt;(totalNumber)&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files only) - the number of material points in each element of the background grid.[[#Notes|&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;]] The options are&lt;br /&gt;
** 1, 4, 9, 16, or 25 for 2D. The default is 4 points per element.&lt;br /&gt;
** 1, 8 or 27  for 3D. The default is 8 points per element.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(timeStep)&amp;lt;/tt&amp;gt; - the MPM time step in [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]] (in &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, the time is in [[ConsistentUnits Command#Legacy and Consistent Units|time units]] or determined by a [[Units Attribute|units attribute]]). This input will be ignored unless it is less that time step calculated for input (or default) values for &amp;lt;tt&amp;gt;(timeFactor)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(transTimeFactor)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(maxTime)&amp;lt;/tt&amp;gt; - the time that the calculations will stop in [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]] (in &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, the time is in [[ConsistentUnits Command#Legacy and Consistent Units|time units]] or determined by a [[Units Attribute|units attribute]]). In scripted files, this value can be entered as second argument to the &amp;lt;tt&amp;gt;TimeStep&amp;lt;/tt&amp;gt; command or in a separate &amp;lt;tt&amp;gt;MaximumTime&amp;lt;/tt&amp;gt; command (whichever is last will be the one that is used) (it can be an [[Entity Command|entity]]).&lt;br /&gt;
* &amp;lt;tt&amp;gt;(timeFactor)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(transTimeFactor)&amp;lt;/tt&amp;gt; - the  [[#Theory: MPM Time Step|Courant factors]] to use when determining the MPM time step. The time step used in the analysis will be the minimum of the one determined using these factors and the one entered in &amp;lt;tt&amp;gt;(timeStep)&amp;lt;/tt&amp;gt;. The default [[#Theory: MPM Time Step|Courant factors]] are 0.5. In scripted files, The &amp;lt;tt&amp;gt;(timeFactor)&amp;lt;/tt&amp;gt; can be entered as third argument to the &amp;lt;tt&amp;gt;TimeStep&amp;lt;/tt&amp;gt; command or first argument in a &amp;lt;tt&amp;gt;CFLFactor&amp;lt;/tt&amp;gt; command&lt;br /&gt;
* &amp;lt;tt&amp;gt;(kmax)&amp;lt;/tt&amp;gt; - the number of terms to use when evaluating the [[#Incremental Deformation Gradient|incremental deformation gradient]].[[#Notes|&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;]] The default is 2 for 2D and 1 for 3D.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(restartFactor)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(restartScaling)&amp;lt;/tt&amp;gt; - these parameters invoke the [[#Restarting Time Steps|time-step restarting option]]. If the implied displacement of any node is greater than &amp;lt;tt&amp;gt;(restartFactor)*(cell size)&amp;lt;/tt&amp;gt;, the time step is changed to &amp;lt;tt&amp;gt;|(restartScaling)|*&amp;lt;/tt&amp;gt;*&amp;amp;Delta;''t'' where &amp;amp;Delta;''t'' is the current time step. The entered &amp;lt;tt&amp;gt;(restartFactor)&amp;lt;/tt&amp;gt; should be between -1 and 1. The scaling uses absolute value of the entered value. Negative values are a &amp;quot;verbose&amp;quot; mode that prints a warning eah time the time step is restarted; postive values restart time steps without notice. Values out side the range -1 to 1 are change to 0.5 (preserving the sign). A report at the end of a simulations summarizes the number of times steps that had to be restarted.[[#Notes|&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;tt&amp;gt;USAVG+&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;USL+&amp;lt;/tt&amp;gt; methods re-extrapolate momenta to the grid and re-impose contact conditions prior to updating the strain after the momenta update. The &amp;lt;tt&amp;gt;USAVG-&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;USL-&amp;lt;/tt&amp;gt; methods skip the second extrapolation. The method to use may depend on the problem, but some problems with contact seem to require the &amp;quot;+&amp;quot; methods. If both are equal, the &amp;quot;-&amp;quot; methods are more efficient.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;uGIMP&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Finite&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;B2GIMP&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;B2SPLINE&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;B2CPDI&amp;lt;/tt&amp;gt; all require use of a regular grid (''i.e.'', a grid with constant size and orthogonal elements).&lt;br /&gt;
&amp;lt;li&amp;gt;These methods are based on linear N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) grid shape functions.&lt;br /&gt;
&amp;lt;li&amp;gt;These methods are based on quadratic spline N&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;(x) grid shape functions.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;qCPDI&amp;lt;/tt&amp;gt; is less efficient than &amp;lt;tt&amp;gt;lCPDI&amp;lt;/tt&amp;gt; and in trial runs appears to have little or no benefit. It is available for comparison and potential future research into MPM shape function methods. &lt;br /&gt;
&amp;lt;li&amp;gt;The number of points per element must be set before defining material points in your analysis. If desired, however you can use a different number of points per element in selected [[MPM Region and Hole Commands|regions]] or when [[BMPRegion Command|assigning particles using an image]]. Note that script files and &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files set this number differently. Script files set the number for each axis (which is squared for 2D or cubed for 3D) while &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files gives the total number per element.&lt;br /&gt;
&amp;lt;li&amp;gt;The default number of terms for the incremental deformation gradient is 2 for 2D simulations and 1 for 3D simulations (the latter for efficieny). Because these settings work well for most calculations, there is currently no script command to change this setting. If necessary, you use an [[XMLData Command]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;XMLData &amp;quot;MPMHeader&amp;quot;&lt;br /&gt;
    &amp;lt;DefGradTerms&amp;gt;(kmax)&amp;lt;/DefGradTerms&amp;gt;&lt;br /&gt;
EndXMLData&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Because [[#Restarting Time Steps|restarting time steps]] is uncommon (and often does not fix the modeling problems), there is currently no script command to invoke it. If necessary, you can use an [[XMLData Command]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;XMLData &amp;quot;MPMHeader&amp;quot;&lt;br /&gt;
     &amp;lt;RetartScaling CFL='(restartFactor)'&amp;gt;(restartScaling)&amp;lt;/RestartScaling&amp;gt;&lt;br /&gt;
EndXMLData&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26220</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26220"/>
		<updated>2026-04-10T18:05:12Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. XPIC(k) is a new method that solves the energy dissipation problem, enhances overall stability of MPM, and reduces noise. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches amethod with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
The drawback of XPIC(k)/FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. XPIC and FMPM are therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost. Very high values of &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; (''e.g.'', &amp;lt;tt&amp;gt;k&amp;amp;gt;40&amp;lt;/tt&amp;gt;) are typically unstable (due to too many additional extrapolations or to changes in effective eigenvalues for the equations).&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26219</id>
		<title>FMPM Features</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=FMPM_Features&amp;diff=26219"/>
		<updated>2026-04-10T18:05:01Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The [[Damping Options#PIC Damping|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 most problems too heavily resulting in significant dissipation of energy. XPIC(k) is a new method that solves the energy dissipation problem, enhances overall stability of MPM, and reduces noise. XPIC(k) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(k) is defined by an order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; is PIC, &amp;lt;tt&amp;gt;k&amp;amp;gt;1&amp;lt;/tt&amp;gt; is XPIC, and large &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; approaches amethod with all null-space noise removed.&lt;br /&gt;
&lt;br /&gt;
After deriving XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; methods, another improvement was to show that XPIC style calculations are equivalent to implementing an MPM method that approximates the inverse of the full mass matrix. Use this revised interpretation, the XPIC(k) scheme was modifed to derive another method denoted FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;. FMPM(1) defines and improved form of PIC (compared to XPIC(1)) and higher orders also appear to further reduce dissipation compared to XPIC(k). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
The drawback of XPIC(k)/FMPM(k) is that each higher order requires an extra extrapolation. The extra calculations scale with k*N where N is the number of particles in the problem. XPIC and FMPM are therefore less efficient than PIC or FLIP. In many problems, &amp;lt;tt&amp;gt;k=2&amp;lt;/tt&amp;gt; already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; is often better with &amp;lt;tt&amp;gt;k=4&amp;lt;/tt&amp;gt; appearing to provide much benefit without too much extra cost. Very high values of &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; (''e.g.'', &amp;lt;tt&amp;gt;k&amp;amp;gt;40&amp;lt;/tt&amp;gt;) are typically unstable (due to too many additional extrapolations or to changes in effective eigenvalues for the equations).&lt;br /&gt;
&lt;br /&gt;
== XPIC(k) and FMPM(k) Commands ==&lt;br /&gt;
&lt;br /&gt;
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describes prior methods for selecting XPIC(k) (but not FMPM(k)). They are no longer available in the latest code.&lt;br /&gt;
&lt;br /&gt;
=== Eliminated XPIC Commands ===&lt;br /&gt;
&lt;br /&gt;
Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]. Any old input files you have with this command should change those files to use a [[PeriodicXPIC Custom Task]] instead. The deleted command options are:&lt;br /&gt;
&lt;br /&gt;
 Damping (alphagVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
 PDamping (alphapVsT),&amp;lt;(fractionPIC)&amp;gt;,&amp;lt;(XPICOrder)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the relevant paramters for XPIC(m) are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is the [[Damping Options#PIC Damping|fraction PIC]] to use in the simulation. It can vary from 1 for pure XPIC(m) to 0 for pure FLIP. The default is 0. Note that this option is inefficient and was therefore removed. You can replace a fraction XPIC(m) of &amp;amp;phi; in old calculations with XPIC(m) done every &amp;lt;tt&amp;gt;int(1/&amp;lt;/tt&amp;gt;&amp;amp;phi;&amp;lt;tt&amp;gt;)&amp;lt;/tt&amp;gt; time steps in the [[PeriodicXPIC Custom Task]].&lt;br /&gt;
* &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; to set the XPIC(m) order or &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt;. It must be an integer and values less than 1 are set to 1. Note that this parameter is ignored unless PIC is activated with &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; &amp;amp;gt; 0. The default is 1, which is standard PIC.&lt;br /&gt;
&lt;br /&gt;
Although &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set in either the &amp;lt;tt&amp;gt;Damping&amp;lt;/tt&amp;gt; or the &amp;lt;tt&amp;gt;PDamping&amp;lt;/tt&amp;gt; command, only one setting for each is allowed; a simulation will use whichever setting comes last.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input files, &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; can be set with commands in the [[MPM Input Files#MPM Header|&amp;lt;tt&amp;gt;&amp;lt;MPMHeader&amp;gt;&amp;lt;/tt&amp;gt; element]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Damping PIC='(fractionPIC)' function='(alphagVsT)'&amp;gt;(alphagNum)&amp;lt;/Damping&amp;gt;&lt;br /&gt;
 &amp;lt;XPIC order='(XPICOrder)'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;(XPICOrder)&amp;lt;/tt&amp;gt; is ignored unless &amp;lt;tt&amp;gt;(fractionPIC)&amp;lt;/tt&amp;gt; is greater than zero.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Analysis_Command&amp;diff=26218</id>
		<title>Analysis Command</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Analysis_Command&amp;diff=26218"/>
		<updated>2026-04-10T18:02:59Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Decide the type of analysis that will be done.&lt;br /&gt;
&lt;br /&gt;
== Analysis Command ==&lt;br /&gt;
&lt;br /&gt;
Both MPM and FEA calculations can do 2D or axisymmetric calculations. MPM can additionally do 3D calculations. You pick the type of analysis to run with an analysis command. In scripted commands, the format is&lt;br /&gt;
&lt;br /&gt;
 Analysis (number or name)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files it is&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;Analysis&amp;amp;gt;(number)&amp;amp;lt;/Analysis&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The possible analysis types, by number or name, to use in above commands, are:&lt;br /&gt;
&lt;br /&gt;
* 0 = &amp;quot;Plane Strain&amp;quot; for a 2D plane strain FEA analysis&lt;br /&gt;
* 1 = &amp;quot;Plane stress&amp;quot;  for a 2D plane stress FEA analysis&lt;br /&gt;
* 2 = &amp;quot;Axisymmetric&amp;quot; for an Axisymmetric FEA analysis&lt;br /&gt;
* 10 = &amp;quot;Plane Strain MPM&amp;quot; for 2D plane strain dynamic MPM analysis&lt;br /&gt;
* 11 = &amp;quot;Plane Stress MPM&amp;quot; or 2D plane stress dynamic MPM analysis&lt;br /&gt;
* 12 = &amp;quot;3D MPM&amp;quot; or 3D dynamic MPM analysis&lt;br /&gt;
* 13 = &amp;quot;Axisymmetric MPM&amp;quot; for axisymmetric dynamic MPM analysis&lt;br /&gt;
&lt;br /&gt;
When using analysis name in scripts, it must exactly match the quoted text above (case insensitive). When writing &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, the entry must be by number only.&lt;br /&gt;
&lt;br /&gt;
== Tracking Velocity Gradient ==&lt;br /&gt;
&lt;br /&gt;
A option in development in [[OSParticulas]] is to track particle velocity gradient. The hope that this approach can improve convergence or more accurately following rotation motion. For scripted input files, simply add &amp;quot;+PS&amp;quot; to the option name (and must be by name and not number). Here &amp;quot;+PS&amp;quot; suggests &amp;quot;Particle Spin&amp;quot; but the new mode tracks all component components of the velocity gradient. The new MPM options are:L&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Plane Strain MPM+PS&amp;quot; for 2D plane strain dynamic MPM analysis with velocity gradient tracking.&lt;br /&gt;
* &amp;quot;Plane Stress MPM+PS&amp;quot; or 2D plane stress dynamic MPM analysis with velocity gradient tracking.&lt;br /&gt;
* &amp;quot;3D MPM+PS&amp;quot; or 3D dynamic MPM analysis with velocity gradient tracking.&lt;br /&gt;
* &amp;quot;Axisymmetric MPM+PS&amp;quot; for axisymmetric dynamic MPM analysis with velocity gradient tracking.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, pick the MPM method number from above and then add the following command to the &amp;lt;tt&amp;gt;&amp;amp;lt;MPMHeader&amp;amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;TrackParticleSpin/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
When used in standard FLIP MPM, a revised extrapolation to the grid follows methods first presented by Wallstedt and Guilkey.&amp;lt;ref name=&amp;quot;WGVG&amp;quot;/&amp;gt; The method used to track velocity gradients, however is different. The best approach to FLIP analysis with velocity gradient tracking is under evaluation.&lt;br /&gt;
&lt;br /&gt;
Another paper relevant to velocity gradient tracking is the APIC method.&amp;lt;ref name=&amp;quot;APIC&amp;quot;/&amp;gt; APIC is equivalent to using the [[PeriodicXPIC Custom Task]] with &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; 1 (''i.e.'', PIC style) every time step combined with with [[MPM Methods and Simulation Timing#Classic MPM Methods|&amp;lt;tt&amp;gt;Classic&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;B2Spline&amp;lt;/tt&amp;gt;]] grid-based shape functions (the APIC paper is not clear which they used, but it was probably &amp;lt;tt&amp;gt;B2Spline&amp;lt;/tt&amp;gt;). Like all PIC-style methods, APIC can dissipate much energy in certain problems. Using higher &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; while tracking velocity gradient extends APIC to reduce dissipation using approximate full mass matrix methods.&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt; Switching to other available [[MPM Methods and Simulation Timing|shape function types]] extends APIC to methods that work better with large deformations. These extensions to APIC are under evaulation.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* The first three (0,1,2) are for [[FEA Input Files|FEA calculations only]], while the rest (10,11,12,13) are for [[MPM Input Files|MPM calculations only]].&lt;br /&gt;
* In axisymmetric analyses, the x, y, z, directions become R, Z, and &amp;amp;theta; directions. If any commands do not mention use of R and Z, they may still work or you can use x and y to mean the same thing. When visualizing results, most labels are changed to reflect R, Z, and &amp;amp;theta; coordinates. The implementation of axisymmetric MPM is described in a paper by Nairn and Guilkey.&amp;lt;ref name=&amp;quot;ASPaper&amp;quot;/&amp;gt;&lt;br /&gt;
* A feature in development can [[Generalized Plane Stress and Strain|generalize MPM plane stress or plane strain]] to allow non-zero, out-of-plane strain or stress, respectively. The only way to set out-of-plane stress or strain is to use a [[PropertyRamp Custom Task]].&lt;br /&gt;
* One (and only one) &amp;lt;tt&amp;gt;Analysis&amp;lt;/tt&amp;gt; command is required in every input file and it should be near the beginning, because many other commands depend on whether or not the commands are for FEA or for MPM analysis.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;WGVG&amp;quot;&amp;gt;P. C. Wallstedt and J. E. Guilkey, &amp;quot;Improved velocity projection for the material point method, &amp;lt;i&amp;gt;CMES&amp;lt;/i&amp;gt; &amp;lt;b&amp;gt;19&amp;lt;/b&amp;gt;(3) 223–232 (2007).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;APIC&amp;quot;&amp;gt;C. Jiang, C. Schroeder, A. Selle, J. Teran, A. Stomakhin, The Affine Particle-In-Cell Method, &amp;lt;i&amp;gt;ACM Trans ACM Trans Graph, SIGGRAPH&amp;lt;/i&amp;gt;, (2015).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;377&amp;lt;/b&amp;gt;, 113667 (2021). (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ASPaper&amp;quot;&amp;gt;J.A. Nairn and J.E. Guilkey, &amp;quot;Axisymmetric Form of the Generalized Interpolation Material Point Method,&amp;quot;&amp;gt; &amp;lt;i&amp;gt;Int. J. for Numerical Methods in Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;101&amp;lt;/b&amp;gt;, 127-147 (2015) ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/AxisymGIMP.pdf See PDF]).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=Analysis_Command&amp;diff=26217</id>
		<title>Analysis Command</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=Analysis_Command&amp;diff=26217"/>
		<updated>2026-04-10T18:02:47Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Tracking Velocity Gradient */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
Decide the type of analysis that will be done.&lt;br /&gt;
&lt;br /&gt;
== Analysis Command ==&lt;br /&gt;
&lt;br /&gt;
Both MPM and FEA calculations can do 2D or axisymmetric calculations. MPM can additionally do 3D calculations. You pick the type of analysis to run with an analysis command. In scripted commands, the format is&lt;br /&gt;
&lt;br /&gt;
 Analysis (number or name)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files it is&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;Analysis&amp;amp;gt;(number)&amp;amp;lt;/Analysis&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The possible analysis types, by number or name, to use in above commands, are:&lt;br /&gt;
&lt;br /&gt;
* 0 = &amp;quot;Plane Strain&amp;quot; for a 2D plane strain FEA analysis&lt;br /&gt;
* 1 = &amp;quot;Plane stress&amp;quot;  for a 2D plane stress FEA analysis&lt;br /&gt;
* 2 = &amp;quot;Axisymmetric&amp;quot; for an Axisymmetric FEA analysis&lt;br /&gt;
* 10 = &amp;quot;Plane Strain MPM&amp;quot; for 2D plane strain dynamic MPM analysis&lt;br /&gt;
* 11 = &amp;quot;Plane Stress MPM&amp;quot; or 2D plane stress dynamic MPM analysis&lt;br /&gt;
* 12 = &amp;quot;3D MPM&amp;quot; or 3D dynamic MPM analysis&lt;br /&gt;
* 13 = &amp;quot;Axisymmetric MPM&amp;quot; for axisymmetric dynamic MPM analysis&lt;br /&gt;
&lt;br /&gt;
When using analysis name in scripts, it must exactly match the quoted text above (case insensitive). When writing &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, the entry must be by number only.&lt;br /&gt;
&lt;br /&gt;
== Tracking Velocity Gradient ==&lt;br /&gt;
&lt;br /&gt;
A option in development in [[OSParticulas]] is to track particle velocity gradient. The hope that this approach can improve convergence or more accurately following rotation motion. For scripted input files, simply add &amp;quot;+PS&amp;quot; to the option name (and must be by name and not number). Here &amp;quot;+PS&amp;quot; suggests &amp;quot;Particle Spin&amp;quot; but the new mode tracks all component components of the velocity gradient. The new MPM options are:L&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Plane Strain MPM+PS&amp;quot; for 2D plane strain dynamic MPM analysis with velocity gradient tracking.&lt;br /&gt;
* &amp;quot;Plane Stress MPM+PS&amp;quot; or 2D plane stress dynamic MPM analysis with velocity gradient tracking.&lt;br /&gt;
* &amp;quot;3D MPM+PS&amp;quot; or 3D dynamic MPM analysis with velocity gradient tracking.&lt;br /&gt;
* &amp;quot;Axisymmetric MPM+PS&amp;quot; for axisymmetric dynamic MPM analysis with velocity gradient tracking.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, pick the MPM method number from above and then add the following command to the &amp;lt;tt&amp;gt;&amp;amp;lt;MPMHeader&amp;amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;TrackParticleSpin/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
When used in standard FLIP MPM, a revised extrapolation to the grid follows methods first presented by Wallstedt and Guilkey.&amp;lt;ref name=&amp;quot;WGVG&amp;quot;/&amp;gt; The method used to track velocity gradients, however is different. The best approach to FLIP analysis with velocity gradient tracking is under evaluation.&lt;br /&gt;
&lt;br /&gt;
Another paper relevant to velocity gradient tracking is the APIC method.&amp;lt;ref name=&amp;quot;APIC&amp;quot;/&amp;gt; APIC is equivalent to using the [[PeriodicXPIC Custom Task]] with &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; 1 (''i.e.'', PIC style) every time step combined with with [[MPM Methods and Simulation Timing#Classic MPM Methods|&amp;lt;tt&amp;gt;Classic&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;B2Spline&amp;lt;/tt&amp;gt;]] grid-based shape functions (the APIC paper is not clear which they used, but it was probably &amp;lt;tt&amp;gt;B2Spline&amp;lt;/tt&amp;gt;). Like all PIC-style methods, APIC can dissipate much energy in certain problems. Using higher &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; while tracking velocity gradient extends APIC to reduce dissipation using approximate full mass matrix methods.&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt; Switching to other available [[MPM Methods and Simulation Timing|shape function types]] extends APIC to methods that work better with large deformations. These extensions to APIC are under evaulation.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* The first three (0,1,2) are for [[FEA Input Files|FEA calculations only]], while the rest (10,11,12,13) are for [[MPM Input Files|MPM calculations only]].&lt;br /&gt;
* In axisymmetric analyses, the x, y, z, directions become R, Z, and &amp;amp;theta; directions. If any commands do not mention use of R and Z, they may still work or you can use x and y to mean the same thing. When visualizing results, most labels are changed to reflect R, Z, and &amp;amp;theta; coordinates. The implementation of axisymmetric MPM is described in a paper by Nairn and Guilkey.&amp;lt;ref name=&amp;quot;ASPaper&amp;quot;/&amp;gt;&lt;br /&gt;
* A feature in development can [[Generalized Plane Stress and Strain|generalize MPM plane stress or plane strain]] to allow non-zero, out-of-plane strain or stress, respectively. The only way to set out-of-plane stress or strain is to use a [[PropertyRamp Custom Task]].&lt;br /&gt;
* One (and only one) &amp;lt;tt&amp;gt;Analysis&amp;lt;/tt&amp;gt; command is required in every input file and it should be near the beginning, because many other commands depend on whether or not the commands are for FEA or for MPM analysis.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;WGVG&amp;quot;&amp;gt;P. C. Wallstedt and J. E. Guilkey, &amp;quot;Improved velocity projection for the material point method, &amp;lt;i&amp;gt;CMES&amp;lt;/i&amp;gt; &amp;lt;b&amp;gt;19&amp;lt;/b&amp;gt;(3) 223–232 (2007).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;APIC&amp;quot;&amp;gt;C. Jiang, C. Schroeder, A. Selle, J. Teran, A. Stomakhin, The Affine Particle-In-Cell Method, &amp;lt;i&amp;gt;ACM Trans ACM Trans Graph, SIGGRAPH&amp;lt;/i&amp;gt;, (2015).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;377&amp;lt;/b&amp;gt;, 113667 (2021). (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ASPaper&amp;quot;&amp;gt;J.A. Nairn and J.E. Guilkey, &amp;quot;Axisymmetric Form of the Generalized Interpolation Material Point Method,&amp;quot;&amp;gt; &amp;lt;i&amp;gt;Int. J. for Numerical Methods in Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;101&amp;lt;/b&amp;gt;, 127-147 (2015) ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/AxisymGIMP.pdf See PDF]).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26216</id>
		<title>PeriodicXPIC Custom Task</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26216"/>
		<updated>2026-04-10T18:00:25Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[MPM Input Files#Custom Tasks|custom task]] to use [[XPIC Features|XPIC(k) and FMPM(k) methods]] on all or selected time steps&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt; methods are [[XPIC Features|advanced methods]] that filter out unwanted noise (in the null space) without damping out useful information. Their drawback is that they add calculation time as order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; increases. Many simulations (especially those with stability issues) will run better by using XPIC(k) or FMPM(k). The XPIC(k) and FMPM(k) methods can be done every time step or only on periodic time steps. This custom tasks adds XPIC(k) or FMPM(k) to any simulation and lets you select the frequency of those calculations.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) or XPIC(k) For Mechanics ==&lt;br /&gt;
&lt;br /&gt;
MPM simulations will use standard FLIP method be default. To switch to FMPM(k) or XPIC(k) for all time steps (or just for some), schedule this task and specify all needed parameters. In scripted files, a &amp;lt;tt&amp;gt;PeriodicXPIC&amp;lt;/tt&amp;gt; custom task is scheduled with&lt;br /&gt;
&lt;br /&gt;
 CustomTask PeriodicXPIC&lt;br /&gt;
 Parameter FMPMOrder,(order)&lt;br /&gt;
 (... or Parameter XPICOrder,(order))&lt;br /&gt;
 Parameter periodicSteps,(stepInterval)&lt;br /&gt;
 Parameter periodicTime,(timeInterval)&lt;br /&gt;
 Parameter periodicCFL,(CFLfactor)&lt;br /&gt;
 Parameter verbose,{verbose}&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this task is scheduled using a &amp;lt;tt&amp;gt;&amp;lt;Schedule&amp;gt;&amp;lt;/tt&amp;gt; element, which must be within the single &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Schedule name='PeriodicXPIC'&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='FMPMOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;amp;lt;!-- or &amp;lt;Parameter name='XPICOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;--&amp;amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicSteps'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicTime'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicCFL'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='verbose'&amp;gt;(verbose)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the parameters are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(order)&amp;lt;/tt&amp;gt; - Enter FMPM or XPIC order (the &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;) to use when doing periodic FMPM(k) or XPIC(k) calculations. Select &amp;lt;tt&amp;gt;(order&amp;gt;&amp;lt;/tt&amp;gt; using an &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; command to run using FMPM(k) or an &amp;lt;tt&amp;gt;XPICOrder&amp;lt;/tt&amp;gt; command to run using XPIC(k). FMPM(k) is usually preferred; XPIC(k) is available mostly for comparisons to older methods.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; - sets the frequency for running periodic FMPM(k) or XPIC(k) time steps for mechanics. The &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; option sets number of time steps between each FMPM(k) or XPIC(k) time step, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; sets frequency in  [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]], and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; sets frequency relative to the basic time step for the momentum equation. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is provided, it is used and the other two are ignored. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is not provided, the time step is found from the &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; (if provided) or from &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;. One of these three parameters is required to enable periodic FMPM(k) or XPIC(k) calculations.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(verbose)&amp;lt;/tt&amp;gt; - If a non-zero integer, a comment line is printed in the output file every time FMPM(k) or XPIC(k) time steps are done. The default is 0.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) For Transport Properties ==&lt;br /&gt;
&lt;br /&gt;
You can also use FMPM(k) for temperature (when doing [[Thermal Calculations|conduction calculations]]), for concentration (when doing [[Diffusion Calculations|diffusion calculations]]), for pore pressure (when doing [[Poroelasticity Calculations|poroelasticity calculations]]) or for [[Additional Transport Calculations|other transports calculations]].&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; FMPM(k) seems to provide significant improvement of transport modeling and can eliminate oscillations sometimes seen for transport value for particles within one cell. Note the transport modeling must use the same FMPM order as selected for mechanics. Furthermore, it will always uses FMPM(k) even if mechanics is using XPIC(k).&lt;br /&gt;
&lt;br /&gt;
To use FMPM(k) for transport equations, select order [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] and then select periodicity of FMPM(k) for conduction and/or diffusion with following task parameters:&lt;br /&gt;
&lt;br /&gt;
 Parameter periodicStepsConduction,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeConduction,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLConduction,(CFLfactor)&lt;br /&gt;
 Parameter periodicStepsDiffusion#,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeDiffusion#,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLDiffusion#,(CFLfactor)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this new parameter options within the &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block are&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsConduction'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeConduction'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLConduction'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsDiffusion#'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeDiffusion#'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLDiffusion#'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here &amp;quot;#&amp;quot; in the diffusion commands should be &amp;quot;0&amp;quot; (or omitted) to set values for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] calculations or can refer to [[Additional Transport Calculations|other transport]] calculations by number in the order they were created in the input command file by extra &amp;lt;tt&amp;gt;Diffusion&amp;lt;/tt&amp;gt; commands (starting with 1 and not counting commands for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] where ever they occurred).&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;tt&amp;gt;(stepInterval)&amp;amp;ge;1&amp;lt;/tt&amp;gt;, its meaning is the same as in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]]. But if &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;, it invokes a new feature not available for mechanics modeling. In this range the simulation will blend FMPM(k) and FLIP methods using a fraction &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; of FMPM(k) and fraction &amp;lt;tt&amp;gt;1-(stepInterval)&amp;lt;/tt&amp;gt; of FLIP. Because the full extra cost of FMPM(k) occurs on every time step, even if only used at a small fraction, this approach is less efficient than doing FMPM(k) periodically. In some simulations, however, it might give smoother results while a periodic method could have transients around each time step that uses FMPM(k).&lt;br /&gt;
&lt;br /&gt;
The meanings of values &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; are given in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] except that CFL factor is applied to [[MPM_Methods_and_Simulation_Timing#Theory:_MPM_Time_Step|transport time step]] and not the simulation time step.&lt;br /&gt;
&lt;br /&gt;
When using FMPM(k) for transport equations, you should never pick &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; because it causes too much numerical diffusion. Any higher order works, unless the FMPM(k) time steps are done too frequently. Because transport time step is usually much longer then mechanics time step, it is usually best to pick transport FMPM(k) frequency using the CFL parameter options and the chosen CFL factor should be 2 or higher for FMPM(2) and 0.5 or higher for FMPM(k&amp;amp;gt;2) to avoid numerical diffusion.&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; Alternatively, one could pick blended method (with &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;) and use a small enough fraction of FMPM(k) to avoid numerical diffusion.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724–738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;377&amp;lt;/b&amp;gt;, 113667 (2021). (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;/i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;transport&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Coupling Transport Equations to Mechanics in the Material Point Method Using an Approximate Full Capacity Matrix Inverse,&amp;quot; ''Computer Methods in Applied Mechanics and Engineering'', '''420''', 116757 (2024). ([https://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/TransportPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26215</id>
		<title>PeriodicXPIC Custom Task</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26215"/>
		<updated>2026-04-10T17:59:54Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[MPM Input Files#Custom Tasks|custom task]] to use [[XPIC Features|XPIC(k) and FMPM(k) methods]] on all or selected time steps&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;/&amp;gt; methods are [[XPIC Features|advanced methods]] that filter out unwanted noise (in the null space) without damping out useful information. Their drawback is that they add calculation time as order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; increases. Many simulations (especially those with stability issues) will run better by using XPIC(k) or FMPM(k). The XPIC(k) and FMPM(k) methods can be done every time step or only on periodic time steps. This custom tasks adds XPIC(k) or FMPM(k) to any simulation and lets you select the frequency of those calculations.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) or XPIC(k) For Mechanics ==&lt;br /&gt;
&lt;br /&gt;
MPM simulations will use standard FLIP method be default. To switch to FMPM(k) or XPIC(k) for all time steps (or just for some), schedule this task and specify all needed parameters. In scripted files, a &amp;lt;tt&amp;gt;PeriodicXPIC&amp;lt;/tt&amp;gt; custom task is scheduled with&lt;br /&gt;
&lt;br /&gt;
 CustomTask PeriodicXPIC&lt;br /&gt;
 Parameter FMPMOrder,(order)&lt;br /&gt;
 (... or Parameter XPICOrder,(order))&lt;br /&gt;
 Parameter periodicSteps,(stepInterval)&lt;br /&gt;
 Parameter periodicTime,(timeInterval)&lt;br /&gt;
 Parameter periodicCFL,(CFLfactor)&lt;br /&gt;
 Parameter verbose,{verbose}&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this task is scheduled using a &amp;lt;tt&amp;gt;&amp;lt;Schedule&amp;gt;&amp;lt;/tt&amp;gt; element, which must be within the single &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Schedule name='PeriodicXPIC'&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='FMPMOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;amp;lt;!-- or &amp;lt;Parameter name='XPICOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;--&amp;amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicSteps'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicTime'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicCFL'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='verbose'&amp;gt;(verbose)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the parameters are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(order)&amp;lt;/tt&amp;gt; - Enter FMPM or XPIC order (the &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;) to use when doing periodic FMPM(k) or XPIC(k) calculations. Select &amp;lt;tt&amp;gt;(order&amp;gt;&amp;lt;/tt&amp;gt; using an &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; command to run using FMPM(k) or an &amp;lt;tt&amp;gt;XPICOrder&amp;lt;/tt&amp;gt; command to run using XPIC(k). FMPM(k) is usually preferred; XPIC(k) is available mostly for comparisons to older methods.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; - sets the frequency for running periodic FMPM(k) or XPIC(k) time steps for mechanics. The &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; option sets number of time steps between each FMPM(k) or XPIC(k) time step, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; sets frequency in  [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]], and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; sets frequency relative to the basic time step for the momentum equation. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is provided, it is used and the other two are ignored. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is not provided, the time step is found from the &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; (if provided) or from &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;. One of these three parameters is required to enable periodic FMPM(k) or XPIC(k) calculations.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(verbose)&amp;lt;/tt&amp;gt; - If a non-zero integer, a comment line is printed in the output file every time FMPM(k) or XPIC(k) time steps are done. The default is 0.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) For Transport Properties ==&lt;br /&gt;
&lt;br /&gt;
You can also use FMPM(k) for temperature (when doing [[Thermal Calculations|conduction calculations]]), for concentration (when doing [[Diffusion Calculations|diffusion calculations]]), for pore pressure (when doing [[Poroelasticity Calculations|poroelasticity calculations]]) or for [[Additional Transport Calculations|other transports calculations]].&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; FMPM(k) seems to provide significant improvement of transport modeling and can eliminate oscillations sometimes seen for transport value for particles within one cell. Note the transport modeling must use the same FMPM order as selected for mechanics. Furthermore, it will always uses FMPM(k) even if mechanics is using XPIC(k).&lt;br /&gt;
&lt;br /&gt;
To use FMPM(k) for transport equations, select order [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] and then select periodicity of FMPM(k) for conduction and/or diffusion with following task parameters:&lt;br /&gt;
&lt;br /&gt;
 Parameter periodicStepsConduction,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeConduction,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLConduction,(CFLfactor)&lt;br /&gt;
 Parameter periodicStepsDiffusion#,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeDiffusion#,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLDiffusion#,(CFLfactor)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this new parameter options within the &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block are&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsConduction'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeConduction'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLConduction'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsDiffusion#'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeDiffusion#'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLDiffusion#'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here &amp;quot;#&amp;quot; in the diffusion commands should be &amp;quot;0&amp;quot; (or omitted) to set values for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] calculations or can refer to [[Additional Transport Calculations|other transport]] calculations by number in the order they were created in the input command file by extra &amp;lt;tt&amp;gt;Diffusion&amp;lt;/tt&amp;gt; commands (starting with 1 and not counting commands for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] where ever they occurred).&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;tt&amp;gt;(stepInterval)&amp;amp;ge;1&amp;lt;/tt&amp;gt;, its meaning is the same as in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]]. But if &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;, it invokes a new feature not available for mechanics modeling. In this range the simulation will blend FMPM(k) and FLIP methods using a fraction &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; of FMPM(k) and fraction &amp;lt;tt&amp;gt;1-(stepInterval)&amp;lt;/tt&amp;gt; of FLIP. Because the full extra cost of FMPM(k) occurs on every time step, even if only used at a small fraction, this approach is less efficient than doing FMPM(k) periodically. In some simulations, however, it might give smoother results while a periodic method could have transients around each time step that uses FMPM(k).&lt;br /&gt;
&lt;br /&gt;
The meanings of values &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; are given in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] except that CFL factor is applied to [[MPM_Methods_and_Simulation_Timing#Theory:_MPM_Time_Step|transport time step]] and not the simulation time step.&lt;br /&gt;
&lt;br /&gt;
When using FMPM(k) for transport equations, you should never pick &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; because it causes too much numerical diffusion. Any higher order works, unless the FMPM(k) time steps are done too frequently. Because transport time step is usually much longer then mechanics time step, it is usually best to pick transport FMPM(k) frequency using the CFL parameter options and the chosen CFL factor should be 2 or higher for FMPM(2) and 0.5 or higher for FMPM(k&amp;amp;gt;2) to avoid numerical diffusion.&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; Alternatively, one could pick blended method (with &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;) and use a small enough fraction of FMPM(k) to avoid numerical diffusion.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724–738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;377&amp;lt;/b&amp;gt;, 113667 (2021). (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;transport&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Coupling Transport Equations to Mechanics in the Material Point Method Using an Approximate Full Capacity Matrix Inverse,&amp;quot; ''Computer Methods in Applied Mechanics and Engineering'', '''420''', 116757 (2024). ([https://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/TransportPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26214</id>
		<title>PeriodicXPIC Custom Task</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=PeriodicXPIC_Custom_Task&amp;diff=26214"/>
		<updated>2026-04-10T17:59:31Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[MPM Input Files#Custom Tasks|custom task]] to use [[XPIC Features|XPIC(k) and FMPM(k) methods]] on all or selected time steps&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The XPIC(k)&amp;lt;ref name=&amp;quot;XPIC&amp;quot;/&amp;gt; and FMPM(k)&amp;lt;ref name=&amp;quot;FMPM&amp;quot;/&amp;gt; methods are [[XPIC Features|advanced methods]] that filter out unwanted noise (in the null space) without damping out useful information. Their drawback is that they add calculation time as order &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt; increases. Many simulations (especially those with stability issues) will run better by using XPIC(k) or FMPM(k). The XPIC(k) and FMPM(k) methods can be done every time step or only on periodic time steps. This custom tasks adds XPIC(k) or FMPM(k) to any simulation and lets you select the frequency of those calculations.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) or XPIC(k) For Mechanics ==&lt;br /&gt;
&lt;br /&gt;
MPM simulations will use standard FLIP method be default. To switch to FMPM(k) or XPIC(k) for all time steps (or just for some), schedule this task and specify all needed parameters. In scripted files, a &amp;lt;tt&amp;gt;PeriodicXPIC&amp;lt;/tt&amp;gt; custom task is scheduled with&lt;br /&gt;
&lt;br /&gt;
 CustomTask PeriodicXPIC&lt;br /&gt;
 Parameter FMPMOrder,(order)&lt;br /&gt;
 (... or Parameter XPICOrder,(order))&lt;br /&gt;
 Parameter periodicSteps,(stepInterval)&lt;br /&gt;
 Parameter periodicTime,(timeInterval)&lt;br /&gt;
 Parameter periodicCFL,(CFLfactor)&lt;br /&gt;
 Parameter verbose,{verbose}&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this task is scheduled using a &amp;lt;tt&amp;gt;&amp;lt;Schedule&amp;gt;&amp;lt;/tt&amp;gt; element, which must be within the single &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Schedule name='PeriodicXPIC'&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='FMPMOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;amp;lt;!-- or &amp;lt;Parameter name='XPICOrder'&amp;gt;(order)&amp;lt;/Parameter&amp;gt;--&amp;amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicSteps'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicTime'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='periodicCFL'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
    &amp;lt;Parameter name='verbose'&amp;gt;(verbose)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;/Schedule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the parameters are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(order)&amp;lt;/tt&amp;gt; - Enter FMPM or XPIC order (the &amp;lt;tt&amp;gt;k&amp;lt;/tt&amp;gt;) to use when doing periodic FMPM(k) or XPIC(k) calculations. Select &amp;lt;tt&amp;gt;(order&amp;gt;&amp;lt;/tt&amp;gt; using an &amp;lt;tt&amp;gt;FMPMOrder&amp;lt;/tt&amp;gt; command to run using FMPM(k) or an &amp;lt;tt&amp;gt;XPICOrder&amp;lt;/tt&amp;gt; command to run using XPIC(k). FMPM(k) is usually preferred; XPIC(k) is available mostly for comparisons to older methods.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; - sets the frequency for running periodic FMPM(k) or XPIC(k) time steps for mechanics. The &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; option sets number of time steps between each FMPM(k) or XPIC(k) time step, &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; sets frequency in  [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]], and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; sets frequency relative to the basic time step for the momentum equation. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is provided, it is used and the other two are ignored. If &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; is not provided, the time step is found from the &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; (if provided) or from &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt;. One of these three parameters is required to enable periodic FMPM(k) or XPIC(k) calculations.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(verbose)&amp;lt;/tt&amp;gt; - If a non-zero integer, a comment line is printed in the output file every time FMPM(k) or XPIC(k) time steps are done. The default is 0.&lt;br /&gt;
&lt;br /&gt;
== Using FMPM(k) For Transport Properties ==&lt;br /&gt;
&lt;br /&gt;
You can also use FMPM(k) for temperature (when doing [[Thermal Calculations|conduction calculations]]), for concentration (when doing [[Diffusion Calculations|diffusion calculations]]), for pore pressure (when doing [[Poroelasticity Calculations|poroelasticity calculations]]) or for [[Additional Transport Calculations|other transports calculations]].&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; FMPM(k) seems to provide significant improvement of transport modeling and can eliminate oscillations sometimes seen for transport value for particles within one cell. Note the transport modeling must use the same FMPM order as selected for mechanics. Furthermore, it will always uses FMPM(k) even if mechanics is using XPIC(k).&lt;br /&gt;
&lt;br /&gt;
To use FMPM(k) for transport equations, select order [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] and then select periodicity of FMPM(k) for conduction and/or diffusion with following task parameters:&lt;br /&gt;
&lt;br /&gt;
 Parameter periodicStepsConduction,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeConduction,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLConduction,(CFLfactor)&lt;br /&gt;
 Parameter periodicStepsDiffusion#,(stepInterval)&lt;br /&gt;
 Parameter periodicTimeDiffusion#,(timeInterval)&lt;br /&gt;
 Parameter periodicCFLDiffusion#,(CFLfactor)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, this new parameter options within the &amp;lt;tt&amp;gt;&amp;lt;CustomTasks&amp;gt;&amp;lt;/tt&amp;gt; block are&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsConduction'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeConduction'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLConduction'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicStepsDiffusion#'&amp;gt;(stepInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicTimeDiffusion#'&amp;gt;(timeInterval)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
 &amp;lt;Parameter name='periodicCFLDiffusion#'&amp;gt;(CFLfactor)&amp;lt;/Parameter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here &amp;quot;#&amp;quot; in the diffusion commands should be &amp;quot;0&amp;quot; (or omitted) to set values for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] calculations or can refer to [[Additional Transport Calculations|other transport]] calculations by number in the order they were created in the input command file by extra &amp;lt;tt&amp;gt;Diffusion&amp;lt;/tt&amp;gt; commands (starting with 1 and not counting commands for [[Diffusion Calculations|diffusion]] or [[Poroelasticity Calculations|poroelasticity]] where ever they occurred).&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;tt&amp;gt;(stepInterval)&amp;amp;ge;1&amp;lt;/tt&amp;gt;, its meaning is the same as in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]]. But if &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;, it invokes a new feature not available for mechanics modeling. In this range the simulation will blend FMPM(k) and FLIP methods using a fraction &amp;lt;tt&amp;gt;(stepInterval)&amp;lt;/tt&amp;gt; of FMPM(k) and fraction &amp;lt;tt&amp;gt;1-(stepInterval)&amp;lt;/tt&amp;gt; of FLIP. Because the full extra cost of FMPM(k) occurs on every time step, even if only used at a small fraction, this approach is less efficient than doing FMPM(k) periodically. In some simulations, however, it might give smoother results while a periodic method could have transients around each time step that uses FMPM(k).&lt;br /&gt;
&lt;br /&gt;
The meanings of values &amp;lt;tt&amp;gt;(timeInterval)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(CFLfactor)&amp;lt;/tt&amp;gt; are given in the [[#Using FMPM(k) or XPIC(k) For Mechanics|previous section]] except that CFL factor is applied to [[MPM_Methods_and_Simulation_Timing#Theory:_MPM_Time_Step|transport time step]] and not the simulation time step.&lt;br /&gt;
&lt;br /&gt;
When using FMPM(k) for transport equations, you should never pick &amp;lt;tt&amp;gt;k=1&amp;lt;/tt&amp;gt; because it causes too much numerical diffusion. Any higher order works, unless the FMPM(k) time steps are done too frequently. Because transport time step is usually much longer then mechanics time step, it is usually best to pick transport FMPM(k) frequency using the CFL parameter options and the chosen CFL factor should be 2 or higher for FMPM(2) and 0.5 or higher for FMPM(k&amp;amp;gt;2) to avoid numerical diffusion.&amp;lt;ref name=&amp;quot;transport&amp;quot;/&amp;gt; Alternatively, one could pick blended method (with &amp;lt;tt&amp;gt;0&amp;amp;lt;(stepInterval)&amp;amp;lt;1&amp;lt;/tt&amp;gt;) and use a small enough fraction of FMPM(k) to avoid numerical diffusion.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;XPIC&amp;quot;&amp;gt;C. C. Hammerquist and J. A. Nairn, &amp;quot;A new method for material point method particle updates that reduces noise and enhances stability,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;318&amp;lt;/b&amp;gt;, 724–738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPM&amp;quot;&amp;gt;J. A. Nairn and C. C. Hammerquist, &amp;quot;Material point method simulations using an approximate full mass matrix inverse,&amp;quot; &amp;lt;i&amp;gt;Computer Methods in Applied Mechanics and Engineering&amp;lt;/i&amp;gt;, &amp;lt;b&amp;gt;377&amp;lt;/b&amp;gt;, 113667 (2021). (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;FMPMrev&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations,&amp;quot; &amp;lt;i&amp;gt;arXiv:2604.07307&amp;lt;i&amp;gt; (2026). ([https://arxiv.org/abs/2604.07307 See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;transport&amp;quot;&amp;gt;J. A. Nairn, &amp;quot;Coupling Transport Equations to Mechanics in the Material Point Method Using an Approximate Full Capacity Matrix Inverse,&amp;quot; ''Computer Methods in Applied Mechanics and Engineering'', '''420''', 116757 (2024). ([https://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/TransportPaper.pdf See PDF])&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
	<entry>
		<id>http://osupdocs.forestry.oregonstate.edu/index.php?title=MPM_Grid_Generation&amp;diff=26213</id>
		<title>MPM Grid Generation</title>
		<link rel="alternate" type="text/html" href="http://osupdocs.forestry.oregonstate.edu/index.php?title=MPM_Grid_Generation&amp;diff=26213"/>
		<updated>2026-04-10T17:28:26Z</updated>

		<summary type="html">&lt;p&gt;Nairnj: /* Cell Sizes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MPM calculations use a background grid. The grid can be easily created with commands on this page.&lt;br /&gt;
&lt;br /&gt;
== Regular Grid ==&lt;br /&gt;
&lt;br /&gt;
Most MPM simulations use a regular, orthogonal grid. In other words, all cells in the grid are the same size and cell edges along x, y, and z directions are 90 degrees to each other. The cells in 2D grids are all all rectangles. the cells in 3D grids are rectangular boxes. The commands in this section create a regular grid:&lt;br /&gt;
&lt;br /&gt;
=== Regular Grid in Scripted Files ===&lt;br /&gt;
&lt;br /&gt;
For 2D analyses, the entire grid is generated with the following commands:&lt;br /&gt;
&lt;br /&gt;
 GridHoriz (nx),&amp;lt;(symx)&amp;gt;,&amp;lt;(symxdir)&amp;gt;,&amp;lt;(symx2)&amp;gt;&lt;br /&gt;
 GridVert (ny),&amp;lt;(symy)&amp;gt;,&amp;lt;(symydir)&amp;gt;,&amp;lt;(symy2)&amp;gt;&lt;br /&gt;
 GridThickness (thick)&lt;br /&gt;
 GridRect (xmin),(xmax),(ymin),(ymax)&lt;br /&gt;
&lt;br /&gt;
Axisymmetric calculations use x and y limits for R and Z limits. For 3D analyses, the entire grid is generated with the following commands:&lt;br /&gt;
&lt;br /&gt;
 GridHoriz (nx),&amp;lt;(symx)&amp;gt;,&amp;lt;(symxdir)&amp;gt;,&amp;lt;(symx2)&amp;gt;&lt;br /&gt;
 GridVert (ny),&amp;lt;(symy)&amp;gt;,&amp;lt;(symydir)&amp;gt;,&amp;lt;(symy2)&amp;gt;&lt;br /&gt;
 GridDepth (nz),&amp;lt;(symz)&amp;gt;,&amp;lt;(symzdir)&amp;gt;,&amp;lt;(symz2)&amp;gt;&lt;br /&gt;
 GridRect (xmin),(xmax),(ymin),(ymax),(zmin),(zmax)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;params&amp;quot;&amp;gt;where&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;(nx)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(ny)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(nz)&amp;lt;/tt&amp;gt; - the number of elements in the x, y, and z directions. For axisymmetric calculations  &amp;lt;tt&amp;gt;(nx)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(ny)&amp;lt;/tt&amp;gt; are the number of elements in the R and Z directions.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(symx)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(symxdir)&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;(symx2)&amp;lt;/tt&amp;gt; (and the analogous ones for y and z) - these optional settings are used to define [[#Symmetry Planes|symmetry planes]] along one or more axes.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(thick)&amp;lt;/tt&amp;gt; - the grid thickness in 2D planar calculations (in [[ConsistentUnits Command#Legacy and Consistent Units|length units]]). See [[#Notes|below]] for details on grid thickness.&lt;br /&gt;
* &amp;lt;tt&amp;gt;(xmin),(xmax),(ymin),(ymax),(zmin),(zmax)&amp;lt;/tt&amp;gt; - the ranges for the grid along each axis (in [[ConsistentUnits Command#Legacy and Consistent Units|length units]]) (&amp;lt;tt&amp;gt;(zmin)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(zmax)&amp;lt;/tt&amp;gt; are only used for 3D calculations).&lt;br /&gt;
&lt;br /&gt;
=== Regular Grid in XML Files ===&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; input commands, the entire grid is generated within a single &amp;lt;tt&amp;gt;&amp;lt;Mesh&amp;gt;&amp;lt;/tt&amp;gt; block. For 2D analysis, use the following commands:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Mesh output='file'&amp;gt;&lt;br /&gt;
   &amp;lt;Grid xmin='(xmin)' xmax='(xmax)' ymin='(ymin)' ymax='(ymax)' thickness='(thick)'&amp;gt;&lt;br /&gt;
     &amp;lt;Horiz nx='(nx)' symmin='(symxmin)' symmax='(symxmax)'/&amp;gt;&lt;br /&gt;
     &amp;lt;Vert ny='(ny)' symmin='(symymin)' symmax='(symymax)'/&amp;gt;&lt;br /&gt;
   &amp;lt;/Grid&amp;gt;&lt;br /&gt;
 &amp;lt;/Mesh&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Axisymmetric calculations use x and y limits for R and Z limits. For 3D analyses, use the following commands:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Mesh output='file'&amp;gt;&lt;br /&gt;
   &amp;lt;Grid xmin='(xmin)' xmax='(xmax)' ymin='(ymin)' ymax='(ymax)' zmin='(zmin)' zmax='(zmax)'&amp;gt;&lt;br /&gt;
     &amp;lt;Horiz nx='(nx)' symmin='(symxmin)' symmax='(symxmax)'/&amp;gt;&lt;br /&gt;
     &amp;lt;Vert ny='(ny)' symmin='(symymin)' symmax='(symymax)'/&amp;gt;&lt;br /&gt;
     &amp;lt;Depth nz='(nz)' symmin='(symzmin)' symmax='(symzmax)'/&amp;gt;&lt;br /&gt;
   &amp;lt;/Grid&amp;gt;&lt;br /&gt;
 &amp;lt;/Mesh&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The parameters have the same meaning as the [[#params|parameters for scripted files]]. &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; commands have these additional options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;output='file'&amp;lt;/tt&amp;gt; - this attribute in the &amp;lt;tt&amp;gt;&amp;lt;Mesh&amp;gt;&amp;lt;/tt&amp;gt; element determines if the nodes and elements should be included in the main output results file or written to separate files in the archive folder. Use the word &amp;quot;file&amp;quot; to write nodes and elements to separate files or omit the attribute to include them in the main file. In large calculations, it is always better to write them to a separate file.&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;tt&amp;gt;&amp;lt;Grid&amp;gt;&amp;lt;/tt&amp;gt; command can use a [[Units Attribute|units attribute]] to select the input units.&lt;br /&gt;
&amp;lt;li&amp;gt;Instead of setting the grid by entering the number cells in each direction, you can optionally specify the cell size by using&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Horiz cellsize='(size)' symmin='(symxmin)' symmax='(symxmax)'/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where &amp;lt;tt&amp;gt;(size)&amp;lt;/tt&amp;gt; is the cell size (in [[ConsistentUnits Command#Legacy and Consistent Units|length units]]). Note: if needed, the axis limits will be increased to accomodate an integral number of elements at the desired cell size.&lt;br /&gt;
&amp;lt;li&amp;gt;The [[#Symmetry Planes|symmetry planes]] are set using &amp;lt;tt&amp;gt;(symmin)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(symmax)&amp;lt;/tt&amp;gt; attributes.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tartan Grid ==&lt;br /&gt;
&lt;br /&gt;
A tartan grid extends regular grid methods by keeping the grid orthogonal but now allowing unequal cell sizes. Tartan grids currently limited to simulations with GIMP or CPDI [[MPM Methods and Simulation Timing|shape functions]]. Axisymmetric calculations are limited to CPDI shape functions. (Note: although Classic [[MPM Methods and Simulation Timing|shape functions]] can be used, they are not recommended).&lt;br /&gt;
&lt;br /&gt;
=== Areas of Interest ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mcintosh.png|right]]&lt;br /&gt;
A tartan grid is based around areas of interest (AOIs). Within AOIs, the grid is a regular grid of equal sized elements. Cells outside any AOI get larger. Cells between AOIs are also larger (depending on available space between the AOIs). Overlapping AOIs (by direction) combine into a single ''length'' of interest for that axis. The net result looks like a Scottish Tartan as shown in the picture to the right. This picture is the clan McIntosh tartan. The green areas represent AOIs with regular cells and the cells get larger outside the AOIs, but all cell edges remain orthogonal.&lt;br /&gt;
&lt;br /&gt;
AOIs are created in scripted files with:&lt;br /&gt;
&lt;br /&gt;
  TartanAOI x1,x2,nx,y1,y2,ny&lt;br /&gt;
&lt;br /&gt;
In XML files, the command is:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;AreaOfInterest x1=&amp;quot;0&amp;quot; x2=&amp;quot;10&amp;quot; y1=&amp;quot;0&amp;quot; y2=&amp;quot;10&amp;quot; nx=&amp;quot;5&amp;quot; ny=&amp;quot;5&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;x1&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;x2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;y2&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;y2&amp;lt;/tt&amp;gt;  define a rectangular AOI (add &amp;lt;tt&amp;gt;z1,z2,nz&amp;lt;/tt&amp;gt; for cubical AOI in a 3D tartan grid). The mesh inside the area of interest will be a regular grid.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;tt&amp;gt;nx&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ny&amp;lt;/tt&amp;gt; (and &amp;lt;tt&amp;gt;nz&amp;lt;/tt&amp;gt; for 3D) values give the number of cells in the two (or three directions) inside the AOI (and the cells will have equal sizes along each direction.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cell Sizes ===&lt;br /&gt;
&lt;br /&gt;
The rate at which cells outside of AOIs increase is determined a cell &amp;lt;tt&amp;gt;ratio&amp;lt;/tt&amp;gt; and size-increment &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; for each axis. These parameters are set by modifying the axis commands used to create a [[#Regular Grid|regular grid]]. In scripted files, you insert &amp;quot;R-Style&amp;quot; as second parameter to mean the next two parameters are cell size ratio and style:&lt;br /&gt;
&lt;br /&gt;
  GridHoriz num,&amp;quot;R-style&amp;quot;,ratio,&amp;lt;style&amp;gt;,&amp;lt;sym1&amp;gt;,&amp;lt;symdir&amp;gt;,&amp;lt;sym2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and similar for &amp;lt;tt&amp;gt;GridVert&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;GridDepth&amp;lt;/tt&amp;gt;. In XML files use&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Horiz nx='nx' rx='ratio' style='style'/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and use attributes &amp;lt;tt&amp;gt;ry&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;rz&amp;lt;/tt&amp;gt; for &amp;amp;lt;Vert&amp;amp;gt; and &amp;amp;lt;Depth&amp;amp;gt;. The two new parameters are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;ratio&amp;lt;/tt&amp;gt; gives ratio of adjacent cells in that direction outside AOIs. If x direction &amp;lt;tt&amp;gt;ratio&amp;lt;/tt&amp;gt; is not given, it is set to the golden ratio ((1+√5)/2=1.618). If y or z direction &amp;lt;tt&amp;gt;ratio&amp;lt;/tt&amp;gt;s are not provided, they are set to the x direction ratio. Any ratio less than or equal to 1 is same as not provided.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; has two options:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;0 (or &amp;quot;geometric&amp;quot;): the cell size will increase geometrically by given ratio.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;1 (or &amp;quot;linear&amp;quot;): the cell size will increase linearly by the amount (ratio-1)*a (where a is element size inside the AOI)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
XML files must use the numeric setting. If x direction is not given, it is set to &amp;quot;geometric&amp;quot;. If y or z directions are not provided, they are set to the x direction style. Although this parameter is optional, it must be provided in scripted files for alignment when [[#Symmetry Planes|symmetry plane]] boundary conditions are being set.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that commonly the &amp;lt;tt&amp;gt;ratio&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; will be same for all axes. To achieve this result, set only x axis &amp;lt;tt&amp;gt;ratio&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; and y and z axes (when not provided) will inherit that style (they can be set differently, however, if desired).&lt;br /&gt;
&lt;br /&gt;
Note that when using a tartan grid, the &amp;lt;tt&amp;gt;nx&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ny&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;nz&amp;lt;/tt&amp;gt; parameters used to create a [[#Regular Grid|regular grid]] are ignored. The number of cells along each axis will depend on the number of cells in AOIs and the rate of increase between AOIs. But, if the commands do not define any AOIs, the grid will revert to a regular grid based on entered &amp;lt;tt&amp;gt;nx&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ny&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;nz&amp;lt;/tt&amp;gt; values.&lt;br /&gt;
&lt;br /&gt;
=== Grid Limits and Border ===&lt;br /&gt;
&lt;br /&gt;
When using a tartan grid, set the limits of the grid (in &amp;lt;tt&amp;gt;GridRect&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;&amp;lt;Grid&amp;gt;&amp;lt;/tt&amp;gt; commands) to the limits of the modeled object (''i.e.'', do not include extra border cells around the edges). This approach makes it easier to align object edges with cell edges in the tartan grid and to apply [[#Symmetry Planes|symmetry boundary conditions]] on the object edges.&lt;br /&gt;
&lt;br /&gt;
If you want to add a border in scripted files, use the command:&lt;br /&gt;
&lt;br /&gt;
  TartanBorder xmin,xmax,ymin,ymax&lt;br /&gt;
&lt;br /&gt;
In XML commands, a border is set with:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Border xmin=&amp;quot;1&amp;quot; xmax=&amp;quot;1&amp;quot; ymin=&amp;quot;1&amp;quot; ymax=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;tt&amp;gt;xmin&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xmax&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ymin&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;ymax&amp;lt;/tt&amp;gt; give number of extra elements beyond the edges, which may be small or large elements depending on tartan grid settings (add &amp;lt;tt&amp;gt;zmin&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;zmax&amp;lt;/tt&amp;gt; for 3D). Added elements will match the size of the last cell within the object in that direction.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If no Border command is used, a border of 1 cell on each edge is created.&lt;br /&gt;
&lt;br /&gt;
== Symmetry Planes ==&lt;br /&gt;
&lt;br /&gt;
By using the optional &amp;lt;tt&amp;gt;(symx)&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;(symxdir)&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;(symx2)&amp;lt;/tt&amp;gt; parameters (and the analogous ones for y and z) in &amp;lt;tt&amp;gt;GridHoriz&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;GridVert&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;GridDepth&amp;lt;/tt&amp;gt; commands (or the &amp;lt;tt&amp;gt;(symmin)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(symmax)&amp;lt;/tt&amp;gt; attributes in &amp;lt;tt&amp;gt;&amp;lt;Horiz&amp;gt;&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;&amp;lt;Vert&amp;gt;&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;&amp;lt;Depth&amp;gt;&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; commands), you can create a one or two symmetry planes along each axis. For one symmetry plane, the plane is located at &amp;lt;tt&amp;gt;x=(symx)&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;y=(symy)&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;z=(symz)&amp;lt;/tt&amp;gt;). If the corresponding direction property (''e.g''., &amp;lt;tt&amp;gt;(symxdir)&amp;lt;/tt&amp;gt;) is equal to -1 (or is omitted), the plane is at the minimum edge for the coordinate; if the direction is equal to +1, the plane is at the maximum edge. To create two symmetry planes, create the first one as for one plane, always specify &amp;lt;tt&amp;gt;(symxdir)&amp;lt;/tt&amp;gt; (even if it is -1), and then use &amp;lt;tt&amp;gt;(symx2)&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;(symy2)&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;(symz2)&amp;lt;/tt&amp;gt;) for the location of the other plane. The second plane will be on the opposite side as the first plane (''e.g''., maximum edge if first was minimum or minimum edge is first was maximum). In &amp;lt;tt&amp;gt;XML&amp;lt;/tt&amp;gt; files, planes and the minimum and/or maximum edges can be specified with one or both of the optional &amp;lt;tt&amp;gt;(symmin)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;(symmax)&amp;lt;/tt&amp;gt; attributes.&lt;br /&gt;
&lt;br /&gt;
The creation of a symmetry plane will do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Delete all [[Grid-Based Boundary Conditions|velocity boundary conditions]] in the specified axis direction that are beyond the symmetry plane because they are not needed (''e.g.'', at values &amp;lt;tt&amp;gt;x&amp;amp;le;(symx)&amp;lt;/tt&amp;gt; for &amp;lt;tt&amp;gt;(symxdir)=-1&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;x&amp;amp;ge;(symx)&amp;lt;/tt&amp;gt; for &amp;lt;tt&amp;gt;(symxdir)=+1&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&amp;lt;li&amp;gt; Create [[Grid-Based Boundary Conditions| velocity boundary conditions]] for every node in the plane at &amp;lt;tt&amp;gt;(symx)&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;(symy)&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;(symz)&amp;lt;/tt&amp;gt;) with velocity in the axis direction set to zero. Note that the symmetry plane must fall on a plane of nodes in the grid, otherwise an error will result. For the purpose of [[MPM Global Archiving Options|archiving reaction forces]], the created boundary conditions will have the following IDs:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;-10: plane at minimum x edge&lt;br /&gt;
&amp;lt;li&amp;gt;-11: plane at maximum x edge&lt;br /&gt;
&amp;lt;li&amp;gt;-20: plane at minimum y edge&lt;br /&gt;
&amp;lt;li&amp;gt;-21: plane at maximum y edge&lt;br /&gt;
&amp;lt;li&amp;gt;-30: plane at minimum z edge&lt;br /&gt;
&amp;lt;li&amp;gt;-31: plane at maximum z edge&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a second layer of [[Grid-Based Boundary Conditions|velocity boundary conditions]] one element beyond the symmetry plane (''e.g.'', at &amp;lt;tt&amp;gt;(symx)+(symxdir)*cell&amp;lt;/tt&amp;gt; where &amp;lt;tt&amp;gt;cell&amp;lt;/tt&amp;gt; is the cell size along the axis). These special boundary conditions will use reflection to set the velocity equal to the opposite of the velocity for the node on the other side of the symmetry plane and within the object. For example, a symmetry plane at &amp;lt;tt&amp;gt;x=(symx)&amp;lt;/tt&amp;gt; will set the &amp;lt;tt&amp;gt;x&amp;lt;/tt&amp;gt; velocity for the reflected node at  &amp;lt;tt&amp;gt;(symx)+(symxdir)*cell&amp;lt;/tt&amp;gt; to be minus the &amp;lt;tt&amp;gt;x&amp;lt;/tt&amp;gt; velocity for the node in the object at &amp;lt;tt&amp;gt;(symx)-(symxdir)*cell&amp;lt;/tt&amp;gt;. This second layer of boundary conditions is needed for best results when using [[MPM Methods and Simulation Timing|GIMP or CPDI shape functions]].&lt;br /&gt;
&amp;lt;li&amp;gt;Whenever contact occurs for a node on the plane at&amp;lt;tt&amp;gt;(symx)&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;(symy)&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;(symz)&amp;lt;/tt&amp;gt;), the volume gradient in the symmetry direction is set to zero and the volume is doubled.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symmetry planes are designed as actual symmetry planes. In other words, the real problem you are trying to solve is where the full object is the object on one side of the symmetry plane combined with its reflection on the opposite side. Although you can manually create pseudo-symmetry planes by creating two rows of zero [[Grid-Based Boundary Conditions|velocity boundary conditions]], the manual approach will not handle contact in [[Multimaterial MPM|multimaterial mode]] correctly and may have inferior results for boundary conditions. When contact may occur on the symmetry plane, the code needs to explicitly know about those planes so it can adjust volumes and [[Surface Normals#Multimaterial Normal Vector Options|volume gradients]] to account for symmetry. The above method for symmetry planes achieves that goal (&amp;lt;i&amp;gt;i.e.&amp;lt;/i&amp;gt;, item #4 above). Symmetry planes also eliminate (or reduce) some edge artifacts at zero-velocity boundary conditions. Thus symmetry planes are recommended whenever you want boundary conditions to create a wall for your simulation.&lt;br /&gt;
&lt;br /&gt;
Some details on symmetry planes are:&lt;br /&gt;
&lt;br /&gt;
# For axisymmetric simulations, a symmetry plane at &amp;lt;tt&amp;gt;r=0&amp;lt;/tt&amp;gt; is implied and is automatically created whenever your mesh extends to &amp;lt;tt&amp;gt;r=0&amp;lt;/tt&amp;gt;. Any minimum symmetry plane you enter will be ignored. You can optionally create a maximum symmetry plane if desired.&lt;br /&gt;
# Although setting a symmetry plane seems to be a short cut to setting zero velocity boundary conditions on an edge, if that edge corresponds to a real edge of the object and not to a symmetry plane, you should manually create those boundary conditions rather than use a symmetry plane. In other words, the contact mechanics at an edge are different than at a symmetry plane.&lt;br /&gt;
# The reflective boundary conditions next to symmetry planes work with with [[Multimaterial MPM|multiple materials]] (each material's velocity is reflected), but if [[Defining Cracks|cracks]] are present, it only reflects the velocity on the same side of the crack as the internal node. If cracks extend though or along symmetry planes, it is possible the reflective boundary conditions will lose accuracy. The zero velocity boundary conditions on the plane, however, account for cracks.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
# The thickness in planar 2D calculations defines the thickness of the grid. This attribute is required when doing [[Multimaterial MPM|multimaterial contact including the optional volume check]] and when using traction or flux boundary conditions. It is optional in other calculations because thickness can be set when defining material points and when defining cracks. If used, however, all material points and [[Defining Cracks|cracks]] will default to the grid thickness. You can enter different values, although it is not recommended (and may change the physics in [[Multimaterial MPM|multimaterial simulations]] or results to traction or flux boundary conditions). A warning is printed in the output if a [[Defining Cracks|crack thickness]] does not match the grid thickness. Currently no warning is given if material points have different thicknesses.&lt;br /&gt;
# In scripted files, the &amp;lt;tt&amp;gt;GridThickness&amp;lt;/tt&amp;gt; command must be before the &amp;lt;tt&amp;gt;GridRect&amp;lt;/tt&amp;gt;&lt;br /&gt;
# When using a [[MPM Methods and Simulation Timing|GIMP or CPDI shape functions]], a particle is considered to have left the grid if it moves into any element on the edge of the analysis. Thus, the use of a GIMP method will cause grid generation to automatically add an extra boundary of elements beyond the dimensions you select.&lt;br /&gt;
# MPM background grids currently always use [[Element Types#MPM Element Types|linear elements]].&lt;/div&gt;</summary>
		<author><name>Nairnj</name></author>
	</entry>
</feed>