The Euler equations
This is the Navier-Stokes equation. Having been around since early 1800s, this simple one-liner is the seed of all that we do in CFD. What is this equation telling us?
Very roughly, the first term on the left governs the time evolution of the flow for a box fixed in space. The next term to its right is the convective term, it makes the equations nonlinear, which also causes shockwaves to form in supersonic flows. This term is responsible for the very elaborate schemes unique to CFD, which can be a nightmare to implement for the coder. However, it is also where we see some beautiful solutions being introduced.
On the right hand side, the first term is the hydrostatic stress tensor, which is related to volume change. The next term is the deviatoric stress tensor, which is related to shape change. So for a unit cube, the pressure terms will cause it to be squashed in directions normal to its faces. Whereas the deviatoric stress tensor will cause it to change its shape, for example, into a parallelepiped. Also, the rightmost term relates motion of the fluid particles to diffusion.
Dimensionally speaking, for a Newtonian fluid, these equations boil down to 2 parameters: Reynolds number and Mach number. The dependence on Reynolds number stem from the deviatoric stress tensor, which translates to the shear stresses for a viscid fluid. In the transition or turbulent regime, one would have to employ some kind of stochastic measure due to the chaotic nature of the flow. The challenges faced in the field of turbulence modelling needs no introduction, and it is one area in CFD where active research is still ongoing.
As such, I chose to work with the Euler equations for my own CFD code. By cutting out the empiricism concerned with turbulence modelling, we are working with something a bit more “clean” mathematically. We can still get to the interesting shock waves and some useful engineering figures (like lift coefficient etc.) from the Euler equations. The program architecture for such a code would be the same as one solving the full NS equations, with the handling of the source term being the only difference.