PRONTO Traveltime Tomography Code <STRONG>PRONTO</STRONG> Traveltime Tomography Code

From: David Aldridge

I have recently recreated a UNIX workstation version of the PRONTO 2D traveltime tomography algorithm. This version of the code should be useful for those who do not have the commercial seismic data processing software ProMAX. Also, this version of the code is the most technically "up-to-date", in that it incorporates improvements to the algorithm that I developed when I was at Chevron (and putting the algorithm into ProMAX).

The appropriate files have been put onto a Sandia anonymous ftp site for your easy access. The address of this site is:

You should log into this site as "anonymous".

The five files you will want are:

1) pronto.f - the fortran source code file. This contains the main program followed by all called subroutines. At the beginning of this file there is a rather extensive section of comments that describe (i) program run parameters, (ii) program input and output requirements and formats, (iii) compilation instructions, and (iv) array dimensioning via fortran "parameter" statements.

2) - a UNIX command file. This file establishes links between numeric input/output file designations within the fortran source code and named UNIX files containing the program input and output. Also, this command file executes the compiled code file "pronto.exe".

3) - a documentation file describing the algorithm in general terms, and providing somewhat more detailed information on run parameters and input/output files and formats.

4) - a file containing the set of program run parameters. Also, the file contains a description of the run parameters together with restrictions imposed on numerical values. The run parameters are currently set up to invert the synthetic data contained in the file described below.

5) data.obs - a file containing synthetic "observed data" for a crosswell recording geometry consisting of 101 sources and 101 receivers ( = 10201 total data). These data were generated for a uniform velocity model with vp = 2000 m/s.

To complile the fortran source code file, execute the UNIX command

f77 pronto.f -o pronto.exe

This creates a compiled code file named "pronto.exe". Next, set appropriate values of the run parameters in the file "". Next, go to the command file "" and choose pathnames for the input and output files. These pathnames can be absolute (i.e., relative to the root directory) or relative to the current working directory. I have provided example names for these files that are descriptive of their function. Thus

You may want to provide your own descriptive names for these files. Finally, to execute program PRONTO, simply type "" and hit "enter". During program execution, a fair amount of run status and diagnostic information is written to standard output. This will scroll across the terminal screen rapidly. To capture this info for more leisurely examination, redirect the standard output to a named UNIX file (say, "") by changing the command file ("") as follows

pronto.exe >

I will leave the five files on the anonymous ftp site for a few days. However, I should probably take them off after that. Interestingly, there is another program developed here at Sandia named PRONTO. This is a massive program for large deformation finite-element studies, developed over serveral years. Hopefully, nobody will think I am giving away one of Sandia's jewels! If you have any problems getting my files off the ftp site, give me a call and I will try something else. Also, you should not distribute my PRONTO code to other parties outside of your departments.

Good luck running program PRONTO! Feel free to contact me via phone (505-284-2823) or email ( if you have questions. Mike: I am sure that you and/or Bill Clement will want some startup instructions on running PRONTO. Don't hesitate to call or email. Also, consult the famous (!) paper by Aldridge and Oldenburg in Journal of Seismic Exploration, volume 2, pages 257-274 (1993).

Finally, a modification suggested by Dave Alumbaugh is currently in progress, and will be distributed to you if it proves useful. Presently, the subroutine implementing the LSQR algorithm (for solving the large and sparse system of linear algebraic equations to obtain the slowness model update) is coded in single- precision arithmetic. Dave suggests that this can be made more accurate if it is rewritten in double-precision. I will be working on this over the next few days.

Since the PRONTO algorithm was originally developed for seismic first break traveltime data, there may be some minor alterations to the code required to invert radar "time of flight" data. This is, in fact, why I am sending you the fortran source code. You will notice the code is fairly extensively commented. Hopefully, you will be able to find your way around with too much difficulty. Some fields in fortran "write" statements may not be correct for radar work. Feel free to change them as needed.

Cheers - Dave Aldridge

Return to PRONTO documentation.