Nektar++ currently supports solving PDEs in up to three dimensions. Some problems, such as the Vlasov-Poisson equation in modelling plasma kinetics, requires the solution of a higher-dimensional PDE in a potentially six-dimensional position-velocity space. A natural solution to this is to construct a finite element space as a tensor-product of our existing lower-dimensional finite element spaces.
Implementation of a TensorRegions library, which represents a finite element space on a tensor-product of lower-dimensional finite element spaces (from MultiRegions). This MR provides the initial groundwork for this library, including the core data structures.
There are two core classes in the proposed TensorRegions library:
TensorRegion, which encapsulates the high-dimensional finite element space;
TensorStorage, which encapsulates the storage of a solution on such a space. The
TensorStorageclass has a subclass
TensorStorage::View, which allows one to operate on the data along a particular slice of the high-dimensional space (corresponding to one of the lower-dimensional spaces). There is also the ability to extract the data (of type
Array)from the view, as well as inject data back into the higher-dimensional storage.
This MR corresponds to deliverable D1.1 for the UKAEA project on solving high-dimensional plasma kinetics in Nektar++.
Functions and classes, or changes to them, are documented.
User guide/documentation is updated.
Changelog is updated.
Suitable tests added for new functionality.
Newly added files are correctly formatted.
License added to any new files.
No extraneous files have been added (e.g. compiler output or test data files).