Introduction

incflo is a massively parallel code for solving the incompressible Navier-Stokes equations in 2-D or 3-D, with the option for an embedded boundary (cut cell) representation of of complex geometries.

It is built on top of AMReX, a publicly available software framework designed for building massively parallel block-structured adaptive mesh refinement (AMR) applications. It also utilizes AMReX-Hydro, a set of routines that support the construction of convective terms for incompressible and low Mach number flow modeling in cartesian coordinates with (or without) embedded boundaries and R-Z coordinate systems.

Another AMReX-based code, IAMR, also solves the variable-density incompressible Navier-Stokes equations in 2-D or 3-D but is based on a subcycling-in-time approach.

Key software and algorithmic features of incflo include:

  • Fluid velocity, density and tracers are defined at cell centroids; pressure is defined at nodes.

  • Possible advection algorithms: a Method-Of-Lines (MOL) approach and a Godunov-method algorithm. Both use an intermediate MAC projection for face-centered advection velocities

  • Incompressibility of the fluid is imposed through the use of a projection at the end of the time step

  • Implicit or explicit discretization of viscous terms with variable viscosity

  • The representation of the complex geometry uses the embedded boundary, or cut-cell, approach

  • Hybrid parallelization via MPI+X where X = OpenMP for multicore machines, and CUDA/HIP/DCP++ for CPU/GPU systems

  • Parallel I/O using AMReX native I/O or HDF5.

  • Plotfile format supported by AmrVis, VisIt, ParaView, and yt.

The incflo source code can be found at https://github.com/AMReX-Fluids/incflo/. incflo heavily leverages AMReX (see https://amrex-codes.github.io/) which is supported by ECP as part of the AMReX Co-Design Center.