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.
- EBTools: Embedded Boundary discretizations and tools
- 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.
Chombo v3.2 API reference is published via Doxygen.
The current version of the Chombo Design Doc is a fairly comprehensive overview of the layers and classes in Chombo.
Chombo is provided as a full open-source distribution.
This is a source code release. The 3.2 version of this software was released January 22, 2014. The current patch (Chombo 3.2, patch 5) was released on March 23, 2017. We welcome feedback concerning this software to better meet your needs. Contact [email protected] with comments. We welcome nice things you have to say as well as criticism.
There is a Chombo users Google group for general discussion among Chombo users. Go to https://groups.google.com/a/lbl.gov/forum/?hl=en#!forum/chombousers to join. (you will need to be logged in to a Google account)
The current Chombo release is distributed via the svn version control system. Before you can download Chombo, you must register. Registration is free and does not carry an encumbrance on your part. We just need to keep a record of access. Registration gets you an account via which you can access the Chombo svn repository via svn. If you have already previously registered for Chombo download, you may skip directly to the download page.
The #Design Docs for Chombo can be downloaded independently of the source and without registration.