Skip to content

Draft: Redesign of Nektar++ core data structures and algorithms

Chris Cantwell requested to merge feature/redesign into master

Issue/feature addressed

The existing Nektar++ design prevented the efficient use of vectorisation, GPUs and other current and future platforms. Assumptions made in the data structures did not allow for the reorganisation of memory to support vectorisation, or the use of memory on attached devices. Algorithms were tightly coupled to the ExpList class, creating a bottleneck for the development of new solvers.

Proposed solution

Redesign the core data structures and algorithms of Nektar++ to address the above concerns. A high-level Field class encapsulates the storage of solutions, tied to the nature of the representation (physical space, coefficient space, etc), tied to an abstraction of a memory back-end. Mathematical operations are represented as abstract Operators, with specific concrete implementations targeted to different platforms or programming models.

Implementation

New implementation is currently captured in the Operators library.

Tests

A range of unit tests have been added within the UnitTests directory.

Suggested reviewers

Everyone

Notes

It is anticipated that this MR will be merged by the release of v5.6, but will not be integrated with our solvers until a later release.

Checklist

  • Functions and classes, or changes to them, are documented.
  • User guide/documentation is updated.
  • Changelog is updated.
  • Suitable tests added for new functionality.
  • Contributed code is correctly formatted. (See the contributing guidelines).
  • License added to any new files.
  • No extraneous files have been added (e.g. compiler output or test data files).

Merge request reports