-
Notifications
You must be signed in to change notification settings - Fork 50
2 Programming Guide
NOTE: The information on these pages attempts to stay up to date with latest release of the library. Please open an issue if something is misleading or could be improved.
The Cabana programming guide covers core concepts and directed examples of using the library API. Cabana is built on Kokkos - understanding of Kokkos concepts and syntax is a necessary prerequisite (Kokkos wiki). Other optional libraries are used for specific purposes within Cabana as shown in the figure below, each with a separate tutorial example.
Some relevant similarities and differences between Cabana and Kokkos are noted here.
-
Particle data structures:
-
Particle algorithms:
Note: these are likely best understood in this order.
Optional grid and particle-grid infrastructure is also included in Cabana.
Originally a separate library called Cajita, the Cabana::Grid subpackage provides logically rectilinear grids, algorithms and parallel iteration over those grids, and particle-grid algorithms.
-
Uniform grid data structures
-
Grid algorithms
- Grid Parallel
- FFT (Experimental) through optional heFFTe library
- Structured solvers
- Structured solvers through optional HYPRE library
-
Grid MPI communication
- Halo
- Load balancing (Experimental) through optional ALL library
-
Particle-grid algorithms
-
Sparse Grid (in progress)
Cabana - A Co-Designed Library for Exascale Particle Simulations