Chombo's approach to solving PDE's
- An AMR Software Framework
- Chombo is the public open-source library from ANAG.
- Chombo supports a wide variety of applications that use AMR by means of a common software framework.
- Mixed-language programming: C++ for high-level abstractions, Fortran for calculations on regular patches.
- Reusable components, based on mapping of mathematical abstractions to classes.
- Layered architecture that hides different levels of detail behind interfaces.
- Layer 4: Complete parallel applications. AMRSelfGravity, AMRMHD, AMRINS, EBAMRINS, AMRCharm. 100K lines of code.
- Layer 3: Solver libraries: geometric multigrid solvers on unions of rectangles and AMR hierarchies. Hyperbolic solvers. 70K lines of code.
- Layer 2: Tools for managing interactions between different levels of refinement in an AMR calculation. These include interpolation operators, averaging operators, and coarse-fine boundary conditions. 50K lines of code.
- Layer 1: Data and operations on unions of rectangles. This includes set calculus and a rectangular array library, data on unions of rectangles with SPMD parallelism implemented by distributing boxes to processors and load balancing tools. 80K lines of code.
- Utility Layer: Code instrumentation, interoperability libraries. This also has an API for HDF5 I/O and performance and debugging tools. 20K lines of code.
- Performance Tools
- Chombo Timers
- Instrumented source code.
- Parallel or serial profiling.
- Hardware counters.
- Memory tracking
- Memory leak detection.
- Memory usage.
- Parallel debugging.
- Event-based diagnostics.
- Chombo Fortran
- Provides a less error-prone interface for mixed language programming.
- Provides a dimension-independent syntax for Fortran.
- 1, 2, and 3 dimensional simulations can call the same Fortran subroutines.
- This eliminates the software maintenance nightmare of maintaining separate Fortran cores for each dimension.
- Fortran 77 and the prototypes headers to call it are generated from Chombo Fortran files.
- OpenMP hooks and other performance optimizations can be added automatically into Fortran subroutines.
- Software Engineering practices
- Source code control
- CVS (soon svn) repository.
- Release branches
- Nightly regression testing
- 4 machines, 24/7 allocation,
- Large configuration space.
- Doxygen hypertext documentation
- Chombo User's guide.
- Easy to port and modify
- Build based on just GNU make and perl.
- Only one external library dependency (HDF5).
- Visit integrated with GDB debugger.
- Software design process
- Design document
- Example applications
- Unit tests
- Chombo coding standards
- Chombo users mailing list
- Bug reporting
- Community input