@book{KaSh05,
  title     = {Spectral/hp element methods for Computational Fluid Dynamics (Second Edition)},
  author    = {George Em Karniadakis and Spencer J. Sherwin},
  year      = {2005},
  publisher = {Oxford University Press}
}

@book{Schwab,
  title     = {p-- and hp-- Finite Element Methods: Theory and Applications in Solid and Fluid Mechanics},
  author    = {Ch. Schwab},
  year      = {1999},
  publisher = {Oxford University Press}
}

@book{KFN-testing,
  title     = {Testing Computer Software},
  author    = {Cem Kaner and Jack Falk and Hung Quoc Nguyen},
  year      = {2010},
  publisher = {John Wiley \& Sons}
}

@book{CanutoHQZ87,
  author    = {C. Canuto and M.Y. Hussaini and A. Quarteroni and T.A. Zang},
  title     = {{Spectral Methods in Fluid Mechanics}},
  publisher = {{Springer-Verlag, New York}},
  year      = {1987}
}


@book{Funaro92,
  author    = {D. Funaro},
  title     = {{Polynomial Approximations of Differential Equations: Lecture Notes in Physics, Volume 8}},
  publisher = {{Springer-Verlag, New York}},
  year      = {1992}
}

@book{KarniadakisK03,
  author    = {George Em Karniadakis and Robert M. Kirby},
  title     = {Parallel Scientific Computing in C++ and MPI},
  publisher = {Cambridge University Press},
  address   = {New-York, NY, USA},
  year      = 2003
}

@book{Hughes87,
  author    = {T. J. R. Hughes},
  title     = {The Finite Element Method},
  publisher = {Prentice-Hall, Inc.},
  year      = {1987},
  address   = {Englewood Cliffs, New Jersey}
}

@book{SzBa91,
  author    = {B.A. Szab\'{o} and I. Babu\v{s}ka},
  title     = {Finite Element Analysis},
  publisher = {John Wiley \& Sons},
  address   = {New York},
  year      = 1991
}

@book{TrefethenB97,
  author    = {Lloyd N. Trefethen and David Bau, III},
  title     = {Numerical Linear Algebra},
  publisher = {SIAM},
  address   = {Philadelphia, PA, USA},
  year      = 1997
}

@book{HGG,
  title     = {Spectral Methods for Time-Dependent Problems},
  author    = {Jan Hesthaven and Sigal Gottlieb and David Gottlieb},
  publisher = {Cambridge University Press},
  year      = {2007}
}

@book{Demmel97,
  author    = {James W. Demmel},
  title     = {Applied Numerical Linear Algebra},
  publisher = {SIAM},
  address   = {Philadelphia, PA, USA},
  year      = 1997
}

@book{Heath,
  title     = {Scientific Computing: An Introductory Survey},
  author    = {Michael T. Heath},
  publisher = {McGraw-Hill Companies},
  year      = {2002}
}

@book{CockburnKS,
  title     = {Discontinuous Galerkin Methods: Theory, Computation and Applications},
  author    = {Bernardo Cockburn and George Karniadakis and Chi-Wang Shu},
  publisher = {Springer-Verlag},
  year      = {2000}
}

@article{Pa84,
  title     = {A spectral element method for fluid dynamics: laminar flow in a channel expansion},
  author    = {Patera, Anthony T},
  journal   = {Journal of computational Physics},
  volume    = {54},
  number    = {3},
  pages     = {468--488},
  year      = {1984},
  publisher = {Elsevier}
}

@article{BaSzKa81,
  title     = {The p-version of the finite element method},
  author    = {Babuska, Ivo and Szabo, Barna A and Katz, I Norman},
  journal   = {SIAM journal on numerical analysis},
  volume    = {18},
  number    = {3},
  pages     = {515--545},
  year      = {1981},
  publisher = {SIAM}
}

@article{BlSh04,
  title     = {Formulation of a Galerkin spectral element--Fourier method for three-dimensional incompressible flows in cylindrical geometries},
  author    = {Blackburn, Hugh M and Sherwin, SJ},
  journal   = {Journal of Computational Physics},
  volume    = {197},
  number    = {2},
  pages     = {759--778},
  year      = {2004},
  publisher = {Elsevier}
}

@article{VeSoZi07,
  title     = {Modular $hp$-{FEM} system {HERMES} and its application to {M}axwell’s equations},
  author    = {Vejchodsk{\`y}, Tom{\'a}{\v{s}} and {\v{S}}ol{\'\i}n, Pavel and Z{\'\i}tka, Martin},
  journal   = {Mathematics and Computers in Simulation},
  volume    = {76},
  number    = {1},
  pages     = {223--228},
  year      = {2007},
  publisher = {Elsevier}
}

@article{DeKlNoOh11,
  title     = {A generic interface for parallel and adaptive discretization schemes: abstraction principles and the {DUNE-FEM} module},
  author    = {Dedner, Andreas and Kl{\"o}fkorn, Robert and Nolte, Martin and Ohlberger, Mario},
  journal   = {Computing},
  volume    = {90},
  number    = {3-4},
  pages     = {165--196},
  year      = {2010},
  publisher = {Springer}
}

@article{BaHaKa07,
  title     = {deal.{II}--a general-purpose object-oriented finite element library},
  author    = {Bangerth, Wolfgang and Hartmann, Ralf and Kanschat, Guido},
  journal   = {ACM Transactions on Mathematical Software (TOMS)},
  volume    = {33},
  number    = {4},
  pages     = {24},
  year      = {2007},
  publisher = {ACM}
}

@book{HeWa07,
  title     = {Nodal discontinuous Galerkin methods: algorithms, analysis, and applications},
  author    = {Hesthaven, Jan S and Warburton, Tim},
  volume    = {54},
  year      = {2007},
  publisher = {Springer}
}

@inproceedings{MeDePeFaWi14,
  title     = {A Guide to the Implementation of Boundary Conditions in Compact High-Order Methods for Compressible Aerodynamics},
  author    = {Mengaldo, G. and De Grazia, D. and Peiro, J. and Farrington, A. and Witherden, F. and Vincent, P. E. and Sherwin, S. J.},
  year      = {2014},
  booktitle = {7th AIAA Theoretical Fluid Mechanics Conference},
  series    = {AIAA Aviation},
  publisher = {American Institute of Aeronautics and Astronautics}
}

@article{WiFaVi14,
  title   = {{PyFR}: An open source framework for solving advection-diffusion type problems on streaming architectures using the flux reconstruction approach},
  author  = {Witherden, FR and Farrington, AM and Vincent, PE},
  journal = {Computer Physics Communications},
  year    = {2014},
  volume  = {185},
  issue   = {11},
  pages   = {3028–3040},
  doi     = {10.1016/j.cpc.2014.07.011}
}


%%% Software

@article{moxey2020efficient,
  title     = {Efficient matrix-free high-order finite element evaluation for simplicial elements},
  author    = {Moxey, D. and Amici, R. and Kirby, M.},
  journal   = {SIAM Journal on Scientific Computing},
  volume    = {42},
  number    = {3},
  pages     = {C97--C123},
  year      = {2020},
  publisher = {SIAM}
}


@article{VosSK2010,
  author  = {Peter E. J. Vos and Spencer J. Sherwin and Robert M. Kirby},
  title   = {h-to-p Efficiently: Implementing Finite and Spectral/hp Element Methods to Achieve Optimal Performance for Low- and High-Order Discretisations},
  journal = {Journal of Computational Physics},
  volume  = {229},
  issue   = {13},
  pages   = {5161-5181},
  year    = {2010}
}

@article{CantwellSKK2011a,
  author  = {C.D. Cantwell and S.J. Sherwin and R.M. Kirby and P.H.J. Kelly},
  title   = {From h-to-p Efficiently: Strategy Selection for Operator Evaluation on Hexahedral and Tetrahedral Elements},
  journal = {Computers and Fluids},
  volume  = {43},
  issue   = {1},
  pages   = {23-28},
  year    = {2011}
}


@article{CantwellSKK2011b,
  author  = {C.D. Cantwell and S.J. Sherwin and R.M. Kirby and P.H. Kelly},
  title   = {From h-to-p Efficiently: Selecting the Optimal Spectral/hp Discretisation in Three Dimensions},
  journal = {Math. Model. Nat. Phenom.},
  volume  = {6},
  number  = {3},
  pages   = {84-96},
  year    = {2011}
}

@article{BolisCKS2014,
  author  = {A. Bolis and C.D. Cantwell and R.M. Kirby and S.J. Sherwin},
  title   = {h-to-p efficiently: Optimal implementation strategies for explicit time-dependent problems using the spectral/hp element method},
  journal = {International Journal for Numerical Methods in Fluids},
  volume  = {75},
  issue   = {8},
  pages   = {591-607},
  year    = {2014}
}

@article{CantwellMCBRMGYLEJXMENVBKS2015,
  author  = {C.D. Cantwell and D. Moxey and A. Comerford and A. Bolis and G. Rocco and G. Mengaldo and D. de Grazia and S. Yakovlev and J-E Lombard and D. Ekelschot and B. Jordi and H. Xu and Y. Mohamied and C. Eskilsson and B. Nelson and P. Vos and C. Biotto and R.M. Kirby and S.J. Sherwin},
  title   = {Nektar++: An open-source spectral/hp element framework},
  journal = {Computer Physics Communications},
  volume  = {192},
  pages   = {205-219},
  year    = {2015}
}

@article{roberts_camellia:_2014,
  title      = {Camellia: {A} software framework for discontinuous {Petrov-Galerkin} methods},
  volume     = {68},
  shorttitle = {Camellia},
  abstract   = {The discontinuous Petrov-Galerkin (DPG) methodology of Demkowicz and Gopalakrishnan minimizes the solution residual in a user-determinable energy norm and offers a built-in mechanism for evaluating error in the energy norm, among other desirable features. However, the methodology also brings with it some additional complexity for researchers who wish to experiment with DPG in their computations. In this paper, we introduce Camellia, a software framework whose central design goal is to enable developers to create efficient hp-adaptive DPG solvers with minimal effort.},
  number     = {11},
  journal    = {Computers \& Mathematics with Applications},
  author     = {Roberts, Nathan V.},
  year       = {2014},
  pages      = {1581--1604}
}

@article{nelson_elvis:_2012,
  title      = {Elvis: {A} system for the accurate and interactive visualization of high-order finite element solutions},
  volume     = {18},
  shorttitle = {Elvis},
  abstract   = {This paper presents the Element Visualizer (ElVis), a new, open-source scientific visualization system for use with high-order finite element solutions to PDEs in three dimensions. This system is designed to minimize visualization errors of these types of fields by querying the underlying finite element basis functions (e.g., high-order polynomials) directly, leading to pixel-exact representations of solutions and geometry. The system interacts with simulation data through runtime plugins, which only require users to implement a handful of operations fundamental to finite element solvers. The data in turn can be visualized through the use of cut surfaces, contours, isosurfaces, and volume rendering. These visualization algorithms are implemented using NVIDIA's OptiX GPU-based ray-tracing engine, which provides accelerated ray traversal of the high-order geometry, and CUDA, which allows for effective parallel evaluation of the visualization algorithms. The direct interface between ElVis and the underlying data differentiates it from existing visualization tools. Current tools assume the underlying data is composed of linear primitives; high-order data must be interpolated with linear functions as a result. In this work, examples drawn from aerodynamic simulations-high-order discontinuous Galerkin finite element solutions of aerodynamic flows in particular-will demonstrate the superiority of ElVis' pixel-exact approach when compared with traditional linear-interpolation methods. Such methods can introduce a number of inaccuracies in the resulting visualization, making it unclear if visual artifacts are genuine to the solution data or if these artifacts are the result of interpolation errors. Linear methods additionally cannot properly visualize curved geometries (elements or boundaries) which can greatly inhibit developers' debugging efforts. As we will show, pixel-exact visualization exhibits none of these issues, removing the visualization scheme as a source of - ncertainty for engineers using ElVis.},
  number     = {12},
  journal    = {Visualization and Computer Graphics, IEEE Transactions on},
  author     = {Nelson, Blake and Liu, Eric and Kirby, Robert M. and Haimes, Robert},
  year       = {2012},
  pages      = {2325--2334}
}

@article{geuzaine_gmsh:_2009,
  title      = {Gmsh: {A} 3-{D} finite element mesh generator with built-in pre-and post-processing facilities},
  volume     = {79},
  shorttitle = {Gmsh},
  abstract   = {Gmsh is an open-source 3-D finite element grid generator with a build-in CAD
                engine and post-processor. Its design goal is to provide a fast, light and user-friendly
                meshing tool with parametric input and advanced visualization capabilities. This paper presents the overall philosophy, the main design choices and some of the original algorithms implemented in Gmsh. CopyrightÂ© 2009 John Wiley \& Sons, Ltd.},
  number     = {11},
  journal    = {International Journal for Numerical Methods in Engineering},
  author     = {Geuzaine, Christophe and Remacle, Jean-FranÃ§ois},
  year       = {2009},
  pages      = {1309--1331},
  file       = {[PDF] from geuz.org:/Users/aashok/Library/Application Support/Zotero/Profiles/7xumqoyz.default/zotero/storage/IASXUV6Z/Geuzaine and Remacle - 2009 - Gmsh A 3-D finite element mesh generator with bui.pdf:application/pdf}
}


@book{Nek5000,
  title     = {Nek5000 User Manual},
  author    = {Paul Fischer and James Lottes and Stefan Kerkemeier and Oana Marin and Katherine Heisey and Aleks Obabko and Elia Merzari and Yulia Peet},
  publisher = {ANL/MCS-TM-351},
  year      = {2014}
}

@book{DevilleFM02,
  title     = {High-Order Methods for Incompressible Fluid Flow},
  author    = {M.O. Deville and P.F. Fisher and E.H. Mund},
  publisher = {Cambridge University Press},
  year      = {2002}
}

@book{HesthavenW08,
  author    = {J.S. Hesthaven and T.C. Warburton},
  title     = {Nodal Discontinuous {G}alerkin Methods: Algorithms, Analysis, and Applications},
  publisher = {Springer Texts in Applied Mathematics 54. Springer Verlag: New York},
  year      = {2008}
}

@article{GiraldoKC13,
  author  = {F.X. Giraldo and J.F. Kelly and E.M. Constantinescu},
  title   = {Implicit explicit formulations of a three dimensional non-hydrostatic unified model of the atmosphere {(NUMA)}},
  journal = {SIAM Journal of Scientific Computing},
  volume  = {35},
  pages   = {1162-1194},
  year    = {2013}
}

@book{FEniCS,
  title     = {Automated Solution of Differential Equations by the Finite Element Method},
  author    = {Anders Logg and Kent-Andre Mardal and Garth Wells (editors)},
  publisher = {Springer Lecture Notes in Computational Science and Engineering, Volume 84},
  year      = {2012}
}

@article{AinsworthAD11,
  author  = {Mark Ainsworth and Gaelle Andriamaro and Oleg Davydov},
  title   = {Bernstein-B{\'e}zier Finite Elements of Arbitrary Order and Optimal Assembly Procedures},
  journal = {SIAM Journal of Scientific Computing},
  volume  = {33},
  issue   = {6},
  pages   = {3087-3109},
  year    = {2011}
}

@article{Ainsworth14,
  author  = {Mark Ainsworth},
  title   = {Pyramid Algorithms for Bernstein-B{\'e}zier Finite Elements of High, Nonuniform Order in Any Dimension},
  journal = {SIAM Journal of Scientific Computing},
  volume  = {36},
  issue   = {2},
  pages   = {A543-A569},
  year    = {2014}
}

@article{WarburtonPH00,
  author  = {T. Warburton and L.F. Pavarino and J.S. Hesthaven},
  title   = {A Pseudo-spectral scheme for the incompressible {N}avier-{S}tokes equations using unstructured nodal elements},
  journal = {J. Comp. Phys.},
  volume  = {164},
  pages   = {1-21},
  year    = {2000}
}

@article{Dubiner91,
  author  = {M. Dubiner},
  title   = {Spectral Methods on Triangles and Other Domains},
  journal = {J. Sci. Comp.},
  volume  = {6},
  pages   = {345},
  year    = {1991}
}

@article{Hesthaven98,
  author  = {Hesthaven, J.S. },
  title   = {From electrostatics to almost optimal nodal sets for
             polynomial interpolation in a simplex},
  journal = {SIAM J. Numer. Anal.},
  year    = {1998},
  volume  = {35},
  number  = {2},
  pages   = {655-676}
}

@article{TaylorWV00,
  author  = {Taylor, M. and Wingate, B.A. and Vincent, R.E.},
  title   = {An Algorithm for computing {F}ekete points in the triangle},
  journal = {SIAM J. Num. Anal.},
  year    = {2000},
  volume  = {38},
  pages   = {1707-1720}
}

@article{TaylorW99,
  author  = {Taylor, M. and Wingate, B.A.},
  title   = {The Fekete collocation points for triangular spectral elements},
  journal = {Journal on Numerical Analysis},
  year    = {1998}
}


@article{Duffy82,
  author  = {Duffy, M.G.},
  title   = {Quadrature over a pyramid or cube of integrands
             with a singularity at a vertex},
  journal = {SIAM J. Numer. Anal.},
  volume  = {19},
  pages   = {1260},
  year    = {1982}
}

@article{CantwellYKPS14,
  author  = {C.D. Cantwell and S. Yakovlev and R.M. Kirby and N.S. Peters and S.J. Sherwin},
  title   = {High-order continuous spectral/hp element discretisation for reaction-diffusion problems on a surface},
  journal = {Journal of Computational Physics},
  volume  = {257},
  issue   = {A},
  pages   = {813-829},
  year    = {2014}
}

@article{KirbyS06,
  author  = {Robert M. Kirby and Spencer J. Sherwin},
  title   = {Aliasing Errors Due to Quadratic Non-Linearities On Triangular Spectral/hp Element Discretisations},
  journal = {Journal of Engineering Mathematics},
  volume  = {56},
  pages   = {273-288},
  year    = {2006}
}

@book{BorisenkoTS,
  author    = {A.I. Borisenko and I.E. Tarapov and R.A. Silverman (Translator)},
  title     = {Vector and Tensor Analysis with Applications},
  publisher = {Dover Books on Mathematics},
  year      = {2012}
}

@book{BStroustrup,
  title     = {The C++ Programming Language (Fourth Edition)},
  author    = {Bjarne Stroustrup},
  year      = {2013},
  publisher = {Addison-Wesley Professional}
}

@book{SMeyers,
  title     = {Effective C++: 55 Specific Ways to Improve Your Programs and Designs  (Third Edition)},
  author    = {Scott Meyers},
  year      = {2005},
  publisher = {Addison-Wesley Professional}
}

@book{Ar89,
  title     = {Vectors, tensors, and the basic equations of fluid mechanics},
  author    = {Aris, R.},
  year      = {1989},
  publisher = {Dover Pubns}
}


@article{McRaeBMHC,
  author  = {A.T.T. McRae and G.-T. Bercea and L. Mitchell and D.A. Ham and C.J. Cotter},
  title   = {Automated Generation and Symbolic Manipulation of Tensor Product Finite Elements},
  journal = {SIAM Journal on Scientific Computing},
  volume  = {38},
  number  = {5},
  pages   = {S25--S47},
  year    = {2016}
}

@article{WitherdenVJ2016,
  author  = {F.D. Witherden and P.E. Vincent and A. Jameson},
  title   = {Chapter 10 -- High-Order Flux Reconstruction Schemes},
  journal = {Handbook of Numerical Analysis},
  volume  = {17},
  year    = {2016},
  pages   = {227-263}
}

@book{Kopriva,
  title     = {Implementing Spectral Methods for Partial Differential Equations: Algorithms for Scientists and Engineers},
  author    = {David A. Kopriva},
  publisher = {Springer},
  year      = {2009}
}

@book{CottrellISO,
  title     = {Isogeometric Analysis: Toward Integration of CAD and FEA},
  author    = {J. Austin Cottrell and Thomas J. R. Hughes and Yuri Bazilevs},
  publisher = {John Wiley and Sons},
  year      = {2009}
}

@article{jallepalli2017treatment,
  title     = {On the treatment of field quantities and elemental continuity in {FEM} solutions},
  author    = {Jallepalli, Ashok and Docampo-S{\'a}nchez, Julia and Ryan, Jennifer K and Haimes, Robert and Kirby, Robert M},
  journal   = {IEEE Transactions on Visualization and Computer Graphics},
  volume    = {24},
  number    = {1},
  pages     = {903--912},
  year      = {2017},
  publisher = {IEEE}
}


@article{sanchez2016multi,
  title     = {Multi-dimensional filtering: Reducing the dimension through rotation},
  author    = {Docampo-S{\'a}nchez, Julia and Ryan, Jennifer K and Mirzargar, Mahsa and Kirby, Robert M},
  journal   = {SIAM Journal on Scientific Computing},
  volume    = {39},
  number    = {5},
  pages     = {A2179--A2200},
  year      = {2017},
  publisher = {SIAM}
}

@article{ClenshawC,
  author  = {Lloyd N. Trefethen},
  title   = {Is Gauss Quadrature Better than Clenshaw-Curtis?},
  journal = {SIAM Review},
  volume  = {50},
  issue   = {1},
  pages   = {67-87},
  year    = {2008}
}

@article{Vostime,
  author  = {Peter E.J. Vos and Sehun Chun and Alessandro Bolis and Claes Eskilsson and Robert M. Kirby and Spencer J. Sherwin},
  title   = {A Generic Framework for Time-Stepping PDEs: General Linear Methods, Object-Oriented Implementations and Applications to Fluid Problems},
  journal = {International Journal of Computational Fluid Dynamics},
  volume  = {25},
  issue   = {3},
  pages   = {107-125},
  year    = {2011}
}

@article{Deuflhard1985,
  title     = {Recent progress in extrapolation methods for ordinary differential equations},
  author    = {Deuflhard, Peter},
  journal   = {SIAM review},
  volume    = {27},
  number    = {4},
  pages     = {505--535},
  year      = {1985},
  publisher = {SIAM}
}

@article{Dutt2000,
  title     = {Spectral deferred correction methods for ordinary differential equations},
  author    = {Dutt, Alok and Greengard, Leslie and Rokhlin, Vladimir},
  journal   = {BIT Numerical Mathematics},
  volume    = {40},
  pages     = {241--266},
  year      = {2000},
  publisher = {Springer}
}

@article{Minion2003,
  title  = {Semi-implicit spectral deferred correction methods for ordinary differential equations},
  author = {Minion, Michael L},
  year   = {2003}
}

@article{Ketcheson2014,
  title     = {A comparison of high-order explicit Runge--Kutta, extrapolation, and deferred correction methods in serial and parallel},
  author    = {Ketcheson, David and bin Waheed, Umair},
  journal   = {Communications in applied mathematics and computational science},
  volume    = {9},
  number    = {2},
  pages     = {175--200},
  year      = {2014},
  publisher = {Mathematical Sciences Publishers}
}

@article{Bu06,
  author  = {J. C. Butcher},
  title   = {General linear methods},
  journal = {Acta Numerica},
  year    = 2006,
  volume  = {15},
  pages   = {157--256}
}


%% NekPy references

@misc{BoostPythonTutorial,
  author = {de Guzman J., Abrahams D.},
  title  = {Boost.Python Tutorial - 1.67.0},
  year   = {2018},
  url    = {https://www.boost.org/doc/libs/1_67_0/libs/python/doc/html/tutorial/index.html},
  note   = {[Accessed 1st May 2018]}
}

@misc{BoostPythonWikiEntry,
  title = {boost.python/HowTo - Python Wiki},
  year  = {2015},
  url   = {https://wiki.python.org/moin/boost.python/HowTo},
  note  = {[Accessed 1st May 2018]}
}

@misc{GitHubExamples,
  title = {GitHub - TNG/boost-python-examples: Some examples for the use of boost::python},
  year  = {2016},
  url   = {https://github.com/TNG/boost-python-examples},
  note  = {[Accessed 7th May 2018]}
}

@misc{OpenStreetGraphCookbook,
  title = {osgboostpython/WrappingCookbook.md at wiki · Skylark13/osgboostpython · GitHub},
  year  = {2015},
  url   = {https://github.com/Skylark13/osgboostpython/blob/wiki/WrappingCookbook.md},
  note  = {[Accessed 7th May 2018]}
}

@misc{ManualWrappingRationale,
  title = {osgboostpython/ManualWrappingRationale.md at wiki · Skylark13/osgboostpython · GitHub},
  year  = {2015},
  url   = {https://github.com/Skylark13/osgboostpython/blob/wiki/ManualWrappingRationale.md},
  note  = {[Accessed 7th May 2018]}
}

@misc{PEP257,
  title  = {PEP 257 -- Docstring Conventions},
  author = {Goodger D., van Rossum G.},
  year   = {2001},
  url    = {https://www.python.org/dev/peps/pep-0257/},
  note   = {[Accessed 16th May 2018]}
}

@misc{PythonEnumDocstring,
  title  = {Piotr Jaroszyński's blog: Boost.Python: docstrings in enums},
  author = {Jaroszyński P.},
  year   = {2007},
  url    = {http://blog.piotrj.org/2007/07/boostpython-docstrings-in-enums.html},
  note   = {[Accessed 16th May 2018]}
}

@misc{PythonGoogle,
  title  = {Google Python Style Guide},
  author = {Patel A., Picard A., Jhong E. et al.},
  url    = {https://google.github.io/styleguide/pyguide.html},
  note   = {[Accessed 16th May 2018]}
}

@book{C++Api,
  title     = {API Design for C++},
  author    = {Reddy M.},
  year      = {2011},
  publisher = {Burlington: Elsevier}
}

@book{C++Memory,
  author    = {Daconta M.},
  title     = {C++ pointers and dynamic memory management},
  publisher = {New York: Wiley},
  year      = {1995}
}

@misc{C++SharedPtr,
  title = { std::shared\_ptr - cppreference.com},
  url   = {http://en.cppreference.com/w/cpp/memory/shared\_ptr},
  note  = {[Accessed 21 March 2018]}
}

@misc{PythonMemory,
  author = {Python Software Foundation},
  title  = {Memory Management - Python 2.7.14 documentation},
  url    = {https://docs.python.org/2/c-api/memory.html},
  note   = {[Accessed 21 March 2018]}
}

@misc{PythonManualMemory,
  author = {Python Software Foundation},
  title  = {Reference Counting - Python 2.7.14 documentation},
  url    = {https://docs.python.org/2/c-api/refcounting.html},
  note   = {[Accessed 21 March 2018]}
}

@article{knoll_jacobian_free_2004,
  title      = {Jacobian-free {N}ewton-{K}rylov methods: {A} survey of approaches and applications},
  shorttitle = {Jacobian-free {N}ewton-{K}rylov methods},
  author     = {Knoll, D. A. and Keyes, D. E.},
  year       = 2004,
  month      = jan,
  journal    = {Journal of Computational Physics},
  volume     = 193,
  number     = 2,
  pages      = {357--397},
  doi        = {10.1016/j.jcp.2003.08.010},
  issn       = {0021-9991},
  url        = {http://www.sciencedirect.com/science/article/pii/S0021999103004340},
  urldate    = {2019-01-05},
  abstract   = {Jacobian-free {N}ewton-{K}rylov (JFNK) methods are synergistic combinations of {N}ewton-type methods for superlinearly convergent solution of nonlinear equations and {K}rylov subspace methods for solving the {N}ewton correction equations. The link between the two methods is the Jacobian-vector product, which may be probed approximately without forming and storing the elements of the true Jacobian, through a variety of means. Various approximations to the Jacobian matrix may still be required for preconditioning the resulting {K}rylov iteration. As with {K}rylov methods for linear problems, successful application of the JFNK method to any given problem is dependent on adequate preconditioning. JFNK has potential for application throughout problems governed by nonlinear partial differential equations and integro-differential equations. In this survey paper, we place JFNK in context with other nonlinear solution algorithms for both boundary value problems (BVPs) and initial value problems (IVPs). We provide an overview of the mechanics of JFNK and attempt to illustrate the wide variety of preconditioning options available. It is emphasized that JFNK can be wrapped (as an accelerator) around another nonlinear fixed point method (interpreted as a preconditioning process, potentially with significant code reuse). The aim of this paper is not to trace fully the evolution of JFNK, nor to provide proofs of accuracy or optimal convergence for all of the constituent methods, but rather to present the reader with a perspective on how JFNK may be applicable to applications of interest and to provide sources of further practical information.},
  file       = {ScienceDirect Full Text PDF:/media/zy3416/DATADRIVE1/documents/Zotero/storage/KZUR9KR6/Knoll and Keyes - 2004 - Jacobian-free {N}ewton-{K}rylov methods a survey of a.pdf:application/pdf;ScienceDirect Snapshot:/media/zy3416/DATADRIVE1/documents/Zotero/storage/4HUR5A2J/S0021999103004340.html:text/html}
}

@article{saad_gmres:_1986,
  title      = {{GMRES}: {A} Generalized Minimal Residual Algorithm for Solving Nonsymmetric Linear Systems},
  shorttitle = {{GMRES}: {A} {Generalized} {Minimal} {Residual} {Algorithm} for Solving {Nonsymmetric} {Linear} Systems},
  author     = {Saad, Youcef and Schultz, Martin H.},
  year       = 1986,
  journal    = {SIAM Journal on Scientific and Statistical Computing},
  volume     = 7,
  number     = 3,
  pages      = {856--869},
  file       = {GMRES_A GENERALIZED MINIMAL RESIDUAL ALGORITHM FOR SOLVING NONSYMMETRIC LINEAR SYSTEMS:/media/zy3416/DATADRIVE1/documents/Zotero/storage/C6VXNKTD/GMRES_A GENERALIZED MINIMAL RESIDUAL ALGORITHM FOR SOLVING NONSYMMETRIC LINEAR SYSTEMS.pdf:application/pdf}
}

@article{Sherwin1997,
  author   = {Sherwin, Spencer J.},
  title    = {Hierarchical hp finite elements in hybrid domains},
  doi      = {10.1016/S0168-874X(97)00008-5},
  issn     = {0168-874X},
  number   = {1},
  pages    = {109--119},
  url      = {https://www.sciencedirect.com/science/article/pii/S0168874X97000085},
  volume   = {27},
  abstract = {In this paper we introduce a new set of hp finite element expansions for use in hybrid domains using hexahedrons, prisms, pyramids and tetrahedrons. The expansions are explained in terms of a unified notation which incorporates the standard hexahedral hp finite element expansion. The new bases are motivated from a set of orthogonal polynomial expansions within each of the hybrid domains. The polynomial expansions are a generalised product of functions based upon a local coordinate system with independent limits. This construction leads to expansions with attractive computational properties and which exhibit a high level of orthogonality.},
  journal  = {Finite Elements in Analysis and Design},
  year     = {1997}
}

@article{Dong2010,
  author   = {S. Dong and J. Shen},
  title    = {An unconditionally stable rotational velocity-correction scheme for incompressible flows},
  doi      = {10.1016/j.jcp.2010.05.037},
  issn     = {0021-9991},
  number   = {19},
  pages    = {7013-7029},
  volume   = {229},
  abstract = {We present an unconditionally stable splitting scheme for incompressible Navier–Stokes equations based on the rotational velocity-correction formulation. The main advantages of the scheme are: (i) it allows the use of time step sizes considerably larger than the widely-used semi-implicit type schemes: the time step size is only constrained by accuracy; (ii) it does not require the velocity and pressure approximation spaces to satisfy the usual inf–sup condition: in particular, the equal-order finite element/spectral element approximation spaces can be used; (iii) it only requires solving a pressure Poisson equation and a linear convection–diffusion equation at each time step. Numerical tests indicate that the computational cost of the new scheme for each time step, under identical time step sizes, is even less expensive than the semi-implicit scheme with low element orders. Therefore, the total computational cost of the new scheme can be significantly less than the usual semi-implicit scheme.},
  journal  = {Journal of Computational Physics},
  year     = {2010}
}

@article{Simo1994,
  author   = {J. C. Simo and F. Armero},
  title    = {Unconditional stability and long-term behavior of transient algorithms for the incompressible Navier-Stokes and Euler equations},
  doi      = {10.1016/0045-7825(94)90042-6},
  issn     = {0045-7825},
  number   = {1},
  pages    = {111-154},
  url      = {https://www.sciencedirect.com/science/article/pii/0045782594900426},
  volume   = {111},
  abstract = {This paper examines the long-term behavior, dissipativity and unconditional nonlinear stability properties of time integration algorithms for the incompressible Navier-Stokes equations, including both direct schemes and fractional step/projection methods. The algorithms are termed nonlinear unconditionally stable if, in the absence of a forcing term but for arbitrary initial conditions, the computed kinetic energy decreases for arbitrary step sizes (i.e., L2-stability). Such an a priori stability estimate is a characteristic feature of the Navier-Stokes system. Similarly, the algorithms are said to exhibit asymptotic δt-independent long-term dissipative behavior if, as the continuum flow generated by the Navier-Stokes equations, the algorithmic flow also exhibits an absorbing set (and a maximal attractor). Both direct and fractional step methods are described which inherit these fundamental properties of the Navier-Stokes system for any time step size. Moreover, a subclass of algorithms which retain these strong notions of nonlinear stability and long-term dissipative behavior is identified which, in addition, has the remarkable property of being linear within the time step. The key implication is that no iterations are required to compute the solution within a time step. A specific member of this class is shown to possess the same absorbing set as the continuum Navier-Stokes system. A second order accurate, unconditionally stable method is also identified which retains the property of linearity within a time step. Numerical analysis and computational aspects involved in the implementation of these methods are addressed in detail and illustrated in representative numerical simulations.},
  journal  = {Computer Methods in Applied Mechanics and Engineering},
  year     = {1994}
}



@incollection{Sherwin2003,
  title     = {A Substepping Navier-Stokes Splitting Scheme for Spectral/hp Element Discretisations},
  booktitle = {Parallel Computational Fluid Dynamics 2002},
  publisher = {North-Holland},
  address   = {Amsterdam},
  pages     = {43-52},
  year      = {2003},
  author    = {Sherwin, S. J.}
}



@article{Karniadakis1991,
  author   = {Karniadakis, George Em and Israeli, Moshe and Orszag, Steven A.},
  title    = {High-order splitting methods for the incompressible Navier-Stokes equations},
  doi      = {10.1016/0021-9991(91)90007-8},
  issn     = {0021-9991},
  number   = {2},
  pages    = {414-443},
  url      = {https://www.sciencedirect.com/science/article/pii/0021999191900078},
  volume   = {97},
  abstract = {A new pressure formulation for splitting methods is developed that results in high-order time-accurate schemes for the solution of the incompressible Navier-Stokes equations. In particular, improved pressure boundary conditions of high order in time are introduced that minimize the effect of erroneous numerical boundary layers induced by splitting methods. A new family of stiffly stable schemes is employed in mixed explicit/implicit time-intgration rules. These schemes exhibit much broader stability regions as compared to Adams-family schemes, typically used in splitting methods. Their stability properties remain almost constant as the accuracy of the integration increases, so that robust third- or higher-order time-accurate schemes can readily be constructed that remain stable at relatively large CFL number. The new schemes are implemented within the framework of spectral element discretizations in space so that flexibility and accuracy is guaranteed in the numerical experimentation. A model Stokes problem is studied in detail, and several examples of Navier-Stokes solutions of flows in complex geometries are reported. Comparison is made with the previously used first-order in time spectral element splitting and non-splitting (e.g., Uzawa) schemes. High-order splitting/spectral element methods combine accuracy in space and time, and flexibility in geometry, and thus can be very efficient in direct simulations of turbulent flows in complex geometries.},
  journal  = {Journal of Computational Physics},
  year     = {1991}
}

@article{Canuto2009,
  author    = {Claudio Canuto and Paola Gervasio and Alfio Quarteroni},
  doi       = {10.1137/090746367},
  issn      = {10957200},
  issue     = {6},
  journal   = {SIAM Journal on Scientific Computing},
  keywords  = {Elliptic equations,Finite elements,Preconditioned iterative methods,Spectral method},
  pages     = {4422-4451},
  publisher = {Society for Industrial and Applied Mathematics Publications},
  title     = {Finite-element preconditioning of G-Ni spectral methods},
  volume    = {31},
  year      = {2009}
}
@article{PedroFischer2019,
  author    = {Pedro D. Bello-Maldonado and Paul F. Fischer},
  doi       = {10.1137/18M1194997},
  issn      = {1064-8275},
  issue     = {5},
  journal   = {SIAM Journal on Scientific Computing},
  keywords  = {Algebraic multigrid,Finite element method,High-order,Low-order,Preconditioner,Spectral element method},
  month     = {1},
  pages     = {S2-S18},
  publisher = {Society for Industrial and Applied Mathematics Publications},
  title     = {Scalable Low-Order Finite Element Preconditioners for High-Order Spectral Element Poisson Solvers},
  volume    = {41},
  url       = {https://epubs.siam.org/doi/10.1137/18M1194997},
  year      = {2019}
}
@article{Pazner2022deRham,
  author = {Will Pazner and Tzanio Kolev and Clark Dohrmann},
  month  = {3},
  title  = {Low-order preconditioning for the high-order finite element de Rham complex},
  url    = {http://arxiv.org/abs/2203.02465},
  year   = {2022}
}

@book{CanutoSpectral2007,
  author    = {Claudio Canuto and Alfio Quarteroni and M. Yousuff Hussaini and Thomas A. Zang},
  city      = {Berlin, Heidelberg},
  doi       = {10.1007/978-3-540-30728-0},
  isbn      = {978-3-540-30727-3},
  publisher = {Springer Berlin Heidelberg},
  title     = {Spectral Methods},
  url       = {http://link.springer.com/10.1007/978-3-540-30728-0},
  year      = {2007}
}

@article{Pazner2022GPU,
  author = {Will Pazner and Tzanio Kolev and Jean-Sylvain Camier},
  month  = {10},
  title  = {End-to-end GPU acceleration of low-order-refined preconditioning for high-order finite element discretizations},
  url    = {http://arxiv.org/abs/2210.12253},
  year   = {2022}
}
@article{Phillips2021GPU,
  author = {Malachi Phillips and Stefan Kerkemeier and Paul Fischer},
  month  = {10},
  title  = {Tuning Spectral Element Preconditioners for Parallel Scalability on GPUs},
  url    = {http://arxiv.org/abs/2110.07663},
  year   = {2021}
}