FastDer++, efficient automatic differentiation for non-linear PDE solversFastDer++, efficient automatic differentiation for non-linear PDE solvers
Faculty of Sciences. Mathematics and Computer Science
Mathematics and computers in simulation. - Amsterdam
65(2004):1-2, p. 177-190
FastDer++ is a C++ class library for automatic differentiation designed for use in situations where a set of dependent variables and their gradients are to be evaluated in a large number of points. Typical settings constitute non-linear systems of partial differential equations (PDEs) and ODEs. Although automatic differentiation is traditionally considered to slow for implementation in non-linear PDE and ODE solvers, it has recently been demonstrated [E. Tijskens, H. Ramon, J. De Baerdemaeker, Efficient operator overloading AD for solving non-linear PDEs, in: G. Corliss, C. Faure, A. Griewank, L. Hascoet, U. Nauman (Eds.), Automatic Differentiation of Algorithms-From Simulation to Optimisation, Springer, Verlag, 2002; Num. Algorithms 30 (2002) 259] that thanks to an extension called vectorised AD and careful design handcoded derivatives, finite differencing and state of the art AD tools can be outperformed in common situations. In addition, the user gains the advantage of directly dealing with the non-linear equations rather than with its linearised counterpart. This paper describes the FastDer++ library and its underlying principles in detail, both from the point of implementation and of user programming. (C) 2003 IMACS. Published by Elsevier B.V. All rights reserved.