Chapter 1

Like with any software project, people want to know it origins: what motivated it, what and who drove it, and what constrained it. Nektar++ officially started as a project idea in 2004 in Salt Lake City, UT, USA, and we registered the first commit to SVN in 2006. The basic backstory is as follows: Mike Kirby (University of Utah) and Spencer Sherwin (Imperial College London) had both studied under George Karniadakis. Though Mike and Spencer did not overlap in terms of their studies (Spencer was a Princeton graduate while Mike was a Brown graduate), they both worked on Nektar, a spectral/hp element code supervised by George. George’s research group has had a long history of involvement in various software projects, e.g. PRISM (which has continued its existence under Professor Hugh Blackburn at Monash University) and Nektar. Spencer and George initiated the Nektar code with triangular (2D) and tetrahedral (3D) spectral/hp elements in the early 1990s, and the code grew and evolved with additions by Dr. Igor Lomtev, Dr. Tim Warburton, Dr. Mike Kirby, etc., all under the PhD advisor direction of George. Spencer graduated from Princeton under George’s supervision in 1995 and went on to Imperial College London as a faculty member; Mike graduated from Brown under George’s supervision in 2002 and went on to the University of Utah in 2002. In 2004, Mike and Spencer teamed up to re-write Nektar in light of modern C++ programming practices and in light of what had been learned in the decade or so since its foundation.

What were the observations that motivated Nektar++? The first observation was that Nektar’s origin was triangular and tetrahedral spectral/hp elements as applied to incompressible fluid mechanics problems (i.e., the incompressible Navier-Stokes equations). These ideas were extended to the compressible Navier-Stokes by Lomtev and the two parallel paths joined and extended into what is often called Hybrid Nektar by Tim Warburton. Hybrid Nektar (referred to as Nektar from here on out) used the C++ programming paradigm to facilitate hybrid elements: triangles and quadrilaterals in 2D and tetrahedra, hexahedra, prisms and pyramids in 3D. In addition, Warburton structured the code in a way that allowed extension to the Arbitrary Lagrangian Eulerian (ALE) formulation within Nektar, as well as various other features such as the Nektar Magneto-Hydrodynamics (MHD) solver. Mike was mentored (as a student) by Warburton and continued the expansion of Nektar (e.g. compressible ALE solver, fluid-structure interaction capabilities, etc.). The expansion of Nektar’s capabilities, under the direction of George Karniadakis, continues to this day (e.g., Stress-Nektar). The upside of this expansion was that Nektar could be expanded and used for solving more and more engineering problems; the downside, in our opinion, was that continually expanding and extending Nektar without re-evaluating its fundamental design meant that some components became quite cumbersome from the programming perspective.

The second observation that occurred was that spectral/hp elements, as used within the incompressible fluid mechanics world, could be viewed as a special case of the broader set of high-order finite element methods as applied to various fluid and solid mechanics systems. In fact, in a much wider context, these methods represent ways of discretizing various partial differential equations (PDEs) using their weak (variational) form. From this vantage point, one can see the commonality between strong-form methods such as spectral collocation and flux reconstruction, and weak-form methods such as traditional finite elements, spectral elements, and even discontinuous Galerkin methods. During the 1990s, it became more and more apparent that there was a broader context and a broader community for discussing and disseminating the ideas surrounding high-order finite elements, and correspondingly a fruitful environment for cross-pollination of ideas and programming practices.

With all this in mind, Mike and Spencer set out to re-architect Nektar from the ground up, and in homage to its C++ core, this new software suite was called Nektar++. 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 engineering 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 methods 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. Given the commonalities and connections between various strong-form and weak-form methods and their implementations, we use the term spectral/hpmethods to refer to the entire family of methods, from traditional FEM to discontinuous Galerkin (dG) to Flux Reconstruction (FR) and beyond.

The software supports a variety of discretization 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.

After five years of laying the groundwork for Nektar++, Dr. Chris Cantwell and Dr. David Moxey joined Spencer’s group at ICL. Their involvement in the project has greatly impacted the structure and capabilities of Nektar++, and has played a significant role in its success. In 2017, we formalized our Development Team structure. Kirby and Sherwin as Founders, along with Cantwell and Moxey, form the key Project Leaders. We established the following roles within the Nektar++ community:

This developer’s guide, like most of Nektar++, is not due to one sole person but an army of people each with different talents, skills and motivations. As we conclude this preface, we will now provide a short biography for the four editors of this volume, and also provide a listing of all the people who have contributed to this document.

Robert M. (Mike) Kirby : Prof. Mike Kirby is a Professor and the Associate Director of the School of Computing at the University of Utah.

Spencer J. Sherwin : Prof. Spencer Sherwin is a Professor of Computational Fluid Mechanics in the Department of Aeronautics at Imperial College London (UK).

Chris D. Cantwell : Dr. Chris Cantwell is a Senior Lecturer in Aeronautics in the Department of Aeronautics at Imperial College London (UK).

David Moxey : Dr. David Moxey is a Senior Lecturer in Engineering in the College of Engineering, Mathematics and Physical Sciences at the University of Exeter (UK).

Contributors : The thank all the various participants in the Nektar++ Project who have contributed to this document1 : Dr. Peter Vos (ICL) and Mr. Dav de St. Germain (Utah).

To see the full team and other current details about Nektar++, visit our website.

We hope that you find this developer’s guide of use to you, that you find Nektar++ helpful to your educational or industrial pursuits, and that like us, you will actively want to engage and contribute back to the Nektar++ community.

Mike Kirby
Spencer Sherwin
Chris Cantwell
David Moxey