Object-oriented approaches allow a separation between solvers and operators. An abstract
vector class is created with a limited set of methods. Solvers are written in terms
of this abstract vector class and operators act on vectors inherited from the
abstract class. Ideally,
this separation allows the geophysicist to leverage the work of the mathematician without
needing to understand the implementation details of the optimization method.
The minimal set of object-oriented features of Fortran95 and its predecessors limited
the potential separation between the physics and the solver. New inversion approaches,
such as the hybrid norm, further hampered this separation when using conventional
vector class descriptions.
By using
the object-oriented features of Fortran 2003, a more complete separation between solvers
and operators can be achieved. By expanding the vector class definition, approaches such
as the hybrid norm can be implemented.