We present an adaptive, finite volume algorithm to solve the incompressible
Navier–Stokes equations in complex geometries. The algorithm is based on
the embedded boundary method, in which finite volume approximations
are used to discretize the solution in cut cells that result from intersecting
the irregular boundary with a structured Cartesian grid. This approach is
conservative and reduces to a standard finite difference method in grid cells
away from the boundary. We solve the incompressible flow equations using a
predictor-corrector formulation. Hyperbolic advection terms are obtained by
higher-order upwinding without the use of extrapolated data in covered cells. The
small-cell stability problem associated with explicit embedded boundary methods for
hyperbolic systems is avoided by the use of a volume-weighted scheme in
the advection step and is consistent with construction of the right-hand
side of the elliptic solvers. The Helmholtz equations resulting from viscous
source terms are advanced in time by the Crank–Nicolson method, which
reduces solver runtime compared to other second-order time integrators by a
half. Incompressibility is enforced by a second-order approximate projection
method that makes use of a new conservative cell-centered gradient in cut cells
that is consistent with the volume-weighted scheme. The algorithm is also
capable of block structured adaptive mesh refinement to increase spatial
resolution dynamically in regions of interest. The resulting overall method is
second-order accurate for sufficiently smooth problems. In addition, the
algorithm is implemented in a high-performance computing framework and can
perform structured-grid fluid dynamics calculations at unprecedented scale
and resolution, up to 262,144 processor cores. We demonstrate robustness
and performance of the algorithm by simulating incompressible flow for a
wide range of Reynolds numbers in two and three dimensions: Stokes and
low Reynolds number flows in both constructed and image data geometries
( to
), flow past a cylinder
(), flow past a sphere
() and turbulent flow
in a contraction ().