↑ Vocaro Guide to MPM

Prerequisites — The Math & Physics You Need First

Read this before Theory.

The Material Point Method (MPM) sits at the intersection of continuum mechanics, numerical PDE discretization, and the particle-in-cell family of fluid solvers. You do not need a graduate degree to follow it, but a handful of concepts are genuinely essential — skip them and the algorithm reads as a pile of unmotivated index gymnastics. This document builds those concepts from the ground up.

The canonical reference these notes track is the SIGGRAPH 2016 course “The Material Point Method for Simulating Continuum Materials” by Jiang, Schroeder, Teran, Stomakhin, and Selle (PDF, mpm.graphics). Its own stated prerequisites are modest: “minimal concepts of continuum mechanics. Familiarity with multivariable calculus, linear algebra and common numerical algorithms is assumed.” This document fills in exactly those.

Concept dependency map

How the prerequisite ideas build on one another, and where each feeds into the MPM algorithm:

Linear algebra and calculus feed continuum mechanics, which yields the deformation gradient and stress measures; those plus the particle-in-cell transfers and B-spline interpolation feed the MPM algorithm

1. Lagrangian vs. Eulerian frames

This is the single most important conceptual split in all of computational physics, and MPM’s defining trick is that it uses both at once.

The two views are linked by the flow map (a.k.a. deformation map) φ(X, t), which sends a material point X to its current world position x:

𝒙=ϕ(𝑿,t).\mathbf{x} = \phi(\mathbf{X}, t).

The Lagrangian view follows a material point fixed to the stuff; the Eulerian view watches a world point fixed in space; a push-forward map relates them

Why MPM cares. Lagrangian methods track material naturally (mass is exactly conserved, history-dependent material state rides along on each particle) but their mesh tangles and degrades under large deformation. Eulerian methods handle arbitrary deformation and topology change effortlessly (there is no mesh to tangle) but smear material identity and history across a fixed grid. MPM keeps material state on Lagrangian particles and borrows a disposable Eulerian grid only to compute spatial derivatives (forces) each step — getting the conservation and history-tracking of the former with the large-deformation/contact robustness of the latter.

Material derivative. Because a fixed spatial point sees different particles over time, the time-rate-of-change of a field following the material is not just ∂/∂t. The material derivative D/Dt adds an advection term: DDtf=ft+(f)𝒗.\frac{D}{Dt} f = \frac{\partial f}{\partial t} + (\nabla f)\cdot \mathbf{v}. This is why Eulerian fluid solvers need an advection step and Lagrangian ones don’t. (Course notes §5.4.)

2. Continuum mechanics essentials

MPM treats matter under the continuum assumption: material is modeled as a continuous medium with smooth fields (density, velocity, stress) rather than discrete molecules. This holds for essentially everything graphics simulates — elastic solids, flesh, cloth, sand, snow, mud, water, smoke. Crucially, an MPM “particle” is not a molecule — it is a small chunk of continuum, a quadrature (sampling) point for the material domain, analogous to a Gauss point in FEM.

2.1 The deformation gradient F — the star of the show

The deformation gradient is the Jacobian of the flow map. It is the local linear map from a tiny material fiber to its deformed world-space counterpart:

𝑭(𝑿,t)=ϕ𝑿(𝑿,t)=𝒙𝑿.\mathbf{F}(\mathbf{X}, t) = \frac{\partial \phi}{\partial \mathbf{X}}(\mathbf{X}, t) = \frac{\partial \mathbf{x}}{\partial \mathbf{X}}.

Intuitively, take two nearby material points; F maps the vector between them in the rest state to the vector between them now. It captures all the local stretching, shearing, and rotation at a material point. In 2D it is a 2×2 matrix, in 3D a 3×3 matrix.

Key facts (course notes §5.2):

Everything elastic in MPM is a function of F: the strain energy, the stress, and therefore the force.

2.2 Stress: Cauchy and Piola-Kirchhoff

Stress is force per unit area transmitted through the material. Two measures matter for MPM:

Strain is the dimensionless measure of how much the material has deformed (distinct from stress, the force response). For small deformations the linear (infinitesimal) strain tensor suffices; for the large deformations MPM targets, the full nonlinear kinematics of F are required, which is why MPM works directly with F rather than a linearized strain.

3. Constitutive models — turning deformation into force

A constitutive model is the material’s “personality”: the rule mapping deformation (F) to stress (P). MPM’s flexibility comes from the fact that this is just a per-particle function — change it (or store different parameters per particle) and you get a different material, with no change to the solver core. This is how one MPM framework simulates elastic, snow, sand, and fluid in the same scene.

3.1 Hyperelasticity (energy-based elasticity)

A hyperelastic material derives its stress from a stored strain-energy density Ψ(F), so 𝑷=Ψ/𝑭\mathbf{P} = \partial\Psi/\partial\mathbf{F}. Two workhorse models (course notes §6.2–6.3):

Neo-Hookean. A simple nonlinear elastic model. With Lamé parameters μ (shear stiffness) and λ (resistance to volume change), and J=det(𝑭)J = \det(\mathbf{F}):

𝑷(𝑭)=μ(𝑭𝑭T)+λlog(J)𝑭T.\mathbf{P}(\mathbf{F}) = \mu\left(\mathbf{F} - \mathbf{F}^{-T}\right) + \lambda \log(J)\,\mathbf{F}^{-T}.

(This is exactly the form nialltl’s tutorial codes for elastic bodies — see Implementation.) It is cheap but blows up as J0J \to 0 because of the log(J)\log(J) and 𝑭T\mathbf{F}^{-T} terms.

Fixed Corotated. The graphics-favored model (introduced by Stomakhin et al. 2012 and used in the Disney snow paper). It penalizes deviation from the nearest rotation R, so it stays well-behaved under large rotations and inversion:

𝑷(𝑭)=2μ(𝑭𝑹)+λ(J1)J𝑭T,\mathbf{P}(\mathbf{F}) = 2\mu(\mathbf{F} - \mathbf{R}) + \lambda(J - 1)\,J\,\mathbf{F}^{-T},

where R is the rotation factor of F. Getting R requires the polar decomposition / SVD (§4 below).

3.2 Plasticity — permanent deformation (snow, sand, mud)

Elastic materials spring back. Plastic materials deform permanently past a yield threshold — and that is precisely what makes snow pack, sand pile, and mud slump. The standard trick is a multiplicative split of the deformation gradient into an elastic and a plastic part:

𝑭=𝑭E𝑭P.\mathbf{F} = \mathbf{F}_E\,\mathbf{F}_P.

Only the elastic part F_E generates stress; the plastic part absorbs permanent deformation. A return mapping projects F_E back onto an admissible (yield) region whenever stress exceeds the yield criterion.

The deformation gradient splits into elastic and plastic parts; stress past the yield surface triggers a return mapping that projects it back and flows the excess into the plastic part

4. The linear algebra: SVD & polar decomposition

The corotated and plasticity models above both need to extract a rotation from F and to manipulate its singular values. Two closely related factorizations do this (course notes §6.4):

Because the matrices are tiny (2×2 or 3×3), specialized fast closed-form/iterative SVD routines are used in practice rather than general LAPACK calls (see McAdams/Selle’s fast 3×3 SVD, and Higham’s note on SVD via polar decomposition). This per-particle SVD is often the most expensive scalar kernel in an MPM step.

5. Interpolation & B-spline shape functions

MPM constantly moves data between scattered particles and grid nodes. The weights for that transfer are interpolation (shape) functions N(x) centered on each grid node — the same idea as FEM basis functions, but on a regular Cartesian grid.

MPM almost always uses B-spline kernels rather than the hat (linear) functions of classic PIC, because B-splines are smooth (continuous gradients), which kills a notorious MPM artifact called cell-crossing instability — the force jolt a particle feels when it crosses a grid-cell boundary under non-smooth weights.

Each particle therefore “talks to” 9 (2D) or 27 (3D) grid nodes per step. The weights N and, for classic MPM, their gradients ∇N are evaluated from the particle’s position relative to the grid. (One of the contributions of MLS-MPM — Moving Least Squares MPM, covered in Theory — is eliminating the explicit ∇N evaluation.)

6. The PIC / FLIP / APIC family — MPM’s direct ancestors

MPM is, historically and mechanically, the generalization of the particle-in-cell fluid methods to solid continuum mechanics. Understanding this lineage demystifies the transfer steps. All of them share the same scatter-to-grid / solve-on-grid / gather-to-particle rhythm; they differ only in what gets transferred and how much numerical dissipation results.

Method Year (origin) What transfers back to particles Trait
PIC (Particle-In-Cell) 1960s (Harlow) grid velocity Very stable, but extremely dissipative (smears motion — energy is lost every gather-to-particle step)
FLIP (Fluid-Implicit-Particle) 1986 (Brackbill & Ruppel) grid velocity change (delta) Almost no dissipation, but noisy/unstable (carries spurious modes)
APIC (Affine PIC) 2015 (Jiang et al.) velocity + an affine matrix C per particle Stable like PIC, low-dissipation like FLIP, and conserves angular momentum

APIC is the modern default and the one MPM tutorials use. Each particle carries, in addition to velocity, a small affine velocity matrix C that records the local velocity gradient. Transferring this extra information preserves the rotational (angular-momentum) content that plain PIC throws away and plain FLIP corrupts. APIC is the bridge to MLS-MPM (see Theory), which shows the affine matrix and the MPM velocity gradient are the same object, fusing the two and simplifying the math.

A timeline from PIC in the 1960s through FLIP, MPM, Disney snow MPM and APIC to MLS-MPM in 2018

Where to go next

You now have the vocabulary. Continue to:

Sources for this document