Difference between revisions of "FMPM Features"

From OSUPDOCS
Jump to navigation Jump to search
 
(39 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.
FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass  matrix methods <ref name="FMPM"/><ref name="FMPMrev"/>. 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)<ref name="XPIC"/>. They are very similar, but FMPM(k) is now the preferred option.


== 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(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 [[Damping Options#PIC Damping|standard PIC damping]].
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 <tt>k</tt>, where <tt>k=1</tt> is PIC, <tt>k&gt;1</tt> is XPIC, and large <tt>k</tt> approaches a method with all null-space noise removed.
 
After deriving XPIC(k)<ref name="XPIC"/> 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)<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). Recent revisions for FMPM(k) have fixed issues related to boundary conditions and contact mechanics<ref name="FMPMrev"/>. 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.


== 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).
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, <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 and higher <tt>k</tt> eventually provides diminishing benefits. If used, very high <tt>k</tt> 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 <ref name="FMPMrev"/>.
 
One option to use XPIC(m) efficiently, is to do XPIC(m) projections periodically rather then on every time step.


== XPIC(m) Commands ==
== XPIC(k) and FMPM(k) Commands ==


The best way to use XPIC(m) is to schedule a [[PeriodicXPIC Custom Task]]. In brief, this task selects the XPIC order <tt>m</tt> and selects a fraction XPIC. Normally, the fraction XPIC should be 1 and the update will use the XPIC(m) method. Using fraction XPIC less than 1 will use a linear combination of FLIP and XPIC(m). Selecting fraction XPIC 0 results in pure FLIP calculations. See help on [[PeriodicXPIC Custom Task]] for more details. The remainder of this section describe deprecated methods for selecting XPIC (and these methods can not use the option for periodic XPIC calculations; that option requires use of the [[PeriodicXPIC Custom Task]]).
FMPM(k) (or XPIC(k)) simulations are created by scheduling a [[PeriodicXPIC Custom Task]]. In brief, this task selects the FMPM (or XPIC) order <tt>k</tt> and the frequency for using the calculations. See help on [[PeriodicXPIC Custom Task]] for all the details.


=== Deprecated XPIC Commands ===
=== Eliminated XPIC Commands ===


Before the [[PeriodicXPIC Custom Task]] was added, XPIC(m) was selected using [[Damping Options#Damping Commands|damping commands]]
The following two commands used to implement XPIC(k) in all versions of this code:


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


where the relevant paramters for XPIC(m) are:
where <tt>(fractionPIC)</tt> used to blend FLIP and XPIC(k) and <tt>(XPICOrder)</tt> 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 <tt>(XPICOrder)</tt> is recommended to change to using FMPM(k). The <tt>(fractionPIC)</tt> 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 <tt>(fractionPIC)=0.25</tt> to using FMPM(k) every 4<sup>th</sup> time step). The results are similar the periodic methods is much more efficient.


* <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.
== References ==
* <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.
<references>


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]]:
<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>


<Damping PIC='(fractionPIC)' function='(alphagVsT)'>(alphagNum)</Damping>
<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>
<XPIC order='(XPICOrder)'/>


Note that <tt>(XPICOrder)</tt> is ignored unless <tt>(fractionPIC)</tt> is greater than zero.
<ref name="FMPMrev">J. A. Nairn, "Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations," <i>arXiv:2604.07307</i> (2026). ([https://arxiv.org/abs/2604.07307 See PDF])</ref>


== References ==
</references>
<references/>

Latest revision as of 11:53, 12 April 2026

FMPM refers to variant of MPM that uses an approximation to the full mass matrix inverse rather then rely on lump mass matrix methods [1][2]. 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)[3]. They are very similar, but FMPM(k) is now the preferred option.

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. 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 k, where k=1 is PIC, k>1 is XPIC, and large k approaches a method with all null-space noise removed.

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

Performance

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, 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 and higher k eventually provides diminishing benefits. If used, very high k can become unstable unless the Courant–Friedrichs–Lewy factor (C) is reduced to below about 0.25 [2].

XPIC(k) and FMPM(k) Commands

FMPM(k) (or XPIC(k)) simulations are created by scheduling a PeriodicXPIC Custom Task. In brief, this task selects the FMPM (or XPIC) order k and the frequency for using the calculations. See help on PeriodicXPIC Custom Task for all the details.

Eliminated XPIC Commands

The following two commands used to implement XPIC(k) in all versions of this code:

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

where (fractionPIC) used to blend FLIP and XPIC(k) and (XPICOrder) 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 (XPICOrder) is recommended to change to using FMPM(k). The (fractionPIC) 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 (fractionPIC)=0.25 to using FMPM(k) every 4th time step). The results are similar the periodic methods is much more efficient.

References

  1. 1.0 1.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)
  2. 2.0 2.1 2.2 J. A. Nairn, "Improved Implementation of Approximate Full Mass Matrix Inverse Methods into Material Point Method Simulations," arXiv:2604.07307 (2026). (See PDF)
  3. 3.0 3.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)