A Centre of Excellence in HPC

Computational Fluid Dynamics is a discipline that deals with the numerical solution of partial differential equations (PDEs) governing the flow of fluids. The equations under consideration are the Navier-Stokes equations, describing the momentum transport in the fluid,

\[\rho \frac{D \textbf{u}}{Dt} = - \nabla p + \nabla \cdot \mathbf{\tau} + \rho \textbf{g},\]where \(\rho\) is the density, \(\frac{D}{Dt} := \frac{\partial}{\partial t} + \textbf{u} \cdot \nabla\) is the material derivative, \(p\) is the pressure, \(\tau\) is the deviatoric stress tensor and \(\mathbf{g}\) are body forces acting on the fluid. Depending on the taken assumptions of the fluid properties the Navier-Stokes equations may be modified or simplified and additional constraints may be added.

Different properties are considered. The fluid can either be *viscous* (like
oil or honey) or *inviscid* (like water). It is also either considered to be
*compressible* or *incompressible*. Incompressible flows are less complex to
simulate as some terms can be dropped from the Navier-Stokes equations. One
also distinguishes between *steady* and *unsteady* or *transient* fluid flows.
Transient flows are time-dependent while steady flows are not. Similarly, a
flow can either be *laminar* or *turbulent*. Laminar flows are characterized
by layers of the fluid flowing in the same direction while turbulent flows are
less orderly and involve recirculation and randomness.

In order to solve these PDEs numerically different space discretizations are applied. Some commonly used methods are:

- Finite volume method
- Finite element method
- Finite difference method

Finally, the solution of the governing PDEs in each timestep are applied to the
fluid by time integration. Therefor either *explicit* or *implicit*
integration methods are used. Explicit methods use the results from the
previous timestep while implicit methods solve a system of equations to obtain
and use updated values of the current timestep for the integration. For
instance let \(\mathbf{x}(t)\) denote the position field of the fluid at time
\(t\) and \(\mathbf{u}(t)\) the velocity field at time \(t\).

Then an explicit position update is performed by

\[\mathbf{x}(t + \Delta t) = \mathbf{x}(t) + \Delta t \mathbf{u}(t)\]while an implicit position is given by

\[\mathbf{x}(t + \Delta t) = \mathbf{x}(t) + \Delta t \mathbf{u}(t + \Delta t).\]Since a lot of different combinations of fluid properties, space and time discretizations are possible there is a whole zoo of computational fluid dynamics methods available.

Related program(s): Related algorithm(s): Finite Element Method