preface.tex 5.11 KB
 Mike Kirby committed Mar 17, 2017 1 % Preface  Mike Kirby committed Apr 04, 2017 2 3 \chapter{Preface}  Mike Kirby committed Apr 04, 2017 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 Like with any software project, people want to know it origins: what motivated it, what and who drove it, and what constrained it. \nek{} 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 \emph{Nektar}, a \shp{} 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 Hugh Blackburn) and \emph{Nektar}. Spencer and George initiated the \emph{Nektar} code with triangular (2D) and tetrahedral (3D) \shp{} elements in the early 1990s, and the code grew and evolved with additions by Igor Lomtev, Tim Warburton, 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 \emph{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 \nek{}? The first observation was that \emph{Nektar}'s origin was triangular and tetrahedral \shp{} 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 \emph{Nektar} by Tim Warburton. Hybrid \emph{Nektar} (referred to as \emph{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 to allow extensions to the Arbitrary Lagrangian Eulerian (ALE) formulation within \emph{Nektar}, as well as various other features such as the \emph{Nektar} Magneto-Hydrodynamics (MHD) solver. Mike was mentored (as a student) by Warburton and continued to expansion of \emph{Nektar} (e.g. compressible ALE solver, fluid-structure interaction capabilities, etc.). The upside of this expansion was that \emph{Nektar} could be used for solver more and more engineering problems; the downside was that continually expanding and extending \emph{Nektar} without re-evaluating its fundamental design meant that some components became quite cumbersome from the programming perspective. The second observation was occurred was that \shp{} 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. 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 \emph{Nektar} from the ground up, and in homage to its C++ core, this new software suite was called \shp{}. \shp{} is an open-source software framework designed to support the development of high-performance scalable solvers for partial differential equations using the \shp 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. \nek{} 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 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 \shp{} 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.