To support traditional SEPlib processing capabilities within the HCL (Hilbert Class Library) framework, we implemented a regular data class, a series of simple operators, and a few of Jon Claerbout's solvers.
The multi-dimensional regular data grid of an SEP Data Cube is implemented as an RGF (Regular Grid Function) class. In HCL's linear algebra paradigm, the grid size and its physical units define a vector space. Since the RGF class is derived from HCL's abstract vector class, we implemented the vector operations. We used existing I/O routines to ensure that RGF files are backward compatible with SEPlib files.
We coded a few simple linear and bilinear operators which act on RGFs. A recursive convolution operator works with data and filter of arbitrary dimension. A Fortran77 version, which is invoked from C++, runs faster than the strictly C++ version.
Finally we solved one of Claerbout's 1996 missing data and unknown filter problems with two different methods. The first method was a two-step data infill, in which our results agreed with Claerbout's. With the second method, using Mark Gockenbach's 1996 seasoned nonlinear minimization routine, we obtained accurate results without the need to understand the internals of his code.