Dave Nichols et al 1993 implemented an object-oriented, geophysical inversion library, known as CLOP. CLOP never overcame its experimental character, however. It dealt almost exclusively with the inversion of linear operators, and it stored its data in a proprietary and inefficient C++ package (M++). In summary, CLOP's lack of speed, its programming errors, and some confusing defaults made the package unattractive for routine processing. However, CLOP enabled Dave Nichols Lumley et al. (1994) to prototype a new multiple inversion scheme rapidly; a work that might not have been attempted without CLOP. Simultaneously, Dave Nichols and Lester Dye designed an improved class hierarchy that directly expressed the abstraction inherent in vector algebra.
Mark Gockenbach and Bill Symes independently developed a strikingly similar C++ library. In 1994, the efforts at Rice and Stanford merged into the Hilbert Class Library (HCL) Schwab (1994). Mark Gockenbach is HCL's primary author Gockenbach and Symes (1996) and maintains a detailed web-page 1996. Our new library, Jag, is a Java implementation of HCL's algebraic class hierarchy.
Lydia Deng 1996 of the Colorado School of Mines chose a very different approach, called COOOL, when developing a C++ system for geophysical inversion. Rather than casting the inversion in terms of fundamental algebraic expressions, such as vectors, she concentrated directly on more complex classes, such as objective functions and solvers.
Sergey Fomel 1996 implemented an object-oriented inversion library in Fortran90. While Fortran90 delivers high computational performance, it does not provide a classic object-oriented environment. Fortran90 modules are not classes and lack the notion of instances. Furthermore, Fortran90 does not provide inheritance. Nevertheless, Fomel successfully created Fortran90 solutions to all inversion problems in Jon Claerbout's book Three Dimensional Filtering 1994.
In the summer of 1996, SEP held an informal conference on Objected-Oriented Numerics Claerbout and Biondi (1996). Afterwards, several participants cooperated to develop a framework in which high-level, abstract HCL classes, (e.g. solvers), were combined with high-performance Fortran90 routines (e.g. operators) Urdaneta and Karrenbach (1996). The required linking of Fortran and C++ proved difficult but doable.
Independent of any geophysical inversion work, Ken Lenga and Bob Clapp 1995 wrote an impressive Java graphics package to display seismic data on the web. Unfortunately, their efforts were finally thwarted by backward incompatible changes in Java's AWT's library.
Currently, at SEP, most researchers use the traditional SEPlib library (C-Fortran) in their research. Researchers that work on large problems with irregular geometry additionally use the SEP90 library (C-Fortran90) Biondi et al. (1996); Clapp and Crawley (1996). A few researchers experiment with Sergey Fomel's Fortran90 library.
So why did we write another library? In the past, we actively participated in the development of HCL. We liked its algebraic class hierarchy, its object-orientation, and its opportunity of collaboration beyond SEP. However, C++'s complexity and Java's promises lured us one Sunday afternoon into starting a Java library for geophysical optimization.