This is chombo-discharge, a multiphysics code which uses Chombo for discharge simulations with adaptive mesh refinement (AMR) on embedded boundary grids.
chombo-discharge is aimed at performant electric discharge simulations (e.g., Townsend discharges, streamer discharges, sprites, etc.), and scales to tens of thousands of CPU cores.
chombo-discharge features include:
- Fully written in C++.
- Parallelized with OpenMP, MPI, or MPI+OpenMP.
- Scales to tens of thousands of CPUs.
- Supports complex geometries (electrodes/dielectrics).
- Parallel I/O with HDF5.
- Efficient geometric multigrid solvers.
- Support for dual-grid operations with individual load-balancing of particle and fluid solvers.
- Support for both particle and fluids, including particle-mesh operations (e.g., Particle-In-Cell).
A modified version of Chombo is distributed together with this code.
Installation of chombo-discharge depends on the level of parallelism that is desired (if any).
The code supports OpenMP, MPI, and MPI+OpenMP types of parallelism.
For complete installation instructions for serial or parallel execution, see https://chombo-discharge.github.io/chombo-discharge/Base/Installation.html.
User documentation is available as HTML or as a PDF. A doxygen-generated API is also available.
See LICENSE and Copyright.txt for redistribution rights.
We welcome feedback, bug reports, or code contributions.
-
Create a branch for the new feature.
git checkout main git pull git checkout -b my_branch -
Develop the feature.
git add . git commit -m "my commit message"If relevant, add Sphinx and doxygen documentation.
-
Format the source and example codes using
clang-format:find Source Physics Geometries Exec \( -name "*.H" -o -name "*.cpp" \) -exec clang-format -i {} + -
Run CheckDocs.py to ensure that changes to source files can be captured, as some of these are included literally in the HTML/PDF documention. If the source files that are changed are also used as literal includes in the Sphinx documentation, ensure that the changed files do not break the includes.
-
Format input files:
./FormatInputFiles.sh -
Push the changes to GitHub
git push --set-upstream origin my_branch -
Create a pull request and make sure the GitHub continuous integration tests pass.




