Particle motion is the same as material transport.
The particles hold information.
The information is accurate at the particle's position, however, it falls off with distance
The fall-off can be given by a weight function W(r)=W(∥xi−xj∥), typically called a kernel for SPH.
Characteristics of W:
Radial symmetry
Finite support
Integrated volume
Monotonically decreasing, with max at r=0
Smooth gradient at boundary
See: poly6 kernel
If particles have some characteristic that they carry (e.g. velocity), we can compute a weighted average of influence to determine the characteristic at any point in space.
Let φi be some characteristic measured at particle i. Then,
φ(x)=∑imiW(∥x−xi∥)∑iφimiW(∥x−xi∥)
where mi is the mass of the particle, typically mi=1 everywhere.
The denominator of the above is the particle density,
ρi=j∑mjW(∥xi−xj∥).
Then, a characteristic can be computed for any x∈R3, not just particle position xk:
φ(x)=i∑φiρ(x)miW(∥x−xi∥)
This also makes it easy to compute the derivatives of characteristics,
In each step, want to know what the new velocity is at a point based on the prior velocity.
In other words, we want to advect the fluid's velocity.
If we simply move the velocity forward along its direction, we may end up with more velocity (energy) than we started with.
A simple solution is to use a 'semi-Lagrangian' method trace a "particle" backward from the point that we want to know.
[a]:
This step applies the fluid's viscosity, as noted in the paper it is equivalent to the following diffusion equation:
∂t∂w2=ν∇2w2.
By recognizing the fact that we can discretize the Laplacian ∇2 (because we have discretized the space), we can apply the Fourier transform to convolve the space with the Laplacian kernel then do the inverse Fourier to recover the field.
[b]:
This step is about projecting the field onto a divergence-free field.
The scalar field φ is a result of the Helmholtz-Hodge decomposition.
Helmholtz-Hodge Decomposition
Any vector field w can be split intop the sum of a divergence-free vector field u and a curl-free vector field v.
w=u+v,∇⋅u=0,∇×v=0.
Divergence free: u is incompressible (no sources/sinks)
Curl free ⟺v is the gradient of some scalar field φ, i.e. v=∇φ.
Following Helmholtz-Hodge:
u∇⋅w=w−v=w−∇φ=∇⋅u+∇⋅v=∇v=∇2φ
Then, plugging in w3, we get that ∇⋅w3=∇2φ in which we solve for φ.