This 2D companion actually solves Fick's second law of diffusion on a grid, rather than animating a decorative particle cloud. Each ink drop is a concentration field C(x,y,t) evolved by explicit finite differences:
∂C/∂t = D∇²C − (u·∇)C
∇²C ≈ (C_{i+1,j}+C_{i-1,j}+C_{i,j+1}+C_{i,j-1}−4C_{i,j}) / Δx²
advection: semi-Lagrangian back-trace along (u,v), bilinearly resampled
The flow field (u,v) is not random noise — it is the exact curl of a stream function ψ built from a few sinusoidal vortex modes, ∆u = ∂ψ/∂y, v = −∂ψ/∂x, so it is analytically divergence-free (∇·u = 0) just like the "curl-noise" trick the 3D version uses for its turbulent particles, except here it transports a real scalar field instead of independent points.
- Mass conservation — with zero-flux (Neumann) walls, total ∫C dA is conserved by both operators; the readout tracks drift from the true integral, confirming the solver is sound (should stay within a fraction of a percent).
- Spread radius σ — the concentration-weighted standard deviation of distance from each drop's centroid; for pure diffusion, σ² = 4Dt, so σ²/t reads back close to the diffusion coefficient D above once advection has mixed the flow.
- Peak concentration — decays over time as the drop spreads (mass conserved, area grows), matching the 1/t decay of a 2D Gaussian diffusion kernel.