DDC
DDC is a C++-17 library that aims to offer to the C++/MPI world an equivalent to the xarray python environment. Where the python version is based on numpy, DDC relies on Kokkos to offer CPU/GPU performance-portable multi-dimensional arrays and iterators.
DDC aims to offer abstractions to represent:
- tagged continuous dimensions,
- discretizations of these (multiple kinds of meshes, function spaces, Fourier, etc.),
- domains in these discretized dimensions,
- associating data to the elements of these discrete domains,
- efficient distribution and iteration over this data.
All these abstractions are handled at compilation using C++ template meta-programming to ensure zero overhead at execution and enable developers to change their design choices (eg. from a regular mesh to a non-uniform one) with performance portability.