Difference between revisions of "XPIC Features"

From OSUPDOCS
Jump to navigation Jump to search
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
XPIC(m) is an improved form of MPM, which is only available in [[OSParticulas]].<ref name="XPIC">C. Hammerquist and J. A. Nairn, "A New Method for Material Point Method Particle Updates that Reduces Noise and Enhanced Stability", <i>Computer Methods in Applied Mechanics and Engineering</i>, <b>318</b>, 724-738 (2017).</ref>. The page explains how to use XPIC(m) features.
XPIC(k)<ref name="XPIC"/> and FMPM(k)<ref name="FMPM"/> are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.


== Introduction ==


== Introduction ==
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 <tt>k</tt>, where <tt>k=1</tt> is PIC, <tt>k&gt;1</tt> is XPIC, and large <tt>k</tt> approaches amethod with all null-space noise removed.


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(m) is a new method that solves the energy dissipation problem, enhances overall stability of MPM, and reduces noise. XPIC(m) defines a series of new projection operators that can significantly reduce the over damping of PIC simulations. XPIC(m) is defined by an order <tt>m</tt>, where <tt>m=1</tt> is PIC, <tt>m&gt;1</tt> is XPIC, and large <tt>m</tt> approaches an ideal FLIP method with all null-space noise removed. In other words, <tt>m</tt> from 1 to infinity provides an interpolation between PIC and optimized FLIP, but is probably a better interpolation than the simple linear combination provided by [[#PIC Damping|standard PIC damping]].
After deriving XPIC(k)<ref name="XPIC"/> 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)<ref name="FMPM"/>. 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).


== Performance ==
== Performance ==


The drawback of XPIC(m) is that each higher order of XPIC(m) requires an extra extrapolation. The extra calculations scale with m*N where N is the number of particles in the problem. XPIC is therefore less efficient than PIC or FLIP (or a [[Damping Options#PIC Damping|PIC damping]] linear combination of FLIP and PIC). In many problems, <tt>m=2</tt> already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger <tt>m</tt> is often better with <tt>m=5</tt> appearing to provide much benefit without too much extra cost. Very high values of <tt>m</tt> (''e.g.'', <tt>m&gt;40</tt>) are typically unstable (due to too many additional extrapolations).
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, <tt>k=2</tt> already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger <tt>k</tt> is often better with <tt>k=4</tt> appearing to provide much benefit without too much extra cost. Very high values of <tt>k</tt> (''e.g.'', <tt>k&gt;40</tt>) are typically unstable (due to too many additional extrapolations or to changes in effective eigenvalues for the equations).
 
== XPIC(k) and FMPM(k) Commands ==
 
XPIC(k)and FMPM(k) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC or FMPM order <tt>k</tt> 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.
 
=== Eliminated XPIC Commands ===
 
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:
 
Damping (alphagVsT),<(fractionPIC)>,<(XPICOrder)>
PDamping (alphapVsT),<(fractionPIC)>,<(XPICOrder)>


One option to use XPIC(m) efficiently, is to do XPIC(m) projections periodically rather then on every time step.
where the relevant paramters for XPIC(m) are:


== XPIC(m) Command ==
* <tt>(fractionPIC)</tt> 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 &phi; in old calculations with XPIC(m) done every <tt>int(1/</tt>&phi;<tt>)</tt> time steps in the [[PeriodicXPIC Custom Task]].
* <tt>(XPICOrder)</tt> to set the XPIC(m) order or <tt>m</tt>. 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 <tt>(fractionPIC)</tt> &gt; 0. The default is 1, which is standard PIC.


Although <tt>(fractionPIC)</tt> and <tt>(XPICOrder)</tt> can be set in either the <tt>Damping</tt> or the <tt>PDamping</tt> command, only one setting for each is allowed; a simulation will use whichever setting comes last.


In <tt>XML</tt> input files, <tt>(fractionPIC)</tt> and <tt>(XPICOrder)</tt> can be set with commands in the [[MPM Input Files#MPM Header|<tt><MPMHeader></tt> element]]:


XPIC is activated by using the <tt>XPICOrder</tt> setting in combination with activating PIC by having &beta;&lt;1 in a <tt>Damping</tt> or a <tt>PDamping</tt> command.
<Damping PIC='(fractionPIC)' function='(alphagVsT)'>(alphagNum)</Damping>
Note that XPIC can be used in combination with [[Damping Options#PIC Damping|PIC damping]] where that method will now provide linear combination of fraction &beta; FLIP and (1-&beta;) of XPIC.
<XPIC order='(XPICOrder)'/>
 
Note that <tt>(XPICOrder)</tt> is ignored unless <tt>(fractionPIC)</tt> is greater than zero.


== References ==
== References ==
<references/>
 
<references>
 
<ref name="XPIC">C. C. Hammerquist and J. A. Nairn, "A new method for material point method particle updates that reduces noise and enhances stability," <i>Computer Methods in Applied Mechanics and Engineering</i>, <b>318</b>, 724– 738 (2017). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/XPICPaper.pdf See PDF])</ref>
 
<ref name="FMPM">J. A. Nairn and C. C. Hammerquist, "Material point method simulations using an approximate full mass matrix inverse," <i>Computer Methods in Applied Mechanics and Engineering</i>, in press (2021). ([http://www.cof.orst.edu/cof/wse/faculty/Nairn/papers/FMPMPaper.pdf See PDF])</ref>
 
</references>

Latest revision as of 16:20, 28 November 2023

XPIC(k)[1] and FMPM(k)[2] are two improved forms of MPM. The page explains how to use XPIC(k) and FMPM(k) features.

Introduction

The PIC method can be described as applying a projection operator that modifies (and filters) particle velocities before updating them with the grid acceleration. The problem with PIC is that its projection operator filters 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 k, where k=1 is PIC, k>1 is XPIC, and large k approaches amethod with all null-space noise removed.

After deriving XPIC(k)[1] 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)[2]. 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).

Performance

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, k=2 already provides much improvement over PIC and reduces undesirable energy dissipation with minimal extra calculations. Larger k is often better with k=4 appearing to provide much benefit without too much extra cost. Very high values of k (e.g., k>40) are typically unstable (due to too many additional extrapolations or to changes in effective eigenvalues for the equations).

XPIC(k) and FMPM(k) Commands

XPIC(k)and FMPM(k) simulations are created by scheduling a PeriodicXPIC Custom Task. In brief, this task selects the XPIC or FMPM order k 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.

Eliminated XPIC Commands

Before the PeriodicXPIC Custom Task was added, XPIC(m) was selected using 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:

Damping (alphagVsT),<(fractionPIC)>,<(XPICOrder)>
PDamping (alphapVsT),<(fractionPIC)>,<(XPICOrder)>

where the relevant paramters for XPIC(m) are:

  • (fractionPIC) is the 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 φ in old calculations with XPIC(m) done every int(1/φ) time steps in the PeriodicXPIC Custom Task.
  • (XPICOrder) to set the XPIC(m) order or m. 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 (fractionPIC) > 0. The default is 1, which is standard PIC.

Although (fractionPIC) and (XPICOrder) can be set in either the Damping or the PDamping command, only one setting for each is allowed; a simulation will use whichever setting comes last.

In XML input files, (fractionPIC) and (XPICOrder) can be set with commands in the <MPMHeader> element:

<Damping PIC='(fractionPIC)' function='(alphagVsT)'>(alphagNum)</Damping>
<XPIC order='(XPICOrder)'/>

Note that (XPICOrder) is ignored unless (fractionPIC) is greater than zero.

References

  1. 1.0 1.1 C. C. Hammerquist and J. A. Nairn, "A new method for material point method particle updates that reduces noise and enhances stability," Computer Methods in Applied Mechanics and Engineering, 318, 724– 738 (2017). (See PDF)
  2. 2.0 2.1 J. A. Nairn and C. C. Hammerquist, "Material point method simulations using an approximate full mass matrix inverse," Computer Methods in Applied Mechanics and Engineering, in press (2021). (See PDF)