--- /dev/null
+all: latexmk
+
+latexmk:
+ latexmk -pdf -f paper
+
+clean:
+ rm -f *.fls *.fdb_latexmk *.aux *.log *.dvi *.bbl *.blg *.ilg *.ind *.toc *.idx *.out *.nav *.snm
--- /dev/null
+% $Id: ansarticle.cls 2730 2011-06-03 09:53:18Z logg $
+
+% FIXME: (AL) Need to choose a license for this style, I suggest GFDL
+
+% Basic setup
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{ansarticle-preprint}
+\LoadClass[twoside,a4paper]{article}
+
+% Load packages
+\RequirePackage{a4wide}
+\RequirePackage{anslistings}
+\RequirePackage{algorithm,algorithmicx,algpseudocode}
+\RequirePackage{amsmath,amssymb}
+\RequirePackage[noblocks]{authblk}
+\RequirePackage{booktabs}
+\RequirePackage{fancyhdr}
+\RequirePackage{graphicx}
+\RequirePackage[hyperfootnotes=false,colorlinks,linkcolor=blue,urlcolor=blue,citecolor=blue]{hyperref}
+\RequirePackage{natbib}
+
+\RequirePackage{lastpage}
+\RequirePackage{listings}
+\RequirePackage[colorinlistoftodos,textwidth=4cm,shadow]{todonotes}
+
+
+% Font selection
+\RequirePackage[T1]{fontenc}
+\RequirePackage{ae,aecompl}
+\RequirePackage{pxfonts} % Palatino for running text and math
+\renewcommand{\sfdefault}{pag} % Avantgarde for sans serif (section headings)
+
+% Section headings
+\renewcommand{\section}{%
+ \@startsection{section}{0}{0pt}{2ex}{1ex}{\large\bf\sffamily}}
+\renewcommand{\subsection}{%
+ \@startsection{subsection}{1}{0pt}{\baselineskip}{.5ex}{\bf\sffamily}}
+\renewcommand{\subsubsection}{%
+ \@startsection{subsubsection}{2}{0pt}{\baselineskip}{-1em}{\bf\sffamily}}
+\renewcommand{\paragraph}{%
+ \@startsection{paragraph}{3}{0pt}{0ex}{-0.5em}{\bf\sffamily}}
+\renewcommand{\subparagraph}{%
+ \@startsection{subparagraph}{4}{0pt}{0ex}{-0.5em}{\bf\sffamily}}
+\setcounter{secnumdepth}{10}
+
+% Paragraphs
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{1ex plus 2ex}
+
+% Running title and author
+\let\@runningtitle\@empty
+\let\@runningauthor\@empty
+\newcommand{\runningtitle}[1]{\gdef\@runningtitle{#1}}
+\newcommand{\runningauthor}[1]{\gdef\@runningauthor{#1}}
+
+% Formatting volume and article number
+\newread\datafile
+\openin\datafile=ansinfo
+\ifeof\datafile
+\message{File datafile.tex with volume, number, and year is missing}
+\def\ANSreceived{never}
+\def\ANSrevised{never}
+\def\ANSaccepted{never}
+\def\ANSpublished{never}
+\def\ANSvolume{VV}
+\def\ANSnumber{NN}
+\def\ANSyear{}
+\else
+\closein\datafile
+\input{ansinfo}
+\fi
+
+% Page headers and footers
+\fancyhead[RO, LE]{\thepage}
+\fancyhead[LO]{\@runningtitle}
+\fancyhead[RE]{\@runningauthor}
+\fancyfoot[RE,LO]{%
+ %\footnotesize \copyright{} by the authors, \ANSyear
+ }
+\fancyfoot[RO,LE]{%
+ %\footnotesize Archive of Numerical Software \ANSvolume(\ANSnumber), \ANSyear
+ }
+\fancyfoot[C]{}
+\renewcommand{\headrulewidth}{0pt}
+\pagestyle{fancy}
+
+% Front matter
+\renewcommand*{\title}[2][]{\gdef\s@title{#1}\gdef\@title{#2}}
+\renewcommand{\Authfont}{\large\sffamily}
+\renewcommand{\Affilfont}{\normalsize\sffamily}
+\renewcommand{\maketitle}{
+ % Footnote stuff
+ \let\footnotesize\small
+ \def\footnoterule{\vspace*{-3pt}\rule{.4\columnwidth}{.4pt}\vspace*{2.6pt}}
+ \renewcommand\thefootnote{\sffamily\@fnsymbol\c@footnote}
+ \let\footnote\thanks
+ % Title
+% \hfill\fboxrule2pt\fboxsep3mm\fbox{\parbox{5cm}{\centering
+% Archive of Numerical Software\\
+% vol. \ANSvolume, no. \ANSnumber, pages 1--\pageref*{LastPage}\\
+% \copyright{} \ANSyear}}
+ \vskip 60\p@
+ \begin{center}
+ {\LARGE \textsf{\textbf{\@title}} \par}
+ \vskip 8mm
+ {\large \lineskip .75em \textsf{\@author} }
+ \vskip 4mm
+ \end{center}\par
+ % Affiliation stuff
+ \@thanks
+ % Paper received
+ \vskip 3mm
+% \textbf{\sffamily Received: }\ANSreceived;
+% \textbf{\sffamily final revision:} \ANSrevised;
+% \textbf{\sffamily published:} \ANSpublished.
+% % Some more fixes
+ \vskip 3mm
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+ % No headers/footers on front page
+ \thispagestyle{empty}
+}
+
+% Abstract heading
+\renewenvironment{abstract}{\textsf{\textbf{Abstract: }}}{}
+
+% Useful macro
+\newcommand{\fixme}[1]{\todo[inline, color=red!40]{#1}}
+
+% Some useful notation macros
+\newcommand{\R}{\mathbb{R}}
+\newcommand{\dx}{\,\mathrm{d}x}
+\newcommand{\dX}{\,\mathrm{d}X}
+\newcommand{\ds}{\,\mathrm{d}s}
+\newcommand{\dS}{\,\mathrm{d}S}
+\newcommand{\dt}{\,\mathrm{d}t}
+\newcommand{\inner}[2]{\langle #1, #2 \rangle}
+\newcommand{\nedelec}{N\'ed\'elec}
+\newcommand{\babuska}{Babu\v{s}ka}
+\newcommand{\emp}[1]{\texttt{#1}}
--- /dev/null
+%% Listings environments for Archive of Numerical Software.
+%%
+%% The following listings environments are provided:
+%%
+%% c++ for C++ code
+%% python for Python code
+%% cython for Cython code
+%% xml for XML code
+%% bash for BASH code
+%% swigcode for SWIG code
+%% uflcode for UFL code
+%% matlab for MATLAB code
+%% anycode for generic code
+%% progoutput for program output
+%% gencode for generated code
+%% latexcode for LaTeX code
+%% fortran for FORTRAN code
+%%
+%% This style file is based on original work by Olivier Verdier
+%% <olivier.verdier@math.ntnu.no> (pythonhighlight.sty),
+%% with contributions from Johan Hake <johan.hake@gmail.com>.
+%%
+%% Modified for ANS by Anders Logg <logg@simula.no>, 2011.
+%%
+%% Modified by Hans Petter Langtangen <hpl@simula.no>, 2011, to
+%% have pairs c++ (with C++ title) and c++:nt (no title),
+%% python and python:nt, etc. (It is not always desirable to
+%% have a title with the language.) Added Cython and Fortran style.
+%%
+%% First added: 2011-05-16
+%% Last modified: 2011-06-03
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{anslistings}[2009/03/28 code highlighting; provided by Olivier Verdier <olivier@maths.lth.se>]
+
+% Load required packages
+\RequirePackage{listings}
+\RequirePackage{xcolor}
+
+% Basic setup
+\renewcommand{\lstlistlistingname}{Code Listings}
+\renewcommand{\lstlistingname}{Code Listing}
+\newcommand{\codetitlestyle}[1]{\hspace{9cm}\small\textit{#1}\hspace{0.1cm}}
+%\newcommand{\codetitlestyle}[1]{\small\textit{#1}\hspace{0.1cm}}
+\newcommand{\belowtitleskip}{2pt}
+\newcommand{\captionposition}{t}
+\newcommand{\framemargin}{0.5ex}
+\newcommand{\literatecolour}{\textcolor{literatecolour}}
+
+% Colors
+\definecolor{gray}{gray}{0.5}
+\colorlet{commentcolour}{green!50!black}
+\colorlet{stringcolour}{red!60!black}
+\colorlet{keywordcolour}{magenta!90!black}
+\colorlet{exceptioncolour}{yellow!50!red}
+\colorlet{commandcolour}{blue!60!black}
+\colorlet{numpycolour}{blue!60!green}
+\colorlet{literatecolour}{magenta!90!black}
+\colorlet{promptcolour}{green!50!black}
+\colorlet{specmethodcolour}{violet}
+\colorlet{indendifiercolour}{green!70!white}
+
+% Define the common style to be shared by all languages
+\lstdefinestyle{c@mmon}{%
+showtabs=true, % show tabs in strings using underscore
+tab=,
+tabsize=2, % tab means 2 spaces
+basicstyle=\ttfamily\footnotesize, % fonts used for the code
+breaklines=true, % break lines
+%breakatwhitespace=true, % let linebreaks happen at whitespace
+showspaces=false, % true: show spaces with a particular underscore
+aboveskip=1ex,
+frame=trbl, % top+right+bottom+left (TB draws double lines at top + bottom)
+%framerule=0.4pt % thickness of frame
+rulecolor=\color{black}, % frame color
+backgroundcolor=\color{yellow!10},
+xleftmargin=5pt,
+xrightmargin=5pt,
+%numbers=left, % put line numbers on the left
+%stepnumber=2, % stepnumber=1 numbers each line, =n every n lines
+}
+\lstset{style=c@mmon}
+
+%--- Typesetting LaTeX ---
+\lstnewenvironment{latexcode}{\lstset{language=[LaTeX]TeX,style=c@mmon}}{}
+\newcommand{\inputlatex}[1]{\lstset{language=[LaTeX]TeX,style=c@mmon}%
+ \lstinputlisting{#1}}
+\lstnewenvironment{latexcode:nt}{\lstset{language=[LaTeX]TeX,style=c@mmon}}{}
+
+%--- C++ ---
+
+\lstdefinestyle{cppstyle}{
+language=c++,
+style=c@mmon,
+stringstyle=\color{stringcolour},
+showstringspaces=false,
+alsoletter={1234567890},
+keywordstyle=\color{keywordcolour}\bfseries,
+emph={auto,const,struct,%
+break,continue,else,for,switch,void,%
+case,default,enum,goto,register,sizeof,typedef,%
+char,do,extern,if,return,static,union,while,%
+asm,dynamic_cast,namespace,reinterpret_cast,try,%
+bool,explicit,new,static_cast,typeid,volatile,%
+catch,operator,template,typename,%
+class,friend,private,this,using,%
+const_cast,inline,public,throw,virtual,%
+delete,mutable,protected,wchar_t,%
+or,and,xor,not,assert},
+emphstyle=\color{blue}\bfseries,
+emph={[2]true, false, NULL},
+emphstyle=[2]\color{keywordcolour},
+emph={[3]double,float,int,short,unsigned,long,signed},
+emphstyle=[3]\color{blue},
+emph={[4]1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
+emph={[4]cos,sin,tan,acos,asin,atan,atan2,cosh,sinh,tanh,%
+exp,frexp,ldexp,log,log10,modf,pow,sqrt,ceil,fabs,floor,fmod},
+emphstyle=[4]\color{numpycolour},
+literate=*%
+{:}{{\literatecolour:}}{1}%
+{=}{{\literatecolour=}}{1}%
+{-}{{\literatecolour-}}{1}%
+{+}{{\literatecolour+}}{1}%
+{*}{{\literatecolour*}}{1}%
+{!}{{\literatecolour!}}{1}%
+{[}{{\literatecolour[}}{1}%
+{]}{{\literatecolour]}}{1}%
+{<}{{\literatecolour<}}{1}%
+{>}{{\literatecolour>}}{1}%
+{>>>}{{\textcolor{promptcolour}{>>>}}}{1}%
+,%
+commentstyle=\color{commentcolour}\slshape,
+morecomment=[l][commentstyle]{//},
+morecomment=[s][commentstyle]{/*}{*/},
+morestring=[b][stringstyle]",
+morestring=[d][stringstyle]'
+}
+
+\newcommand{\inputcpp}[1]{\lstinputlisting[style=cppstyle, title={\codetitlestyle{C++ code}}, belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{c++}[1][]{\lstset{style=cppstyle, title={\codetitlestyle{C++ code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{c++:nt}[1][]{\lstset{style=cppstyle}}{}
+\newcommand{\cppinline}{\lstinline[style=cppstyle,basicstyle=\ttfamily]}
+
+%--- Python and Cython ---
+
+ \lstdefinestyle{pythonstyle}{
+ language=python,
+ showtabs=true,
+ tab=,
+ tabsize=2,
+ basicstyle=\ttfamily\footnotesize,
+ stringstyle=\color{stringcolour},
+ showstringspaces=false,
+ alsoletter={1234567890},
+ otherkeywords={\ , \}, \{, \%, \&, \|},
+ keywordstyle=\color{keywordcolour}\bfseries,
+ emph={and,break,class,continue,def,yield,del,elif ,else,%
+ except,exec,finally,for,from,global,if,import,in,%
+ lambda,not,or,pass,print,raise,return,try,while,assert},
+ emphstyle=\color{blue}\bfseries,
+ emph={[2]True, False, None},
+ emphstyle=[2]\color{keywordcolour},
+ emph={[3]object,type,isinstance,copy,deepcopy,zip,enumerate,reversed,list,len,dict,tuple,xrange,append,execfile,real,imag,reduce,str,repr},
+ emphstyle=[3]\color{commandcolour},
+ emph={Exception,NameError,IndexError,SyntaxError,TypeError,ValueError,OverflowError,ZeroDivisionError},
+ emphstyle=\color{exceptioncolour}\bfseries,
+ commentstyle=\color{commentcolour}\slshape,
+ emph={[4]ode, fsolve, sqrt, exp, sin, cos, arccos, pi, array, norm, solve, dot, arange, , isscalar, max, sum, flatten, shape, reshape, find, any, all, abs, plot, linspace, legend, quad, polyval,polyfit, hstack, concatenate,vstack,column_stack,empty,zeros,ones,rand,vander,grid,pcolor,eig,eigs,eigvals,svd,qr,tan,det,logspace,roll,min,mean,cumsum,cumprod,diff,vectorize,lstsq,cla,eye,xlabel,ylabel,squeeze},
+ emphstyle=[4]\color{numpycolour},
+ emph={[5]__init__,__add__,__mul__,__div__,__sub__,__call__,__getitem__,__setitem__,__eq__,__ne__,__nonzero__,__rmul__,__radd__,__repr__,__str__,__get__,__truediv__,__pow__,__name__,__future__,__all__},
+ emphstyle=[5]\color{specmethodcolour},
+ emph={[6]assert,range,yield},
+ emphstyle=[6]\color{keywordcolour}\bfseries,
+ literate=*%
+ {:}{{\literatecolour:}}{1}%
+ {=}{{\literatecolour=}}{1}%
+ {-}{{\literatecolour-}}{1}%
+ {+}{{\literatecolour+}}{1}%
+ {*}{{\literatecolour*}}{1}%
+ {/}{{\literatecolour/}}{1}%
+ {!}{{\literatecolour!}}{1}%
+ {[}{{\literatecolour[}}{1}%
+ {]}{{\literatecolour]}}{1}%
+ {<}{{\literatecolour<}}{1}%
+ {>}{{\literatecolour>}}{1}%
+ {>>>}{{\textcolor{promptcolour}{>>>}}}{1}%
+ ,%
+ breaklines=true,
+ breakatwhitespace= true,
+ aboveskip=1ex,
+ frame=trbl,
+ framesep=.3ex,
+ rulecolor=\color{black!40},
+ backgroundcolor=\color{yellow!10}
+}
+
+
+ \lstdefinestyle{cythonstyle}{
+ language=cython,
+ showtabs=true,
+ tab=,
+ tabsize=2,
+ basicstyle=\ttfamily\footnotesize,
+ stringstyle=\color{stringcolour},
+ showstringspaces=false,
+ alsoletter={1234567890},
+ otherkeywords={\ , \}, \{, \%, \&, \|},
+ keywordstyle=\color{keywordcolour}\bfseries,
+ emph={and,break,class,continue,def,cdef,cpdef,yield,del,elif ,else,%
+ except,exec,finally,for,from,global,if,import,in,%
+ lambda,not,or,pass,print,raise,return,try,while,assert,cdef,cpdef},
+ emphstyle=\color{blue}\bfseries,
+ emph={[2]True, False, None},
+ emphstyle=[2]\color{keywordcolour},
+ emph={[3]object,type,isinstance,copy,deepcopy,zip,enumerate,reversed,list,len,dict,tuple,xrange,append,execfile,real,imag,reduce,str,repr,float,int,ndarray,complex,double},
+ emphstyle=[3]\color{commandcolour},
+ emph={Exception,NameError,IndexError,SyntaxError,TypeError,ValueError,OverflowError,ZeroDivisionError},
+ emphstyle=\color{exceptioncolour}\bfseries,
+ commentstyle=\color{commentcolour}\slshape,
+ emph={[4]ode, fsolve, sqrt, exp, sin, cos, arccos, pi, array, norm, solve, dot, arange, , isscalar, max, sum, flatten, shape, reshape, find, any, all, abs, plot, linspace, legend, quad, polyval,polyfit, hstack, concatenate,vstack,column_stack,empty,zeros,ones,rand,vander,grid,pcolor,eig,eigs,eigvals,svd,qr,tan,det,logspace,roll,min,mean,cumsum,cumprod,diff,vectorize,lstsq,cla,eye,xlabel,ylabel,squeeze},
+ emphstyle=[4]\color{numpycolour},
+ emph={[5]__init__,__add__,__mul__,__div__,__sub__,__call__,__getitem__,__setitem__,__eq__,__ne__,__nonzero__,__rmul__,__radd__,__repr__,__str__,__get__,__truediv__,__pow__,__name__,__future__,__all__},
+ emphstyle=[5]\color{specmethodcolour},
+ emph={[6]assert,range,yield},
+ emphstyle=[6]\color{keywordcolour}\bfseries,
+ literate=*%
+ {:}{{\literatecolour:}}{1}%
+ {=}{{\literatecolour=}}{1}%
+ {-}{{\literatecolour-}}{1}%
+ {+}{{\literatecolour+}}{1}%
+ {*}{{\literatecolour*}}{1}%
+ {/}{{\literatecolour/}}{1}%
+ {!}{{\literatecolour!}}{1}%
+ {[}{{\literatecolour[}}{1}%
+ {]}{{\literatecolour]}}{1}%
+ {<}{{\literatecolour<}}{1}%
+ {>}{{\literatecolour>}}{1}%
+ {>>>}{{\textcolor{promptcolour}{>>>}}}{1}%
+ ,%
+ breaklines=true,
+ breakatwhitespace= true,
+ aboveskip=1ex,
+ frame=trbl,
+ framesep=.3ex,
+ rulecolor=\color{black!40},
+ backgroundcolor=\color{yellow!10}
+}
+
+\newcommand{\inputpython}[1]{\lstinputlisting[style=pythonstyle,title={\codetitlestyle{Python code }},belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{python}[1][]{\lstset{style=pythonstyle,title={\codetitlestyle{Python code }},belowcaptionskip=\belowtitleskip}}{}
+%\lstnewenvironment{python}[1][]{\lstset{style=pythonstyle,title={\codetitlestyle{Python code }},belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{python:nt}[1][]{\lstset{style=pythonstyle}}{}
+\newcommand{\pythoninline}{\lstinline[style=pythonstyle,basicstyle=\ttfamily]}
+
+
+\newcommand{\inputcython}[1]{\lstinputlisting[style=cythonstyle,title={\codetitlestyle{Cython code }},belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{cython}[1][]{\lstset{style=cythonstyle,title={\codetitlestyle{Cython code }},belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{cython:nt}[1][]{\lstset{style=cythonstyle}}{}
+\newcommand{\cythoninline}{\lstinline[style=cythonstyle,basicstyle=\ttfamily]}
+
+%--- FORTRAN ---
+
+% Note: this is basically FORTRAN 77, not 90, 95, 2003/2008.
+\lstdefinestyle{fortranstyle}{
+language=fortran,
+style=c@mmon,
+stringstyle=\color{stringcolour},
+showstringspaces=false,
+alsoletter={1234567890},
+keywordstyle=\color{keywordcolour}\bfseries,
+emph={auto,do,while,if,else,end,endif,enddo,%
+subroutine,function,format,program},
+emphstyle=\color{blue}\bfseries,
+emphstyle=[2]\color{keywordcolour},
+emph={[3]double,real,precision,integer,logical},
+emphstyle=[3]\color{blue},
+emph={[4]1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
+emph={[4]cos,sin,tan,acos,asin,atan,atan2,cosh,sinh,tanh,%
+exp,frexp,ldexp,log,log10,modf,pow,sqrt,ceil,fabs,floor,fmod},
+emphstyle=[4]\color{numpycolour},
+literate=*%
+{:}{{\literatecolour:}}{1}%
+{=}{{\literatecolour=}}{1}%
+{-}{{\literatecolour-}}{1}%
+{+}{{\literatecolour+}}{1}%
+{*}{{\literatecolour*}}{1}%
+{!}{{\literatecolour!}}{1}%
+{[}{{\literatecolour[}}{1}%
+{]}{{\literatecolour]}}{1}%
+{<}{{\literatecolour<}}{1}%
+{>}{{\literatecolour>}}{1}%
+,%
+commentstyle=\color{commentcolour}\slshape,
+morecomment=[l][commentstyle]{C}, % need ! as well for F90
+morestring=[b][stringstyle]",
+morestring=[d][stringstyle]'
+}
+
+\newcommand{\inputfortran}[1]{\lstinputlisting[style=fortranstyle, title={\codetitlestyle{FORTRAN code}}, belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{fortran}[1][]{\lstset{style=fortranstyle, title={\codetitlestyle{FORTRAN code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{fortran:nt}[1][]{\lstset{style=fortranstyle}}{}
+\newcommand{\fortraninline}{\lstinline[style=fortranstyle,basicstyle=\ttfamily]}
+
+
+%--- XML ---
+
+\lstdefinestyle{xmlstyle}{
+language=xml,
+showtabs=true,
+tab=,
+tabsize=2,
+basicstyle=\ttfamily\footnotesize,
+stringstyle=\color{stringcolour},
+showstringspaces=false,
+alsoletter={1234567890},
+emphstyle=\color{exceptioncolour}\bfseries,
+commentstyle=\color{commentcolour}\slshape,
+breaklines=true,
+breakatwhitespace= true,
+aboveskip=1ex,
+frame=trbl,
+framesep=.3ex,
+rulecolor=\color{black!40},
+backgroundcolor=\color{yellow!10}
+}
+
+\newcommand{\inputxml}[1]{\lstinputlisting[style=xmlstyle, title={\codetitlestyle{XML code}}, belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{xml}[1][]{\lstset{style=xmlstyle, title={\codetitlestyle{XML code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{xml:nt}[1][]{\lstset{style=xmlstyle}}{}
+
+%--- Typesetting Bash ---
+
+\lstdefinestyle{bashstyle}{
+language=bash,
+showtabs=true,
+tab=,
+tabsize=2,
+basicstyle=\ttfamily\footnotesize,
+stringstyle=\color{stringcolour},
+showstringspaces=false,
+alsoletter={1234567890},
+otherkeywords={\ , \}, \{, \%, \&, \|},
+emphstyle=\color{exceptioncolour}\bfseries,
+commentstyle=\color{commentcolour}\slshape,
+breaklines=true,
+breakatwhitespace= true,
+aboveskip=1ex,
+frame=trbl,
+framesep=.3ex,
+rulecolor=\color{black!40},
+backgroundcolor=\color{yellow!10}
+}
+
+\newcommand{\inputbash}[1]{\lstinputlisting[style=bashstyle, title={\codetitlestyle{Bash code}}, belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{bash}[1][]{\lstset{style=bashstyle, title={\codetitlestyle{Bash code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{bash:nt}[1][]{\lstset{style=bashstyle}}{}
+\lstnewenvironment{csh}[1][]{\lstset{style=bashstyle, title={\codetitlestyle{Csh code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{csh:nt}[1][]{\lstset{style=bashstyle}}{}
+
+%--- SWIG ---
+
+\newcommand{\inputswig}[1]{\lstinputlisting[style=cppstyle, title={\codetitlestyle{SWIG code}}, belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{swigcode}[1][]{\lstset{style=cppstyle, title={\codetitlestyle{SWIG code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{swigcode:nt}[1][]{\lstset{style=cppstyle}}{}
+
+%--- UFL ---
+
+\newcommand{\inputufl}[1]{\lstinputlisting[style=pythonstyle, title={\codetitlestyle{UFL code}}, belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{uflcode}[1][]{\lstset{style=pythonstyle, title={\codetitlestyle{UFL code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{uflcode:nt}[1][]{\lstset{style=pythonstyle}}{}
+
+%--- MATLAB ---
+
+% Note: problem with too large width of frame
+\lstnewenvironment{matlab}[1][]{
+\lstset{
+language=matlab,
+basicstyle=\ttfamily\small,
+backgroundcolor=\color{yellow!10}
+frame=trbl,
+rulecolor=\color{black!40},
+emphstyle=\color{blue},
+commentstyle=\color{commentcolour}\slshape,
+keywordstyle=\color{keywordcolour}\bfseries,
+}}{}
+
+%--- Other ---
+
+\lstdefinestyle{anycodestyle}{
+language=bash,
+showtabs=true,
+tab=,
+tabsize=2,
+basicstyle=\ttfamily\footnotesize,
+stringstyle=\color{stringcolour},
+showstringspaces=false,
+alsoletter={1234567890},
+emphstyle=\color{exceptioncolour}\bfseries,
+commentstyle=\color{commentcolour}\slshape,
+breaklines=true,
+breakatwhitespace= true,
+aboveskip=1ex,
+frame=trbl,
+framesep=.3ex,
+rulecolor=\color{black!40},
+backgroundcolor=\color{yellow!10}
+}
+
+\newcommand{\inputanycode}[1]{\lstinputlisting[style=anycodestyle, title={\codetitlestyle{Code}}, belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{anycode}[1][]{\lstset{style=anycodestyle, title={\codetitlestyle{Code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{anycode:nt}[1][]{\lstset{style=anycodestyle}}{}
+
+%--- Output from running programs ---
+
+\lstnewenvironment{progoutput}[1][]{\lstset{style=gencodestyle, title={\codetitlestyle{Output}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{progoutput:nt}[1][]{\lstset{style=gencodestyle}}{}
+
+%--- Generated code ---
+
+\lstdefinestyle{gencodestyle}{
+language=bash,
+showtabs=true,
+tab=,
+tabsize=2,
+basicstyle=\ttfamily\footnotesize,
+stringstyle=\color{stringcolour},
+showstringspaces=false,
+alsoletter={1234567890},
+emphstyle=\color{exceptioncolour}\bfseries,
+commentstyle=\color{commentcolour}\slshape,
+breaklines=true,
+breakatwhitespace= true,
+aboveskip=1ex,
+frame=trbl,
+framesep=.3ex,
+rulecolor=\color{black!40},
+backgroundcolor=\color{yellow!10}
+}
+
+\newcommand{\inputgencode}[1]{\lstinputlisting[style=cppstyle, title={\codetitlestyle{Generated code}}, belowcaptionskip=\belowtitleskip]{#1}}
+\lstnewenvironment{gencode}[1][]{\lstset{style=gencodestyle, title={\codetitlestyle{Generated code}}, belowcaptionskip=\belowtitleskip}}{}
+\lstnewenvironment{gencode:nt}[1][]{\lstset{style=gencodestyle}}{}
--- /dev/null
+%% do not edit this file, edit in the deal.II main repository, copy here, but
+%% keep this note in here for the next one.
+
+%% The deal.II paper
+
+@Article{BangerthHartmannKanschat2007,
+ title = {deal.{II} --- a General Purpose Object Oriented Finite Element Library},
+ author = {Bangerth, W. and Hartmann, R. and Kanschat, G.},
+ journal = {{ACM} Trans. Math. Softw.},
+ volume = {33},
+ number = {4},
+ year = {2007},
+ doi = {10.1145/1268776.1268779}
+}
+
+@Misc{changes84,
+ Title = {List of Changes},
+ Note = {\url{https://www.dealii.org/developer/doxygen/deal.II/changes_between_8_3_and_8_4.html}},
+ Url = {https://www.dealii.org/developer/doxygen/deal.II/changes_between_8_3_and_8_4.html}
+}
+
+@Misc{changes85,
+ Title = {List of Changes},
+ Note = {\url{https://www.dealii.org/developer/doxygen/deal.II/changes_between_8_4_2_and_8_5_0.html}},
+ Url = {https://www.dealii.org/developer/doxygen/deal.II/changes_between_8_4_2_and_8_5_0.html}
+}
+
+@Misc{changes90,
+ key={List of Changes},
+ Title = {List of Changes for 9.0},
+ Note = {\url{https://www.dealii.org/developer/doxygen/deal.II/changes_between_8_5_and_9_0.html}},
+ Url = {https://www.dealii.org/developer/doxygen/deal.II/changes_between_8_5_0_and_9_0.html}
+}
+
+@Misc{changes91,
+ key={List of Changes},
+ Title = {List of Changes for 9.1},
+ Note = {\url{https://www.dealii.org/developer/doxygen/deal.II/changes_between_9_0_1_and_9_1_0.html}},
+ Url = {https://www.dealii.org/developer/doxygen/deal.II/changes_between_9_0_1_and_9_1_0.html}
+}
+
+@article{dealII80,
+ title = {The \texttt{deal.II} Library, Version 8.0},
+ author = {W. Bangerth and T. Heister and L. Heltai and G. Kanschat
+ and M. Kronbichler and M. Maier and B. Turcksin and T. D. Young},
+ journal = {arXiv preprint \url{http://arxiv.org/abs/1312.2266v3}},
+ year = {2013},
+}
+
+@article{dealII81,
+ title = {The \texttt{deal.II} Library, Version 8.1},
+ author = {W. Bangerth and T. Heister and L. Heltai and G. Kanschat
+ and M. Kronbichler and M. Maier and B. Turcksin and T. D. Young},
+ journal = {arXiv preprint \url{http://arxiv.org/abs/1312.2266v4}},
+ year = {2013},
+}
+
+@article{dealII82,
+ title = {The \texttt{deal.II} Library, Version 8.2},
+ author = {W. Bangerth and T. Heister and L. Heltai
+ and G. Kanschat and M. Kronbichler
+ and M. Maier and B. Turcksin
+ and T. D. Young},
+ journal = {Archive of Numerical Software},
+ volume = 3,
+ year = {2015},
+}
+
+@article{dealII83,
+ title = {The \texttt{deal.II} Library, Version 8.3},
+ author = {W. Bangerth and T. Heister and L. Heltai
+ and G. Kanschat and M. Kronbichler
+ and M. Maier and B. Turcksin},
+ journal = {Archive of Numerical Software},
+ volume = {4},
+ number = {100},
+ year = {2016},
+ pages = {1--11},
+ issn = {2197-8263},
+ doi = {10.11588/ans.2016.100.23122},
+}
+
+ @article{dealII85,
+ title = {The \texttt{deal.II} Library, Version 8.5},
+ author = {D. Arndt and W. Bangerth and D. Davydov and T. Heister and
+ L. Heltai and M. Kronbichler and M. Maier and J.-P. Pelteret
+ and B. Turcksin and D. Wells},
+ journal = {Journal of Numerical Mathematics},
+ year = {2017},
+ volume = 25,
+ number = 3,
+ pages = {137--146},
+ Doi = {10.1515/jnma-2016-1045}
+ }
+
+@article{dealII84,
+ title = {The \texttt{deal.II} Library, Version 8.4},
+ author = {W. Bangerth and D. Davydov and T. Heister and
+ L. Heltai and G. Kanschat and M. Kronbichler and M. Maier
+ and B. Turcksin and D. Wells},
+ journal = {Journal of Numerical Mathematics},
+ year = {2016},
+ volume = {24},
+ number = {3},
+ pages = {135--141},
+ doi = {10.1515/jnma-2016-1045}
+ }
+
+
+
+@article{dealII90,
+title = {The \texttt{deal.II} Library, Version 9.0},
+author = {G. Alzetta and D. Arndt and W. Bangerth and V. Boddu and
+ B. Brands and D. Davydov and R. Gassmoeller and T. Heister and
+ L. Heltai and K. Kormann and M. Kronbichler and M. Maier and
+ J.-P. Pelteret and B. Turcksin and D. Wells},
+journal = {J. Numer. Math.},
+volume = "26",
+number = "4",
+pages = "173--184",
+year = 2018,
+doi = "10.1515/jnma-2018-0054"
+}
+
+
+
+%% The deal.II web page and online reference.
+%% Please cite specific versions only if you really need to
+
+@Manual{DealIIReference,
+ title = {{\tt deal.{I}{I}} Differential Equations Analysis Library,
+ Technical Reference},
+ author = {W. Bangerth and T. Heister and G. Kanschat},
+ note = {\texttt{http://www.dealii.org}},
+ url = {http://www.dealii.org}
+}
+
+@Manual{DealIIReference600,
+ title = {{\tt deal.{I}{I}} Differential Equations Analysis Library,
+ Technical Reference},
+ author = {W. Bangerth and G. Kanschat},
+ note = {\texttt{http://www.dealii.org}},
+ url = {http://www.dealii.org/6.0.0},
+ year = 2007
+}
+
+@Manual{DealIIReference610,
+ title = {{\tt deal.{I}{I}} Differential Equations Analysis Library,
+ Technical Reference},
+ author = {W. Bangerth and G. Kanschat},
+ note = {\texttt{http://www.dealii.org}},
+ url = {http://www.dealii.org/6.1.0},
+ year = 2008
+}
+
+@Manual{DealIIReference621,
+ title = {{\tt deal.{I}{I}} Differential Equations Analysis Library,
+ Technical Reference},
+ author = {W. Bangerth and G. Kanschat},
+ note = {\texttt{http://www.dealii.org}},
+ url = {http://www.dealii.org/6.2.1},
+ year = 2009
+}
+
+@Manual{DealIIReference631,
+ title = {{\tt deal.{I}{I}} Differential Equations Analysis Library,
+ Technical Reference},
+ author = {W. Bangerth and G. Kanschat},
+ note = {\texttt{http://www.dealii.org}},
+ url = {http://www.dealii.org/6.3.1},
+ year = 2010
+}
+
+@Manual{DealIIReference700,
+ title = {{\tt deal.{I}{I}} Differential Equations Analysis Library,
+ Technical Reference},
+ author = {W. Bangerth and G. Kanschat},
+ note = {\texttt{http://www.dealii.org}},
+ url = {http://www.dealii.org/7.0.0},
+ year = 2011
+}
+
+@Manual{DealIIReference710,
+ title = {{\tt deal.{I}{I}} Differential Equations Analysis Library,
+ Technical Reference},
+ author = {W. Bangerth and G. Kanschat},
+ note = {\texttt{http://www.dealii.org}},
+ url = {http://www.dealii.org/7.1.0},
+ year = 2011
+}
+
+%% Additional papers on deal.II and special aspects
+
+@TechReport{BangerthKanschat1999,
+ title = {Concepts for Object-Oriented Finite Element Software -- the \texttt{deal.II} library},
+ address = {Heidelberg},
+ author = {Bangerth, W. and Kanschat, G.},
+ institution = {SFB~359},
+ number = {1999-43},
+ type = {Preprint},
+ year = {1999},
+ url = {http://www.dealii.org/developer/reports/deal-paper.pdf}
+}
+
+
+@article{SartoriGiulianiBardelloni-2018-a,
+ Author = {Sartori, Alberto and Giuliani, Nicola and Bardelloni, Mauro and Heltai, Luca},
+ Journal = {SoftwareX},
+ Pages = {318--327},
+ Title = {{deal2lkit: A toolkit library for high performance programming in deal.II}},
+ Volume = {7},
+ Year = {2018}}
+
+
+@Article{BangerthKayserHerold2007,
+ author = {W. Bangerth and O. Kayser-Herold},
+ title = {Data Structures and Requirements for $hp$ Finite Element
+ Software},
+ journal = {ACM Trans. Math. Softw.},
+ year = 2009,
+ volume = 36,
+ number = 1,
+ pages = {4/1--4/31}
+}
+
+@Article{JanssenKanschat2011,
+ author = {Janssen, B. and Kanschat, G.},
+ title = {Adaptive multilevel methods with local smoothing for
+ {${H}^1$}- and {$H^{\text{curl}}$}-conforming high order
+ finite element methods},
+ journal = {SIAM J. Sci. Comput.},
+ year = 2011,
+ volume = 33,
+ number = 4,
+ pages = {2095--2114},
+ doi = {10.1137/090778523}
+}
+
+@Article{Kanschat2004,
+ title = {Multi-level methods for discontinuous {G}alerkin {FEM} on locally refined meshes},
+ author = {Kanschat, G.},
+ journal = {Comput. \& Struct.},
+ number = {28},
+ pages = {2437--2445},
+ volume = {82},
+ year = {2004},
+ doi = {10.1016/j.compstruc.2004.04.015}
+}
+
+@Article{BangerthBursteddeHeisterKronbichler11,
+ author = {W. Bangerth and C. Burstedde and T. Heister
+ and M. Kronbichler},
+ title = {Algorithms and data structures for massively parallel generic
+ adaptive finite element codes},
+ journal = {ACM Trans. Math. Softw.},
+ year = 2011,
+ volume = 38,
+ pages = {14/1--28}}
+
+
+@Article{KronbichlerKormann2012,
+ author = {M. Kronbichler and K. Kormann},
+ title = {A generic interface for parallel cell-based finite element operator application},
+ journal = {Comput. Fluids},
+ year = 2012,
+ volume = 63,
+ pages = {135--147}}
+
+@Article{KronbichlerWall2018,
+ author = {Kronbichler, M. and Wall, W. A.},
+ title = {A performance comparison of continuous and discontinuous {G}alerkin
+ methods with fast multigrid solvers},
+ journal = {SIAM J. Sci. Comput.},
+ pages = {A3423--A3448},
+ volume = 40,
+ number = 5,
+ year = 2018,
+ doi = {10.1137/16M110455X}}
+
+@Article{KronbichlerKormann2019,
+ author = {M. Kronbichler and K. Kormann},
+ title = {Fast matrix-free evaluation of discontinuous {G}alerkin finite element operators},
+ journal = {ACM Trans. Math. Soft.},
+ volume = {in press},
+ pages = {1--37},
+ year = 2019}
+
+@Article{KronbichlerLjungkvist2019,
+ author = {Kronbichler, M. and Ljungkvist, K.},
+ title = {Multigrid for Matrix-Free High-Order Finite Element Computations on Graphics Processors},
+ journal = {ACM Trans. Parallel Comput.},
+ volume = {6},
+ number = {1},
+ pages = {2/1--32},
+ year = 2019}
+
+
+@techreport{DeSimoneHeltaiManigrasso2009,
+ Author = {A. DeSimone and L. Heltai and C. Manigrasso},
+ Institution = {SISSA},
+ Number = {42/2009/M},
+ Title = {Tools for the Solution of {PDEs} Defined on Curved Manifolds with deal.{II}},
+ Year = {2009}}
+
+@techreport{HeltaiMola2015,
+ Author = {L. Heltai and A. Mola},
+ Institution = {SISSA},
+ Title = {{Towards the Integration of CAD and FEM using open source libraries: a
+Collection of deal.II Manifold Wrappers for the OpenCASCADE Library}},
+ Year = 2015,
+ Note = {Submitted}}
+
+@article{trilinos64,
+ author = {C. Jhurani and
+ T. M. Austin and
+ M. A. Heroux and
+ J. M. Willenbring},
+ title = {Supporting 64-bit global indices in {E}petra and other {T}rilinos
+ packages -- {T}echniques used and lessons learned},
+ journal = {arXiv},
+ volume = {1307.6638},
+ year = {2013},
+ ee = {http://arxiv.org/abs/1307.6638},
+ bibsource = {DBLP, http://dblp.uni-trier.de}
+}
+
+
+@Article{BH13,
+ author = {Wolfgang Bangerth and Timo Heister},
+ title = {What makes computational open source software libraries successful?},
+ journal = {Computational Science \& Discovery},
+ year = 2013,
+ volume = 6,
+ pages = {015010/1--18}}
+
+
+@Article{FHB13,
+ author = {J. Frohne and T. Heister and W. Bangerth},
+ title = {Efficient numerical methods for the large-scale, parallel
+ solution of elastoplastic contact problems},
+ journal = {submitted},
+ year = 2013}
+
+@Article{TKB16,
+ author = {B. Turcksin and M. Kronbichler and W. Bangerth},
+ title = {\textit{WorkStream} -- a design pattern for multicore-enabled finite element computations},
+ journal = {ACM Transactions on Mathematical Software},
+ year = 2016,
+ volume = 43,
+ number = 1,
+ pages = {2/1--2/29}
+}
+
+@Misc{cpp11,
+ key = {C++11},
+ author = {International Standards Organization},
+ title = {{ISO/IEC} 14882:2011: The {C}++11 Programming Language Standard},
+ howpublished = {\url{http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372}},
+ year = 2011}
+
+@Article{trilinos,
+ author = {M. A. Heroux and R. A. Bartlett and V. E. Howle and R. J. Hoekstra and J. J. Hu
+ and T. G. Kolda and R. B. Lehoucq and K. R. Long and R. P. Pawlowski and
+ E. T. Phipps and A. G. Salinger and H. K. Thornquist and R. S. Tuminaro and
+ J. M. Willenbring and A. Williams and K. S. Stanley},
+ title = {An overview of the {T}rilinos project},
+ journal = {ACM Trans. Math. Softw.},
+ year = 2005,
+ volume = 31,
+ pages = {397--423}}
+
+@Misc{trilinos-web-page,
+ Author = "M. A. Heroux and others",
+ Title = "{Trilinos} web page",
+ Note = "\url{http://trilinos.org}",
+ Year = "2018"}
+
+# From http://www.mcs.anl.gov/petsc/documentation/referencing.html
+@Misc{petsc-web-page,
+ author = {S. Balay and S. Abhyankar and M.~F. Adams and J. Brown and P. Brune
+ and K. Buschelman and L. Dalcin and V. Eijkhout and W.~D. Gropp
+ and D. Karpeyev and D. Kaushik and M.~G. Knepley
+ and D. May and L. Curfman McInnes and R. Mills and T. Munson
+ and K. Rupp and P. Sanan B.~F. Smith and S. Zampini
+ and H. Zhang and H. Zhang},
+ title = {{PETS}c {W}eb page},
+ url = {http://www.mcs.anl.gov/petsc},
+ howpublished = {\url{http://www.mcs.anl.gov/petsc}},
+ year = {2018}
+ }
+
+@TechReport{petsc-user-ref,
+ author = {S. Balay and S. Abhyankar and M.~F. Adams and J. Brown and P. Brune
+ and K. Buschelman and L. Dalcin and V. Eijkhout and W.~D. Gropp
+ and D. Karpeyev and D. Kaushik and M.~G. Knepley
+ and D. May and L. Curfman McInnes and R. Mills and T. Munson
+ and K. Rupp and P. Sanan B.~F. Smith and S. Zampini
+ and H. Zhang and H. Zhang},
+ title = {{PETS}c Users Manual},
+ institution = {Argonne National Laboratory},
+ year = 2018,
+ number = {ANL-95/11 - Revision 3.9},
+ url = {http://www.mcs.anl.gov/petsc}
+ }
+
+
+@Article{umfpack,
+ author = {T. A. Davis},
+ title = {Algorithm 832: {UMFPACK V4.3}---an unsymmetric-pattern multifrontal method},
+ journal = {ACM Trans. Math. Softw.},
+ year = 2004,
+ volume = 30,
+ pages = {196--199}}
+
+@Book{Rei07,
+ author = {J. Reinders},
+ title = {Intel Threading Building Blocks},
+ publisher = {O'Reilly},
+ year = 2007}
+
+@Article{p4est,
+ author = {C. Burstedde and L. C. Wilcox and O. Ghattas},
+ title = {\texttt{p4est}: {S}calable algorithms for parallel
+ adaptive mesh refinement on forests of octrees},
+ journal = {SIAM J. Sci. Comput.},
+ volume = 33,
+ number = 3,
+ pages = {1103-1133},
+ year = 2011}
+
+@Article{Burstedde2018,
+ author = {C. Burstedde},
+ title = {Parallel tree algorithms for {AMR} and non-standard data access},
+ journal = {arXiv e-prints},
+ keywords = {Computer Science - Distributed, Parallel, and Cluster Computing, 65D18, 65M50, 65Y05, 68W10},
+ year = 2018,
+ month = {Mar},
+ eid = {arXiv:1803.08432},
+ pages = {arXiv:1803.08432},
+ archivePrefix = {arXiv},
+ eprint = {1803.08432},
+ primaryClass = {cs.DC},
+ adsurl = {https://ui.adsabs.harvard.edu/abs/2018arXiv180308432B},
+ adsnote = {Provided by the SAO/NASA Astrophysics Data System}
+}
+
+@Book{arpack,
+ author = {R. B. Lehoucq and D. C. Sorensen and C. Yang},
+ title = {{ARPACK} users' guide: solution of large-scale eigenvalue problems with implicitly restarted Arnoldi methods},
+ publisher = {SIAM, Philadelphia},
+ year = 1998}
+
+@Misc{mumps-web-page,
+ key = {MUMPS},
+ title = {{MUMPS: a MUltifrontal Massively Parallel sparse direct Solver}},
+ note = {\url{http://graal.ens-lyon.fr/MUMPS/}}}
+
+
+@Article{ADE00,
+ author = {P.R. Amestoy and I.S. Duff and J.-Y. L'Excellent},
+ title = {Multifrontal parallel distributed symmetric and unsymmetric solvers},
+ journal = {Comput. Methods in Appl. Mech. Eng.},
+ year = 2000,
+ volume = 184,
+ pages = {501--520}}
+
+
+@article{MUMPS:1,
+ author = {P. R. Amestoy and I. S. Duff and J. Koster and J.-Y. L'Excellent},
+ title = {A Fully Asynchronous Multifrontal Solver Using Distributed Dynamic Scheduling},
+ journal = {SIAM Journal on Matrix Analysis and Applications},
+ volume = {23},
+ number = {1},
+ year = {2001},
+ pages = {15-41}
+ }
+
+
+@article{MUMPS:2,
+ author = {P. R. Amestoy and A. Guermouche and J.-Y. L'Excellent and S. Pralet},
+ title = {Hybrid scheduling for the parallel solution of linear systems},
+ journal = {Parallel Computing},
+ volume = {32},
+ number = {2},
+ year = {2006},
+ pages = {136-156}
+}
+
+@Misc{ginkgo-web-page,
+ key = {ginkgo},
+ title = {Ginkgo: high-performance linear algebra library for manycore
+ systems},
+ note ={\url{https://github.com/ginkgo-project/ginkgo}}
+}
+
+@Misc{opencascade-web-page,
+ key = {OpenCASCADE},
+ title = {{OpenCASCADE: Open CASCADE Technology, 3D modeling \& numerical simulation}},
+ note = {\url{http://www.opencascade.org/}}}
+
+
+@Misc{muparser-web-page,
+ key = {muparse},
+ title = {{muparser: Fast Math Parser Library}},
+ note = {\url{http://muparser.beltoforion.de/}}}
+
+@Misc{symengine-web-page,
+ key = {symengine},
+ title = {{SymEngine: fast symbolic manipulation library, written in C++}},
+ note = {\url{https://github.com/symengine/symengine}, \url{http://sympy.org/}}}
+
+@Misc{hdf5,
+ author = {{The HDF Group}},
+ title = "{Hierarchical Data Format, version 5}",
+ year = {1997-2018},
+ note = {\url{http://www.hdfgroup.org/HDF5/}}
+}
+
+@article{karypis1998fast,
+ title={A fast and high quality multilevel scheme for partitioning irregular graphs},
+ author={Karypis, G. and Kumar, V.},
+ journal={SIAM J. Sci. Comput.},
+ volume={20},
+ number={1},
+ pages={359--392},
+ year={1998},
+ publisher={SIAM}
+}
+@article{rew1990netcdf,
+ title={{NetCDF}: an interface for scientific data access},
+ author={Rew, R. and Davis, G.},
+ journal={Computer Graphics and Applications, IEEE},
+ volume={10},
+ number={4},
+ pages={76--82},
+ year={1990},
+ publisher={IEEE}
+}
+@Article{Hernandez:2005:SSF,
+ author = "V. Hernandez and J. E. Roman and V. Vidal",
+ title = "{SLEPc}: A Scalable and Flexible Toolkit for the Solution of Eigenvalue
+ Problems",
+ journal = "{ACM} Trans. Math. Software",
+ volume = "31",
+ number = "3",
+ pages = "351--362",
+ year = "2005"
+}
+
+@article{Lachat1976,
+author = {Lachat, J. C. and Watson, J. O.},
+doi = {10.1002/nme.1620100503},
+issn = {0029-5981},
+journal = {International Journal for Numerical Methods in Engineering},
+number = {5},
+pages = {991--1005},
+title = {{Effective numerical treatment of boundary integral equations: A formulation for three-dimensional elastostatics}},
+url = {http://doi.wiley.com/10.1002/nme.1620100503},
+volume = {10},
+year = {1976}
+}
+
+@article{Telles-2005-a,
+author = {Telles, JCF},
+journal = {International Journal for Numerical Methods in Engineering},
+mendeley-groups = {FEM},
+mendeley-tags = {filedpapers},
+number = {5},
+publisher = {Wiley Online Library},
+title = {{A self-adaptive co-ordinate transformation for efficient numerical evaluation of general boundary element integrals}},
+type = {Journal article},
+volume = {24},
+year = {2005}
+}
+
+@article{GiulianiMolaHeltai-2015-a,
+author = {Giuliani, Nicola and Mola, Andrea and Heltai, Luca and Formaggia, Luca},
+doi = {10.1016/j.enganabound.2015.04.006},
+file = {:Users/heltai/Library/Mobile Documents/com\~{}apple\~{}CloudDocs/Mendeley//Giuliani et al.\_2015\_FEM SUPG stabilisation of mixed isoparametric BEMs application to linearised free surface flows.pdf:pdf},
+journal = {Engineering Analysis with Boundary Elements},
+keywords = {linearised free surface},
+pages = {8--22},
+title = {{FEM SUPG stabilisation of mixed isoparametric BEMs: application to linearised free surface flows}},
+volume = {59},
+year = {2015}
+}
+
+@book{Cottrell2009,
+author = {Cottrell, JA A and Hughes, TJR J R and Bazilevs, Y.},
+file = {:Users/heltai/Library/Mobile Documents/com\~{}apple\~{}CloudDocs/Mendeley/Cottrell, Hughes, Bazilevs\_2009\_Isogeometric analysis toward integration of CAD and FEA.pdf:pdf},
+mendeley-groups = {Igastokes,Books,Geostrophisics,FEM},
+publisher = {John Wiley \& Sons Inc},
+title = {{Isogeometric analysis: toward integration of CAD and FEA}},
+url = {http://books.google.com/books?hl=en\&lr=\&id=9Q9y0Xtz5E4C\&oi=fnd\&pg=PR5\&dq=Isogeometric+analysis:+toward+integration+of+CAD+and+FEA\&ots=JLSZtYQkL3\&sig=MZdoIBEu1cZs2sAwnPDy4WVOaVE},
+year = {2009}
+}
+
+@book{AbramowitzStegun,
+ author = {M. Abramowitz and I.A. Stegun},
+ title = {Handbook of Mathematical Functions},
+ publisher = {Dover},
+ year = {1965}
+}
+
+@techreport{MadayPatera,
+ author = {Y. Maday and A.T. Patera and E.M. Rønquist},
+ title = {A well-posed optimal spectral element approximation for the Stokes problem},
+ number = {87-47},
+ institution = {ICASE},
+ address = {Hampton, VA},
+ year = {1987}
+}
+
+
+@article{MaierBardelloniHeltai-2016-a,
+ Author = {Matthias Maier and Mauro Bardelloni and Luca Heltai},
+ Journal = {Computers and Mathematics with Applications},
+ Title = {Linear{O}perator -- a generic, high-level expression syntax for linear algebra},
+ Doi = {10.1016/j.camwa.2016.04.024},
+ number = {1},
+ pages = {1--24},
+ volume = {72},
+ Year = {2016}}
+
+@misc{MaierBardelloniHeltai-2016-b,
+ author = {Matthias Maier and
+ Mauro Bardelloni and
+ Luca Heltai},
+ title = {{LinearOperator Benchmarks, Version 1.0.0}},
+ month = mar,
+ year = 2016,
+ doi = {10.5281/zenodo.47202},
+ url = {http://dx.doi.org/10.5281/zenodo.47202}
+}
+
+@article{Davydov2016,
+ Author = {Denis Davydov and Tymofiy Gerasimov and Jean-Paul Pelteret and Paul Steinmann},
+ Day = {12},
+ Doi = {10.1186/s40323-017-0093-0},
+ Issn = {2213-7467},
+ Journal = {Advanced Modeling and Simulation in Engineering Sciences},
+ Month = {Dec},
+ Number = {1},
+ Pages = {7},
+ Title = {Convergence study of the h-adaptive {PUM} and the hp-adaptive {FEM} applied to eigenvalue problems in quantum mechanics},
+ Volume = {4},
+ Year = {2017},
+}
+
+@misc{gsl2016,
+ author = {Galassi, M and Davies, J and Theiler, J and Gough, B and Jungman, G and Alken, P and Booth, M and Rossi, F and Ulerich, R},
+ title = {GNU Scientific Library Reference Manual (Edition 2.3)},
+ journal = {Library available online at http://www. gnu. org/software/gsl},
+ year = {2016}
+}
+
+@misc{nanoflann,
+ author = {Blanco, Jose Luis and Rai, Prankal Kumar},
+ title = {nanoflann: a {C}++ header-only fork of {FLANN}, a library for
+ {N}earest {N}eighbor ({NN}) with {KD}-trees},
+ howpublished = {\url{https://github.com/jlblancoc/nanoflann}},
+ year = {2014}
+}
+
+@inproceedings{adol-c,
+ author = {A. Walther and A. Griewank},
+ title = {Getting started with {ADOL}-{C}},
+ booktitle = {Combinatorial Scientific Computing},
+ publisher = {U. Naumann and O.Schenk},
+ series = {Chapman-Hall CRC Computational Science},
+ pages = {181-202},
+ year = {2012}
+}
+
+@Article{Griewank1996a,
+ author = {Griewank, Andreas and Juedes, David and Utke, Jean},
+ title = {Algorithm 755: {ADOL-C}: a package for the automatic differentiation of algorithms written in {C/C++}},
+ journal = {ACM Transactions on Mathematical Software (TOMS)},
+ year = {1996},
+ volume = {22},
+ number = {2},
+ pages = {131--167},
+ doi = {10.1145/229473.229474},
+ publisher = {ACM},
+}
+
+@article{sundials,
+ title={{SUNDIALS}: Suite of nonlinear and differential/algebraic equation solvers},
+ author={Hindmarsh, Alan C and Brown, Peter N and Grant, Keith E and Lee, Steven L and Serban, Radu and Shumaker, Dan E and Woodward, Carol S},
+ journal={ACM Transactions on Mathematical Software (TOMS)},
+ volume={31},
+ number={3},
+ pages={363--396},
+ year={2005},
+ publisher={ACM}
+}
+
+@article{assimp,
+ title={Open asset import library (assimp)},
+ author={Schulze, Thomas and Gessler, Alexander and Kulling, Kim and Nadlinger, David and Klein, Jonathan and Sibly, Mark and Gubisch, Matthias},
+ journal={Computer Software, URL: https://github. com/assimp/assimp},
+ year={2012}
+}
+
+@Misc{clang-tidy,
+ Title = {{Clang-Tidy}},
+ Author = {LLVM},
+ HowPublished = {\url{http://clang.llvm.org/extra/clang-tidy/}},
+}
+
+@Misc{coverity,
+ Title = {{C}overity {S}can ({Synopsys, Inc.})},
+ Key = {Coverity},
+ HowPublished = {\url{https://scan.coverity.com}},
+}
+
+@Article{GLHPB18,
+ author = {R. Gassm{\"o}ller and H. Lokavarapu and E. Heien and E. G. Puckett and W. Bangerth},
+ title = {Flexible and scalable particle-in-cell methods with adaptive mesh
+ refinement for geodynamic computations},
+ journal = {submitted},
+ year = {2018},
+ OPTkey = {},
+ OPTvolume = {},
+ OPTnumber = {},
+ OPTpages = {},
+ OPTmonth = {},
+ OPTnote = {},
+ OPTannote = {}
+}
+
+
+@TechReport{GHPB16,
+ author = {R. Gassm{\"o}ller and E. Heien and E. G. Puckett and W. Bangerth},
+ title = {Flexible and scalable particle-in-cell methods for massively parallel computations},
+ institution = {arXiv:1612.03369},
+ year = 2016}
+
+
+@Article{KHB12,
+ author = {M. Kronbichler and T. Heister and W. Bangerth},
+ title = {High Accuracy Mantle Convection Simulation through Modern Numerical Methods},
+ journal = {Geophysics Journal International},
+ year = 2012,
+ volume = 191,
+ pages = {12--29}}
+
+@Article{HDGB17,
+ author = {T. Heister and J. Dannberg and R. Gassm{\"o}ller and W. Bangerth},
+ title = {High Accuracy Mantle Convection Simulation through Modern Numerical Methods. {II}: Realistic Models and Problems},
+ journal = {Geophysics Journal International},
+ year = 2017,
+ volume = 210,
+ pages = {833--851}}
+
+@techreport{ridzal2014rapid,
+ title={Rapid Optimization Library.},
+ author={Ridzal, Denis and Kouri, Drew Philip},
+ year={2014},
+ institution={Sandia National Laboratories (SNL-NM), Albuquerque, NM (United States)}
+}
+
+@BOOK{slug,
+ AUTHOR = {Blackford, L. S. and Choi, J. and Cleary, A. and
+ D'Azevedo, E. and Demmel, J. and Dhillon, I. and
+ Dongarra, J. and Hammarling, S. and Henry, G. and
+ Petitet, A. and Stanley, K. and Walker, D. and
+ Whaley, R. C.},
+ TITLE = {{ScaLAPACK} Users' Guide},
+ PUBLISHER = {Society for Industrial and Applied Mathematics},
+ YEAR = {1997},
+ ADDRESS = {Philadelphia, PA},
+ ISBN = {0-89871-397-8 (paperback)}
+}
+
+@article{GiulianiMolaHeltai-2018-a,
+ Author = {Giuliani, Nicola and Mola, Andrea and Heltai, Luca},
+ Journal = {Advances in Engineering Software},
+ Number = {March},
+ Pages = {39--58},
+ Title = {{$\pi$-BEM: A flexible parallel implementation for adaptive, geometry aware, and high order boundary element methods}},
+ Volume = {121},
+ Year = {2018}}
+
+@article{geuzaine2009gmsh,
+ title={Gmsh: A 3-D finite element mesh generator with built-in pre-and post-processing facilities},
+ author={Geuzaine, Christophe and Remacle, Jean-Fran{\c{c}}ois},
+ journal={International journal for numerical methods in engineering},
+ volume={79},
+ number={11},
+ pages={1309--1331},
+ year={2009},
+ publisher={Wiley Online Library}
+}
+
+@TechReport{ClevengerHeisterKanschatKronbichler2019,
+ author = {Clevenger, T. C. and Heister, T. and Kanschat, G. and Kronbichler, M.},
+ title = {A flexible, parallel, adaptive geometric multigrid method for {FEM}},
+ institution = {arXiv:1904.03317},
+ year = 2019}
+
+
+@BOOK{lapack,
+ AUTHOR = {Anderson, E. and Bai, Z. and Bischof, C. and
+ Blackford, S. and Demmel, J. and Dongarra, J. and
+ Du Croz, J. and Greenbaum, A. and Hammarling, S. and
+ McKenney, A. and Sorensen, D.},
+ TITLE = {{LAPACK} Users' Guide},
+ EDITION = {Third},
+ PUBLISHER = {Society for Industrial and Applied Mathematics},
+ YEAR = {1999},
+ ADDRESS = {Philadelphia, PA},
+ ISBN = {0-89871-447-8 (paperback)}
+}
+
+@misc{Pelteret2016a,
+ author = {Pelteret, J-P. V. and McBride, A.},
+ title = {The \texttt{deal.II} code gallery: Quasi-Static Finite-Strain Compressible Elasticity},
+ year = {2016},
+ url = {https://dealii.org/developer/doxygen/deal.II/code_gallery_Quasi_static_Finite_strain_Compressible_Elasticity.html},
+ note = {Accessed April 2018. doi: \href{http://dx.doi.org/10.5281/zenodo.1228964}{\texttt{10.5281/zenodo.1228964}}},
+ doi = {10.5281/zenodo.1228964},
+}
+
+@InCollection{Bartlett2006a,
+ author = {Bartlett, R. A. and Gay, D. M. and Phipps, E. T.},
+ title = {Automatic Differentiation of C++ Codes for Large-Scale Scientific Computing},
+ booktitle = {International Conference on Computational Science {\textendash} {ICCS} 2006},
+ publisher = {Springer Berlin Heidelberg},
+ year = {2006},
+ editor = {Alexandrov, V.N. and van Albada, G.D. and Sloot, P.M.A. amd Dongarra, J.},
+ pages = {525--532},
+ doi = {10.1007/11758549_73},
+ organization = {Springer},
+}
+
+@Misc{cusolver,
+ key = {cusolver},
+ title = {cu{SOLVER} {L}ibrary},
+ note = {\url{https://docs.nvidia.com/cuda/cusolver/index.html}}
+}
+
+@Misc{cusparse,
+ key = {cusparse},
+ title = {cu{SPARSE} {L}ibrary},
+ note = {\url{https://docs.nvidia.com/cuda/cusparse/index.html}}
+}
+
+
+@article{BR85,
+ doi = {10.1090/s0025-5718-1985-0771031-7},
+ url = {https://doi.org/10.1090/s0025-5718-1985-0771031-7},
+ year = {1985},
+ publisher = {American Mathematical Society ({AMS})},
+ volume = {44},
+ number = {169},
+ pages = {71--79},
+ author = {Christine Bernardi and Genevi$\lbrace${\`{e}}ve Raugel},
+ title = {Analysis of some finite elements for the {S}tokes problem},
+ journal = {Mathematics of Computation}
+}
+
+@PhdThesis{Zag06,
+ author = {S. Zaglmayr},
+ title = {High Order Finite Element Methods for Electromagnetic Field Computation},
+ school = {Johannes Kepler University, Linz, Austria},
+ year = 2006}
+
+
+@article{Kynch2017,
+ doi = {10.1016/j.compstruc.2016.05.021},
+ url = {https://doi.org/10.1016/j.compstruc.2016.05.021},
+ year = {2017},
+ month = mar,
+ publisher = {Elsevier {BV}},
+ volume = {181},
+ pages = {41--54},
+ author = {R. M. Kynch and P. D. Ledger},
+ title = {Resolving the sign conflict problem for hp{\textendash}hexahedral {N}{\'{e}}d{\'{e}}lec elements with application to eddy current problems},
+ journal = {Computers {\&} Structures}
+}
+
+@inproceedings{ljungkvist2017,
+ author = {Ljungkvist, Karl},
+ title = {Matrix-free Finite-element Computations on Graphics Processors with Adaptively Refined Unstructured Meshes},
+ booktitle = {Proceedings of the 25th High Performance Computing Symposium},
+ series = {HPC '17},
+ year = {2017},
+ isbn = {978-1-5108-3822-2},
+ location = {Virginia Beach, Virginia},
+ pages = {1:1--1:12},
+ articleno = {1},
+ numpages = {12},
+ url = {http://dl.acm.org/citation.cfm?id=3108096.3108097},
+ acmid = {3108097},
+ publisher = {Society for Computer Simulation International},
+ address = {San Diego, CA, USA},
+ keywords = {GPU, adaptive refinement, finite element methods, hanging nodes, matrix free},
+}
+
--- /dev/null
+\documentclass{ansarticle-preprint}
+%\usepackage{ucs}
+\usepackage[utf8]{inputenc}
+\usepackage{amsmath}
+%\usepackage{cite}
+\usepackage{anslistings}
+\usepackage{multicol}
+\usepackage{pdfsync}
+
+\usepackage{pgfplots}
+\usepackage{pgfplotstable}
+
+\usepackage{fontenc}
+\usepackage{graphicx}
+\usepackage{xspace}
+
+\usepackage[normalem]{ulem}
+
+\pgfplotsset{compat=1.9}
+
+\newcommand{\specialword}[1]{\texttt{#1}}
+\newcommand{\dealii}{{\specialword{deal.II}}\xspace}
+\newcommand{\pfrst}{{\specialword{p4est}}\xspace}
+\newcommand{\trilinos}{{\specialword{Trilinos}}\xspace}
+\newcommand{\aspect}{\specialword{Aspect}\xspace}
+\newcommand{\petsc}{\specialword{PETSc}\xspace}
+\newcommand{\cmake}{{\specialword{CMake}}\xspace}
+\newcommand{\autoconf}{{\specialword{autoconf}}\xspace}
+
+%
+% Author list -- please add yourself in both places below (in
+% alphabetical order) if you think that your
+% contributions to the last release warrant this
+%
+
+\hypersetup{
+ pdfauthor={
+% Daniel Arndt,
+% Wolfgang Bangerth,
+% Thomas C. Clevenger,
+% Denis Davydov,
+% Marc Fehling,
+% Daniel Garcia-Sanchez,
+% Graham Harper,
+ Timo Heister,
+% Luca Heltai,
+% Martin Kronbichler,
+% Ross Maguire Kynch,
+% Matthias Maier,
+% Jean-Paul Pelteret,
+% Bruno Turcksin,
+% David Wells
+ },
+ pdftitle={The deal.II Library, Version 9.2, 2020},
+}
+
+\title{The \dealii Library, Version 9.2}
+
+% \author[*1]{Daniel Arndt}
+% \affil[1]{Computational Engineering and Energy Sciences Group,
+% Computional Sciences and Engineering Division,
+% Oak Ridge National Laboratory, 1 Bethel Valley Rd.,
+% TN 37831, USA.
+% {\texttt{\{arndtd,turcksinbr\}@ornl.gov}}}
+%
+% \author[2]{Wolfgang~Bangerth}
+% \affil[2]{Department of Mathematics, Colorado State University, Fort
+% Collins, CO 80523-1874, USA.
+% {\texttt{bangerth@colostate.edu},
+% \texttt{harper@math.colostate.edu}}}
+%
+% \author[3]{Thomas~C.~Clevenger}
+% \affil[3]{School of Mathematical and Statistical Sciences,
+% Clemson University,
+% Clemson, SC, 29634, USA
+% {\texttt{\{tcleven, heister\}@clemson.edu}}}
+%
+% \author[4]{Denis~Davydov}
+% \affil[4]{Chair of Applied Mechanics,
+% Friedrich-Alexander-Universit\"{a}t Erlangen-N\"{u}rnberg,
+% Egerlandstr.\ 5,
+% 91058 Erlangen, Germany.
+% {\texttt{\{denis.davydov,jean-paul.pelteret\}@fau.de}}}
+%
+% \author[5]{Marc~Fehling}
+% \affil[5]{Institute for Advanced Simulation,
+% Forschungszentrum J\"{u}lich GmbH,
+% 52425 J\"{u}lich, Germany.
+% {\texttt{m.fehling@fz-juelich.de}}}
+%
+% \author[6]{Daniel Garcia-Sanchez}
+% \affil[6]{Sorbonne Universit\'es, UPMC Univ.\ Paris 06, CNRS-UMR 7588,
+% Institut des NanoSciences de Paris, F-75005, Paris, France
+% {\texttt{daniel.garcia-sanchez@insp.upmc.fr}}}
+%
+% \author[2]{Graham Harper}
+%
+\author[3]{Timo~Heister}
+ \affil[3]{School of Mathematical and Statistical Sciences,
+ Clemson University,
+ Clemson, SC, 29634, USA
+ {\texttt{heister@clemson.edu}}}
+
+% %
+% \author[8]{Luca~Heltai}
+% \affil[8]{SISSA,
+% International School for Advanced Studies,
+% Via Bonomea 265,
+% 34136, Trieste, Italy.
+% {\texttt{luca.heltai@sissa.it}}}
+%
+% \author[9]{Martin~Kronbichler}
+% \affil[9]{Institute for Computational Mechanics,
+% Technical University of Munich,
+% Boltzmannstr.~15, 85748 Garching, Germany.
+% {\texttt{kronbichler@lnm.mw.tum.de}}}
+%
+% \author[10]{Ross~Maguire~Kynch}
+% \affil[10]{Zienkiewicz Centre for Computational Engineering,
+% College of Engineering, Swansea University,
+% Bay Campus, Fabian Way, Swansea SA1 8EN, Wales, UK.
+% {\texttt{rkynch@gmail.com}}}
+%
+% \author[11]{Matthias~Maier}
+% \affil[11]{Department of Mathematics,
+% Texas A\&M University,
+% 3368 TAMU,
+% College Station, TX 77845, USA.
+% {\texttt{maier@math.tamu.edu}}}
+%
+% \author[4]{Jean-Paul~Pelteret}
+%
+% \author[*1]{Bruno~Turcksin}
+%
+% \author[12]{David Wells}
+% \affil[12]{Department of Mathematics, University of North Carolina,
+% Chapel Hill, NC 27516, USA.
+% {\texttt{drwells@email.unc.edu}}}
+
+\renewcommand{\labelitemi}{--}
+
+
+\begin{document}
+\maketitle
+
+\footnotetext{%
+ $^\ast$ This manuscript has been authored by UT-Battelle, LLC under Contract No.
+ DE-AC05-00OR22725 with the U.S. Department of Energy. The United States
+ Government retains and the publisher, by accepting the article for
+ publication, acknowledges that the United States Government retains a
+ non-exclusive, paid-up, irrevocable, worldwide license to publish or reproduce
+ the published form of this manuscript, or allow others to do so, for United
+ States Government purposes. The Department of Energy will provide public
+ access to these results of federally sponsored research in accordance with the
+ DOE Public Access Plan (http://energy.gov/downloads/doe-public-access-plan).}
+
+\begin{abstract}
+ This paper provides an overview of the new features of the finite element
+ library \dealii, version 9.1.
+\end{abstract}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Overview}
+
+\dealii version 9.1.0 was released May 21, 2019.
+This paper provides an
+overview of the new features of this release and serves as a citable
+reference for the \dealii software library version 9.1. \dealii is an
+object-oriented finite element library used around the world in the
+development of finite element solvers. It is available for free under the
+GNU Lesser General Public License (LGPL). Downloads are available at
+\url{https://www.dealii.org/} and \url{https://github.com/dealii/dealii}.
+
+The major changes of this release are:
+%
+\begin{itemize}
+ \item Improved support for automatic differentiation (see
+ Section~\ref{subsec:ad}),
+ \item Dedicated support for symbolic algebra (see
+ Section~\ref{subsec:sd}),
+ \item Full support for $hp$~adaptivity in parallel computations (see
+ Section~\ref{subsec:hp}),
+ \item An interface to the HDF5 file format and libraries (see
+ Section~\ref{subsec:hdf5}),
+ \item Significantly extended GPU support (see Section~\ref{subsec:gpu}),
+ \item Parallel geometric multigrid (GMG) improvements (see
+ \cite{ClevengerHeisterKanschatKronbichler2019} and
+ Section~\ref{subsec:gmg}),
+ \item Four new tutorial programs (step-61, step-62, step-63, step-64),
+ as well as one new code gallery program (see
+ Section~\ref{subsec:steps}).
+\end{itemize}
+%
+The major changes are discussed in detail in Section~\ref{sec:major}. There
+are a number of other noteworthy changes in the current \dealii{} release
+that we briefly outline in the remainder of this section:
+%
+\begin{itemize}
+\item
+ The release contains a number of performance improvements and bug fixes for
+ the matrix-free framework. One notable improvement is the support for
+ renumbering of degrees of freedom within the cells for discontinuous
+ elements, avoiding some reshuffling operations across the SIMD lanes
+ with vectorization over several cells and faces, which is especially
+ useful on processors with AVX-512 vectorization (8 doubles), speeding up
+ operations by up to 10\%. Secondly, the strategy for the most efficient
+ tensor product evaluators according to the performance analysis of
+ \cite{KronbichlerKormann2019} in the context of more quadrature points than
+ shape functions has been revised for better performance.
+
+\item A new class \texttt{ParsedConvergenceTable} has been introduced
+ that greatly simplifies the construction of convergence tables,
+ reading the options for the generation of the table from a parameter
+ file, and providing methods that, combined with a parameter file,
+ allow one to generate convergence tables using one-liners in user
+ codes.
+
+\item
+ The \texttt{FE\_BernardiRaugel} class implements the non-standard
+ Bernardi-Raugel (BR) element that can be used to construct a stable
+ velocity-pressure pair for the Stokes equation \cite{BR85}. The BR
+ element is an enriched version of the $Q_1^d$ element with added bubble
+ functions on each edge (in 2d) or face (in 3d). It addresses the fact
+ that the $Q_1^d\times Q_0$ combination is not inf-sup stable (requiring a
+ larger velocity space), and that the $Q_2^d\times Q_0$ combination is
+ stable but converges with only first-order at the cost of the large
+ number of velocity unknowns. The BR space is thus intermediate between the
+ $Q_1^d$ and $Q_2^d$ spaces.
+
+ The element is currently only implemented for parallelogram meshes due to
+ difficulties associated with the mapping of shape functions: The shape
+ functions of the $Q_1^d$ part of the element need to be mapped as
+ scalars, as is common for the vector components of the $Q_1^d$ element;
+ on the other hand, the vector-valued edge bubble functions need to be
+ mapped using the Piola transform as is common for the Raviart-Thomas
+ element. \dealii{} does not currently have the ability to use different
+ mappings for individual shape functions, though this functionality is
+ planned for the next release.
+
+\item
+ The \texttt{FE\_NedelecSZ} class is a new implementation of the
+ N{\'e}d{\'e}lec element on quadrilaterals and hexahedra. It is based on
+ the work of Zaglmayr \cite{Zag06} and overcomes the sign conflict issues
+ present in traditional N{\'e}d{\'e}lec elements that arise from the edge
+ and face parameterizations used in the basis functions. Therefore, this
+ element should provide consistent results for general quadrilateral and
+ hexahedral elements for which the relative orientations of edges and
+ faces (as seen from all adjacent cells) are often difficult to establish.
+ The \texttt{FE\_NedelecSZ} element addresses the sign conflict problem by
+ assigning a globally defined orientation to local edges and faces. A
+ detailed overview of the implementation of the \texttt{FE\_NedelecSZ}
+ element in \dealii{} can be found in \cite{Kynch2017}.
+
+\item All of the elementary geometrical objects of the library (namely
+ \texttt{Point<dim>}, \texttt{Segment<dim>}, and
+ \texttt{BoundingBox<dim>}) have been augmented with the traits
+ needed to comply with \texttt{boost::geometry} concepts. A new
+ interface to \texttt{boost::geometry::index::rtree} has been added
+ that simplifies the construction of spatial indices based on points,
+ bounding boxes, or segments.
+\end{itemize}
+%
+In addition to these changes, the changelog lists more than 200 other
+features and bugfixes.
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Major changes to the library}
+\label{sec:major}
+
+This release of \dealii contains a number of large and significant changes
+that will be discussed in this section.
+
+It of course also contains a
+vast number of smaller changes and added functionality; the details of these
+can be found
+\href{https://dealii.org/developer/doxygen/deal.II/changes_between_9_0_1_and_9_1_0.html}{
+in the file that lists all changes for this release}, see \cite{changes91}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Improved support for automatic differentiation}
+\label{subsec:ad}
+
+In the previous release, numerous classes that are used to assemble linear systems
+and right hand sides, as well those used to define constitutive laws, were given
+full support for ``white-listed'' automatically differentiable (AD) number types
+from the ADOL-C and Sacado libraries. This included the classes that
+represent the local contributions of one cell to the global linear
+system (i.e., \texttt{FullMatrix} and \texttt{Vector}) as well as the
+classes commonly used for the computations at individual quadrature
+points (primarily the \texttt{Tensor} and \texttt{SymmetricTensor}
+classes of various ranks).
+In the current release we have provided a unified interface to these
+AD libraries, focusing on two specific use contexts:
+\begin{enumerate}
+\item The construction and linearization of finite element residuals; and
+\item The construction and linearization of constitutive model kinetic variables.
+\end{enumerate}
+
+In the first context, the finite element degrees of freedom are considered the
+independent variables. From these primitives, the \texttt{EnergyFunctional} helper
+class in the namespace \texttt{Differentiation::AD} may be used to compute both the
+residual and its linearization by directly defining the contribution to the
+(twice differentiated) scalar total energy functional from each cell. Similarly,
+the \texttt{ResidualLinearization} class requires the (once-differentiated) finite
+element residual to be defined on a per-cell basis, and this contribution is
+automatically linearized.
+
+The second context aims directly at constitutive model formulations, and serves to
+compute the directional derivatives of components of (multi-field) constitutive laws
+with respect to the scalar, vector, tensor, and symmetric tensor fields in terms
+of which they are parameterized. The \texttt{ScalarFunction} class may be used to
+define a scalar function (such as strain energy function) that may be twice
+differentiated, while the \texttt{VectorFunction} may be used to define a vector
+function (such as a set of kinematic fields) that may be differentiated once.
+Since the total derivatives of all components are computed at once, these two helper
+classes provide an interface to retrieve each sub-component of the gradient and
+Hessian (for a \texttt{ScalarFunction}) or values and Jacobian (for a
+\texttt{VectorFunction}).
+
+Although these aforementioned helper classes have been documented with a specific
+use in mind, they remain generic and may (with a reinterpretation of the meaning of
+the independent and dependent variables) be used for other purposes as well.
+Furthermore, through the implementation of \texttt{TapedDrivers} and
+\texttt{TapelessDrivers} classes that interface with the active AD library, the
+generic helper classes hide library-dependent implementation details and facilitate
+switching between the supported libraries and AD number types based on the
+user's requirements.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Dedicated support for symbolic algebra, including algebra differentiation}
+\label{subsec:sd}
+To complement the automatic differentiation features in \dealii{}, this release sees
+the first step towards integrating and supporting a highly performant computer algebra
+system (CAS) via the SymEngine library \cite{symengine-web-page}.
+This allows the development of exact algebraic expressions using variables that are
+manipulated symbolically and may represent any value (or supported data structure).
+In the context of finite element simulations, typical applications include (but, due to
+the generality of the CAS, are not limited to) the development of constitutive models
+and the implementation of finite element assembly operations through the construction
+and linearization of finite element residuals.
+
+The \texttt{Expression} class in the namespace \texttt{Differentiation::SD} interfaces
+to SymEngine and forms the basis of symbolic computations, offering a full set of
+overloaded operators and a C++ style interface. This class offers the following
+basic functionality:
+\begin{itemize}
+\item symbolic variable definition,
+\item symbolic function definition,
+\item expression creation using standard C++ syntax,
+\item expression parsing,
+\item comparison operations,
+\item logical operations,
+\item conditional expression construction,
+\item differentiation,
+\item substitution (partial and complete), and
+\item serialization.
+\end{itemize}
+\dealii{} now also provides an extensive set of math operations, with a syntax mimicking that used
+in the C++ standard library. Using the \texttt{Expression} class as a basis, we
+have developed a set of functions that can be used to create \dealii{} \texttt{Tensor}s
+and \texttt{SymmetricTensor}s of symbolic variables and symbolic functions. This
+gives full symbolic tensor algebra support using the pre-existing \texttt{Tensor}
+and \texttt{SymmetricTensor} classes and associated functions. We have
+also implemented a set of utility functions with the following features:
+\begin{itemize}
+\item \texttt{differentiate} scalar expressions with respect to other scalar expressions, as well as
+tensors and symmetric tensors of expressions;
+\item \texttt{differentiate} tensors and symmetric tensors of expressions
+with respect to scalar expressions, as well as other tensors and symmetric tensors of expressions;
+\item create symbolic substitution maps;
+\item resolve explicit dependencies between expressions; and
+\item perform scalar and tensor valued substitution (including conversion from symbolic to
+real-valued scalars and tensors).
+\end{itemize}
+
+In the next release we expect to implement classes to assist in performing assembly operations
+in the same spirit as it is already possible using automatic differentiation using the
+\texttt{Differentiation::AD} namespace, although in a fully symbolic manner.
+We will also address performance issues of the \texttt{Expression} class by leveraging
+the optimization capabilities of SymEngine, including common subexpression elimination (CSE),
+as well as by generating high performance code-paths to evaluate these expressions through the
+use of a custom-generated \texttt{std::function} (so-called ``lambda'' optimization) or by
+compiling expressions using the LLVM JIT compiler.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Full support for $hp$~adaptivity in parallel computations}
+\label{subsec:hp}
+
+\dealii{} has had support for $hp$~adaptive methods since around 2005
+(documented in \cite{BangerthKayserHerold2007}) and for parallel
+computations on distributed meshes since around 2010 (see
+\cite{BangerthBursteddeHeisterKronbichler11}), but not for both at the
+same time. The challenges to combine these are related to a number of
+areas:
+\begin{enumerate}
+\item Data structures: The data structures necessary to store the
+ indices of degrees of freedom are substantially more
+ complicated for $hp$~algorithms than for the $h$~adaptive schemes
+ that were already implemented. This is because the number of degrees
+ of freedom per cell is now no longer constant. Furthermore,
+ faces and edges may need to store more than one set of indices if
+ the adjacent cells use different polynomial degrees; in the case of
+ edges, the number of sets of indices may also be of variable size.
+
+ All of this poses challenges in the parallel context because some of
+ the information may not be known, or not be known right away, for
+ cells that are not locally owned (i.e., for ghost and ``artificial''
+ cells), and for which the data structures stored on different
+ processors have to be reconciled.
+
+\item Algorithms: Already for $h$~adaptive meshes, enumerating all
+ degrees of freedom uniquely on the global mesh is difficult, as evidenced by
+ the complications of the algorithms shown in Section 3.1 of
+ \cite{BangerthBursteddeHeisterKronbichler11}, which requires more
+ than one page of text and is implemented in many hundreds of lines of
+ code.
+
+ These difficulties are even more pronounced when using $hp$~adaptivity.
+ The main obstacle is the desire to unify the indices of
+ matching degrees of freedom on adjacent cells whenever elements with
+ continuous polynomials are used. For example, the edge degree of freedom
+ of a $Q_2$~element has to be merged with the middle one of the three
+ edge degrees of freedom of a $Q_4$~element on a neighboring cell.
+ Section 4.2 of \cite{BangerthKayserHerold2007} discusses a sequential algorithm
+ that eliminates one of these degrees of freedom in favor of another,
+ but it introduces a ``master'' and a ``slave'' side of the
+ interface. This is of no major consequence in sequential
+ computations, but is inconvenient in parallel computations if the
+ ``master'' side is a ghost cell whose degree of freedom indices are
+ not (yet) available while enumerating local degrees of freedom, or
+ if the master is an artificial cell whose information will never be
+ available on a processor.
+
+ An earlier implementation of the algorithm enumerating degrees of
+ freedom, already available in \dealii{} 9.0, simply did not unify
+ indices on processor boundaries. However, this makes the total
+ number of degrees of freedom dependent on both the partition of the
+ mesh and the number of processors available. We have therefore
+ re-implemented the algorithm so that the unification does happen
+ also on processor boundaries, and will report on the details
+ elsewhere.
+
+\item Data transfer patterns: An important algorithm in parallel
+ finite element methods is the exchange of information stored on
+ cells during mesh repartitioning. This happens, for example, when
+ interpolating the solution from one mesh to the next
+ adaptively refined mesh; or when adapting the polynomial degrees
+ associated with each cell and repartitioning in order to
+ balance the computational cost of each processor's partition. When
+ using $h$~adaptive methods, the amount of data associated with each
+ cell is fixed and the algorithms that implement the data transfer
+ are consequently relatively simple. On the other hand, in $hp$~contexts,
+ each cell may have a different number of unknowns
+ associated with it, and the algorithms that transfer the data are
+ substantially more complicated. In order to implement those, we rely
+ on recent enhancements of the \pfrst~library (documented in
+ \cite{Burstedde2018}) to transfer data of variable size across
+ processors. Furthermore, the amount of data associated with each
+ cell may be large on cells with higher polynomial degrees, and
+ might profit from compression before sending.
+
+\item Balancing computational cost: For $h$~adaptive algorithms, the
+ amount of work associated with each cell is essentially the same,
+ both during the assembly of linear systems as well as during the
+ solver phase. For $hp$~adaptive methods, this is no longer the
+ case. Consequently, balancing the cost of work between different
+ processors' partitions is no longer as easy as ensuring that every
+ processor owns a roughly equal number of cells. Rather, one needs to
+ introduce a weighting factor for each cell that describes its
+ relative cost compared to some reference. To make things worse, the
+ relative cost of assembly on a cell might not match the relative
+ cost of the linear solver associated with this cell, leading to
+ difficult trade-offs in defining optimal weighting factors. In this
+ release, we supplied the basic functionality to attach any amount
+ of weighting factors to cells, but users still have to find reasonable
+ weights for themselves.
+\end{enumerate}
+
+All of these issues have been addressed in the current release and are
+available to users. We will report on the details of the algorithms
+and their performance in a separate publication.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Interface to the HDF5 file format and libraries}
+\label{subsec:hdf5}
+\texttt{HDF5} is an open-source library and file format designed to store large amounts of data.
+The \texttt{HDF5} format is specially tailored for high volume parallel I/O operations using MPI.
+\texttt{HDF5} files are self-describing and allow complex data relationships and a large variety
+of datatypes. In addition, the \texttt{HDF5} format is designed for long-term preservation of
+data; a \texttt{HDF5} file created by an HPC system can be easily read by a commodity laptop.
+
+\dealii{}'s new \texttt{HDF5} interface allows to write \texttt{HDF5} files and manipulate
+datasets, groups, and attributes in serial and in parallel using MPI. The
+\texttt{HDF5} MPI library calls that modify the structure of the file are
+always collective, whereas writing and reading raw data in a dataset can be done
+independently or collectively. In the \dealii{}'s \texttt{HDF5} interface all the calls are
+set to collective in order to maximize performance. This means that all the MPI
+processes have to contribute to every single call, even if they don't have data to write.
+We have added the following classes to the \dealii{}'s \texttt{HDF5} namespace.
+\begin{itemize}
+\item The new \texttt{HDF5::File} class can be used to open and create \texttt{HDF5} files
+in serial or in parallel.
+\item The new \texttt{HDF5::Group} class can be used to open and create groups.
+ \texttt{HDF5} files have a tree structure. The root contains groups and
+the groups can contain other groups.
+\item The new \texttt{HDF5::DataSet} class can be used to open and create datasets which
+can be placed inside groups or at the root of the \texttt{HDF5} file. A dataset can be a
+vector, a matrix, or a tensor. It is possible to read and write in the dataset using
+hyperslabs or unordered data. Hyperslabs are portions of datasets
+which can be a contiguous collection of points in a dataset, or a regular
+pattern of points or blocks in a dataset.
+\item It is possible to define attributes in the \texttt{HDF5::File}, \texttt{HDF5::Group} and
+\texttt{HDF5::DataSet} classes. An attribute is a small metadata such as a number or a string.
+Attributes are commonly used to store simulation parameters.
+\end{itemize}
+As we have shown in \texttt{step-62}, the \dealii{}'s \texttt{HDF5} interface can be easily used
+to exchange data with Python and Jupyter notebooks.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{GPU support via CUDA}
+\label{subsec:gpu}
+
+GPU support was significantly extended for the current release:
+\begin{itemize}
+ \item The \texttt{CUDAWrappers::PreconditionILU} and \texttt{CUDAWrappers::PreconditionIC}
+ classes can now be used for preconditioning \texttt{CUDAWrappers::SparseMatrix} objects.
+ \item \texttt{LinearAlgebra::distributed::Vector}: the MPI-parallel vector
+ class has gained a second template argument \texttt{MemorySpace} which can
+ either be \texttt{Host} or \texttt{CUDA}. In the latter case, the data
+ resides in GPU memory. By default, the template parameter is
+ \texttt{Host} and the behavior is unchanged compared to previous versions.
+ When using CUDA, the ghost exchange can be performed either by first copying
+ the relevant data to the host, performing MPI communication, and finally
+ moving the data to the device or, if CUDA-aware MPI is available, by
+ performing MPI communication directly between GPUs.
+ \item Constrained degrees of freedom: the matrix-free framework now
+ supports constrained degrees of freedom. The implementation is based on
+ the algorithms described in \cite{ljungkvist2017}. With this addition,
+ both Dirichlet boundary conditions and the constraints arising from
+ adaptively refined meshes can be imposed within the matrix-free
+ framework.
+% \textcolor{red}{%
+% \sout{The only restriction is that for two-dimensional meshes the
+% finite element degree must be odd. There is no such restriction in
+% three dimensions.}
+% \emph{%
+% WB: Can we explain this restriction? It seems odd (pun intended)...
+% BT: No, we cannot. I have spent at least two full weeks trying to
+% understand why it doesn't work, i.e., gives the wrong result, but I
+% don't know. We decided at the time that even with the current
+% limitation this was a useful addition.
+% MM: I suggest that we then simply not mention the limitation and treat
+% it as a known bug. As it is currently worded it can be easily
+% interpreted as a fundamental limitation, i.\,e. ``FE with even degree
+% are not admissible.''}}
+
+ \item MPI matrix-free computations: using \texttt{LinearAlgebra::distributed::Vector}, the
+ matrix-free framework can scale to multiple GPUs by taking
+ advantage of MPI. Each MPI process can only use one GPU and therefore, if
+ multiple GPUs are available in one node, it is necessary to have as many
+ ranks as there are GPUs. Using Nvidia Multi-Process Service (MPS), it is also possible
+ for multiple processes to use the same GPU. This can be advantageous if the
+ amount of work on one rank is not sufficient to fully utilize a GPU.
+\end{itemize}
+
+The matrix-free GPU components integrated in \dealii have been compared against
+CPUs in \cite{KronbichlerLjungkvist2019}, where the application to geometric
+multigrid solvers is discussed.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Parallel geometric multigrid improvements}
+\label{subsec:gmg}
+
+For the 9.1 release, the geometric multigrid facilities have been extended and
+revised for performance. The geometric multigrid algorithms for uniform and
+adaptively refined meshes in \dealii are based on so-called local coarsening,
+i.e., smoothening is done level-per-level, skipping parts of the domain
+where the mesh is not as refined. The algorithm for the assignment of the
+owner on level cells and the implications on load balancing have been analyzed
+in detail in \cite{ClevengerHeisterKanschatKronbichler2019}. While most of the
+functionality has already been available since the 8.5 release of \dealii presented
+in \cite{dealII85}, several components have been finalized, such as the
+support for certain renumbering algorithms that are beneficial for matrix-free
+execution, and interfaces that allow the combination with matrix-free GPU
+computations as showcased in \cite{KronbichlerLjungkvist2019}.
+
+A number of data structures and implementations in \dealii have been adapted
+to ensure scalability of the matrix-free algorithms and geometric multigrid
+infrastructure on more than 100,000 MPI ranks. A geometric multigrid solver for
+the Poisson equation as described in \cite{KronbichlerWall2018} has been used
+as a performance test during the acceptance phase of the SuperMUC-NG
+supercomputer in Garching, Germany. Scaling tests have been performed on up to
+the full machine with 304,128 cores of the Intel Xeon Skylake architecture and
+an arithmetic performance of around 5 PFlop/s for a geometric multigrid solver
+with polynomials of degree 4 has been reached. Compared to the official
+LINPACK performance of the machine of 19.5 PFlop/s (the machine is listed on
+position 8 of the top-500 list of November 2018), this can be considered an
+extremely good value for PDE solvers which have classically only reached a
+few percent of the LINPACK performance.
+More importantly, this is achieved within a flexible framework supporting
+arbitrary polynomial order on adaptively refined, unstructured meshes and
+with algorithms in the matrix-free module of \dealii designed to minimize time
+to solution and scalability, rather than maximizing the number of floating point operations. The
+largest Poisson problem that has been solved on 304k cores contained 2.15
+trillion unknowns (or 7.1 million unknowns per MPI rank) and was solved in 3.5
+seconds. Also, CFD production runs with $10^{11}$ unknowns and $10^5$
+time steps have been completed in less than seven hours, demonstrating the
+capabilities of \dealii for large-scale parallel computations. The scaling tests
+also revealed several relatively expensive operations in the setup of the
+multigrid unknowns in \dealii's \texttt{DoFHandler} and \texttt{MGTransfer}
+classes. While a few bottlenecks have already been resolved for the present
+release, we plan several further improvements of the setup stage for the next release.
+
+Furthermore, the implementation of the Chebyshev iteration, \dealii's most
+popular smoother in the matrix-free context, has been revised to reduce the number of
+vector accesses. The vector operations have become an increasing bottleneck
+due to the level of optimization available for the operator evaluation with
+our matrix-free framework \cite{KronbichlerKormann2019}, especially on newer
+CPUs which can perform a large number of arithmetic operations per byte loaded
+from main memory. This speeds up matrix-free multigrid solvers by up to
+10--15\% on geometries with affine (parallelogram and parallelpiped) cells,
+and up to 5\% on deformed cells.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{New and improved tutorial and code gallery programs}
+\label{subsec:steps}
+
+Many of the \dealii{} tutorial programs were substantially revised as
+part of this release. In particular, we have converted many places
+that now allow for simpler code through the use of C++11 features such
+as range-based for loops and lambda functions.
+
+In addition, there are four new tutorial programs and one new code
+gallery program:
+\begin{itemize}
+\item \texttt{step-61} is a program that implements the ``weak
+ Galerkin'' method to solve the Laplace equation. Weak Galerkin
+ methods are related to the Hybridized Discontinuous Galerkin method
+ in that they introduce degrees of freedom on the interfaces between
+ cells, but they do not require the reformulation of the problem as a
+ first-order system and instead re-define what the gradient of a
+ discontinuous function is.
+
+\item \texttt{step-62} demonstrates the solution of problems related
+ to phononic or photonic crystals. Among the techniques shown in this
+ program is the solution of complex-valued linear systems, and the
+ use of absorbing boundary conditions through the Perfectly Matched
+ Layer technique.
+
+\item \texttt{step-63} implements a geometric multigrid preconditioner
+ and solver for the advection-diffusion equation, yielding optimal
+ complexity. The tutorial compares
+ point-based smoothers to cell-based smoothers and
+ demonstrates the effect of downstream ordering on smoother performance.
+
+\item \texttt{step-64} demonstrates the usage of matrix-free methods on Nvidia GPUs.
+GPUs are shown to be advantageous for these kind of operations because of their superior
+hardware characteristics, in particular a higher memory bandwidth than server
+CPUs within a given power envelope.
+
+\item The \texttt{MCMC-Laplace} code gallery program is a code useful
+ for the forward solution used as a building block in
+ Bayesian inverse problems, and for sampling the parameter space
+ through a Metropolis--Hastings sampler (a kind of Monte Carlo
+ Markov Chain method).
+\end{itemize}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Incompatible changes}
+
+The 9.1 release includes
+\href{https://dealii.org/developer/doxygen/deal.II/changes_between_9_0_1_and_9_1_0.html}
+ {around 15 incompatible changes}; see \cite{changes91}. The majority of these changes
+should not be visible to typical user codes; some remove previously
+deprecated classes and functions; and the majority change internal
+interfaces that are not usually used in external
+applications. However, some are worth mentioning:
+\begin{itemize}
+\item The \texttt{VectorView} class was removed. We recommend either copying the
+ vector subset into a \texttt{Vector} or using a \texttt{BlockVector}.
+\item The function \texttt{Subscriptor::subscribe()}, used through the
+ \texttt{SmartPointer} class, now requires a pointer to a
+ \texttt{std::atomic<bool>} that tracks whether or not the pointer to the
+ subscribed-to object is still valid.
+\item The \texttt{ConstraintMatrix} class gained a template parameter for the scalar
+ type and was been renamed \texttt{AffineConstraints}. Several methods that
+ take vectors or matrices as arguments,
+ such as \texttt{AffineConstraints::distribute\_local\_to\_global()},
+ now require that all matrix and vector arguments have matching number
+ types.
+\item Similarly, the functions \texttt{create\_mass\_matrix} and
+ \texttt{create\_boundary\_mass\_matrix} in the \texttt{MatrixCreator}
+ namespace no longer
+ support matrix and vector objects of different types.
+\end{itemize}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{How to cite \dealii}\label{sec:cite}
+
+In order to justify the work the developers of \dealii put into this
+software, we ask that papers using the library reference one of the
+\dealii papers. This helps us justify the effort we put into it.
+
+There are various ways to reference \dealii. To acknowledge the use of
+the current version of the library, \textbf{please reference the present
+document}. For up to date information and a bibtex entry for this document
+see:
+\begin{center}
+ \url{https://www.dealii.org/publications.html}
+\end{center}
+
+The original \texttt{\dealii} paper containing an overview of its
+architecture is \cite{BangerthHartmannKanschat2007}. If you rely on
+specific features of the library, please consider citing any of the
+following:
+\begin{itemize}
+ \item For geometric multigrid: \cite{Kanschat2004,JanssenKanschat2011,ClevengerHeisterKanschatKronbichler2019};
+ \item For distributed parallel computing: \cite{BangerthBursteddeHeisterKronbichler11};
+ \item For $hp$~adaptivity: \cite{BangerthKayserHerold2007};
+ \item For partition-of-unity (PUM) and enrichment methods of the
+ finite element space: \cite{Davydov2016};
+ \item For matrix-free and fast assembly techniques:
+ \cite{KronbichlerKormann2012,KronbichlerKormann2019};
+ \item For computations on lower-dimensional manifolds:
+ \cite{DeSimoneHeltaiManigrasso2009};
+ \item For integration with CAD files and tools:
+ \cite{HeltaiMola2015};
+ \item For Boundary Elements Computations:
+ \cite{GiulianiMolaHeltai-2018-a};
+ \item For \texttt{LinearOperator} and \texttt{PackagedOperation} facilities:
+ \cite{MaierBardelloniHeltai-2016-a,MaierBardelloniHeltai-2016-b}.
+ \item For uses of the \texttt{WorkStream} interface:
+ \cite{TKB16};
+ \item For uses of the \texttt{ParameterAcceptor} concept, the
+ \texttt{MeshWorker::ScratchData} base class, and the
+ \texttt{ParsedConvergenceTable} class: \cite{SartoriGiulianiBardelloni-2018-a}.
+\end{itemize}
+
+\dealii can interface with many other libraries:
+\begin{multicols}{3}
+\begin{itemize}
+\item ADOL-C \cite{Griewank1996a,adol-c}
+\item ARPACK \cite{arpack}
+\item Assimp \cite{assimp}
+\item BLAS and LAPACK \cite{lapack}
+\item cuSOLVER \cite{cusolver}
+\item cuSPARSE \cite{cusparse}
+\item Gmsh \cite{geuzaine2009gmsh}
+\item GSL \cite{gsl2016}
+\item Ginkgo \cite{ginkgo-web-page}
+\item HDF5 \cite{hdf5}
+\item METIS \cite{karypis1998fast}
+\item MUMPS \cite{ADE00,MUMPS:1,MUMPS:2,mumps-web-page}
+\item muparser \cite{muparser-web-page}
+\item nanoflann \cite{nanoflann}
+\item NetCDF \cite{rew1990netcdf}
+\item OpenCASCADE \cite{opencascade-web-page}
+\item p4est \cite{Burstedde2018,p4est}
+\item PETSc \cite{petsc-user-ref,petsc-web-page}
+\item ROL \cite{ridzal2014rapid}
+\item ScaLAPACK \cite{slug}
+\item SLEPc \cite{Hernandez:2005:SSF}
+\item SUNDIALS \cite{sundials}
+\item SymEngine \cite{symengine-web-page}
+\item TBB \cite{Rei07}
+\item Trilinos \cite{trilinos,trilinos-web-page}
+\item UMFPACK \cite{umfpack}
+\end{itemize}
+\end{multicols}
+Please consider citing the appropriate references if you use interfaces to these
+libraries.
+
+The two previous releases of \dealii can be cited as
+\cite{dealII85,dealII90}.
+
+
+\section{Acknowledgments}
+
+\dealii is a world-wide project with dozens of contributors around the
+globe. Other than the authors of this paper, the following people
+contributed code to this release:\\
+% updated 6/05/2019
+ Giovanni Alzetta,
+ Mathias Anselmann,
+ Daniel Appel,
+ Alexander Blank,
+ Vishal Boddu,
+ Benjamin Brands,
+ Pi-Yueh Chuang,
+ Sambit Das,
+ Stefano Dominici,
+ Nivesh Dommaraju,
+ Niklas Fehn,
+ Isuru Fernando,
+ Andreas Fink,
+ Rene Gassm{\"o}ller,
+ Alexander Grayver,
+ Joshua Hanophy,
+ Logan Harbour,
+ Daniel Jodlbauer,
+ Stefan Kaessmair,
+ Eldar Khattatov,
+ Alexander Knieps,
+ Uwe K{\"o}cher,
+ Kurt Kremitzki,
+ Dustin Kumor,
+ Damien Lebrun-Grandie,
+ Jonathan Matthews,
+ Stefan Meggendorfer,
+ Pratik Nayak,
+ Lei Qiao,
+ Ce Qin,
+ Reza Rastak,
+ Roland Richter,
+ Alberto Sartori,
+ Svenja Schoeder,
+ Sebastian Stark,
+ Antoni Vidal,
+ Jiaxin Wang,
+ Yuxiang Wang,
+ Zhuoran Wang.
+
+Their contributions are much appreciated!
+
+
+\bigskip
+
+\dealii and its developers are financially supported through a
+variety of funding sources:
+
+D.~Arndt and M.~Kronbichler were partially supported by the German
+Research Foundation (DFG) under the project ``High-order discontinuous
+Galerkin for the exa-scale'' (\mbox{ExaDG}) within the priority program ``Software
+for Exascale Computing'' (SPPEXA).
+
+W.~Bangerth, T.~C.~Clevenger, and T.~Heister were partially
+supported by the National Science Foundation under award OAC-1835673
+as part of the Cyberinfrastructure for Sustained Scientific Innovation (CSSI)
+program and by the Computational Infrastructure
+in Geodynamics initiative (CIG), through the National Science
+Foundation under Award No.~EAR-1550901 and The
+University of California -- Davis.
+
+W.~Bangerth and T.~Heister were also partially supported by award DMS-1821210.
+
+D.~Davydov was supported by the German Research Foundation (DFG), grant DA
+1664/2-1 and the Bayerisches Kompetenznetzwerk
+f\"ur Technisch-Wissenschaftliches Hoch- und H\"ochstleistungsrechnen
+(KONWIHR).
+
+T.~Heister was also partially supported by NSF Award DMS-1522191, and
+by Technical Data Analysis, Inc. through US Navy SBIR N16A-T003.
+
+M.~Kronbichler was also supported by the Bayerisches Kompetenznetzwerk
+f\"ur Technisch-Wissen\-schaft\-li\-ches Hoch- und H\"ochstleistungsrechnen
+(KONWIHR) in the context of the project
+``Performance tuning of high-order discontinuous Galerkin solvers for
+SuperMUC-NG''.
+
+R.~M.~Kynch was supported by the Engineering and Physical Science Research
+Council (EPSRC) UK through grant EP/K023950/1 while working at Swansea
+University, UK 2013-2015 where the majority of his contribution was
+undertaken.
+
+M.~Maier was partially supported by ARO MURI Award No. W911NF-14-0247.
+
+B.~Turcksin: Research sponsored by the Laboratory Directed Research and
+Development Program of Oak Ridge National Laboratory, managed by UT-Battelle,
+LLC, for the U. S. Department of Energy.
+
+D.~Wells was supported by the National Science Foundation (NSF) through Grant
+DMS-1344962.
+
+The Interdisciplinary Center for Scientific Computing (IWR) at Heidelberg
+University has provided hosting services for the \dealii web page.
+
+
+\bibliography{paper}{}
+\bibliographystyle{abbrv}
+
+\end{document}