# Nektar++

Nektar++ is a spectral/hp element framework designed to support the construction of efficient high-performance scalable solvers for a wide range of partial differential equations (PDE). The code is released as open-source under the MIT license. Although primarily driven by application-based research, it has been designed as a platform to support the development of novel numerical techniques in the area of high-order finite element methods.
Nektar++ is modern object-oriented code written in C++ and is being actively developed by members of the SherwinLab at Imperial College London (UK) and Kirby's group at the University of Utah (US).

## Capabilities

Nektar++ includes the following capabilities:
* One-, two- and three-dimensional problems;
* Multiple and mixed element types, i.e. triangles, quadrilaterals, tetrahedra, prisms and hexahedra;
* Both hierarchical and nodal expansion bases with variable and heterogeneous polynomial order between elements;
* Continuous Galerkin, discontinuous Galerkin, hybridizable discontinuous Galerkin and flux reconstruction operators;
* Multiple implementations of finite element operators for efficient execution on a wide range of CPU architectures;
* Comprehensive range of explicit, implicit and implicit-explicit (IMEX) time-integration schemes;
* Preconditioners tailored to high-order finite element methods;
* Numerical stabilization techniques such as dealiasing and spectral vanishing viscosity;
* Parallel execution and scalable to thousands of processor cores;
* Pre-processing tools to generate meshes, or manipulate and convert meshes generated with third-party software into a Nektar++-readable format;
* Extensive post-processing capabilities for manipulating output data;
* Cross platform support for Linux, Mac OS X and Windows;
* Support for running jobs on cloud computing platforms via the prototype Nekkloud interface from the libhpc project;
* Wide user community, support and annual workshop.
Stable versions of the software are released on a 1-month basis and it is supported by an extensive testing framework which ensures correctness across a range of platforms and architectures.
Other capabilities currently under active development include p-adaption, r-adaption and support for accelerators (GPGPU, Intel Xeon Phi).

## Application domains

The development of the Nektar++ framework is driven by a number of aerodynamics and biomedical engineering applications and consequently the software package includes a number of pre-written solvers for these areas.

### Incompressible flow

This solver time-integrates the incompressible Navier-Stokes equations for performing large-scale direct numerical simulation (DNS) in complex geometries. It also supports the linearised and adjoint forms of the Navier-Stokes equations for evaluating hydrodynamic stability of flows.

### Compressible flow

External aerodynamics simulations of high-speed compressible flows are supported through solution of the compressible Euler or Navier-Stokes equations.

### Cardiac Electrophysiology

This solver supports the solution of the monodomain model and bidomain model of action potential propagation through myocardium.

### Other application areas

* shallow water equations;
* reaction-diffusion-advection problems;
* pulse wave propagation solver for modelling arterial networks;
* acoustic perturbation equations;
* linear elasticity equations.

## License

Nektar++ is free and open source software, released under the MIT license.

## Alternative software
### Free and open-source software

* Nek5000 (BSD)
* Advanced Simulation Library (AGPL)
* Code Saturne (GPL)
* FEATool Multiphysics
* Gerris Flow Solver (GPL)
* OpenFOAM (GPL)
* SU2 code (LGPL)
* PyFR

### Proprietary software

* ADINA CFD
* ANSYS CFX
* ANSYS Fluent
* COMSOL Multiphysics
* Pumplinx
* Simcenter STAR-CCM+
* KIVA (software)
* RELAP5-3D