The RVL Project
The Rice Vector Library
The Rice Vector Library ("RVL") is a follow-on to HCL, extending its capabilities and streamlining its design. RVL follows closely the design concepts of HCL, but implements more functionality in base classes, making RVL applications simpler to generate. It uses the function-forwarding concept in the form of "function objects", much as the standard library does, along with exception handling, class templates, STL container classes, and other ISO C++ features not readily available when HCL was developed in the mid-90's.
The rationale and design of RVL are described in some detail in:
Download instructions below.
AlgPack
The Algorithm collection, a spinoff project of RVL, is a framework for abstract expression of iterative algorithms. It was developed in Tony Padula's 2005 PhD thesis, along with many other scientific software innovations (get a pdf of Tony's thesis here). This partial release contains the alg and umin packages:
- alg - core classes of the Algorithm framework, plus some examples. The core is completely independent of RVL, but the examples depend on it, so we have made all depend on rvl, period.
- umin - algorithms for unconstrained minimization, including limited memory BFGS and Generalized Pattern Search. Depends on alg and rvl.
- seq - PolynomialSpace example from draft paper.
NB: some of the umin applications depend on Table, an ad-hoc but convenient associative array class. It's part of the dustydecks package in the RVL collection, so you will have to install that first. After making sure that your platform/compiler combination is properly represented by a config file in the admin directory of RVL, enter "make install" in the dustydecks root dir.
Downloads
RVL and related packages are now available from the CAAM Subversion server. Use requires a subversion client, which may be obtained from the Subversion web site.
To obtain all of the currently available RVL-related packages, export the packs directory from my repository:
svn export https://cvs.caam.rice.edu:3129/svn/symes/trunk/packs
This command will create a packs subdirectory of the current working directory, and write all of the RVL-related packages into it. You can rename "packs" on the fly by adding your chosen directory name at the end of the command:
svn export https://cvs.caam.rice.edu:3129/svn/symes/trunk/packs foo
will create the subdir "foo" and export the packages into it. To obtain just the package xxxpack,
svn export https://cvs.caam.rice.edu:3129/svn/symes/trunk/packs/xxxpack [your subdir name]
Currently available packs, and their constituent packages:
- rvlpack - rvl (RVL base classes), local (LocalRVL interfaces), mpi (MIPRVL MPI interfaces), admin (scripts and make rules), and tests (regression tests).
- algpack - alg (Algorithm package), umin (unconstrained minimization), and seq (PolynomialSpace example from paper).
- gridpack - grid (regularly gridded data as LocalRVL subtypes), segy (SEGY seismic trace data structures as LocalRVL subtypes), mpigrid (MPI-enabled grids), mpisegy (MPI-enabled seismic traces).
- tsoptpack - tsopt (timestepping for optimization base classes), fdgrid (concrete tsopt classes using regular grids and seismic traces, basis for finite difference simulators), a2c (acoustic 2D constant density simulator), mpitsopt (MPI-enabled tsopt interfaces), mpia2c (MPI-enabled drivers for A2C).
- gopack - dsnmo (differential semblance method based on convolutional model).
--- WWS, September 07

