previous up next print clean
Next: JAVA Up: INTRODUCTION Previous: INTRODUCTION

Where to start

A preconceived notion was that we would attempt to build on the C++ HCL (Hilbert Class Library) framework built by Bill Symes and Mark Gockenbach. This would allow us to leave numerical analysis and optimization to the mathematicians. This may be where we will end out; we hope so; but there are many other possibilities. We were surprised and disappointed to learn that the other three academic groups had the same difficulty we did, namely that a community of active C++ programmers did not emerge at their sites either. In other words, most geophysicists are too busy to go up the C++ learning curve and we cannot easily do what some of the contractors have done. Bill Symes at Rice has the most active academic geophysical C++ group, and the style there is that the math students code operators in Fortran 77 and the system built and maintained by Symes does the input/output, and optimization.

Fortran 90 (F90) is a potential alternative to C++ for breaking the constraints imposed by F77 shortcomings to geophysical inversion research. F90 is an advance over F77 in that it includes the modern idea of information hiding and complex data structures. The most important example of this is an operator like a sparse matrix and its adjoint being initialized by a geophysicist and being used by a mathematical optimizer. Fortran 90 should also offer us some advantages over C++ since compilers exist to parallelize F90, or the closely related HPF (High Performance Fortran), code on a variety of architectures, including our SGI Power Challenge and Connection Machine CM-5.

Both C++ and Fortran 90 have fairly recently matured to the stage where we can purchase compilers on all our general purpose workstations. F90 cannot be expected to reach the levels of conceptual abstraction possible in C++, but as a practical matter, we don't know how badly we really need such powerful abstractions. Also, it is too early to know if F90 will become a standard.


previous up next print clean
Next: JAVA Up: INTRODUCTION Previous: INTRODUCTION
Stanford Exploration Project
11/11/1997