


 Hybridnorm and Fortran 2003: Separating the physics from the solver  

Next: Operatorbased objectoriented solvers
Up: Hybridnorm and Fortran 2003:
Previous: Hybridnorm and Fortran 2003:
A geophysicist understands and/or approximates how a given set
of earth properties (model) would create a given set of measurements (data). Geophysics
is often an attempt to do the inverse: from a
set of recorded data, estimate a model.
When the set of measurements and/or the number of model points is large, matrixbased
approaches become impractical. Iterative approaches are often the
method of choice for largescale estimating problems. Iterative solvers can become
quite complex, quite quickly, and are generally more the domain of the mathematician
than the geophysicist. Ideally we would like to leverage the mathematician's expertise
without having to understand all of the details of the implementation.
Gockenbach (1994); Nichols et al. (1993)
all viewed model estimation through an objectoriented framework, allowing this separation
using
C++. Schwab (1998) described a javabased approach to this problem, and
Clapp (2005)
described a pythonbased approach for large, outofcore solvers. SEP chose
instead to use Fortran 90. Unfortunately, Fortran 90 is far from a complete
objectoriented language, and as a result complicated inversion problems are
cumbersome to describe given its limitations. The recent introduction of
the hybrid norm (Zhang and Claerbout, 2010; Claerbout, 2009) is but one example of the
limitations
of Fortran 90 for solving inverse problems. Recently, Fortran compilers
have begun to support Fortran's latest incarnation, Fortran 2003, which
is more complete objectoriented language.
In this paper, I show how to implement an abstract solver class in Fortran 2003.
I begin by describing one method to implement an abstract operatorbased iterative solver.
I describe how the definition of a vector needs to be extended to support
the hybrid norm. I then show how the abstract operator and vector classes can be implemented
in Fortran2003.



 Hybridnorm and Fortran 2003: Separating the physics from the solver  

Next: Operatorbased objectoriented solvers
Up: Hybridnorm and Fortran 2003:
Previous: Hybridnorm and Fortran 2003:
20101126