Abstract: |
Adaptive grids in inverse
and control problems can lead to computed objective functions that are
nonsmooth, even though the underlying problem is well-behaved. This leads
to the question of how to compute the linearization of the scheme---how
should a nonsmooth function be differentiated? The C++ class afdtd
uses automatic differentiation techniques to implement an abstract marching
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. Moreover, afdtd
supports locally ``frozen'' grids, allowing the implementation of an operator
that is piecewise smooth in spite of the use of adaptivity.
|