Warning

This documentation is a work in progress. It is reasonably complete and hopefully useful but is likely error prone and in places misleading. Please report any errors to the MFIX-Exa User Forum.

# Welcome to MFIX-Exa’s documentation!

MFIX-Exa is a new multiphase computational fluid dynamics (CFD) modeling tool that can take advantage of massively parallel high performance computers (HPC) with the goal of scaling well at exascale. It combines the underlying physics from the existing MFIX code with the AMReX framework, creating the next generation, high performance, multiphase CFD workhorse.

MFIX-Exa is under active development as part of the MFIX-Exa application project in DOE’s Exascale Computing Project (ECP). All of MFIX-Exa’s development is done in the NETL gitlab repository, with active development in the develop branch. Changes are merged into the master branch at the beginning of each month.

When mature, this project will provide a modern multi-level multi-grid fluid solver with chemistry, heat transfer, complex geometry, and two particle models:

1. Discrete particle method (DEM) - Each particle is modeled as a sphere, resolving all particle collisions

2. Particle in cell method (PIC) - Particles are group in parcels and see other parcels through a stress gradient.

To get started with MFIX-Exa, follow the user guide sections:

User guide:

- Introduction
- Quick start guide
- Run-time inputs

To learn more about the implementation, follow the following reference sections:

Reference:

- System of Units
- Particle distributions
  - `constant` distribution
  - `normal` distribution
  - `log-normal` distribution
  - `uniform` distribution
  - `custom` distribution
- Gridding and Load Balancing
  - Grid Creation
  - Dual Grid Approach
  - Load Balancing
- Solving the Fluid Equations
  - Fluid Variables
  - Fluid Equations
  - Time Discretization
    - Fluid Time Step
    - Computing slopes
    - Creating the MAC velocities
- Particles
  - Particle Basics
    - Particle Dynamics
  - Particle/Fluid Interactions
  - Particle/Wall Interactions
  - Particles on GPUs
- Chemical Reactions
- Example rates UDFs
- Embedded Boundaries
  - Constructing Embedded Boundaries in MFIX-Exa
    - EB Specification
      - Native AMReX functions
      - CSG File Format
      - Planar Walls
      - STL File Format
    - How MFIX-Exa Constructs the EB Geometry
    - MFIX-Exa’s EB Data Structures
    - A note about constructing EB Levels
  - Local Mesh Refinement at Walls
    - MFIX-Exa Initialization Process
  - The Level-Set Function
    - Special Cases Involving Level-Sets
- Building on HPC Systems
  - OLCF Frontier
    - Basics
      - Source code
      - Modules
    - Building MFIX-Exa
    - Optional build dependencies
    - Running Jobs
  - OLCF Summit
    - Basics
      - Source code
      - Modules
    - Building MFIX-Exa
      - cmake
      - gmake
    - Optional build dependencies
    - Running Jobs
  - OLCF Crusher TDS
    - Basics
      - Source code
      - Modules
    - Building MFIX-Exa
    - Optional build dependencies
    - Running Jobs
  - Perlmutter
    - Basics
      - Source code
      - Modules
    - Building MFIX-Exa
      - cmake
      - gmake
    - Optional build dependencies
    - Running Jobs
  - Polaris
    - Basics
      - Source code
      - Modules
    - Building MFIX-Exa
      - cmake
    - Optional build dependencies
    - Running Jobs
  - NCSA Delta
    - Basics
      - Source code
      - Modules
    - Building MFIX-Exa
      - cmake
      - gmake
    - Optional build dependencies
    - Running Jobs
  - PSC Bridges-2
    - Basics
      - Source code
      - Modules
    - Building MFIX-Exa
    - Optional build dependencies
    - Running Jobs
  - Joule 2.0
    - Basics
      - Source code
      - Modules
    - Building MFIX-Exa
      - cmake
      - gmake
    - Optional build dependencies
    - Running Jobs
- Multiple Program Multiple Data (MPMD)
  - Sample Python Program
    - Initialize
    - Receive Once
    - Receive Until End
    - Plot
    - Finalize
- Debugging
- Works cited

Tools:

- PIC to DEM conversion

The following section detail the testing and benchmarks used to ensure solutions and performance:

Tests and Benchmarks:

- Running the MFIX-Exa Test Suite
  - Run all tests
  - List all tests (without running them)
  - Run a particular test by the index listed in ctest -N
  - Run a particular test by name
  - Run a particular test via make
  - Run specific
  - Run a user-defined case
- Regression testing
  - Generating local regression test data
- Continuous Integration
- Nightly Tests
- Qualitative Benchmarks
  - Clustering in the HCS
  - Granular Rayleigh-Taylor
  - Mehrdad’s Bed
  - Single Bubble Injection
  - Bidisperse Segregation
  - References
- Chemistry code tests
  - 1. Eulerian01: athermal, constant density
    - 1.1. Description
    - 1.2. Setup
    - 1.3. Results
      - 1.3.1. Forward Euler

## Notice

Neither the United States Government nor any agency thereof, nor any of their employees, makes any warranty, expressed or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed or represents that its use would not infringe privately owned rights.

- MFIX-Exa is provided without any user support for applications in the user’s immediate organization. It should not be redistributed in whole or in part.

- The use of MFIX-Exa is to be acknowledged in any published paper based on computations using this software by citing this MFIX-Exa site.

- The authors would appreciate receiving any reports of bugs or other difficulties with the software, enhancements to the software, and accounts of practical applications of this software.