Overview

AMReX provides core infrastructure for block-structured AMR applications.

AMReX is a publicly available software framework for building massively parallel block-structured adaptive mesh refinement applications. It supplies reusable data structures, algorithms, solvers, and performance-portable execution patterns for scientific applications across CPUs, GPUs, and advanced HPC systems.

Framework capabilities

What AMReX provides

Language interfaces

C++, Fortran, and Python interfaces support a range of application workflows.

Grid data layouts

Cell-centered, face-centered, edge-centered, and nodal data are supported on structured mesh hierarchies.

Hierarchical PDE solves

AMReX supports hyperbolic, parabolic, and elliptic solves on adaptive grid structures.

Time integration

Applications can use optional subcycling in time for time-dependent PDE systems.

Particles

Particle data structures and iterators support data-parallel particle simulations on adaptive meshes.

Embedded boundaries

Embedded boundary tools represent irregular geometry on uniform, block-structured meshes.

Parallel FFT

Scalable distributed FFT operations support spectral methods and Poisson solves.

Performance portability

Parallelization supports MPI, OpenMP, CUDA, HIP, SYCL, and hybrid execution models.

Parallel I/O

Parallel I/O supports both native AMReX format and HDF5, helping applications write and read data from large parallel runs.

Built-in profiling tools

AMReX includes profiling tools designed for the hierarchical structure of AMReX-based applications.

External package support

AMReX supports integration with HYPRE, PETSc, and SUNDIALS for linear solvers and time integrators.

Adaptive resolution

Why block-structured AMR?

Block-structured AMR exploits varying resolution requirements in space and time by focusing computational resources in spatiotemporal regions of interest. The grid structure dynamically evolves over time without a parent-child relationship between coarser and finer grids.

This Kelvin-Helmholtz instability uses three total levels of refinement and was generated by the publicly available IAMR code for solving the variable-density incompressible Navier-Stokes equations.

Kelvin-Helmholtz instability simulation with adaptive mesh refinement

Particle workflows

Particles on adaptive meshes

AMReX provides data structures and iterators for data-parallel particle simulations. This approach is suited to particles that interact with data defined on a block-structured mesh hierarchy.

Example applications include Particle-in-Cell simulations, Lagrangian tracers, and particles that exert drag forces onto a fluid in multiphase flow calculations. The example shown is granular material falling into a bucket, color coded by speed.

Granular material falling into a bucket, color coded by speed

Complex geometry

Embedded boundaries

For computations with complex geometries, AMReX provides data structures and algorithms for embedded boundary discretizations. The computational mesh remains uniform and block-structured while the irregular domain boundary conceptually cuts through the mesh.

This example shows a compressible high-speed swirling jet using the PeleC simulation code created by NREL and LBNL with support from the Exascale Computing Project.

Compressible high-speed swirling jet simulation with embedded boundaries

Open development

A public, collaborative project

AMReX was developed initially as an Exascale Computing Project (ECP) co-design center project of the U.S. Department of Energy and continues to grow as a community-driven framework hosted by the High Performance Software Foundation, a project of the Linux Foundation. Development happens in the GitHub repository under the development branch. Contributions are welcome at any level, including documentation, bug fixes, new test problems, and new solvers. To get help, open a GitHub issue or discussion with the AMReX community.

AMReX gratefully acknowledges the past and current support of the U.S. Department of Energy Office of Advanced Scientific Computing Research (ASCR).