From 443c38b47bfac5b508efb243901debf6a3feed85 Mon Sep 17 00:00:00 2001 From: Timo Heister Date: Wed, 24 Feb 2016 12:17:22 -0500 Subject: [PATCH] initial version of 8.4 paper --- ansarticle-preprint.cls | 149 +++++++++++++ anslistings.sty | 442 ++++++++++++++++++++++++++++++++++++ deal84.bib | 480 ++++++++++++++++++++++++++++++++++++++++ deal84.tex | 475 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 1546 insertions(+) create mode 100644 ansarticle-preprint.cls create mode 100644 anslistings.sty create mode 100644 deal84.bib create mode 100644 deal84.tex diff --git a/ansarticle-preprint.cls b/ansarticle-preprint.cls new file mode 100644 index 0000000..da94dde --- /dev/null +++ b/ansarticle-preprint.cls @@ -0,0 +1,149 @@ +% $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}} diff --git a/anslistings.sty b/anslistings.sty new file mode 100644 index 0000000..030301c --- /dev/null +++ b/anslistings.sty @@ -0,0 +1,442 @@ +%% 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 +%% (pythonhighlight.sty), +%% with contributions from Johan Hake . +%% +%% Modified for ANS by Anders Logg , 2011. +%% +%% Modified by Hans Petter Langtangen , 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 ] + +% 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}}{} diff --git a/deal84.bib b/deal84.bib new file mode 100644 index 0000000..51b4123 --- /dev/null +++ b/deal84.bib @@ -0,0 +1,480 @@ +%% 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} diff --git a/deal84.tex b/deal84.tex new file mode 100644 index 0000000..44cca05 --- /dev/null +++ b/deal84.tex @@ -0,0 +1,475 @@ +\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}. 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}, 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 >}. + +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} -- 2.39.5