Nektar++ [15], is an open-source software framework designed to support the development of high-performance scalable solvers for partial differential equations using the spectral/hp element method. What in part makes Nektar++ unique is that it is an initiative to overcome the mathematical complexities of the methods by encapsulating them within an efficient cross-platform C++ software environment, consequently making the techniques more accessible to the broader scientific and industrial communities. The software supports a variety of discretization techniques and implementation strategies [68, 17, 16, 12], supporting methods research as well as application-focused computation, and the multi-layered structure of the framework allows the user to embrace as much or as little of the complexity as they need. The libraries capture the mathematical constructs of spectral/hp element methods in the form of a hierarchy of C++ components, while the associated collection of pre-written PDE solvers provides out-of-the-box functionality across a range of application areas, as well as a template for users who wish to develop solutions for addressing questions in their own scientific domains.
The cross-platform nature of the software libraries enables the rapid development of solvers for use in a wide variety of computing environments. The code accommodates both small research problems, suitable for desktop computers, and large-scale industrial simulations, requiring modern HPC infrastructure, where there is a need to maintain efficiency and scalability up to many thousands of processor cores.
Nektar++ provides a single codebase with the following key features:
Arbitrary-order spectral/hp element discretisations in one, two and three dimensions;
Support for variable polynomial order in space and heterogeneous polynomial order within two- and three-dimensional elements;
High-order representation of the geometry;
Continuous Galerkin, discontinuous Galerkin and hybridised discontinuous Galerkin projections;
Support for a Fourier extension of the spectral element mesh;
Support for a range of linear solvers and preconditioners;
Multiple implementation strategies for achieving linear algebra performance on a range of platforms;
Efficient parallel communication using MPI showing strong scaling up to 8192-cores on Archer, the UK national HPC system;
A range of time integration schemes implemented using generalised linear methods; and
Cross-platform support for Linux, OS X and Windows operating systems.
In addition to the core functionality listed above, Nektar++ includes a number of solvers covering a range of application areas. A range of pre-processing and post-processing utilities are also included with support for popular mesh and visualization formats, and an extensive test suite ensures the robustness of the core functionality.