Automatic differentiation and the adjoint state method
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.
Automatic Differentiation of Algorithms
Symes, W. W.
Automatic differentiation and the adjoint state method.
Automatic Differentiation of Algorithms, 161-166.
Retrieved from: https://digitalcommons.mtu.edu/math-fp/28