Computer Programs in Seismology

Program Description

Software distribution as of 2025/01/27

This is a listing of the 158 programs currently distributed as part of the Computer Programs in Seismology. These have been developed over the years, and many are little used in my current research. For example, the FILE96 file format used for waveforms and many programs were written to filter and display waveforms. Currently I work with files in the SAC binary format and use the CPS gsac for processing, although the FILE96 format is used to create Sac files, e.g., f96tosac.

The ✔ in the first column indicates the programs that I use most. The second column provide a simple description of the program. The final column provides a link to PDF documentation and/or to a specific tutorial.

Most Used Program Document/Tutorial
INVERSION FOR VELOCITY MODEL
Surface wave inversion
surf96 which calls the programs srfdis96, srfdrl96, srfdrr96, srfgph, srfinv96, srfphr96, srfphv96, srfpre96, srfrph and srfvph Crustal structure - Chap. 3
Surface wave synthetics and group velocity
Inversion for structure
Receiver function inversion
rftn96 - Receiver function inversion program which calls rftndr96, rftnpr96, rftnpv96 and rftnvp Crustal structure - Chap. 4
Inversion for structure
Joint inversion of surface wave dispersion and receiver function
joint96 which calls jntpre96 and the support programs of surf96 and rftn96 Crustal structure - Chap. 5
Inversion for structure
Joint inversion of surface wave dispersion and first arrival times. This needs a tutorial
shallow96 - Joint inversion of dispersion and first arrival times. This calls shalpr96, srfdis96, srfdrl96, srfdrr96, ttinvdr96, srfinv96, srfvph, ttinvvp, srfgph and srfrph
Inversion of first arrival times
ttinv96 - A travel time inversion program which calls ttinvdr96, ttinvpr96, ttinvpv96and ttinvvp
Surface wave inversion kernels
srfker96 - This uses the output of surf96 for simple data set Surface-wave inversion kernels -I
srfpar96 - Partial derivatives for actual data set Surface-wave inversion kernels - II
GENERALIZED RAY THEORY SYNTHETICS
gprep96 Overview - Chap. 2
genray96 Overview - Chap. 2
gpulse96 Overview - Chap. 2
CERVENY RAY TRACING SYNTHETICS
cprep96 Overview - Chap. 5
cseis96 Overview - Chap. 5
cpulse96 Overview - Chap. 5
cray96 Overview - Chap. 5
SURFACE WAVE DISPERSION AND SYNTHETICS
Isotropic model:
sprep96 - prepare a data set for dispersion computation Overview - Chap. 4
sdisp96 - get Love and Rayleigh phase velocity for isotropic media Overview - Chap. 4
scomb96 - fix dispersion curves if a mode is skipped Overview - Chap. 4
slegn96 - compute Love wave eigenfunctions Overview - Chap. 4
sregn96 - compute Rayleigh wave eigenfunctions Overview - Chap. 4
spulse96 - make a synthetic by convolving with source pulse Overview - Chap. 4
spulse96strain - make a stress, strain synthetic by convolving with source pulse Overview - Chap. 10
sdpder96 - display depth dependent eigenfunctions Overview - Chap. 4
sdpdsp96 - plot observed data in same format as sdpegn96 Overview - Chap. 4
sdpegn96 - display eigenvalues, phase group velocity, etc Overview - Chap. 4
sdprad96 - plot radiation patterns for a given double couple mechanism Overview - Chap. 4
Source - Chap. 4
sdpsrf96 - plot theoretical phase velocities from sdisp96 Overview - Chap. 4
rlegn96 - Love wave eigenfunctions using generalized reflection matrices. This will handle low velocity zones correctly Eigenfunctions using GR matrices
rregn96 - Rayleigh wave eigenfunctions using generalized reflection matrices. This will handle low velocity zones correctly Eigenfunctions using GR matrices
slat2d96 - apply conservation of energy to fundamental model to estimate dispersion and synthetics for a laterally varying medium Further surface-wave in 2D media
Surface waves in 2-D media
Transverse isotropic model:
tprep96 - prepare a data set for dispersion computation Overview Chap. 1, 9
tdisp96 - compute Love and Rayleigh wave phase velocities Overview Chap. 1, 9
tlegn96 - compute Love wave eigenfunctions Overview Chap. 1, 9
tregn96 - compute Rayleigh wave eigenfunctions Overview Chap. 1, 9
tpulse96 - make a synthetic by convolving with source pulse Overview Chap. 1, 9
tcomb96 - fix dispersion curves if a mode is skipped Overview Chap. 9
tdpder96 - display depth dependent eigenfunctions Overview Chap. 9
tdpegn96 - display eigenvalues, phase group velocity, etc Overview Chap. 9
tdpsrf96 - plot theoretical phase velocities from tdisp96 Overview Chap. 9
WAVENUMBER INTEGRATION SYNTHETICS
Isotropic media
hprep96 - prepare the hspec96 run Overview - Chap. 3
hspec96 - make wavenumber integration synthetics Overview - Chap. 3
hprep96p - prepare the hspec96p run Overview - Chap. 3
hspec96p - make plane wave synthetics Overview - Chap. 3
hwhole96 Overview - Chap. 3
hpulse96 - convolve with source time function and create a FILE96 file Overview - Chap. 3
hrftn96 - make a P-wave receiver function for an isotropic model Crustal structure - Chap. 4
hspec96strain - wavenumber integration for use with hpulse96strain Overview - Chap. 10
Numerical stress test of code
hwhole96strain - analytic wholespace for use with hpulse96strain Overview - Chap. 10
Numerical stress test of code
hpulse96strain - output Green, strain, stress time series Overview - Chap. 10
rspec96 - wavenumber integration using generalized reflection matrices will handle solid-fluid-solid problem Overview - Chap. 3
rspec96p - plane wave synthetics using generalized reflection matrices Overview - Chap. 3
ISOTROPIC STEEPEST DESCENT TELESEISMIC SYNTHETICS
hudson96 - Make teleseismic synthetics for layered structure at source and receiver and ray tracing through the mantle Hudson synthetics
Hudson synthetics - Part II
ISOTROPIC STATIC DISPLACEMENT
hsanal96 - computes analytic permanent deformation Greens functions for a wholespace and halfspace for an isotropic model Static deformation
hstat96 - compute static deformation Green's functions for a layered isotropic model Static deformation
TRANSVERSE ISOTROPIC (VTI) MEDIA
tspec96 - compute wavenumber integration synthetic for transverse isotropic media Overview - Chap. 9
tspec96p - compute plane wave synthetics for transverse isotropic medium Overview - Chap. 9
tspec96strain - wavenumber integration for use with hpulse96strain for TI media Overview - Chap. 10
trftn96 - make a P-wave receiver function for a transverse isotropic model Overview - Chap. 9
UTILITY PROGRAMS
elocate - location program. Requires sac2eloc to create arrival file elocate.dat from the information in the Sac file headers. GSAC - Chap. 4
Epicenter determination
udelaz - compute great circle distance (km), arc distance (deg), azimuth and back azimuth udelaz -h
udtdd - compute P-wave ray parameter for Jeffreys-Bullen model. Use time96 or ttime96 instead udtdd -h
stereo - compute stereo nets using equal area or equal angle projection. GSAC - Chap. 4
redodate - a date calculator. I use this to define a time 60 sec before origin time when I request data redodate -h
mtinfo - decomposes a general moment tensor into isotropic - deviatoric, isotropic - major double couple - minor double couple, etc mtinfo -h
MODEL96 PROGRAMS
shwmod96 - plot the isotropic model Overview - Chap. 8
tshwmod96 - plot the transverse isotropic model Overview - Chap. 9
time96 - compute first arrival time, ray parameter, T* for an isotropic MODEL96 model file for a given distance and depth Overview - Chap. 8
timmod96 - compute and plot first arrival times for an isotropic model Overview - Chap. 8
ttime96 - compute first arrival time, ray parameter, T* for a transverse isotropic MODEL96 model file for a given distance and depth Overview - Chap. 9
ttimmod96 - compute first arrival time, ray parameter, T* for a transverse isotropic MODEL96 model file for a given distance and depth Overview - Chap. 9
mkmod96 - interactively create an isotropic velocity model in MODEL96 format Overview - Chap. 8
tmkmod96 - interactively create a transverse isotropic model in MODEL96 format Overview - Chap. 9
is2timod - convert isotropic model to transverse isotropic model format Overview - Chap. 9
ti2ismod - convert a transverse isotropic model to the best isotropic model (Dahlen) Overview - Chap. 9
refmod96 - make a nice plot or refraction and reflection arrivals. Each invocation of 'prs' in gsac will create a prototype shell script to present an overlay of travel times onto waveforms Overview - Chap. 8
prfmod96 - an attempt to display a sequence of 1-D isotropic velocity models as contours on a profile Overview - Chap. 8
GRAPHICS
calxvig - this is required by all interactive graphics programs
plotdbg - debug a PLT file CALPLOT - Appendix A
plotnps - convert a PLT file to PS or EPS Overview - App. 1
CALPLOT - Appendix A
plotxvig - display a PLOT file on an X11 screen Overview - App. 1
CALPLOT - Appendix A
reframe - manipulate individual PLOT files to change position and to clip Overview - App. 1
CALPLOT - Appendix A
genplt - a command line driven plot routine for making nice annotated plots CALPLOT - Chap. 7
calplt - simple program that permits implementation of Calcomp calls interactively CALPLOT - Chap. 7
Sac FILE PROGRAMS
gsac - SLU alternative to sac GSAC
shwsac - display contents of Sac header and plot the trace. This will show the actual header. On the other hand, gsac will compute some values, e.g., distance and azimuth, if possible. This is useful for debugging the header GSAC - Chap. 5
Overview - Chap. 7
saccvt - convert binary Sac file byte order between big-endian and little endian. When getting Sac files, it is often necessary to correct for the byte order:
saccvt -I < sac_file > tmp ; mv tmp sac_file
before sac_file can be used on the local machine.
Overview - Chap. 7
GSAC - Chap. 5
asctosac - convert Sac ASCII to Sac binary GSAC - Chap. 5
Overview - Chap. 7
sactoasc - convert Sac binary to Sac ascii GSAC - Chap. 5
Overview - Chap. 7
saclhdr - list contents of Sac header. This is used to get header information from the sac file header GSAC - Chap. 5
Overview - Chap. 7
sacpol - make particle motion plots in 2D GSAC - Chap. 5
sac2eloc - read station coordinates and arrival time picks from Sac header to create the elocate.datelocate. GSAC - Chap. 5
sacpsd - computer power spectral density for noise. NOTE: some of the shell scripts for waveform download in the SACPSD.tgz may be out of date. /TD> GSAC - Chap. 5
Theory and example of its use.
sacnoise - generate noise based on NHNM and NLNM. This can be used to apply realistic noise to synthetics for testing of algorithms Effect of noise on moment tensors
sacspc96 - plot spectra of Sac file GSAC - Chap. 5
sactof96 - convert a sac file to FILE96 format GSAC - Chap. 5
Overview - Chap. 7
pltsac - general utility for plotting sac trace. Use primarily to compare observed and predicted traces from source inversion GSAC - Chap. 5
sacdecon - frequency domain water level deconvolution - use saciterd instead GSAC - Chap. 5
Overview - Chap. 7
Estimating source time function
sacevalr - filter a sac file using frequency-phase and frequency-amplitude files
! use the gsac 'transfer' instead
GSAC - Chap. 5
Overview - Chap. 7
sacfilt - filter a sac file using pole-zero file.
! use the gsac 'transfer' instead
Overview - Chap. 7
GSAC - Chap. 5
saciterd - iterative time-domain deconvolution for receiver functions or source time function determination Overview - Chap. 7
saciterdc - C version of saciterd
sacampl - compute 1-D site response using Boore-Brown quarter wavelength method Quarter wavelength site response"
srotate96 - given appropriate Sac files, rotate Ur Uz Ut, strain, stress, rotation to a local X Y Z system Overview - Chap. 10
SURFACE WAVE ANALYSIS
do_mft - GUI front end to sacmft96 and sacmat96. This GUI calls sacmat96 and sacmft96 Crustal structure - Chap. 3
Phase velocity from empirical Green
do_pom - GUI font end to sacpom96. this GUI calls sacpom96 which does a p-ω stack to get phase velocities Crustal structure - Chap. 3
Surface wave synthetics and phase velocity
Phase velocity from a network
MFTSRF - Shell script to convert output of do_mft or do_pom to SURF96 format for inversion MFTSRF do_mft.dsp_files > surf96_dispersion_file
SOURCE INVERSION
Surface wave spectral amplitude inversion
srfgrd96 Source - Chap. 4
Waveform inversion programs
wvfdly96 - reads the time delay in the wvfgrd96 and wvfmtgrd96 created sac files to examine time shift as a function of azimuth to estimate location error Test of moment tensor inversion
wvfgrd96 - grid search for best double couple Test of moment tensor inversion
wvfmch96 - creates a synthetic for a given double couple or moment tensor Source - Chap. 5
wvfmt96 - linear inversion for full moment tensor - however the time shift correction is not implemented well and the program has been superseded by wvfmtgrd96 Source - Chap. 5
Test of moment tensor inversion
wvfmtd96 - linear inversion for deviatoric moment tensor - however the time shift correction is not implemented well and the program has been superseded by wvfmtgrd96 Source - Chap. 6
Test of moment tensor inversion
Test of wvfmtgrd96 wvfmtgrd96 - Implementation of Zhu and Ben-Zion grid search for best double couple, deviatoric moment tensor or full moment tensor. The time shifting works well. The deviatoric search takes longer than the double couple search, and the full moment tensor search takes longer than the deviatoric source, since there at searches over 5, 4 and 3 parameters for the full, deviatoric and double couple solutions, respectively. Test of moment tensor inversion
Utilities displaying the inversion results
fmdfit - plot goodness of fit output of wvfgrd96 or wvfmtgrd96 as a function of depth Source - Chap. 6
fmmfitwvfgrd96 to show goodness of fit as function of strike, dip and rake Source - Chap. 6
fmlpr - create an ASCII focal mechanism plot for double couple MTSCRIPTS unpack MECH.tgz, see MECH/0XXXREG/HTML.REG/DOHTML5
fmplot - plot focal mechanism, P SV or SH amplitudes, for double couple or moment tensor mechanism Source - Chap. 6
GSAC - Chap. 4
fmtp - Given strike, dip or rake, determine parameters of the other nodal plane, or given P and T trend and plunge, compute the nodal plane parameters Source - Chap. 6
REFORMATTING PROGRAMS USING THE file96 FORMAT
f96tosac Converts file96 file to Sac GSAC - Chap.5,
Overview - Chap. 7
OTHER FILE96 PROGRAMS
Most functionality is in gsac
f96list - List f96 header
fbutt96 - apply a Butterworth filter
! Use 'hp, lp, bp, br' in gsac
Overview - Chap. 6
fderiv96 - Take a derivative of the f96 traces
! Use 'dif' in gsac
Overview - Chap. 6
ffilt96 - Apply a polezero filter to f96 traces
! Use 'transfer' in gsac
Overview - Chap. 6
finteg96 - Integrate a f96 trace
! Use 'int' is gsac
Overview - Chap. 6
fmech96 - Apply a mechanism to f96 Greens functions
! Use 'mt' in gsac
Overview - Chap. 6
tfmech96 - Apply a mechanism to a data files created for an isotropic or transverse isotropic model - may eventually will replace fmech96 Overview - Chap. 9
fplot396 - Plot sets of 3 traces. This was for use with the 3 component waveforms generated using fmech96
! Use 'plot perplot 3' in gsac
Overview - Chap. 6
fplot96 - This plotted traces
! Use 'plot' in gsac
Overview - Chap. 6
fplotg96 - Plot all Greens functions Overview - Chap. 6
fprof96 - Plot a record section
! Use 'prs ' in gsac
Overview - Chap. 6
fsel96 - select a Green function of distance Overview - Chap. 6
fspec96 - Plot spectra
! Use 'psp' in gsac
Overview - Chap. 6
IRIS PROGRAMS
evalresp - make a table of amplitude and phase response from a SEED RESP file PROGRAMS.330/IRIS/evalresp-5.0.1.slu/doc/evalresp.pdf
evalresp.pdf
rdseed - binary provided - old but still needed PROGRAMS.330/IRIS/rdseedv5.3/Man/rdseed.1
rdseed.pdf
xmlresp - create RESP file from FDSN station XML file xml2resp.pdf