In the last ten years a collection of software frameworks has been put forward to try to bridge the gap between the mathematics of high-order methods and their implementation. A number of software packages already exist for fluid dynamics which implement high-order finite element methods, although these packages are typically targeted at a specific domain or provide limited high-order capabilities as an extension. A major challenge many practitioners have with spectral/hp elements and high-order methods, in general, is the complexity (in terms of algorithmic design) they encounter. In this section, we give an incomplete but representative summary of several of these attempts to overcome this challenge.

The *Nektar flow solver* is the predecessor to *Nektar++* and implements the spectral/hp
element method for solving the incompressible and compressible Navier-Stokes equations in
both 2D and 3D. While it is widely used and the implementation is computationally efficient
on small parallel problems, achieving scaling on large HPC clusters is challenging.
Semtex [11] implements the 2D spectral element method coupled with a Fourier
expansion in the third direction. The implementation is highly efficient, but can only be
parallelised through Fourier-mode decomposition. Nek5000 [29] is a 3D spectral
element code, based on hexahedral elements, which has been used for massively
parallel simulations up to 300,000 cores. The Non-hydrostatic Unified Model of the
Atmosphere (NUMA) [33] is a spectral element framework that employs continuous and
discontinuous Galerkin strategies for solving a particular problem of interest, but in a
way on which others could adopt and build. Hermes [63] implements hp-FEM for
two-dimensional problems and has been used in a number of application areas. Limited
high-order finite element capabilities are also included in a number of general purpose
PDE frameworks including the DUNE project [23] and deal.II [10]. FEniCS [48] is
a collaborative project for the development of scientific computing tools, with a
particular focus on the automated solution of differential equations by finite element
methods (FEM). Through the use of concepts such as meta-programming, FEniCS
tries to keep the solving of PDEs with FEM, from the application programmers’
perspective, as close to the mathematical expressions as possible without sacrificing
computational efficiency. A number of codes also implement high-order finite element
methods on GPGPUs including nudg++, which implments a nodal discontinuous
Galerkin scheme [37], and PyFR [67], which supports a range of flux reconstruction
techniques.