From 28b1fc04cca5a6bf945046ba2ac4b3248e8e1f36 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Wed, 25 Apr 2018 16:44:15 +0200 Subject: [PATCH] Add section on automatic differentiation --- 9.0/paper.bib | 35 +++++++++++++++++++++++++++++++++- 9.0/paper.tex | 52 ++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 71 insertions(+), 16 deletions(-) diff --git a/9.0/paper.bib b/9.0/paper.bib index a7567af..f8acb98 100644 --- a/9.0/paper.bib +++ b/9.0/paper.bib @@ -585,7 +585,7 @@ year = {2009} @inproceedings{adol-c, author = {A. Walther and A. Griewank}, - title = {Getting started wiht {ADOL}-{C}}, + title = {Getting started with {ADOL}-{C}}, booktitle = {Combinatorial Scientific Computing}, publisher = {U. Naumann and O.Schenk}, series = {Chapman-Hall CRC Computational Science}, @@ -593,6 +593,18 @@ year = {2009} 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}, @@ -704,4 +716,25 @@ year = {2009} YEAR = {1999}, ADDRESS = {Philadelphia, PA}, ISBN = {0-89871-447-8 (paperback)} +} + +@Electronic{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}, } \ No newline at end of file diff --git a/9.0/paper.tex b/9.0/paper.tex index c5af83b..84a89ee 100644 --- a/9.0/paper.tex +++ b/9.0/paper.tex @@ -172,7 +172,7 @@ The major changes of this release are: \begin{itemize} \item Improved support for curved geometries; \item Support for particle-in-cell methods; -\item Dedicated support for automatic and symbolic differentiation; +\item Dedicated support for automatic differentiation; \item Interfaces to more external libraries and programs; \item C++11 is now both required and used; \item Support for GPU computations; @@ -328,26 +328,48 @@ implementation here originated in the \aspect code, see \cite{KHB12,HDGB17}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Dedicated support for automatic and symbolic differentiation} +\subsection{Dedicated support for automatic differentiation} -\marginpar{J-P: Please edit as appropriate} -Automatic differentiation is often used to automatically derive -residuals from the stored energy functional, and to derive Jacobian -matrices from residual vectors for simulations that use complicated -material models. Examples can be found widely for nonlinear solid -mechanics as well as for nonlinear viscosity models in fluid flow. +Automatic differentiation (AD) is often used to automatically derive +residuals and their linearization from a stored energy functional, and to +derive Jacobian matrices from residual vectors for simulations that use +complicated material models. Examples of its application can be found widely +within nonlinear solid mechanics, coupled multiphysics problems, as well as +for nonlinear viscosity models in fluid flow. \dealii has had a tutorial program (step-33) since 2007 that -demonstrates this technique based on the Trilinos Sacado package, but +demonstrates this technique based on the Trilinos Sacado \cite{Bartlett2006a} package, but the functionality was not available pervasively throughout -deal.II. This has changed with release 9.0 where support for -differentiation has been collected in one module that provides both -automatic and symbolic differentiation. Currently, this module relies -on either the ADOL-C and Sacado libraries, through a unified -interface. In practice, this support means that ADOL-C and Sacado data +deal.II. +This has changed with release 9.0 where support is given for differentiation +using a selection of ``white-listed'' libraries (namely ADOL-C \citep{Griewank1996a} +and Sacado) and a subset of their supported number types. Currently, we offer support for +\begin{itemize} +\item ADOL-C taped (n-differentiable), +\item ADOL-C tapeless (once differentiable), +\item Sacado dynamic forward (once differentiable), +\item Sacado reverse (once differentiable), +\item Sacado nested dynamic forward (twice differentiable), and +\item Sacado nested reverse and dynamic forward (twice differentiable) +\end{itemize} +numbers. In practice, this support means that these ADOL-C and Sacado data types can be used in the \texttt{FEValues}, \texttt{FEValuesViews}, +\texttt{Tensor}, \texttt{SymmetricTensor}, and related classes that are generally used to assemble linear systems and right hand sides. +Given the updated capabilities of the library, there is now a dedicated module +that presents the AD compatibility and capabilities of the \dealii libraries. +Furthermore, the use of Sacado is now demonstrated in a much more simplified +and transparent manner in an modernized version of an existing ``code gallery'' +example \cite{Pelteret2016a}. + +To date it remains necessary for the user to manage the initialization of AD +independent variables and the resultant calls to the AD dependent variables +in order to initiate the computation of derivatives. +In the next release we expect to provide a unified interface to these +AD libraries, which will hide these library-dependent implementational details +and facilitate switching between the supported libraries and AD number types +based on the user's requirements. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -634,7 +656,7 @@ following: \dealii can interface with many other libraries: \begin{multicols}{3} \begin{itemize} -\item ADOL-C \cite{adol-c} +\item ADOL-C \cite{Griewank1996a,adol-c} \item ARPACK \cite{arpack} \item Assimp \cite{assimp} \item BLAS and LAPACK \cite{lapack} -- 2.39.5