↑ Vocaro Guide to MPM

Theory, History & Comparisons

Read Prerequisites first if continuum mechanics, the deformation gradient, or the particle-in-cell family (PIC/FLIP) are unfamiliar.

This document covers what MPM is, where it came from, how the algorithm works step by step, what it’s good for, where it breaks down, and how it stacks up against the neighboring simulation methods.

1. What MPM is

The Material Point Method (MPM) is a hybrid Eulerian–Lagrangian continuum simulation method. Material is represented by Lagrangian material points (particles) that carry mass, velocity, and deformation state, moving freely through space; each step, their data is transferred to a fixed Eulerian Cartesian background grid, where forces are computed and momentum is updated, and the result is transferred back to the particles. The grid is a disposable scratchpad — reset to zero at the start of every step and discarded at the end. There is no Lagrangian mesh connectivity between particles, which is exactly what lets MPM handle large deformation, self-collision, fracture, and topology change automatically while still supporting rich, history-dependent elasto-plastic materials. (Verified against the SIGGRAPH 2016 course notes and the Disney 2013 snow paper.)

2. History

MPM did not appear from nowhere — it is the end of a decades-long lineage of particle-in-cell methods (covered in Prerequisites §6).

MPM has been used at Disney in Frozen, Big Hero 6, and Zootopia (stated verbatim in the SIGGRAPH 2016 course abstract), and broadly across graphics research and geotechnical engineering.

A timeline of MPM from PIC in the 1960s through the 1994 origin and the 2013 graphics debut to PB-MPM in 2024

3. Why a hybrid? The core idea

Every simulation method makes a trade between tracking material and handling deformation:

MPM splits the responsibilities:

Particles persist and carry mass, position, deformation gradient and history; the grid is a disposable scratchpad for derivatives, forces and contact, reset every step

The particles never need neighbor connectivity, so the material can deform, split, and merge arbitrarily; the grid is regular, so derivatives and contact are cheap and robust. From the course notes, the resulting advantages:

The cost (course notes are explicit about this): there is “a sacrifice of some accuracy” — pure hyperelastic solids are not simulated as faithfully as in FEM, and grid contact is famously sticky (no-slip). You trade some accuracy for self-collision and topology change for free.

4. The algorithm — one simulation step

MPM repeats a four-phase cycle each timestep. The grid is reset every step; all persistent state lives on particles.

One timestep: reset the grid, scatter particle to grid, update the grid, gather grid to particle, then repeat

Phase 1 — Reset grid

Set mass and momentum to zero at every grid node. The grid carries nothing between steps.

Phase 2 — Particle-to-Grid (P2G)

For each particle p, over its 3×3 (2D) or 3×3×3 (3D) B-spline stencil of nearby nodes i:

  1. Evaluate interpolation weights wipw_{ip} from the particle’s position.
  2. Compute the particle’s stress from its deformation gradient F via the constitutive model (e.g. fixed corotated; see Prerequisites §3).
  3. Scatter mass and momentum (and the affine contribution, with APIC) to the nodes, weighted by wipw_{ip}:
    • node mass mi+=wipmpm_i \mathrel{+}= w_{ip}\, m_p
    • node momentum (m𝒗)i+=wipmp(𝒗p+𝑪p(𝒙i𝒙p))(m\mathbf{v})_i \mathrel{+}= w_{ip}\, m_p (\mathbf{v}_p + \mathbf{C}_p(\mathbf{x}_i - \mathbf{x}_p))
  4. Add internal forces (the stress divergence) and external forces (gravity, etc.) to the nodes.

This scatter is the algorithm’s performance heart and its parallelization nightmare: many particles write to the same node simultaneously (the atomic write contention problem — see Implementation).

Phase 3 — Grid update

At each node with nonzero mass:

  1. Recover velocity from momentum: 𝒗i=(m𝒗)i/mi\mathbf{v}_i = (m\mathbf{v})_i / m_i.
  2. Integrate forces forward (symplectic/explicit Euler shown): 𝒗in+1=𝒗in+Δt𝒇i/mi\mathbf{v}_i^{\,n+1} = \mathbf{v}_i^{\,n} + \Delta t\, \mathbf{f}_i / m_i. (Implicit/backward-Euler integration — course notes §11 — is used when stability at larger steps is needed; it solves a linear system via Newton’s method.)
  3. Enforce boundary conditions and collision objects directly on the grid velocity field.

Phase 4 — Grid-to-Particle (G2P)

For each particle, over the same stencil (weights are identical since the particle hasn’t moved yet):

  1. Gather the updated grid velocities into the particle’s new velocity (and, with APIC, reconstruct its affine matrix C = velocity gradient).
  2. Update the deformation gradient using the velocity gradient (discretizing 𝑭̇=(𝒗)𝑭\dot{\mathbf{F}} = (\nabla\mathbf{v})\mathbf{F}, course notes §9.4): 𝑭pn+1=(𝑰+Δt𝒗p)𝑭pn\mathbf{F}_p^{\,n+1} = (\mathbf{I} + \Delta t\, \nabla\mathbf{v}_p)\,\mathbf{F}_p^{\,n}. For plastic materials, the return mapping is applied here.
  3. Advect the particle: 𝒙pn+1=𝒙pn+Δt𝒗pn+1\mathbf{x}_p^{\,n+1} = \mathbf{x}_p^{\,n} + \Delta t\, \mathbf{v}_p^{\,n+1}.

The governing equations underneath

MPM discretizes conservation of mass and conservation of momentum (ρD𝒗Dt=𝝈+ρ𝒈\rho \frac{D\mathbf{v}}{Dt} = \nabla\cdot\boldsymbol\sigma + \rho \mathbf{g}). Mass conservation is automatic — particles carry fixed mass. Momentum balance is discretized in its weak (variational) form: multiply by a test function, integrate by parts, and replace the integral over the domain with a sum over material points (the particles act as quadrature points, analogous to FEM’s Gauss points). The P2G force scatter is precisely the assembled weak-form momentum equation. (Verified against course notes §7, 3-0.)

5. Important variants

APIC (Affine Particle-In-Cell, 2015)

Augments each particle with an affine velocity matrix C, transferring local rotational information that plain PIC dissipates and plain FLIP corrupts. The result is stable and low-dissipation, with exact conservation of angular momentum across transfers. APIC is the de-facto transfer scheme for modern MPM. (See Prerequisites §6.)

MLS-MPM (Moving Least Squares MPM, 2018)

Hu, Fang, Ge, Qu, Zhu, Pradhana & Jiang, A Moving Least Squares Material Point Method with Displacement Discontinuity and Two-Way Rigid Body Coupling (SIGGRAPH 2018). Its contributions:

Disney snow MPM (2013)

The graphics debut. A user-controllable elasto-plastic constitutive model (fixed-corotated elasticity + singular-value-clamping plasticity with hardening) on the MPM framework, targeting wet/dense snow that behaves as both solid and fluid — a regime prior methods handled poorly. Its semi-implicit integration has conditioning independent of the particle count.

PB-MPM (Position-Based MPM, 2024)

EA SEED’s real-time-oriented reformulation; stable at any timestep. The transfer cycle is wrapped in a constraint-projection loop, so each material becomes “what shape does F want to be, and how fast do we relax toward it” rather than a stress law. What that buys is unconditional stability, not accuracy: stiffness becomes a function of iteration count and Δt, so materials are relaxation rates rather than Young’s moduli and cannot be calibrated to physical units. The close reading of the reference implementation — the displacement form, the per-material projections, the fused tile kernel — is Implementation §3.3.

Transfer filters — XPIC(m) and FMPM(k) (2017, 2021)

A different axis from APIC. Write one G2P→P2G round trip as the operator SS+SS^{+} (S+S^{+} is the mass-weighted transfer); its complement ISS+I - SS^{+} isolates the null space — particle velocity content the grid cannot see, and the source of the noise FLIP is famous for. XPIC(m) (Hammerquist & Nairn 2017) removes it recursively, P=I(ISS+)mP = I - (I - SS^{+})^{m}, converging to exact null-space removal as mm \to \infty; m=1m = 1 is plain PIC. It is computed by m1m-1 grid round trips, never by forming matrices.

FMPM(k) (Nairn & Hammerquist 2021) reframes the same thing: XPIC(k) is exactly a kk-term truncated Neumann series for the consistent-mass-matrix inverse, m̃1=(I+A+A2+)m1\tilde{m}^{-1} = (I + A + A^{2} + \dots)\,m^{-1} with A=IS+SA = I - S^{+}S and residual AkA^{k}. Seen that way the filtered velocity can replace the lumped one everywhere, strain updates included. Four properties matter for anyone implementing it:

Two cautions. Dissipation is not monotone in order — in the source’s impact benchmark FMPM dissipates more than FLIP below order 4 and less at order ≥ 4 — the practical point being that at finite resolution all MPM dissipates; a scheme that gains energy is the red flag, since exact-conservation claims usually hide injection. And multi-field filtering is unresolved: filtering per material field does not reduce to single-field XPIC even across a perfectly bonded interface, and the authors treat it as an open concern in their own implementation.

GIMP and CPDI — shape functions from particle domains (2004, 2011)

GIMP derives shape weights as particle-domain averages of the grid functions, Sip=(1/Vp)χpNidVS_{ip} = (1/V_p)\int \chi_p N_i \,\mathrm{d}V. uGIMP is the analytic hat⊗box convolution; B2-GIMP convolves the quadratic spline with the particle box; CPDI (Sadeghirad et al. 2011) tracks the deformed domain through F, with corner positions from semi-side vectors 𝒓i=𝑭(half-size𝒆̂i)\mathbf{r}_i = \mathbf{F}\,(\text{half-size} \cdot \hat{\mathbf{e}}_i) recomputed each step, so no corner state is stored.

The reason this matters for a B-spline solver is mostly confirmation rather than homework: a quadratic B-spline is the same convolution with a fixed cell-width box, so B-spline transfers already carry the C¹ continuity that kills cell-crossing noise — GIMP’s whole reason to exist. Gao et al. 2017 make it exact, proving uGIMP with Lp=ΔxL_p = \Delta x is identical to the quadratic B-spline. What does not come for free is CPDI’s tracking of a deformed domain, which is a genuine extension — at the cost of corner-sampled transfers that are hostile to a divergence-sensitive GPU stencil.

Multi-field (multimaterial) contact MPM (2000–)

Plain MPM stores one velocity per grid node, so two distinct bodies whose particles reach the same nodes get mass-averaged into a single motion — they weld instead of colliding. The classic cure (Bardenhagen, Brackbill & Sulsky 2000; Bardenhagen et al. 2001) gives each body/material its own velocity field on the shared grid and resolves a contact law at nodes where fields overlap: detect approach + proximity, then apply an inelastic normal match plus Coulomb friction (separable contact) — or deliberately merge the fields (“stick,” which reproduces single-field behavior for that pair). Design details that matter in practice: contact normals from the difference of the fields’ mass/volume gradients (Nairn 2013’s average-gradient method; Nairn, Hammerquist & Smith 2020 supersede gradient-based normals with logistic regression and add null-space filtering); detection must combine approach and a position-separation threshold (approach-only fires ~a stencil-width early); nodes with 3+ fields are handled pairwise (explicit 3+-body treatments perform worse — Nairn’s docs note the nodal fields simply don’t carry enough information). Related lines: multi-mesh MPM (Hu & Chen 2003; Pan et al. 2008) gives each body a whole background grid; field-gradient partitioning (Homel & Herbold 2017) creates the two fields dynamically from a damage gradient for fracture self-contact. Full citations: References Contact & multi-body coupling. Distinct from CPIC (§ MLS-MPM above), which handles rigid/thin boundaries by particle-node coloring rather than by per-body velocity fields.

The calibration half. The architecture above is widely reimplemented; the constants usually are not, and a shipping engineering code has answers for most of them:

6. Use cases — what MPM is good at

MPM’s sweet spot is large-deformation continua and the transitions between material states — exactly the phenomena that defeat mesh-based methods. The SIGGRAPH 2016 course lists demonstrated materials: elastic objects, snow, lava, sand, and viscoelastic fluids.

Domain Why MPM fits
Snow Solid↔︎fluid spectrum, packing, fracture — the founding graphics use case (Frozen).
Sand / granular Drucker-Prager plasticity; piling, avalanching, flow without neighbor search. A cohesion term (translating the yield cone into tension) extends it to damp/sticky granular — wet sand, packed snow.
Mud, gels, foams, viscoelastics Per-particle constitutive models capture rate-dependent, semi-solid behavior.
Fluids Weakly-compressible / Newtonian models; couples naturally with solids in one solver.
Phase change & melting/freezing Just swap constitutive parameters per particle (e.g. Stomakhin 2014).
Multi-material interaction Different materials share the grid; coupling is automatic.
Fracture & cutting Automatic from the gridless particle representation (CPIC for explicit cuts).
Engineering: geomechanics, impact, landslides MPM’s original home; large-strain soil and impact mechanics.

Beyond graphics and games, MPM is heavily used in geotechnical / civil engineering (slope stability, landslides, soil-structure interaction) and high-velocity impact mechanics — see the open-source CB-Geo MPM and Anura3D engines, also listed in References.

The material axis — constitutive models

A material’s behavior in MPM is set by its constitutive model — the stress↔︎strain law evaluated per particle — which is orthogonal to the transfer scheme (§5, APIC/MLS-MPM/PB-MPM). A solver can carry an arbitrary mix of constitutive models on one grid; adding a material is “add a stress function,” not “add a solver.” Beyond the snow / sand / fluid models that dominate graphics MPM, the models below round out the practical palette — several are the standard MPM demo materials (§6 table) and the rest are well-trodden in the engineering literature.

Model What it is / behavior Practical notes
Linear elastic Small-strain Hooke’s law (stress ∝ strain). Cheapest elastic model; inaccurate at large rotation/deformation. Useful baseline / teaching material; the “is the elasticity plumbing correct?” reference.
Elastic (corotated / Neo-Hookean) Large-deformation hyperelastic solids — springy, fully recovering bodies (rubber, jelly). Fixed-corotated is the Disney-snow elastic base; Neo-Hookean is nialltl’s worked example. The natural “bouncy body” material; the foundation most other models build on.
Von Mises (elastoplastic) Elastic up to a yield stress, then plastic flow — metals, dough, permanently-denting solids. Return-mapping on the deviatoric stress. “Squishable but holds its dent” — dough/clay, soft metals, deformable props.
Viscoelastic Rate-dependent semi-solids — flows under sustained load, springs back under fast load (slime, gels, mucus, mud). A listed MPM sweet spot (§6); models comedic/organic goo well.
Gaseous (smoke / cloud / fog) Low-density, weakly/highly compressible, buoyant continua. Hardest of the set in real time — far more particles, tiny masses, and buoyancy/diffusion terms; volumetric rendering rather than iso-surface. The most demanding to make real-time. Watch the perf ceiling (§7 CFL + particle-count). And scope it honestly: an ideal gas works as a hyperelastic MPM material only when confined — in a container, or pushed by a body. Free expansion and gas-to-gas contact are doubtful. MPM gas is a pressurized-volume tool, not a plume tool.

Implementation shapes that decide cost

The model is orthogonal to the transfer scheme, but the form a model is written in decides whether it is affordable per particle per substep. The shapes below are the ones that matter at real-time budgets, drawn from the engineering-MPM literature (Nairn’s material-model catalog, following de Souza Neto/Perić/Owen) rather than the graphics line.

Two liquid-pressure cautions belong with this list. True Tait (P=CK0(e(1J*)/C1)P = C K_0 \left(e^{(1-J^{*})/C} - 1\right), C0.0894C \approx 0.0894) and the Murnaghan/Monaghan power law (P=(K/γ)(Jγ1)P = (K/\gamma)\left(J^{-\gamma} - 1\right)) agree for J*>0.7J^{*} > 0.7 and then diverge badly, with true Tait far stiffer under deep compression; its tangent modulus K(P)=(P+CK0)J*/CK(P) = (P + C K_0) J^{*} / C grows with pressure, so a CFL estimate should follow the tangent modulus rather than the nominal one. And general EOS forms carry a shared trap — Mie-Grüneisen’s pressure denominator vanishes at a finite compression — so clamp EOS stiffness and compression, and warn when the clamp engages.

References for these constitutive models: the SIGGRAPH 2016 MPM course (Jiang et al., in References — derives elastic, plastic, and viscoelastic models), nialltl’s Neo-Hookean walkthrough, and cebas thinkingParticles’ MPM operator docs as a concrete per-material parameter reference: Visco, VonMises, Elastic, Linear.

7. Limitations & pitfalls

MPM is powerful but not free. The well-documented weaknesses, especially acute for real-time use:

8. MPM vs. neighboring methods

The methods MPM is most often weighed against: the Finite Element Method (FEM), Smoothed Particle Hydrodynamics (SPH), the FLIP/PIC particle-in-cell family, Position-Based Dynamics (PBD), and — for water specifically — height-field / shallow-water fluids, the real-time incumbent. What each method is on its own terms — how it works, where it ships — lives in Related Methods; this section is the MPM-relative comparison. The chart places them by the two axes that matter most.

MPM sits in the upper-right corner, tracking material identity while handling large deformation, where mesh FEM tracks identity but deforms poorly and Eulerian fluids deform freely but lose identity

The height field sits in the far corner away from MPM, and that is the honest picture: it gives up material identity and the ability to represent large-deformation geometry (no overhang, no overturning wave) — which is exactly why it is cheap enough to have won real-time water.

vs. FEM (Finite Element Method)

Both derive from the weak form of momentum balance and both excel at elastic solids. FEM is more accurate for moderate-deformation elasticity (no transfer dissipation, no quadrature/particle-count issues). MPM wins on large deformation, fracture, self-collision, and multi-material coupling, which FEM needs bolt-on remeshing/contact machinery to handle. Rule of thumb: FEM for a deforming-but-intact solid; MPM when it tears, flows, or mixes.

vs. SPH (Smoothed Particle Hydrodynamics)

Both are particle methods with no mesh, so both handle topology change easily. But SPH computes derivatives via a kernel sum over neighbors, requiring an expensive per-step neighbor search; MPM computes derivatives on the fixed background grid and needs no neighbor search. SPH is also prone to tensile instability (particles clump under tension); MPM’s grid-node field approximation sidesteps this. MPM generally gives better-behaved stress and contact; SPH is simpler to implement for pure fluids.

vs. FLIP / PIC

MPM is the generalization of FLIP/PIC to solid continuum mechanics (it adds the deformation gradient and constitutive stress). Plain FLIP/PIC handle only (mostly inviscid) fluids; MPM handles arbitrary elasto-plastic continua. The transfer-dissipation lessons (PIC dissipative, FLIP noisy, APIC balanced) carry straight over.

vs. height-field / shallow-water fluids

The comparison that matters if the material in question is water, because this is what real-time water actually uses. A height field collapses the liquid to one height per column and solves the depth-averaged shallow water equations on a 2D grid, so cost scales with surface area rather than volume — complete scenes in single-digit milliseconds, versus a 3D MPM domain that is orders of magnitude larger for the same lake. Overturning waves, waterfalls, and splashes — which the representation cannot express at all — are patched by spawning particles where the field is detected to be failing and reabsorbing them on landing. For a river, lake, or shoreline, MPM does not beat this on cost and should not claim to. MPM’s case is the four things the height field structurally forgoes: material variety (one solver for snow, sand, mud, and mixtures rather than water plus bespoke extensions), phase change and mixing, genuine 3D flow (caves, overhangs, arbitrary topology), and material identity/history. Choosing MPM for water alone is choosing the expensive tool; choosing it because the water must also be snow, or must mix with sand, is where it pays for itself.

vs. PBD (Position-Based Dynamics)

PBD enforces geometric constraints directly on positions — fast, stable, and ubiquitous in real-time games, but not physically grounded (stiffness is iteration- and timestep-dependent; it approximates rather than solves the governing equations). MPM is continuum-accurate but heavier. The course notes note MPM “provides a unified particle simulation framework similar to Position Based Dynamics (PBD).” Notably, EA’s PB-MPM bridges the two — borrowing PBD’s compliant-constraint stability to make MPM real-time-stable (see Implementation).

MPM FEM SPH PBD Height field
Representation Particles + grid Mesh Particles Particles + constraints 2D grid (+ patch particles)
Mesh / connectivity None Required None None None
Large deformation Excellent Poor (tangles) Good Good Not representable (2.5D)
Self-collision / topology change Automatic Bolt-on Easy Manual N/A
Neighbor search None (grid) N/A Required Per-constraint None (grid)
Physical accuracy High (weak form) Highest (elastic) Medium Low (geometric) Medium (depth-averaged)
Multi-material coupling Automatic Hard Medium Manual None (water only)
Real-time friendliness Low (small Δt)* Medium Medium High Highest
Typical timestep Small (CFL) Large (implicit) Small Large Small (explicit + clamps)

* The real-time barrier is what MLS-MPM (speed) and PB-MPM (stability at any timestep) directly target.

† Water-only, and included precisely because of that: the N/A cells are what buys the cost. See Related Methods §1.5.

Where to go next

Sources for this document