AMR++: And Object-Oriented C++ Library for the Development of Serial and Parallel Adaptive Mesh Refinement Applications

Wednesday, March 12, 1997 - 3:45pm - 4:15pm
Daniel Quinlan (Los Alamos National Laboratory)
AMR++ is an object-oriented C++ class library for serial and parallel adaptive mesh refinement. Its purpose is to simplify the development of serial and parallel adaptive mesh refinement codes. It is based upon the OVERTURE C++ object-oriented framework, a large collection of C++ class libraries that work together to provide a simplified method of developing numerical PDE solvers for complex geometries in serial and parallel environments. OVERTURE is built on top of the A++/P++ array class libraries; A++ is a serial array class library permitting FORTRAN 90 like array operations and P++ is a parallel array class library with the same interface and hiding the details of distributed or shared memory parallelism. Additionally, OVERTURE provides specialized parallel support, including load balancing using the parallel Multilevel Load Balancing (MLB) algorithm. AMR++ is built on top of OVERTURE, the result being a hierarchy of class libraries representing different levels of abstraction for AMR, general numerical algorithms, complex geometry, parallelism, and load balancing.

AMR++ is independent of the equations being solved and provides support required for general steady-state and time-dependent applications. AMR++ permits the reuse of the user's single grid solution and thus significantly simplifies the move from a single grid application to the same application using adaptive mesh refinement. General support is provided for the complexities of adaptive regridding, sibling relationships between grids at the same refinement level, and data transfer operations between refinement levels, AMR graphic support (as part of the OVERTURE graphics support) etc. Additional support is provided in an specialized interface that uses the user's single grid solver and that either hides most details or permits the selection of options that simplify the development of the final adaptive mesh refinement application.