Nektar++: Open-Source Spectral/HP Framework
Nektar++: Open-Source Spectral/HP Framework
C. D. Cantwella,∗, D. Moxeya , A. Comerforda , A. Bolisa , G. Roccoa , G. Mengaldoa , D. de Graziaa , S. Yakovlevb , J.-E. Lombarda ,
D. Ekelschota , B. Jordia , H. Xua , Y. Mohamieda , C. Eskilssonc , B. Nelsonb , P. Vosa , C. Biottoa , R. M. Kirbyb , S. J. Sherwina
a Department of Aeronautics, Imperial College London, London, UK
b Schoolof Computing and Scientific Computing and Imaging (SCI) Institute, Univ. of Utah, Salt Lake City, UT, USA
c Department of Shipping and Marine Technology, Chalmers University of Technology, Gothenburg, Sweden
Abstract
Nektar++ 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. High-order methods are gaining prominence in several engi-
neering and biomedical applications due to their improved accuracy over low-order techniques at reduced computational cost for
a given number of degrees of freedom. However, their proliferation is often limited by their complexity, which makes these meth-
ods challenging to implement and use. Nektar++ is an initiative to overcome this limitation by encapsulating the mathematical
complexities of the underlying method within an efficient C++ framework, making the techniques more accessible to the broader
scientific and industrial communities. The software supports a variety of discretisation techniques and implementation strategies,
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, while the associated collection of pre-written PDE solvers provides out-of-the-box application-level
functionality and a template for users who wish to develop solutions for addressing questions in their own scientific domains.
PROGRAM SUMMARY
Manuscript Title: Nektar++: An open-source spectral/hp element framework
Authors: C. D. Cantwell, D. Moxey, A. Comerford, A. Bolis, G. Rocco, G. Mengaldo, D. de Grazia, S. Yakovlev, J.-E. Lombard, D. Ekelschot,
B. Jordi, H. Xu, Y. Mohamied, C. Eskilsson, B. Nelson, P. Vos, C. Biotto, R. M. Kirby, S. J. Sherwin
Program Title: Nektar++
Journal Reference:
Catalogue identifier:
Licensing provisions: MIT
Programming language: C++
Computer: Any PC workstation or cluster
Operating system: Linux/UNIX, OS X, Microsoft Windows
RAM: 512 MB
Number of processors used: 1-1024
Supplementary material:
Keywords: spectral/hp element method, computational fluid dynamics
Classification: 12 Gases and Fluids
External routines/libraries: Boost, METIS, FFTW, MPI, Scotch, PETSc, TinyXML, Loki
Nature of problem: The Nektar++ framework is designed to enable the discretisation and solution of time-independent or time-dependent partial
differential equations.
Restrictions:
Unusual features:
Additional comments:
Running time: The tests provided take a few minutes to run. Runtime in general depends on mesh size and total integration time.
Keywords: High-Order Finite Elements, Spectral/hp Elements, Continuous Galerkin Method, Discontinuous Galerkin Method,
FEM.
which evaluates the solution represented by û, on the basis Physical regions, shown in Fig. 2(b), are an extension of a
φn , at the quadrature points ξ. This operation requires the reference element augmented with geometric information and
basis matrix B and therefore evaluates the result as u = a mapping between the two regions. As such, the physical el-
Bû. ement types implemented in the LocalRegions library inherit
their StdRegions counterparts and override core operations,
• IProductWRTBase: f 7→ fˆn = E f (ξ)φn (ξ) dξ,
R
such as integration and differentiation, to incorporate the geo-
which computes the inner product of a function with re- metric information. For example, the inner product operation
spect to the basis. The discrete approximation of integra- becomes
P
tion, Gaussian quadrature, leads to f̂[i] ≈ q wq f (ξq )φi (ξq ) Z
which can be expressed in matrix form as f̂ = B> Wf, f (x) 7→ fi =
ˆ f (x)φi (x) dx
Ωe
where W is a diagonal matrix containing the integration
weights wq .
which, in discrete form is evaluated as f̂[i] ≈
∂u
P
• PhysDeriv: u 7→ ∂ξi , q Jw q f (ξ )φ (ξ
q i q ). Here we have incorporated J, the de-
which computes the derivative of u with respect to the terminant of the Jacobian of χe . Similarly, for differentiation,
∂u P ∂ξ ∂u
d coordinates of the element, with matrix representation the chain rule gives rise to u 7→ ∂xi
= nj=1 ∂xij ∂ξ j
. Both J and
∂ξ
u0 = Du. the terms ∂xij are provided by the GeomFactors classes.
These operators can be combined to produce more complex op- To identify the relationship between the different libraries
erators such as the mass matrix, and their respective contributions to the above core operations,
Fig. 2(d) illustrates how the different libraries examined so far
M = B> WB. contribute to the implementation of the backward transform on
a given element Ωe .
With this we can project a solution onto the discrete space using
the FwdTrans operation. This requires solving the projection
3.6. MultiRegions library
problem uδ (ξ) = f (ξ). In the weak sense, this has the form
Z Z So far, operations have only been defined on the physical el-
vδ (ξ)uδ (ξ) dξ = vδ (ξ) f (ξ) dξ emental regions; to define operators on the entire domain the
E E elemental regions are assembled. The MultiRegions library
5
(a) StdRegions (b) LocalRegions (c) SpatialDomains
Figure 2: Example of class inheritance structure for two-dimensional regions. Each LocalRegions class (b) inherits base functionality from the corresponding
StdRegions class (a). Inheritance is used to minimise code duplication. The Expansion class contains member pointers to Geometry and GeomFactors objects
(c). Operations, such as a transform from coefficient to physical space (d), on a physical element are constructed as a composition of functionality from the different
libraries.
encapsulates the global representation of a solution across a ditions are frequently Dirichlet, Neumann or Robin constraints,
domain comprising of one or more elemental regions. While depending upon the application area, other more complex con-
the same type of basis functions must be used throughout the ditions can be implemented by the user if needed. The spec-
domain, the order of the polynomials for each expansion may ification of boundary conditions in the input file is generic to
vary between elements. Assembly is the process of summing support this.
local elemental contributions to construct a global representa- • Boundary regions are defined using one or more mesh
tion of the solution on the domain. The information to con- composites. For example, the following XML describes
struct this mapping is derived from the elemental mappings of two regions constructed from three composites on which
modes to vertices, edges and faces of the element. Mathemat- different constraints are to be imposed:
ically, this operation can be represented as a highly sparse ma-
trix, but it is practically implemented as an injective map in <B ID = " 0 " > C [1 ,3] </B >
<B ID = " 1 " > C [2] </B >
the AssemblyMap classes. Different maps are used for differ-
ent projections; in particular, the AssemblyMapCG class sup-
• The conditions to be imposed on each boundary region for
ports the exchange of neighbouring contributions in continuous
each variable are described using XML element tags to
Galerkin projections, while the AssemblyMapDG supports the
indicate the underlying type of condition:
mapping of elemental data onto the trace space in the discon-
tinuous Galerkin method. – D: Dirichlet;
The resulting assembly of the elemental matrix contributions – N: Neumann;
leads to a global linear system in the GlobalLinSys classes. – R: Robin.
This may be solved using a variety of linear algebra techniques
including direct Cholesky factorisation and iterative precondi- For example, the following excerpt defines an in-flow
tioned conjugate gradient. Substructuring (multi-level static boundary using a high-order Neumann boundary condi-
condensation) allows for a more efficient solution of the ma- tion on the pressure:
trix system. As well as a traditional Jacobi preconditioner, spe- < REGION REF = " 0 " >
cialist Preconditioner classes tailored to high-order methods <D VAR = " u " VALUE = " 0 " / >
are also available[14]. These include a coarse-space precon- <D VAR = " v " VALUE = " 0 " / >
<D VAR = " w " VALUE = " y *(1 - y ) " / >
ditioner, block preconditioner and low-energy preconditioner
<N VAR = " p " US E RD EF IN E DT YP E = " H " VALUE = " 0 " / >
[15]. Performance of the conjugate gradient solver is depen- </ REGION >
dent on both the efficiency of the matrix-vector operation and
inter-process communication. The rich parameter space of a The USERDEFINEDTYPE attribute specifies the user-
high-order elemental discretisation may be leveraged by pro- implemented condition to be used. The REF attribute cor-
viding multiple implementations of the core operators, each of responds to the ID of the boundary region.
which perform efficiency across a subset of the parameter space The list of boundary regions and their constraints is man-
on different hardware architectures. This has been extensively aged by the BoundaryConditions data structure in the
explored in the literature [16, 17, 18]. The gather-scatter op- SpatialDomains library. The enforcement of the bound-
eration necessary for evaluating operations in parallel is imple- ary conditions on the solution is implemented at the
mented in the gslib library [19], developed within Nek5000. MultiRegions level of the code (and above) during the con-
Finally, a PETSc interface is available which provides access to struction and use of domain-wide operators. User-defined
a range of additional solvers. boundary conditions are implemented in specific solvers. For
example both high-order Neumann boundary conditions and a
3.7. Boundary Conditions radiation boundary condition are supported by the incompress-
Boundary-value problems require the imposition of con- ible Navier-Stokes solver.
straints at the boundaries of the domain. Although these con-
6
3.8. SolverUtils library 3.10. Implementing solvers using Nektar++
The SolverUtils library provides the top-level building To conclude this section, we outline how one can construct a
blocks for constructing application-specific solvers. This in- time-dependent solver for the unsteady diffusion problem using
cludes core functionality, such as IO, time-stepping [20] and the Nektar++ framework, solving
common initialisation routines, useful in quickly constructing
∂u
a solver using the Nektar++ framework. It contains a library = ∇2 u on Ω
of application-independent modules for implementing diffusion ∂t
and advection terms as well as a number of Driver mod- u = gD on ∂Ω.
ules which implement general high-level algorithms, such as an
This can be implemented with the following key steps as out-
Arnoldi method for performing various stability analyses [21].
lined below. Only the key statements are shown to illustrate the
use of the library. Full source code for this example is included
3.9. Solvers
in Appendix A.12.
Nektar++ includes a number of pre-written solvers for some
• Create a SessionReader object to load and parse the in-
common PDEs, developed for our own research. Some exam-
put files. This provides access for the rest of the library to
ples, outlined in the next section, include incompressible and
the XML input files supplied by the user. It also initiates
compressible Navier-Stokes equations, the cardiac electrophys-
MPI communication if needed.
iology monodomain equation, shallow water equations and a
solver for advection-diffusion-reaction problems. The modu- session = LibUtilities::SessionReader
::CreateInstance(argc, argv);
lar nature of the code, combined with the mathematically mo-
tivated class hierarchy allows the code to be adapted and ex- • Create MeshGraph and field objects to generate the hierar-
tended to rapidly address a range of application and numerical chical mesh entity data structures and allocate storage for
questions. the global solution. The mesh provides access to the ge-
To illustrate the use of the framework, we first consider the ometric information about each element and the connec-
solution of the Helmholtz equation, since this is a fundamen- tivity of those elements to form the domain. In contrast,
tal operation in the solution of many elliptic partial differential the field object represents a solution on the domain and
equations. The problem is described by the following PDE and provides the finite element operators.
associated boundary conditions:
var = session->GetVariable(0);
∇2 u − λu + f = 0 on Ω, mesh = SpatialDomains::MeshGraph
::Read(session);
u = gd on ∂Ω, field = MemoryManager<MultiRegions::ContField2D>
∂u ::AllocateSharedPtr(session, mesh, var);
= gn on ∂Ω.
∂x • Get the coordinates of the quadrature points on all ele-
We put this into the weak form and after integration by parts, ments and evaluate the initial condition
this gives,
Z Z Z Z field->GetCoords(x0,x1,x2);
icond->Evaluate(x0, x1, x2, 0.0, field->UpdatePhys());
∇u · ∇v dx + λ uv dx = f v dx + v · ∇u dx. (2)
Ω Ω Ω ∂Ω
• Perform backward Euler time integration of the initial con-
Approximating u and v with their finite-dimensional counter- dition for the number of steps specified in the session file,
parts and substituting into Equation 2 we obtain where epsilon is the coefficient of diffusion.
XX Z XX Z
ûn v̂m ∇Φm · ∇Φn + λ ûn v̂m Φn · Φn for (int n = 0; n < nSteps; ++n)
Ω Ω {
m n m n
Z Z Vmath::Smul(nq, -1.0/delta_t/epsilon,
X XX
field->GetPhys(), 1,
= v̂n f · Φn + ûn v̂m Φn · ∇Φn , field->UpdatePhys(), 1);
n Ω n m ∂Ω
(c)
Figure 4: Examples of external aerodynamics problems solved using the CompressibleFlowSolver. (a) Flow over a cylinder at Re = 3, 900. (b) Euler simulation
of flow over a NACA0012 aerofoil at Ma∞ = 0.8. (c) Temperature of flow passing over a T106C low-pressure turbine blade at Re = 80, 000. Simulation input files
are provided in Appendices A.15, A.16 and A.17, respectively.
To discretise these equations in space, we adopt an approach technique which makes use of artificial viscosity to damp os-
which allows for the resolution of discontinuities and shocks cillations in the solution, in conjunction with a discontinuity
that may appear in the solution at transonic and supersonic flow sensor adapted from the approach taken in [30] to decide where
speeds. We therefore use approximations to our solution com- the addition of artificial viscosity is needed.
prised of functions which are not continuous across element Figure 4 shows representative results from compressible flow
boundaries. Traditionally, we follow a Galerkin approach by simulations of a number of industrially relevant test cases. We
utilising the variational form of the equations in order to ob- first highlight two simulations which utilise the Navier-Stokes
tain the discontinuous Galerkin method. One of the key fea- equations. Fig. 4(a) demonstrates the three-dimensional ver-
tures of Nektar++ is the ability to select a wide range of nu- sion of the compressible solver showing flow over a cylinder
merical options, and to this end we support both discontinuous at Re = 3,900. In this figure we visualise isocontours of the
Galerkin and flux reconstruction spatial discretisations, which pressure field and colour the field according to the density ρ.
have various numerical equivalences [27] but may possess dif- To demonstrate the shock capturing techniques available in the
ferent performance characteristics. In the flux reconstruction code, Fig. 4(b) shows the results of an Euler simulation for
formulation, we instead use the equation in differential form in flow over a NACA0012 aerofoil at a farfield Mach number
combination with correction functions which impose continuity Ma∞ = 0.8 and a 1.5◦ angle of attack. The transonic Mach
of fluxes between elements. number of this flow leads to the development of a strong and
In either case, information is transferred between elements weak shock along the upper and lower surfaces of the wing re-
by solving a one-dimensional Riemann problem at the interface spectively. This figure shows isocontours of the Mach number
between two elements. For the non-viscous terms there is sup- where the presence of the shocks are clearly identified. Finally,
port for a wide variety of Riemann solvers, including an exact in Fig. 4(c), we visualise the temperature field from flow pass-
solution or a number of approximate solvers such as HLLC, ing over a T106C low-pressure turbine blade at Re = 80,000
Roe and Lax-Friedrichs solvers [28]. For the viscous terms, we to highlight applications to high Reynolds number flow simula-
utilise a local discontinuous Galerkin method (or the equivalent tions.
flux reconstruction version). Boundary conditions are imple-
mented in a weak form by modifying the fluxes for both the 4.2. Transitional turbulent flow dynamics
non-viscous and viscous terms [29]. Various versions of the Transient problems in which turbulence dominates the flow
discontinuous Galerkin method which are available throughout domain, or in which the transition to turbulence dominates the
the literature, mostly relating to the choices of modal functions simulation, remain some of the most challenging problems to
and quadrature points, can also be readily selected by setting resolve in computational fluid simulations. Here, accurate nu-
appropriate options in the input file. merical schemes and high resolution of the domain is critical.
Given the complexity and highly nonlinear form of these Moreover, any choice of scheme must be efficient in order to ob-
equations, we adopt a fully explicit formulation to discre- tain results in computationally feasible time-scales. Tradition-
tise the equations in time, allowing us to use any of the ex- ally, highly resolved turbulence simulations, such as the Taylor-
plicit timestepping algorithms implemented through the gen- Green vortex problem, lie firmly in the class of spectral meth-
eral linear methods framework [20], including 2nd and 4th order ods. However, spectral methods typically lead to strong geom-
Runge-Kutta methods. Finally, in order to stabilise the flow etry restrictions which limits the domain of interest to simple
in the presence of discontinuities we utilise a shock capturing shapes such as cuboids or cylinders.
9
(a)
(b)
(c)
(b)
form is given by
∂U ∂U
+H = S, (8)
∂t ∂x
" # " # " #
U U A 0
U= , H = ∂p , S= 1f ,
A ρ ∂A U ρ A −s
(d)
in which A is the Area (related to pressure), x is the axial coor-
dinate along the vessel, U(x, t) the axial velocity, P(x, t) is the
pressure in the tube, ρ is the density and finally f the frictional
force per unit length. The unknowns in Equ. (8) are u, A and
p; hence, we must provide an explicit algebraic relationship to
close this system. Typically, closure is provided by an algebraic
relationship between A and p.
Figure 7: Solitary wave impinging a stationary cylinder. The colours and sur- For a thin elastic tube this is given by
face deformation illustrate the height of the surface at times (a) t = 4.5s; (b)
t = 5.5s; (c) t = 8.5s; and (d) t = 12.5s. Simulation input files are provided in
√
√ p πhE
Appendix A.20. p = p0 + β A − A0 , β = , (9)
(1 − ν2 )A0
Figure 10: Calculation of mass transport in an intercostal pair. (a) Inflow boundary condition for fluid simulation computed by solving a Poisson problem on
the inflow surface. (b) Flow computed using the incompressible Navier-Stokes equations. (c) Mass transport of low diffusion coefficient species simulated using
the advection-diffusion solver with Pe = 7.5 × 105 . Non-dimensional gradient of concentration (Sherwood number) at the wall is shown. (d) Detailed view of
non-dimensional concentration gradient at intercostal branches. Simulation input files are provided in Appendix A.23.
5. Discussion & Future Directions code merged into the main codebase, thereby always maintain-
ing a stable distribution. New bugs and feature requests are
The Nektar++ framework provides a feature-rich platform recorded using the Trac [46] issue-management system. To en-
with which to develop numerical methods and solvers in the able cross-platform compatibility Nektar++ uses CMake [47]
context of spectral/hp element methods. It has been designed to manage the creation of build scripts, which also allows the
in such a way that the libraries reflect the mathematical abstrac- automatic download and compilation of additional third-party
tions of the method, to simplify uptake for new users, as well libraries and simplifies the configuration and installation for the
as being written in a modular manner to improve the robustness end-user. Boost [48] data structures and algorithms are used
of the code, minimise duplication of functionality and promote throughout the code to simplify complex data management, im-
sustainability. prove code modularity and avoid the introduction of memory
leaks. While the templated nature of many of the Boost libraries
significantly adds to compilation times, we consider the bene-
Development & Tools fits to code robustness justify its use.
The development of a complex and extensive software Testing is a critical part of the development cycle for any
project such as Nektar++ necessitates the adoption of certain software project and regression tests ensure new features do not
development practices to enable developers to easily write new break existing functionality and ensures the code base remains
code without breaking the existing code for other users of the stable when new features are implemented. Continuous integra-
framework. The code is managed using the git distributed ver- tion using a publically accessible buildbot service [49], builds
sion control system [45] due to its performance, enhanced sup- and executes these tests after each update to the master branch
port for branching, as well as allowing off-line development. of the code, across a range of operating systems, architectures
All development is performed in branches and only after rig- and configuration options. The system may also be used by de-
orous multi-architecture testing and internal peer-review is new velopers to test other branches prior to inclusion in the main
14
codebase. (a) 140
Nektar++ makes extensive use of C++ programming pat-
120
terns to decouple and manage components of the code and
the creation of objects at runtime. As well as limiting inter- 100
dependencies within the source code, it improves compila-
Speedup (T32/T)
tion times, enforces modularity and simplifies compile-time 80
selection of features and functionality. Design patterns for-
60
malise many aspects of writing high-quality, robust code and
we briefly outline some of the key patterns used within Nek- 40
tar++.
The Template method pattern provides separation between 20
Ideal
algorithms and specific implementation. A general algorithm is HECTOR
0
implemented in a C++ base class, while particular aspects of 0 500 1000 1500 2000 2500 3000 3500 4000 4500
the algorithm implementation are overridden in derived classes Nproc
through the use of protected virtual functions. These derived
classes could correspond to specific element shapes or Galerkin (b) 140
Speedup (T24/T)
code at compilation time. The technique is used extensively
within the libraries as a means to decouple components of the 80
File: stability.zip
Acknowledgments
Figure A.19: Nektar++ input files for computing the leading direct and ad-
joint eigenmodes of incompressible flow past a cylinder at Re=42 using the
Nektar++ has been developed over a number of years and we IncNavierStokesSolver.
would like to thank the many people who have made contri-
butions to the specific application codes distributed with the File: solitary.zip
libraries. In particular, we would like to acknowledge the Figure A.20: Nektar++ input files for simulating a solitary wave impinging on
contribution of Christian Roth for initial developments on the a stationary circular cylinder using the ShallowWaterSolver.
pulse-wave solver, Kilian Lackhove for work on extending the
acoustic perturbation equations solver and Rheeda Ali, Eugene File: atrium.zip
Chang and Caroline Roney for contributing to the cardiac elec- Figure A.21: Nektar++ input files for simulating the propagation of an acti-
trophysiology solver. vation wavefront across a heterogeneous anatomically realistic model of the
The development of Nektar++ has been supported by human left atrium using the CardiacEPSolver.
a number of funding agencies including Engineering and
Physical Sciences Research Council (grants EP/L000407/1, File: pulsewave.zip
EP/K037536/1, EP/K038788/1, EP/L000261/1, EP/I037946/1, Figure A.22: Nektar++ input files for modelling pulse wave propagation along
EP/H000208/1, EP/I030239/1, EP/H050507/1, EP/D044073/1, the centreline of a carotid bifurcation using the PulseWaveSolver.
EP/C539834/1), the British Heart Foundation (grants
FS/11/22/28745 and RG/10/11/28457), the Royal Society File: mass-transport.zip
of Engineering, McLaren Racing, the National Science Foun- Figure A.23: Nektar++ input files for calculating mass transport in
dation, the Army Research Office, the Air Force Office of an intercostal pair using the IncNavierStokesSolver, ADRSolver and
Scientific Research and the Department of Energy. FieldConvert utility.
References
Appendix A. Supplementary material [1] A. T. Patera, A spectral element method for fluid dynamics: laminar flow
in a channel expansion, Journal of computational Physics 54 (3) (1984)
468–488.
[2] I. Babuska, B. A. Szabo, I. N. Katz, The p-version of the finite element
File: Diffusion.cpp method, SIAM journal on numerical analysis 18 (3) (1981) 515–545.
[3] G. E. Karniadakis, S. J. Sherwin, Spectral/hp element methods for CFD,
Figure A.12: Implementation, using the Nektar++ framework, of a solver for Oxford University Press, 2005.
the unsteady diffusion problem advanced with backward-Euler time integration. [4] H. M. Blackburn, S. Sherwin, Formulation of a galerkin spectral element–
fourier method for three-dimensional incompressible flows in cylindrical
geometries, Journal of Computational Physics 197 (2) (2004) 759–778.
[5] P. Fischer, J. Kruse, J. Mullen, H. Tufo, J. Lottes, S. Kerkemeier,
File: DiffusionTimeInt.cpp
Nek5000–open source spectral element cfd solver, Argonne National
Laboratory, Mathematics and Computer Science Division, Argonne, IL,
Figure A.13: Implementation of a solver, using the Nektar++ framework,
see https://nek5000. mcs. anl. gov/index. php/MainPage.
for the unsteady diffusion problem using the general linear methods time-
[6] T. Vejchodskỳ, P. Šolı́n, M. Zı́tka, Modular hp-FEM system HERMES
integration approach.
and its application to Maxwells equations, Mathematics and Computers
in Simulation 76 (1) (2007) 223–228.
16
[7] A. Dedner, R. Klöfkorn, M. Nolte, M. Ohlberger, A generic interface for in: 7th AIAA Theoretical Fluid Mechanics Conference, AIAA Aviation,
parallel and adaptive discretization schemes: abstraction principles and American Institute of Aeronautics and Astronautics, 2014.
the DUNE-FEM module, Computing 90 (3-4) (2010) 165–196. [30] P.-O. Persson, J. Peraire, Sub-cell shock capturing for discontinuous
[8] W. Bangerth, R. Hartmann, G. Kanschat, deal.II–a general-purpose Galerkin methods, AIAA 112.
object-oriented finite element library, ACM Transactions on Mathemat- [31] M. Breuer, N. Peller, C. Rapp, M. Manhart, Flow over periodic hills–
ical Software (TOMS) 33 (4) (2007) 24. numerical and experimental study in a wide range of Reynolds numbers,
[9] J. S. Hesthaven, T. Warburton, Nodal discontinuous Galerkin methods: Computers & Fluids 38 (2) (2009) 433–457.
algorithms, analysis, and applications, Vol. 54, Springer, 2007. [32] ERCOFTAC QNET-CFD Database for test case UFR 3-30, 2D Periodic
[10] F. Witherden, A. Farrington, P. Vincent, PyFR: An open source frame- Hill Flow: database of numerical and experimental results (2014).
work for solving advectiondiffusion type problems on streaming archi- URL http://qnet-ercoftac.cfms.org.uk/w/index.php/UFR 3-30 Referen
tectures using the flux reconstruction approach, Computer Physics Com- [33] W. E. Arnoldi, The principle of minimized iterations in the solution of
munications 185 (2014) 30283040. doi:10.1016/j.cpc.2014.07.011. the matrix eigenvalue problem, Quarterly of Applied Mathematics 9 (1)
[11] M. Dubiner, Spectral methods on triangles and other domains, Journal of (1951) 17–29.
Scientific Computing 6 (4) (1991) 345–390. [34] D. H. Peregrine, Long waves on a beach, Journal of Fluid Mechanics 27
[12] S. J. Sherwin, G. E. Karniadakis, A triangular spectral element method; (1967) 815–827.
applications to the incompressible Navier-Stokes equations, Computer [35] P. Madsen, H. Schäffer, Higher-order Boussinesq-type equations for sur-
Methods in Applied Mechanics and Engineering 123 (1-4) (1995) 189– face gravity waves: derivation and analysis, Philosophical Transactions
229. of the Royal Society London A 356 (1998) 3123–3184.
[13] M. G. Duffy, Quadrature over a pyramid or cube of integrands with a [36] M. Brocchini, A reasoned overview on Boussinesq-type models: the in-
singularity at a vertex, SIAM journal on Numerical Analysis 19 (6) (1982) terplay between physics, mathematics and numerics, Philosophical Trans-
1260–1262. actions of the Royal Society London A 469.
[14] H. M. Tufo, P. F. Fischer, Fast parallel direct solvers for coarse grid prob- [37] C. Eskilsson, S. Sherwin, Spectral/hp discontinuous Galerkin methods for
lems, Journal of Parallel and Distributed Computing 61 (2) (2001) 151– modelling 2D Boussinesq equations, Journal of Computational Physics
177. 212 (2006) 566–589.
[15] S. J. Sherwin, M. Casarin, Low-energy basis preconditioning for ellip- [38] C. D. Cantwell, S. Yakovlev, R. M. Kirby, N. S. Peters, S. J. Sherwin,
tic substructured solvers based on unstructured spectral/hp element dis- High-order spectral/hp element discretisation for reaction-diffusion prob-
cretization, Journal of Computational Physics 171 (1) (2001) 394–417. lems on surfaces: Application to cardiac electrophysiology, Journal of
[16] P. E. Vos, S. J. Sherwin, R. M. Kirby, From h to p efficiently: Imple- Computational Physics 257 (2014) 813–829.
menting finite and spectral/hp element methods to achieve optimal perfor- [39] M. Courtemanche, R. J. Ramirez, S. Nattel, Ionic mechanisms underly-
mance for low- and high-order discretisations, Journal of Computational ing human atrial action potential properties: insights from a mathematical
Physics 229 (13) (2010) 5161–5181. model, American Journal of Physiology-Heart and Circulatory Physiol-
[17] C. D. Cantwell, S. J. Sherwin, R. M. Kirby, P. H. J. Kelly, From h to p ogy 44 (1) (1998) H301.
efficiently: strategy selection for operator evaluation on hexahedral and [40] S. Sherwin, L. Formaggia, J. Peiro, V. Franke, Computational modelling
tetrahedral elements., Computers & Fluids 43 (2011) 23–28. of 1D blood flow with variable mechanical properties and its applica-
[18] C. D. Cantwell, S. J. Sherwin, R. M. Kirby, P. H. J. Kelly, From h to p tion to the simulation of wave propagation in the human arterial system,
efficiently: selecting the optimal spectral/hp discretisation in three dimen- International Journal for Numerical Methods in Fluids 43 (6-7) (2003)
sions, Math. Mod. Nat. Phenom. 6 (2011) 84–96. 673–700.
[19] P. Fischer, J. Lottes, D. Pointer, A. Siegel, Petascale algorithms for reactor [41] J. Alastruey, K. Parker, J. Peiró, S. Sherwin, Lumped parameter outflow
hydrodynamics, in: Journal of Physics: Conference Series, Vol. 125, IOP models for 1-D blood flow simulations: effect on pulse waves and param-
Publishing, 2008, p. 012076. eter estimation, Communications in Computational Physics 4 (2) (2008)
[20] P. E. Vos, C. Eskilsson, A. Bolis, S. Chun, R. M. Kirby, S. J. Sher- 317–336.
win, A generic framework for time-stepping partial differential equations [42] D. Moxey, M. D. Green, S. J. Sherwin, J. Peiró, An isoparametric
(PDEs): general linear methods, object-oriented implementation and ap- approach to high-order curvilinear boundary-layer meshing, Computer
plication to fluid problems, International Journal of Computational Fluid Methods in Applied Mechanics and Engineering 283 (2015) 636–650.
Dynamics 25 (3) (2011) 107–125. doi:10.1016/j.cma.2014.09.019.
[21] D. Barkley, H. Blackburn, S. J. Sherwin, Direct optimal growth analysis [43] D. Moxey, M. Hazan, J. Peiró, S. J. Sherwin, On the generation of curvi-
for timesteppers, International journal for numerical methods in fluids linear meshes through subdivision of isoparametric elements, to appear in
57 (9) (2008) 1435–1458. proceedings of Tetrahedron IV (Jan. 2014).
[22] S. Dong, G. E. Karniadakis, C. Chryssostomidis, A robust and accu- [44] C. Geuzaine, J.-F. Remacle, Gmsh: A 3-d finite element mesh gener-
rate outflow boundary condition for incompressible flow simulations ator with built-in pre- and post-processing facilities, International Jour-
on severely-truncated unbounded domains, Journal of Computational nal for Numerical Methods in Engineering 79 (11) (2009) 1309–1331.
Physics 261 (2014) 83–105. doi:10.1002/nme.2579.
[23] R. M. Kirby, S. J. Sherwin, Stabilisation of spectral/hp element methods [45] L. Torvalds, J. Hamano, GIT: Fast version control system (2014).
through spectral vanishing viscosity: Application to fluid mechanics mod- URL http://git-scm.com
elling, Computer methods in applied mechanics and engineering 195 (23) [46] Trac integrated SCM & project management (2014).
(2006) 3128–3144. URL http://trac.edgewall.org
[24] G. E. Karniadakis, M. Israeli, S. A. Orszag, High-order splitting meth- [47] CMake (2014).
ods for the incompressible Navier-Stokes equations, Journal of Computa- URL http://cmake.org
tional Physics 97 (2) (1991) 414–443. [48] Boost C++ libraries (2014).
[25] S. A. Orszag, M. Israeli, M. O. Deville, Boundary conditions for incom- URL http://www.boost.org
pressible flows, Journal of Scientific Computing 1 (1) (1986) 75–111. [49] Buildbot (2014).
[26] E. Ferrer, D. Moxey, S. J. Sherwin, R. H. J. Willden, Stability of projec- URL http://www.buildbot.net
tion methods for incompressible flows using high order pressure-velocity [50] J. Cohen, D. Moxey, C. Cantwell, P. Burovskiy, J. Darlington, S. J. Sher-
pairs of same degree: Continuous and Discontinuous Galerkin formula- win, Nekkloud: A software environment for high-order finite element
tions, Communications in Computational Physics 16 (3) (2014) 817–840. analysis on clusters and clouds, in: Cluster Computing (CLUSTER), 2013
doi:10.4208/cicp.290114.170414a. IEEE International Conference on, IEEE, 2013, pp. 1–5.
[27] D. de Grazia, G. Mengaldo, D. Moxey, P. E. Vincent, S. J. Sherwin, Con-
nections between the discontinuous Galerkin method and high-order flux
reconstruction schemes, International journal for numerical methods in
fluids 75 (12) (2014) 860–877. doi:10.1002/fld.3915.
[28] E. F. Toro, Riemann solvers and numerical methods for fluid dynamics: a
practical introduction, 3rd Edition, Springer, Berlin, New York, 2009.
[29] G. Mengaldo, D. De Grazia, J. Peiro, A. Farrington, F. Witherden, P. E.
Vincent, S. J. Sherwin, A guide to the implementation of boundary con-
ditions in compact high-order methods for compressible aerodynamics,
17