--- /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}
+}
+
+@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},
+ year = {2016},
+}
+
+
+%% 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{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}}
+
+
+@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{TKB13,
+ author = {B. Turcksin and M. Kronbichler and W. Bangerth},
+ title = {\textit{WorkStream} -- a design pattern for multicore-enabled finite element computations},
+ journal = {submitted},
+ year = 2013}
+
+@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 = "http://trilinos.sandia.gov",
+ Year = "2014"}
+
+# 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 V. Eijkhout and W.~D. Gropp
+ and D. Kaushik and M.~G. Knepley
+ and L. Curfman McInnes and K. Rupp and B.~F. Smith
+ 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 = {2014}
+ }
+
+@TechReport{petsc-user-ref,
+ author = {S. Balay and S. Abhyankar and M.~F. Adams and J. Brown and P. Brune
+ and K. Buschelman and V. Eijkhout and W.~D. Gropp
+ and D. Kaushik and M.~G. Knepley
+ and L. Curfman McInnes and K. Rupp and B.~F. Smith
+ and H. Zhang},
+ title = {{PETS}c Users Manual},
+ institution = {Argonne National Laboratory},
+ year = 2014,
+ number = {ANL-95/11 - Revision 3.5},
+ 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}
+
+@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{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{hdf5,
+ author = {{The HDF Group}},
+ title = "{Hierarchical Data Format, version 5}",
+ year = {1997-NNNN},
+ note = {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}
+}
+
+
+@techreport{MaierBardelloniHeltai-2015-a,
+ Author = {Matthias Maier and Mauro Bardelloni and Luca Heltai},
+ Institution = {SISSA},
+ Title = {Linear{O}perator -- a generic, high-level expression syntax for linear algebra},
+ Year = {2015}}
+
+@Article{TKB16,
+ author = {B. Turcksin and M. Kronbichler and W. Bangerth},
+ title = {\textit{WorkStream} -- a design pattern for multicore-enabled finite element computations},
+ journal = {accepted for publication in the ACM Transactions on Mathematical Software},
+ year = 2016}
--- /dev/null
+\documentclass{ansarticle-preprint}
+%\usepackage{ucs}
+\usepackage[utf8]{inputenc}
+\usepackage{amsmath}
+%\usepackage{cite}
+\usepackage{anslistings}
+
+\usepackage{fontenc}
+\usepackage{graphicx}
+
+\hypersetup{
+ pdfauthor={Wolfgang Bangerth, Timo Heister, Luca Heltai, Guido Kanschat,
+ Martin Kronbichler, Matthias Maier, Bruno Turcksin
+ %, Toby D. Young
+ },
+ pdftitle={The deal.II Library, Version 8.4.0, 2016},
+}
+
+\newcommand{\specialword}[1]{\texttt{#1}}
+\newcommand{\dealii}{{\specialword{deal.II}}}
+\newcommand{\pfrst}{{\specialword{p4est}}}
+\newcommand{\trilinos}{{\specialword{Trilinos}}}
+\newcommand{\aspect}{\specialword{Aspect}}
+\newcommand{\petsc}{\specialword{PETSc}}
+\newcommand{\cmake}{{\specialword{CMake}}}
+\newcommand{\autoconf}{{\specialword{autoconf}}}
+
+\title{The \dealii{} Library, Version 8.4}
+\author[1]{Wolfgang Bangerth}
+\affil[1]{Department of Mathematics, Texas A\&M University, College Station,
+ TX 77843, USA,
+ {\texttt{bangerth@math.tamu.edu}}}
+\author[2]{Denis Davydov}
+\affil[2]{???,
+ {\texttt{???}}}
+\author[3]{Timo Heister}
+\affil[3]{Mathematical Sciences,
+ O-110 Martin Hall.
+ Clemson University.
+ Clemson, SC 29634, USA,
+ {\texttt{heister@clemson.edu}}}
+\author[4]{Luca Heltai}
+\affil[4]{SISSA - International School for Advanced Studies, Via
+ Bonomea 265, 34136 Trieste, Italy,
+ {\texttt{luca.heltai@sissa.it}}}
+\author[5]{Guido Kanschat}
+\affil[5]{Interdisciplinary Center for Scientific Computing (IWR),
+ Universit{\"a}t Heidelberg, Im Neuenheimer Feld 368, 69120 Heidelberg, Germany,
+ {\texttt{kanschat@uni-heidelberg.de}}}
+\author[6]{Martin Kronbichler}
+\affil[6]{Institute for Computational Mechanics, Technische
+ Universit{\"a}t M{\"u}nchen, Boltzmannstr.~15, 85748 Garching b. Mænchen,
+ Germany,
+ {\texttt{kronbichler@lnm.mw.tum.de}}}
+\author[7]{Matthias Maier}
+\affil[7]{School of Mathematics, University of Minnesota, 127 Vincent Hall,
+ 206 Church Street SE, Minneapolis, MN 55455, USA,
+ {\texttt{msmaier@umn.edu}}}
+\author[8]{Bruno Turcksin}
+\affil[8]{Department of Mathematics, Texas A\&M University, College Station,
+ TX 77843, USA,
+ {\texttt{turcksin@math.tamu.edu}}}
+\author[9]{David Wells}
+\affil[9]{Department of Mathematical Sciences, Rensselaer Polytechnic Institute,
+Troy, NY 12180, USA
+ {\texttt{wellsd2@rpi.edu}}}
+%\author[8]{Toby~D.~Young}
+%\affil[8]{Institute of Fundamental Technological Research of the Polish
+% Academy of Sciences, ul. Pawi{\'n}skiego 5b, Warsaw 02-106, Poland,
+% {\texttt{tyoung@ippt.pan.pl}}}
+
+\renewcommand{\labelitemi}{--}
+
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+ This paper provides an overview of the new features of the finite element
+ library \dealii{} version 8.4.0.
+\end{abstract}
+
+
+\section{Overview}
+
+\dealii{} version 8.4.0 was released February 29, 2016. This paper provides an
+overview of the new features of this release and serves as a citable
+reference for the \dealii{} software library version 8.4.0. \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) from the \dealii{} homepage at
+\url{http://www.dealii.org/}.
+
+The major changes of this release are:
+\begin{itemize}
+\item Preliminary support for parallel, adaptive, geometric multigrid
+\item Parallel triangulations can now be partitioned in ways that allow
+ weighting cells differently
+\item Improved support for mixed-type arithmetic throughout the library
+\item A new triangulation type that supports parallel computations
+ but ensures that the entire mesh is available on every processor
+\item An implementation of the Rannacher-Turek element, as well as an
+ element that extends the usual Q(p) elements by bubble functions
+\item Second and third derivatives of finite element fields are now
+ computed exactly.
+\item The various \emph{Concepts}, or requirements on template parameters
+ in the library, are now consistently labeled and documented as such.
+\item The interface between finite elements, quadrature, mapping, and the
+ FEValues class has been rewritten. It is now much better documented
+\item More than 140 other features and bugfixes.
+\end{itemize}
+Some of these will be detailed in the following section.
+Information on how to cite \dealii{} is provided in Section \ref{sec:cite}.
+
+
+\section{Significant changes to the library}
+
+This release of \dealii{} contains a number of large and significant changes
+that will be discussed in the following sections. It of course also contains a
+vast number of smaller changes and added functionality; the details of these
+can be found
+\href{https://www.dealii.org/8.4.0/doxygen/deal.II/changes_between_8_3_0_and_8_4.html}{in the file that lists all changes for this release}
+and that is linked to from the web site of each release as well as the
+release announcement.
+
+
+\subsection{Preliminary support for parallel, adaptive, geometric
+ multigrid}
+
+\marginpar{Martin/Timo -- can you write this section?}
+...
+
+\subsection{Parallel triangulations can now be partitioned with weights}
+
+Previously, partitioning a parallel mesh (represented by the
+\texttt{parallel::distributed::Triangulation} class) between
+processors assumed that every cell should be weighted equally. On the
+other hand, the \pfrst{} library which manages the partitioning
+process, allows for attaching weights for each cell and thereby
+enables ways in which not the number of cells per MPI process is
+equilibrated, but the sum of weights on the cells managed by each
+process. \dealii{} now also supports this feature.
+
+The implementation of this mechanism is based on a callback mechanism,
+in the form of the signal-slot design pattern. User codes can register
+functions that will be called upon mesh refinement and coarsening,
+returning a weight for each cell. These weights will be added after
+all slots (i.e., callback functions) connected to the signal have been
+called.
+
+The mechanism chosen has the advantage that all parties that use a
+triangulation, for example multiple \texttt{DoFHandler} objects or a
+scheme that tracks particles that are advected along with a flow field
+and stored them per-cell, can indicate their computational needs for
+each cell, and there no central place in a user code (other than the
+triangulation itself) that has to collect these needs and forward this
+information.
+
+
+\subsection{Improved support for mixed-type arithmetic throughout the
+ library}
+
+When evaluating finite element fields or their derivatives at
+a points $\mathbf x_q$, one typically has to do an operation of the form
+\begin{align*}
+ u_h(\mathbf x_q) &= \sum_{j} U_j \varphi_j(\mathbf x_q),
+ \\
+ \nabla u_h(\mathbf x_q) &= \sum_{j} U_j \nabla\varphi_j(\mathbf x_q).
+\end{align*}
+The value or derivatives of shape functions, $\varphi_j(\mathbf x_q)$
+or $\nabla\varphi_j(\mathbf x_q)$ are internally evaluated by classes
+derived from the \texttt{FiniteElement} and \texttt{Mapping}, and are
+computed as scalars or tensors of type \texttt{double}. On the other
+hand, the expansion coefficients of the field, $U_j$ are stored in
+vectors of types chosen by the user; their underlying representation
+can be \texttt{double}, but also \texttt{float}, \texttt{long double},
+\texttt{PetscScalar}, or \texttt{std::complex<float>}. It could also
+be an autodifferentiation type.
+
+To facilitate the correct typing of the computed quantity, \dealii{}
+now contains mechanisms by which one can evaluate the \textit{type} of
+the product of two values, and this type is now consistently used
+throughout the library in expressions such as those above. Thus, as an
+example, if the user stores the expansion coefficients in a
+\texttt{Vector<long double>}, then the gradients
+$\nabla\varphi_j(\mathbf x_q)$ will be computed as objects of type
+\texttt{Tensor<1,dim,long double>}. Likewise, if a user uses a PETSc
+vector, and PETSc was configured with complex scalar types, then the
+second derivatives of the solution field will be computed as
+\texttt{SymmetricTensor<2,dim,PetscScalar>}, which should equal
+\texttt{SymmetricTensor<2,dim,std::complex<double> >}.
+
+These improvements make type-correct computations possible in many
+places. In particular, this enables the use of complex-valued solution
+vectors in many more places. On the other hand, many but not all
+places have learned what actually to do with complex numbers. This is,
+in particular, true for the \texttt{DataOut} class that generates an
+intermediate data format that can then be written to graphical output
+files for visualization. Since no format we are aware of supports
+complex numbers, future versions still need to learn how to separate
+real and imaginary parts of complex numbers, and output them as two
+components.
+
+
+\subsection{A new ``shared'' triangulation type for parallel computations}
+
+\marginpar{Denis -- can you write this section?}
+...
+
+\subsection{Second and third derivatives of finite element fields are now
+ computed exactly}
+
+Second derivatives of solution fields, i.e.,
+\begin{align*}
+ \nabla^2 u_h(\mathbf x_q) &= \sum_{j} U_j \nabla^2\varphi_j(\mathbf x_q)
+\end{align*}
+were previously computed by finite differencing of first
+derivatives. The reason for this approach is that in order to compute
+the second derivatives of shape functions, $\nabla^2\varphi_j(\mathbf
+x_q)$ one needs (at least) derivatives of the inverse of the Jacobian of the
+mapping. This is easy to see because, for the usual $Q_p$ Lagrange
+elements, one has that $\nabla\varphi_j(\mathbf
+x_q)=J^{-1}\hat\nabla\hat\varphi_j(\hat{\mathbf x}_q)$, where quantities
+with a hat refer to coordinates and functions on the reference cell,
+and $J$ is the Jacobian of the mapping from reference to real
+cell. Thus, the second derivatives satisfy
+\begin{align*}
+ \nabla^2\varphi_j(\mathbf x_q)
+ =
+ J^{-1}\hat\nabla\left[J^{-1}\hat\nabla\hat\varphi_j(\hat{\mathbf x}_q)\right]
+ =
+ J^{-1} J^{-1}\hat\nabla^2\hat\varphi_j(\hat{\mathbf x}_q)
+ +
+ J^{-1}\left(\hat\nabla J^{-1}\right)\hat\nabla\hat\varphi_j(\hat{\mathbf x}_q),
+\end{align*}
+where in the last expression, matrices and tensors of rank 1 and 3
+have to be appropriately contracted. Here, the difficulty lies in
+computing the derivative $\hat\nabla J^{-1}$: for the usual mappings
+on quadrilaterals and hexahedra, $J$ is in general a polynomial in the
+reference coordinates $\hat {\mathbf x}$, so $J^{-1}$ is a rational
+function. It is possible to compute the derivatives of this object,
+but they are difficult and cumbersome to evaluate, especially for
+higher order mappings.
+
+The key to computing second (and higher) derivatives of shape
+functions is to recognize that $\hat\nabla J^{-1}$ can be expressed
+more conveniently by observing that
+\begin{align*}
+ 0 &= \hat\nabla I
+ \\
+ &= \hat\nabla (JJ^{-1})
+ \\
+ &= J (\hat\nabla J^{-1}) + (\hat\nabla J) J^{-1},
+\end{align*}
+and consequently $\hat\nabla J^{-1} = - J^{-1} (\hat\nabla J)
+J^{-1}$. Here, $J^{-1}$ is a matrix that is already available from
+computing first derivatives, and $\hat\nabla J$ is an easily computed
+rank-3 tensor with polynomial entries. Using this approach, we have
+\begin{align*}
+ \nabla^2\varphi_j(\mathbf x_q)
+ =
+ J^{-1} J^{-1}\hat\nabla^2\hat\varphi_j(\hat{\mathbf x}_q)
+ -
+ J^{-1} J^{-1} (\hat\nabla J)
+ J^{-1}\hat\nabla\hat\varphi_j(\hat{\mathbf x}_q),
+\end{align*}
+again with an appropriate set of contractions over the indices of the
+objects on the right.
+
+This, and corresponding extensions to compute third derivatives, have
+now been implemented in several of the finite element and mapping
+classes by Maien Hamed, and are available through the
+\texttt{FEValues} interface to shape functions and their derivatives.
+
+
+\subsection{Incompatible changes}
+
+\subsubsection{Revision of the interface between finite elements,
+ quadratures, and mappings}
+
+Finite element classes describe shape functions as continuous (as
+opposed to discrete) objects on the reference cell. On the other hand,
+in actual practice, one only needs information about shape functions
+at finitely many quadrature points, and these are typically the same
+on every cell in a loop over all cells. Furthermore, the evaluation of
+shape functions at quadrature points then also needs to be mapped to
+the real cell, typically using a polynomial mapping.
+
+To facilitate this complex interplay, \dealii{} has three class
+hierarchies with base classes \texttt{FiniteElement} (for the
+description of shape functions on the reference cell),
+\texttt{Quadrature} (for the locations and weights of quadrature
+points on the reference cell), and \texttt{Mapping} (for the
+description of mappings from the reference to the real cell). In
+almost all cases, users create an object of a derived class for each
+of these categories, but they never access any of the members of these
+classes and instead leave this task to the \texttt{FEValues} class
+(and \texttt{FEFaceValues}, \texttt{FESubfaceValues}) that presents
+all one typically needs: the mapped values, gradients, and
+higher order derivatives of shape functions at the quadrature points
+of the real cell.
+
+The interplay between these classes in the \texttt{FEValues} interface
+is one of the oldest parts of the library. It was, at the time, not
+designed based on specifications we explicitly or implicitly knew this
+class had to satisfy, but instead organically grew to its current
+state. These interfaces have now been fundamentally rewritten: some
+functions have been replaced; several others had their argument lists
+shuffled, sorted, and made more uniform; and everything has generally
+been far better documented.
+
+None of the changes in this arena is visible to the average user. The
+only user codes that are affected in an incompatible way are those
+that implement finite element or mapping classes.
+
+\subsubsection{Other incompatible changes}
+
+The
+\href{https://www.dealii.org/8.4.0/doxygen/deal.II/changes_between_8_3_0_and_8_4.html}{file
+ that lists all changes for this release} lists another 18
+incompatible changes, but none of these should in fact be visible in
+typical user codes. Some remove previously deprecated classes and
+functions, and the majority change internal interfaces that are not
+typically used in user codes.
+
+
+
+\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 a
+particular version of the library, reference the present document. For up
+to date information and bibtex snippets for this document see:
+
+\bigskip
+
+\begin{center}
+ \url{https://www.dealii.org/publications.html}
+\end{center}
+
+\bigskip
+
+% \begin{minipage}{0.9\textwidth}%no page break in here please
+% \begin{verbatim}
+% @article{dealII82,
+% title = {The {\tt deal.{I}{I}} 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 = {preprint},
+% year = {2015},
+% }
+% \end{verbatim} % journal = {arXiv preprint \url{http://arxiv.org/abs/TODO}},
+% \end{minipage}
+
+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};
+ \item For distributed parallel computing: \cite{BangerthBursteddeHeisterKronbichler11};
+ \item For $hp$ adaptivity: \cite{BangerthKayserHerold2007};
+ \item For matrix-free and fast assembly techniques:
+ \cite{KronbichlerKormann2012};
+ \item For computations on lower-dimensional manifolds:
+ \cite{DeSimoneHeltaiManigrasso2009};
+ \item For integration with CAD files and tools:
+ \cite{HeltaiMola2015};
+ \item For \texttt{LinearOperator} and \texttt{PackagedOperation} facilities:
+ \cite{MaierBardelloniHeltai-2015-a}.
+ \item For uses of the \texttt{WorkStream} interface:
+ \cite{TKB16}.
+\end{itemize}
+
+\dealii{} can interface with many other libraries:
+\begin{itemize}
+\item ARPACK \cite{arpack}
+\item BLAS, LAPACK
+\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 NetCDF \cite{rew1990netcdf}
+\item OpenCASCADE \cite{opencascade-web-page}
+\item p4est \cite{p4est}
+\item PETSc \cite{petsc-user-ref,petsc-web-page}
+\item SLEPc \cite{Hernandez:2005:SSF}
+\item Threading Building Blocks \cite{Rei07}
+\item Trilinos \cite{trilinos,trilinos-web-page}
+\item UMFPACK \cite{umfpack}
+\end{itemize}
+Please consider citing the appropriate references if you use interfaces to these
+libraries.
+
+Older releases of \dealii{} can be cited as \cite{dealII80,dealII81,dealII82,dealII83}.
+
+\nocite{BangerthKanschat1999}
+
+\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:
+%
+% get this from the changes.h file using
+% egrep '^ *\(.*201[56789]' 8.3.0-vs-8.4.0.h | perl -p -e 's/201\d.*//g; s/, */\n/g; s/^ *\(?//g;' | sort | uniq
+% then sort by last name and remove the authors of this paper
+%
+Daniel Arndt,
+Mauro Bardelloni,
+Alistair Bentley,
+Andrea Bonito,
+Claire Bruna-Rosso,
+Krzysztof Bzowski,
+Praveen Chandrashekar,
+Conrad Clevenger,
+Patrick Esser,
+Rene Gassmoeller,
+Arezou Ghesmati,
+Maien Hamed,
+Alexander Grayver,
+Lukas Korous,
+Aslan Kosakian,
+Adam Kosik,
+Konstantin Ladutenko,
+Jean-Paul Pelteret,
+Lei Qiao,
+Gennadiy Rishin,
+Angel Rodriguez,
+Alberto Sartori,
+Daniel Shapero,
+Jason Sheldon,
+Jan Stebel,
+Florian Sonner,
+Zhen Tao,
+Heikki Virtanen,
+Daniel Weygand
+
+
+Their contributions are much appreciated!
+
+
+\dealii{} and its developers are financially supported through a
+variety of funding sources. W.~Bangerth and B.~Turcksin were partially
+supported by the National Science Foundation under award OCI-1148116
+as part of the Software Infrastructure for Sustained Innovation (SI2)
+program; and by the Computational Infrastructure in Geodynamics initiative
+(CIG), through the National Science Foundation under Award
+No.~EAR-0949446 and The University of California -- Davis.
+
+L.~Heltai was partially supported by the project OpenViewSHIP,
+``Sviluppo di un ecosistema computazionale per la progettazione
+idrodinamica del sistema elica-carena'', financed by Regione FVG - PAR
+FSC 2007-2013, Fondo per lo Sviluppo e la Coesione, and by the project
+TRIM ``Tecnologia e Ricerca Industriale per la Mobilit\`a Marina'',
+CTN01-00176-163601, funded by MIUR - Ministero dell'Istruzione,
+dell'Universit\`a e della Ricerca.
+
+T.~Heister was partially supported by the Computational Infrastructure in
+Geodynamics initiative (CIG), through the National Science Foundation under Award
+No. EAR-0949446 and The University of California -- Davis.
+
+The Interdisciplinary Center for Scientific Computing (IWR) at Heidelberg University has provided
+hosting services for the \dealii{} web page and the SVN archive.
+
+%\marginpar{Everyone's funding, please}
+
+
+\bibliography{deal84}{}
+\bibliographystyle{abbrv}
+
+\end{document}