Fluid Dynamics Module
Overview
The FluidDynamics module provides a Lattice Boltzmann Method (LBM) solver for incompressible and compressible fluid flow within the OpenPhase framework. It is designed for tightly coupled phase-field and fluid simulations — including multi-phase flow, solid–fluid interaction, thermally compressible flow, and reactive flow.
The module is self-contained and interacts with the broader OpenPhase framework through the PhaseField, Velocities, BoundaryConditions, Composition, and Temperature objects.
Physics scope
| Capability | Description |
|---|---|
| Single-phase incompressible flow | Navier–Stokes via BGK-LBM (isothermal) |
| Multi-phase / multi-component flow | Pseudo-potential methods (Benzi, Kupershtokh) |
| Phase-field coupling | Diffuse-interface solid–fluid boundaries |
| Solid–fluid interaction | Bounce-back, drag forces, rigid body motion |
| Solid–solid interaction | Short-range repulsion (Standard / Wang models) |
| Thermally compressible flow | Low-Mach number compressible extension |
| Reactive flow | Coupling to species transport and heat sources |
See also: examples
In OpenPhase-main/examples/:
Flow— single-phase incompressible flow.ThermalCompressibleFlow— Poiseuille / cylinder / packed-bed thermally compressible variants.Foam— foam-microstructure flow.ReactiveFlow— combustion in 0D, 1D, and 2D — see Reactive Flows.
Module components
| Class | Header | Role |
|---|---|---|
FlowSolverLBM | FluidDynamics/FlowSolverLBM.h | Core D3Q27 LBM solver |
D3Q27 | FluidDynamics/D3Q27.h | Population array and stencil weights |
InteractionFluidFluid | FluidDynamics/InteractionFluidFluid.h | Fluid–fluid pseudo-potential forces |
InteractionSolidFluid | FluidDynamics/InteractionSolidFluid.h | Solid–fluid coupling and rigid body dynamics |
InteractionSolidSolid | FluidDynamics/InteractionSolidSolid.h | Solid particle short-range repulsion |
BenziGas | FluidDynamics/BenziGas.h | Benzi pseudo-potential EOS helper |
VanDerWaalsGas | FluidDynamics/VanDerWaalsGas.h | Van der Waals EOS helper |
Position in a simulation
In a typical OpenPhase simulation, the FluidDynamics module is instantiated alongside the phase-field and transport modules and called each time step after the phase-field update:
Settings, BoundaryConditions
↓
PhaseField (microstructure evolution)
↓
FlowSolverLBM::Solve() ← FluidDynamics module
↓
AdvectionHR, Diffusion, Temperature, ...The Velocities object bridges the LBM solver and advective transport: the LBM solver writes fluid velocities into it, and advection/diffusion modules read from it.
Related publications
TODO
Documentation pages
| Page | Content |
|---|---|
| LBM Theory | Mathematical foundations |
| FlowSolverLBM | Main solver class |
| Multi-Phase Flow | Pseudo-potential models |
| Solid–Fluid Interaction | Bounce-back, drag, rigid bodies |
| Solid–Solid Interaction | Particle contact models |
| Thermal Compressible Flow | Low-Mach compressible extension |
| Reactive Flow | Coupling to combustion / chemistry |
| Usage & I/O | Input file, output fields, examples |