| What is Chombo? |
Chombo provides a distributed infrastructure for parallel calculations over block-structured, adaptively refined grids. Chombo's design is uniquely flexible and accessible. Any collaborator will be able to develop parallel applications to solve the partial differential equations in which she is interested with far shorter development times than would be possible without the infrastructure. Very careful design and documentation allows said collaborator to enter the software at many levels. She will be able to use Chombo to investigate deep technical issues of adaptive mesh refinement algorithms or to simply adapt the example applications to solve different scientific problems.
Software Organization
The core of the software distribution is divided into five parts:
BoxTools: Provides infrastructure to do any calculations over unions of rectangles. BoxTools provides tools to perform set calculus for points in a domain and data holders for unions of rectangles.
AMRTools: Provides tools for data communication between refinement levels, including coarse-fine interpolation tools.
AMRTimeDependent: Manages sub-cycling in time for time-dependent adaptive calculations.
AMRElliptic: a multigrid-based elliptic equation solver for adaptive hierarchies.
ParticleTools: Release 2.0 has taken the ParticleTools out of the public API while it is being re-engineered.
Chombo also includes test programs and some examples of how to do calculations on block-structured, adaptively refined meshes. The examples include a cell-centered Poisson solver, several variations on a node-centered elliptic solver, a Helmholtz equation solver, a couple implementations of a Godunov method for gas dynamics, a simple wave equation solver and some basic I/O code.
Finally Chombo includes a system for writing dimension-independent FORTRAN which we call ``Chombo Fortran''. Fortran subroutines are used for the most compute-intensive parts of Chombo applications because they produce faster results.
The examples that Chombo provides use finite differences to discretize partial differential equations on block-structured, adaptively refined grids using published algorithms. AMRGodunovUnsplit follows the algorithm developed by Berger and Colella to solve shock hydrodynamics problems on these grids using AMRTimeDependent to manage subcycling in time and other data choreography issues. One implements a operator splitting algorithm and the other implements a unsplit algorithm. The Poisson and Helmholtz examples follow the algorithm used by Martin and Cartwright with AMRElliptic doing the data choreography. Both AMRTimeDependent and AMRElliptic are flexibly designed. In principle, any time-dependent adaptive problem with similar time-step constraints to gas dynamics can be solved using AMRTimeDependent. Any purely elliptic problem on block-structured adaptive meshes can be solved using AMRElliptic.
BoxTools is a redesign and extension of BoxLib, a free software library developed and distributed by the the Center for Computational Sciences and Engineering (CCSE) at Lawrence Berkeley National Laboratory.
This software is meant to run on any computer. None of the Chombo code is specific to any particular architecture or operating system, although some system-specific customizations are needed to build Chombo. Systems where Chombo has been successfully built include Linux on x86, x86_64 and Alpha, IBM AIX, Tru64 (aka Digital Unix) on Alpha, Microsoft Windows using Cygwin, SGI Irix, HP-UX.
For all Chombo applications to compile, the following software needs to be available:
The time required to run a Chombo application is entirely dependent upon architecture and the specifics of the application. The examples each run in 5-10 minutes on a reasonably recent workstation in the default configuration (serial, 2-dimensions, debugging enabled).
Doxygen was used in developing the Chombo HTML reference manual that is included in the distribution, but is not required to use the manual.
An email list is available for discussion of Chombo and its applications. Send a message to chombousers-request [at] hpcrdm _dot_ lbl _dot_ gov with "help" in the subject line to get started.