Interpolating Functions
In each time step of the Material Point Method (MPM), particles transfer their mass and momentum to the background grid, and later retrieve updated velocities from the grid to perform advection. Both transfers rely on interpolating functions to determine how each particle interacts with nearby grid nodes.
We define the interpolating function associated with grid node as . Here, is a multi-index - in 2D or in 3D - and is an arbitrary spatial position. When evaluating this function at a particle location , we use the shorthand:
This weight determines how strongly particle influences grid node : the closer the particle is to the node, the larger becomes.
Example 27.2.1 (Linear Interpolation). In 1D, the simplest choice of interpolating functions is the linear (tent) function: To apply this in a grid-based setting, we scale the spatial coordinates relative to the grid spacing (i.e., the distance between adjacent grid nodes along one axis). The scaled version becomes: In higher dimensions (2D, 3D), we use the tensor product of 1D functions:
Linear interpolation is computationally efficient and easy to implement, and is widely used in FLIP [Brackbill et al. 1988] [Bridson 2015] for fluid simulation. However, it suffers from two serious issues when applied in MPM:
- Its gradient is discontinuous, leading to unstable and noisy force evaluations.
- When particles are near cell boundaries, becomes small while remains large, causing numerical instabilities known as cell-crossing instability.
- The function’s support is too narrow, making it prone to numerical fracture when neighboring particles do not share enough grid nodes.
Because of these issues, linear interpolation is typically avoided in MPM, especially in solid simulation.
Example 27.2.2 (Quadratic B-Spline Interpolation). A better choice is the quadratic B-spline interpolating functions, which is -continuous (with continuous gradients) and has wider support:
Quadratic B-splines have a support region of width and provide smooth, stable interactions between particles and the grid. They are computationally efficient and require less memory than higher-order B-splines.
Example 27.2.3 (Cubic B-Spline Interpolation). For even better smoothness and broader support, we can use the cubic B-spline interpolating functions:
The cubic B-spline has support over , making it more robust to numerical fracture and instabilities. However, the wider support also means that each particle interacts with more grid nodes, which increases the computational overhead during transfers (e.g., mass, momentum, and force). This trade-off between smoothness and efficiency should be considered when choosing an interpolation kernel.
Gradient of the Interpolating Function
Gradients are needed during force computation. For high-dimensional interpolating functions defined using tensor products, we compute their gradient using the chain rule: Here, is the derivative of the 1D interpolating function .