Helmholtz-Hodge Decomposition
Helmholtz-Hodge Decomposition Theorem
Generally, this theorem tells us that it is possible to split any arbitrary vector field into two component vector fields, such that one component is divergence free and the other component is curl free:
There is one additional detail from vector calculus that is useful to know here, which is that the curl-free component of the decomposition $\vec{w}$ can also be expressed as the gradient of some scalar function. The curl of some scalar gradient always equals zero.
But… what does that actually mean? It’s saying that if the curl of some arbitrary vector field (let’s call that vector field $\vec{w}$) is zero, then there must exist some scalar function (let’s call that scalar function $\phi$) such that the vector field equals $\nabla \phi$ (i.e. $\vec{w} = \nabla \phi$).
Let’s look at an example so that this makes more sense:
Take for example the following vector field:
Let us check that this vector field is curl-free:
The vector-field $\vec{w}$ is curl-free, which means that there must exist a scalar function $\phi$ such that $\vec{w} = \nabla \phi$.
We can then infer that:
I’m sure everybody reading this is very familiar with solving PDEs 
Integrate Equation 1 with respect to $x$:
Differentiate Equation 3 with respect to $y$:
But we already know from Equation 2 that $\frac{\partial \phi}{\partial y} = 2y$, therefore:
Integrate Equation 4:
Substitute Equation 5 into Equation 3:
Indeed there does exist a scalar function $\phi$! We can check that $\nabla \phi = \vec{w}$:
Application to Navier-Stokes
Let’s jump back to our Navier-Stokes equations. How can we use the Helmholtz-Hodge Decomposition to solve for our divergence free velocity field?
Assuming we have already made changes to the velocity field for our next update step, we now need to correct the velocity field to remove any divergence.
Recall our governing equation:
You might notice that the pressure component of our equation already contains a gradient of a scalar function $\nabla p$:
Recall earlier that we said “the curl of some scalar gradient always equals zero”. We can use this information to write our Helmholtz-Hodge Decomposition as:
where:
- $\vec{w}$ is some non-zero divergence velocity field
- $\vec{u}$ is a divergence-free velocity field (what we want to find)
Rearranging this to make $\vec{u}$ the subject gives us:
So in order to calculate our velocity field on the next step, we need to:
- Calculate some non-zero divergence velocity vector field (this will happen when we apply our advection, diffusion, and external forces steps)
- Calculate the pressure scalar field (we will explore how to do this in coming chapters)
- Subtract the gradient of the pressure field from the non-zero divergence velocity field
Here is a simplified flowchart overview of these steps: