  Block-structured adaptive mesh refinement (AMR) provides the basis for the
temporal and spatial discretization strategy for a number of ECP applications
in the areas of accelerator design, additive manufacturing, astrophysics,
combustion, cosmology, multiphase flow, and wind plant modelling. AMReX is a
software framework that provides a unified infrastructure with the
functionality needed for these and other AMR applications to be able to
effectively and efficiently utilize machines from laptops to exascale
architectures. AMR reduces the computational cost and memory footprint compared
to a uniform mesh while preserving accurate descriptions of different physical
processes in complex multi-physics algorithms. AMReX supports algorithms that
solve systems of partial differential equations (PDEs) in simple or complex
geometries, and those that use particles and/or particle-mesh operations to
represent component physical processes. In this paper, we will discuss the core
elements of the AMReX framework such as data containers and iterators as well
as several specialized operations to meet the needs of the application
projects. In addition we will highlight the strategy that the AMReX team is
pursuing to achieve highly performant code across a range of accelerator-based
architectures for a variety of different applications.
