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