Thorsten / Brian to Write
Overview of BoxLib/AMReX¶
BoxLib is a framework for developing parallel, block-structured, adaptive mesh refinement (AMR) applications. It is written primarily in C++, and enables scientific application development through compute kernels written primarily in Fortran. Through the Exascale Computing Project's Block Structured Adaptive Mesh Refinement Co-Design Center, BoxLib has since been superseded by AMReX. Both frameworks are publicly available. The DOE COE for Performance Portability began prior to the formation of the Co-Design Center; consequently,the efforts described here focus on BoxLib, although the functionality described here is largely the same between the two frameworks.
BoxLib contains a wide variety of functionality:
- boundary condition exchange among boxes
- load balancing through regridding boxes among MPI processes
- metadata operations such as computing volume intersections among boxes
- memory management through pool allocators
In addition these, BoxLib also provides linear solvers which use geometric multigrid methods to solve problems on both cell-centered and nodal data. Our performance portability efforts described here focus on the cell-centered solver, which is algorithmically simpler than the nodal solver.