The spark (statistical particle kinetics) toolbox is a C++ library used for implementation of kinetic simulations with Monte Carlo-based algorithms such as the Particle-In-Cell (PIC) or Direct Simulation Monte Carlo (DSMC) methods. It aims to provide the basic functionalities for essential parts of the simulation such as integrating particle movement, solving electromagnetic field equations, and performing collisions.
Warning
This library is still in a very early stage of development and will suffer breaking changes.
For building, you will need CMake and a compiler that supports at least C++20. All dependencies of the toolbox are fetched automatically using CPM.
To integrate the library with your project you have a couple of options. The first is to use, CMake's FetchContent as
# In your CMakeLists.txt file
FetchContent_Declare(
spark
GIT_REPOSITORY https://github.com/lase-unb/spark.git
GIT_TAG main #or a specific commit/branch.
)
FetchContent_MakeAvailable(spark)
target_link_libraries(your_target PRIVATE spark::spark)Or if you add it as a subdirectory (as in the case of a git submodule) you can simply do
# In your CMakeLists.txt file
add_subdirectory(spark)
target_link_libraries(your_target PRIVATE spark::spark)The dependencies used by spark which are automatically downloaded and linked by CMake are