One particle-in-cell code to rule them all. Find our detailed documentation here.
๐ต Benjamin Crinquand {@bcrinquand: GRPIC, cubed-sphere}
๐ง Alisa Galishnikova {@alisagk: GRPIC}
โ Hayk Hakobyan {@haykh: framework, PIC, GRPIC, cubed-sphere}
๐ฅ Jens Mahlmann {@jmahlmann: framework, MPI, cubed-sphere}
๐ฌ Sasha Philippov {@sashaph: all-around}
๐คท Arno Vanthieghem {@vanthieg: framework, PIC}
๐บ Muni Zhou {@munizhou: PIC}
-
Framework
- Metrics
- Minkowski (SR)
- Spherical/Qspherical (SR)
- Kerr-Schild/QKerr-Schild, zero-mass Kerr-Schild (GR)
- virtual inheritance of metric classes
- Output
- Fields/currents (SR/GR)
- Moments (SR)
- Moments (GR)
- Particles (SR/GR)
- Energy distributions (SR/GR)
- Particle tracking (SR/GR)
- Extra physics
- Radiation (synchrotron/IC)
- QED
- MPI
- restructure meshblocks
- rewrite fieldsolvers (addressing + ranges)
- Metrics
-
SR (minkowski)
- fieldsolver (1D/2D/3D)
- pusher (1D/2D/3D)
- deposit (1D/2D/3D)
- filtering (1D/2D/3D)
-
SR (spherical)
- fieldsolver (2D)
- pusher (2D)
- deposit (2D)
- filtering (2D)
-
GR (spherical)
- fieldsolver (2D)
- pusher (2D)
- deposit (2D)
- filtering (2D)
...
To keep the code clean, readable and easy to debug we employ some of the
c++
best practices described in details in the following online manual. Basically, if there is any ambiguity on how to implement something, it's a good start to first look if there is any "best practice" solution offered in that manual.
A limited number of unit tests are now available. To compile/run them:
cmake -B build -D TESTS=ON
cd build
make -j
cd tests && ctest -j
Tests are automatically run when on pull requests to the master
branch.
While we try to keep the code as compatible as possible, there are certain stringent requirements we impose.
cmake>=3.16
: for configuration (verify:cmake --version
);icx>=19.1
orgcc>=8.3.1
withc++17
support (verify:[icx|gcc] -std=c++17 -v
; optionallynvcc
compilers:nvcc --version
).