Automatic differentiation and the adjoint state method

Document Type

Book Chapter

Publication Date



The C++ class fdtd uses automatic differentiation techniques to implement an abstract time stepping scheme in an object-oriented fashion, making it possible to use the resulting simulator to solve inverse or control problems. The class takes a complete specification of a single step of the scheme, and assembles from it a complete simulator, along with the linearized and adjoint simulations. The result is a (nonlinear) operator in the sense of the Hilbert Class Library, a C++ package for optimization. Performance is equivalent to that of optimized Fortran implementations.

Publisher's Statement

© Springer Science+Business Media New York 2002. Publisher's version of record: https://doi.org/10.1007/978-1-4613-0075-5_18

Publication Title

Automatic Differentiation of Algorithms