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
Adaptavist ThemeBuilder EngineAtlassian Confluence