Practical guide for developing 1D seismic velocity models from observed 3-component seismograms of first-arriving teleseismic P waves using receiver function analysis and synthetic seismogram computations.

The guide below consists of three independent sections:


NOTE CHANGES a code rfgen_asc previously distributed here has been superceeded by the code rfsyn which uses the method of spectral smoothing identical to that in recfunk code family.

Primary codes were written by Jeffrey Park, with modifications and service routines by Vadim Levin and Nikolai Shapiro.

  • ALL CODES ARE FREE , except for SAC analysis package which is copyrighted.
    However, only SAC format is used in the computations. As long as you can manipulate SAC headers yourself - no proprietary software would be needed.
    All operations are performed on a UNIX workstation, either SUN or Linux PC. Compilers for C and FORTRAN will be needed. I/O is in the form of ASCII timeseries, and also in binary SAC format. Images are in PostScript (thus you'll need a viewer...)

    recfunk.ascii: a FORTRAN code that will transform a collection of 3 component records (vertical, radial, transverse) into ASCII tables of 2 component RFs (radial and transverse), binned with backazimuth or epicentral distance.
    A rudimentary manual for recfunk code is here . The code recfunk.ascii differs only in that it doesn't generate graphical screen output, and thus may be compiled without OpenLook libraries and PLOTIT package.

    recfunk_average.ascii: a FORTRAN code that will transform a collection of 3 component records (vertical, radial, transverse) into averaged 2 component RFs (radial and transverse).
    The code takes same input as the recfunk above.
    It will average all observations, and will output two ASCII files, for radial and transverse receiver functions. Files contain two-column tables (time, RF_value).

    rfsyn: a FORTRAN code computing a receiver-function response of a stack of anisotropic layers to a plane wave incident from below via a reflectivity algorithm.
    instructions for use are here

    jp2tab C-language model format converter.


    mk_macro C-language program that helps prepare data for recfunk, courtesy of Nikolai Shapiro (CU Boulder).

    a GNU ZIP-compressed TAR file with source codes and SUN Solaris executables is here .
    On LDEO or Yale SUN networks include ~vadim/bin in your path and the codes will work.

    GMT graphics package. See GMT website for instructions on setting it up.

    Data Preparation

    A procedure described below does the trick or getting data ready. It will be easy to follow on a SUN platform. Not tested under Linux...

    From Data to Receiver Functions

    Data for the analysis described below are 3 components of motion associated with teleseimic compressional (P) waves. A "receiver function" is defined here as a timeseries of shear motion within the coda of the teleseismic P wave. The main assumption is that the vertical component contains primarily compressional motion, and thus deconvolving it from the horizontal components removes the signature of the earthquake source, plus all compressional reverberations, and leaves only shear-polarized motion.

    NOTE No assumptions are made at this stage with respect to the origin of the shear-polarized motion.

    For the purposes of developing vertical 1D profiles of seismic properties via forward modeling with synthetic seismograms (described in the following section) a single-trace RFs will be required. These could be extracted from the tables generated by recfunk with any text manipulation application (awk, perl, sed), by pulling out values for a chosen backazimuthal or epicentral-distance bin.
    Alternatively, an averaged receiver function may be created for the chosen subset of records with the help of recfunk_average.ascii code. For this purpose, user is advised to create a separate in_recfunk file that would have only records for a chosen direction and/or distance ranges. This is especially important when T component RFs are to be averaged, as they vary with direction in many cases. Files created by recfunk_average.ascii are called outr.trace, outt.trace, and will be overwritten every time the code is invoked.

    Modeling Receiver Functions

    "Modeling" in this context means finding a vertical distribution of seismic properties that would yield a synthetic seismogram that looks close to the observed one. It is thus a classic case of "forward" modeling.