A software framework for massively parallel block-structured adaptive mesh refinement applications.
Overview - Features - Documentation - Gallery - Get Help - Contribute - License - Citation
AMReX is a software framework designed to accelerate scientific discovery for applications solving partial differential equations on block-structured meshes. Its massively parallel adaptive mesh refinement (AMR) algorithms focus computational resources and allow scalable performance on heterogeneous architectures so that scientists can efficiently resolve details in large simulations. AMReX is developed at LBNL, NREL, and ANL as part of the Block-Structured AMR Co-Design Center in the Department of Energy's Exascale Computing Project.
More information is available at the AMReX website.
- C++ and Fortran interfaces
- Support for cell-centered, face-centered, edge-centered, and nodal data
- Support for hyperbolic, parabolic, and elliptic solves on a hierarchical adaptive grid structure
- Optional subcycling in time for time-dependent PDEs
- Support for particles
- Embedded boundary description of irregular geometry
- Parallelization via flat MPI, OpenMP, hybrid MPI/OpenMP, or MPI/MPI
- GPU Acceleration with CUDA (NVidia), HIP (AMD) or SYCL (Intel) backends
- Parallel I/O
- Plotfile format supported by Amrvis, VisIt, ParaView and yt
- Built-in profiling tools
Four types of documentation are available:
- User's Guide -- For more information about AMReX features and functions
- Example Codes -- The fastest way to start your own project
- Guided Tutorials -- Learn basic AMReX topics in a progressive way
- Technical Reference -- Conveniently searchable code documentation via Doxygen
- Slides and video recordings -- From the AMReX tutorial organized by NERSC/OLCF/ALCF on March 14, 2024
AMReX supports several Exascale Computing Project software applications, such as ExaSky, WarpX, Pele(Combustion), Astro, and MFiX-Exa. AMReX has also been used in a wide variety of other scientific simulations, some of which, can be seen in our application gallery.
You can also view questions and ask your own on our GitHub Discussions page. To obtain additional help, simply post an issue.
We are always happy to have users contribute to the AMReX source code. To contribute, issue a pull request against the development branch. Any level of changes are welcomed: documentation, bug fixes, new test problems, new solvers, etc. For more details on how to contribute to AMReX, please see CONTRIBUTING.md.
AMReX Copyright (c) 2024, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved.
If you have questions about your rights to use or distribute this software, please contact Berkeley Lab's Intellectual Property Office at [email protected].
NOTICE. This Software was developed under funding from the U.S. Department of Energy and the U.S. Government consequently retains certain rights. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, distribute copies to the public, prepare derivative works, and perform publicly and display publicly, and to permit others to do so.
License for AMReX can be found at LICENSE.
@article{AMReX_JOSS,
doi = {10.21105/joss.01370},
url = {https://doi.org/10.21105/joss.01370},
year = {2019},
month = may,
publisher = {The Open Journal},
volume = {4},
number = {37},
pages = {1370},
author = {Weiqun Zhang and Ann Almgren and Vince Beckner and John Bell and Johannes Blaschke and Cy Chan and Marcus Day and Brian Friesen and Kevin Gott and Daniel Graves and Max Katz and Andrew Myers and Tan Nguyen and Andrew Nonaka and Michele Rosso and Samuel Williams and Michael Zingale},
title = {{AMReX}: a framework for block-structured adaptive mesh refinement},
journal = {Journal of Open Source Software}
}