Commit c82aaa95 authored by Mike Kirby's avatar Mike Kirby

mike first load

parent 149eca45
@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{Demmel97,
author = "James W. Demmel",
title = "Applied Numerical Linear Algebra",
publisher = "SIAM",
address = "Philadelphia, PA, USA",
year = 1997
}
@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{VosSK2010,
......@@ -127,3 +296,83 @@ publisher = "Springer Lecture Notes in Computational Science and Engineering, Vo
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{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"
}
\input{shared/devguide-preamble.tex}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\newcommand\nek{\emph{Nektar++}}
\newcommand\shp{spectral/$hp$}
\newcommand\Shp{Spectral/$hp$}
......@@ -31,11 +33,14 @@
%
%\clearpage
%\input{test.tex}
\input{preface/preface.tex}
%
\input{introduction/introduction.tex}
%
\input{prelims/prelims.tex}
%
\input{library/library-master.tex}
\bibliographystyle{plain}
......
This diff is collapsed.
%
\section{The Fundamental Algorithms within Collections}
\ No newline at end of file
%
\section{The Fundamental Data Structures within Collections}
\ No newline at end of file
%
\section{The Fundamentals Behind Collections}
\ No newline at end of file
%
\section{The Fundamental Algorithms within FieldUtils}
\ No newline at end of file
%
\section{The Fundamental Data Structures within FieldUtils}
\ No newline at end of file
%
\section{The Fundamentals Behind FieldUtils}
\ No newline at end of file
%
\section{The Fundamental Algorithms within GlobalMapping}
\ No newline at end of file
%
\section{The Fundamental Data Structures within GlobalMapping}
\ No newline at end of file
%
\section{The Fundamentals Behind GlobalMapping}
\ No newline at end of file
%
\section{BasicConst}
\lstinputlisting[language=C++, firstline=47, lastline=59]{../nektar/library/LibUtilities/BasicConst/NektarUnivConsts.hpp}
\ No newline at end of file
%
\section{Foundations}
\ No newline at end of file
\section{Foundations}
The two basic building blocks of all that is done in Nektar++ are the concepts of Points and of a Basis. The Point objects denote positions
in space, either on compact domains (normally $[-1,1]^d$ where $d$ is the dimension in a reference domain mapped to world-space)
or periodic domains (i.e. in the case of points used in Fourier expansions). The Basis objects denote functions (e.g. polynomials) evaluated
at a given set of points.
\subsection{Points}
\begin{itemize}
\item PointsKey
\item Points
\end{itemize}
\subsection{Basis}
\begin{itemize}
\item BasisKey
\item Basis
\end{itemize}
\begin{figure}[htb]
\centering
\includegraphics[width=4in]{img/basismemory.pdf}
\caption{Figure 1}
\label{foundations:basismemory}
\end{figure}
%
\section{Time Integration}
%
\section{The Fundamental Algorithms within LocalRegions}
\ No newline at end of file
%
\section{The Fundamental Data Structures within LocalRegions}
\begin{figure}[htb]
\centering
\includegraphics[width=6in]{img/expansiontree.pdf}
\caption{Figure local regions tree}
\label{localregions:localclasstree}
\end{figure}
\ No newline at end of file
%
\section{The Fundamentals Behind LocalRegions}
\ No newline at end of file
%
\section{The Fundamental Algorithms within MultiRegions}
\ No newline at end of file
%
\section{The Fundamental Data Structures within MultiRegions}
\begin{figure}[htb]
\centering
\includegraphics[width=6in]{img/multiregiontree.pdf}
\caption{Figure 1}
\label{multiregions:multiregionstree}
\end{figure}
%
\section{The Fundamentals Behind MultiRegions}
\ No newline at end of file
%
\section{The Fundamental Algorithms within SolverUtils}
\ No newline at end of file
%
\section{The Fundamental Data Structures within SolverUtils}
\ No newline at end of file
%
\section{The Fundamentals Behind SolverUtils}
\ No newline at end of file
%
\section{The Fundamental Algorithms within SpatialDomains}
\ No newline at end of file
%
\section{The Fundamental Data Structures within SpatialDomains}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Reference to World-Space Mapping}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Geometry}
\begin{figure}[htb]
\centering
\includegraphics[width=6in]{img/geomtree.pdf}
\caption{Figure geometry tree}
\label{spatialdomains:geomtree}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{GeomFactors}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{MeshGraph}
\ No newline at end of file
%
\section{The Fundamentals Behind SpatialDomains}
\subsection{Regular}
$$
\vec{x} = (x_j)^T,\, j=1,\ldots,D
$$
$$
\vec{\xi} = (\xi_j)^T,\, j=1,\ldots,D
$$
$$
\vec{x} = \chi(\vec{xi})
$$
$$
{\bf J} = \frac{\partial x_i}{\partial \xi_j}
$$
$$
{\bf g} = {\bf J}^T{\bf J}
$$
$$
g = \det{\bf g}
$$
\cite{CantwellYKPS14}
\subsection{Deformed}
%
\section{The Fundamental Algorithms within StdRegions}
\ No newline at end of file
%
\section{The Fundamental Data Structures within StdRegions}
\begin{figure}[htb]
\centering
\includegraphics[width=6in]{img/stdexpansiontree.pdf}
\caption{Figure 1}
\label{stdregions:stdexpansiontree}
\end{figure}
%
\section{The Fundamentals Behind StdRegions}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Reference Element Transformations That Facilitate Separability}
\begin{figure}[htb]
\centering
\includegraphics[width=4in]{img/afg002.pdf}
\caption{Duffy mapping between a right-sided triangle and a square domain.}
\label{stdregions:duffy}
\end{figure}
Duffy \cite{Duffy82}
Dubiner \cite{Dubiner91}
Ainsworth \cite{AinsworthAD11,Ainsworth14}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Reference Elements On Primative Geometric Types}
Hesthaven \cite{Hesthaven98}
Taylor \cite{TaylorWV00}
......@@ -4,38 +4,190 @@
\chapter{Inside the Library: LibUtilities}
In this chapter, we walk the reader through the different components of the LibUtilities Directory.
We have ordered them in alphabetical order by directory name, not by level of importance or
relevance to the code. Since all of these items are considered foundational to Nektar++, they
should all be considered equally important and relevant. Along the same lines -- since all of
these areas of the code represent the deepest members of the code hierarchy, these
items should rarely be modified.
%
\input{library/LibUtilities/basicconst.tex}
%
\input{library/LibUtilities/basicutils.tex}
%
\input{library/LibUtilities/communication.tex}
%
\input{library/LibUtilities/fft.tex}
%
\input{library/LibUtilities/foundations.tex}
%
\input{library/LibUtilities/interpreter.tex}
%
\input{library/LibUtilities/kernel.tex}
%
\input{library/LibUtilities/linearalgebra.tex}
%
\input{library/LibUtilities/memory.tex}
%
\input{library/LibUtilities/polylib.tex}
%
\input{library/LibUtilities/timeintegration.tex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Inside the Library: StdRegions}
In this chapter, we walk the reader through the different components of the StdRegions Directory.
We begin with a discussion of the mathematical fundamentals, for which we use the book
by Karniadakis and Sherwin \cite{KaSh05} as our principle reference. We then provide
the reader with an overview of the primary data structures introduced within the
StdRegions Directory (often done through C++ objects), and then present the major
algorithms -- expressed as either object methods or functions -- employed over these data structures.
\input{library/StdRegions/stdreg-fundamentals.tex}
%
\input{library/StdRegions/stdreg-datastructures.tex}
%
\input{library/StdRegions/stdreg-algorithms.tex}
\input{library/StdRegions/fundamentals.tex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Inside the Library: SpatialDomains}
In this chapter, we walk the reader through the different components of the SpatialDomains Directory.
\input{library/SpatialDomains/fundamentals.tex}
We begin with a discussion of the mathematical fundamentals, for which we use the book
by Karniadakis and Sherwin \cite{KaSh05} as our principle reference. We then provide
the reader with an overview of the primary data structures introduced within the
SpatialDomains Directory (often done through C++ objects), and then present the major
algorithms -- expressed as either object methods or functions -- employed over these data structures.
The SpatialDomains Directory and its corresponding class definitions serve two principal purposes:
\begin{enumerate}
\item To hold the elemental geometric information (i.e. vertex information, curve information and reference-to-world mapping information); and
\item To facility reading in and writing out geometry-related information.
\end{enumerate}
When designing Nektar++, developing a class hierarchy for StdRegions (those fundamental domains over which we define
integration and differentiation) and LocalRegions (i.e. elements in world-space) was fairly straightforward following \cite{KaSh05}.
For instance, a triangle in world-space {\em is-a} standard triangle. The first question that arose was where to store geometric
information, as information within the LocalRegions element or as information encapsulated from the element so that multiple Expansions could
all point to the same geometric information. The decision we made was to store geometric information -- that is, the vertex information
in world-space that defines an element and the edge and face curvature information -- in its own data structure that could be shared by
multiple Expansions (functions) over the same domain (element) in world-space. Hence SpatialDomains started as the directory
containing Geometry and GeomFactors class definitions to meet the first item listed above. A LocalRegion {\em is-a} StdRegion and {\em has-a}
SpatialDomain (i.e. Geometry and GeomFactors).
We then realized that in order to jump-start the process of constructing elements and combining them together into MultiRegions (collections of
elements that represent a (sub)-domain of interest), we needed devise a light-weight data structure into which we could load geometric information
from our geometry file and from which we could then construct Expansions (with their mappings, etc.). The light-weight data structure we
devised was MeshGraph, and it was meant to meet the second item listed above.
\input{library/SpatialDomains/spdomains-fundamentals.tex}
%
\input{library/SpatialDomains/spdomains-datastructures.tex}
%
\input{library/SpatialDomains/spdomains-algorithms.tex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%