Spatiotemporal FLIP for Fast Free-Surface and Two-Phase Simulation With Very Large Time Steps
We present ST-FLIP, a spatiotemporal extension of the Fluid-Implicit Particle (FLIP) method for incompressible free-surface and two-phase liquid simulation. ST-FLIP enables time steps up to an order of magnitude larger than those typically used in CFL-constrained solvers, while preserving detailed flow structures and visual fidelity. It addresses a common failure mode of large time steps in hybrid particle–grid liquid solvers: temporal undersampling of particle motion produces aliasing-driven free-surface artifacts after projection.
Our key idea is to interpret particles as samples in four-dimensional space-time: in addition to standard spatial jittering, we randomize particle positions along the time axis as well and perform particle-to-grid deposition using a separable 4D kernel. This yields a Monte Carlo estimator of perstep time-slab-integrated particle quantities. Although particles are treated as samples in 4D space-time, our approach works as a lightweight plugin by collapsing to slab-integrated 3D grid fields for projection. Building on recent particle-based phase-field work, we reuse the particle-to-grid weight accumulators as a conceptual space–time phase field, providing variable-coefficient projection weights and eliminating the need for per-step surface reconstruction. The method can be easily integrated into existing FLIP/PIC or APIC solvers with negligible additional computational cost per time step. The effectiveness of our approach is demonstrated through a series of comparisons with state-of-the-art solvers, yielding several-fold speedups for multi-billion-particle simulations at high effective 3D resolutions on a single workstation.
@article{BWBT26,
author = {Braun, Bernhard and Winchenbach, Rene and Bender, Jan and Thuerey, Nils},
title = {Spatiotemporal FLIP for Fast Free-Surface and Two-Phase Simulation With Very Large Time Steps},
year = {2026},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {45},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3811289},
doi = {10.1145/3811289},
journal = {ACM Trans. Graph.},
month = jul,
articleno = {76},
numpages = {20}
}