@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},
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},
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
\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;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\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.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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}