TauP PierceΒΆ

TauP Pierce uses a model like TauP Time but determines the angular distances from the epicenter at which the specified rays pierce discontinuities or specified depths in the model.

The --rev, --turn and --under flags are useful for limiting the output to just those points you care about. The --pierce depth option allows you to specify an additional pierce depth that does not correspond to an actual discontinuity. For instance, where does a ray pierce 300 kilometers above the CMB?

For example:

taup pierce --mod prem -h 200 -p S,P --deg 57.4

would give you pierce points for S, and P for a 200 kilometer deep source at a distance of 57.4 degrees.

> P at   566.77 seconds at    57.40 degrees for a    200.0 km deep source in the prem model with rayParam    6.969 s/deg.
    0.00   200.0    0.00
    0.11   220.0    2.92
    1.31   400.0   28.13
    3.72   670.0   65.40
   28.17  1501.4  268.52
   52.62   670.0  471.64
   55.03   400.0  508.91
   56.23   220.0  534.12
   56.34   200.0  537.04
   57.31    24.4  562.45
   57.35    15.0  563.97
   57.40     0.0  566.75
> S at  1028.61 seconds at    57.40 degrees for a    200.0 km deep source in the prem model with rayParam   13.018 s/deg.
    0.00   200.0    0.00
    0.12   220.0    5.35
    1.33   400.0   52.28
    3.80   670.0  121.81
   28.15  1416.2  487.16
   52.50   670.0  852.51
   54.97   400.0  922.05
   56.18   220.0  968.97
   56.29   200.0  974.33
   57.30    24.4 1020.82
   57.35    15.0 1023.53
   57.40     0.0 1028.59

While

taup pierce --turn --mod prem -h 200 -p S,P --deg 57.4

would give you just the points that each ray turns from downgoing to upgoing.

> P at   566.77 seconds at    57.40 degrees for a    200.0 km deep source in the prem model with rayParam    6.969 s/deg.
   28.17  1501.4  268.52
> S at  1028.61 seconds at    57.40 degrees for a    200.0 km deep source in the prem model with rayParam   13.018 s/deg.
   28.15  1416.2  487.16

Using -rev would give you all points that the ray changes direction and -under gives just the underside reflections.

Using the -pierce option

taup pierce --mod prem -h 200 -p S --sta 12 34.2 --evt -28 122 --geodetic --pierce 2591 --nodiscon

would give you just the points at which S crossed a depth of 2591 kilometers from an event at (28 S, 122 E) to a station at (12 N, 34.2 E). Because we specified the latitudes and longitudes, we also get the latitudes and longitudes of the pierce points, useful for making a map view of where the rays encounter the chosen depth. Using the --geodetic is useful for the distance calculation with latitudes and longitudes. Here is the output, distance, depth, latitude and longitude, respectively.

> S at  1423.51 seconds at    93.63 degrees for a    200.0 km deep source in the prem model with rayParam    8.718 s/deg.
   31.57  2591.0  552.69    -17.87     89.40
   61.38  2591.0  821.30     -3.93     62.47

The usage is:

Usage: taup pierce [--amp] [--debug] [--first] [--geodetic] [--help]
                   [--nodiscon] [--rayp] [--rev] [--time] [--turn] [--under]
                   [--verbose] [--attenuationfreq=<attenuationFreq>]
                   [--az=<azimuth>] [--az=<azimuth>] [--baz=<backAzimuth>]
                   [--baz=<backAzimuth>] [--geodeticflattening=f] [--mw=<mw>]
                   [-o=<outFile>] [--prop=<toolPropsFilename>]
                   [--qml=<quakemlFilename>] [--staxml=<stationxmlFilename>]
                   [--pierce=depth[,depth...]]... [--rel=phase[,phase...]]...
                   [--evt=l l]... [--evt=l l]... [--sta=l l]... [--sta=l l]...
                   [[--mod=<modelName>] [-h=depth[,depth...]]...
                   [--stadepth=depth[,depth...]]... [--scat=s s]...] [[-p=phase
                   [,phase...]]... [--phasefile=<phaseFiles>]...] [[--deg=d[,
                   d...]]... [--exactdegree=d[,d...]]... [--exactkilometer=km[,
                   km...]]... [--km=km[,km...]]... [--rayparamdeg=s/deg[,
                   s/deg...]]... [--rayparamidx=i[,i...]]... [--rayparamkm=s/km
                   [,s/km...]]... [--rayparamrad=s/rad[,s/rad...]]...
                   [--takeoff=deg[,deg...]]... [--degreerange=d[,d...] [d
                   [d]]]... [--kilometerrange=k[,k...] [k [k]]]...
                   [--takeoffrange=k[,k...] [k [k]]]...]... [--json | --text]
Calculate pierce points for phases at discontinuities in the model.

Options:

      --amp                  show amplitude factor for each phase
      --attenuationfreq=<attenuationFreq>
                             attenuation frequency for amplitude calculations
      --debug                enable debugging output
      --first, --onlyfirst   only output the first arrival for each phase, no
                               triplications
      --geodetic             use geodetic latitude for distance calculations,
                               which implies an ellipticity. Default is
                               spherical. Note this only affects calculation of
                               distance from lat/lon pairs, all travel time
                               calculations are done in a purely spherical
                               model.
      --geodeticflattening=f Inverse Elliptical flattening for distance
                               calculations when --geodetic, defaults to WGS84
                               ~ 298.257. The distance calculation uses 1/x.
      --help                 display this help message
      --mw=<mw>              scale amplitude by source moment magnitude
      --nodiscon             only prints pierce points for the depths added
                               with -pierce
  -o, --output=<outFile>     output to file, default is stdout.
      --pierce=depth[,depth...]
                             additional depth for calculating pierce points
      --prop=<toolPropsFilename>
                             load defaults from properties file
      --qml, --quakeml=<quakemlFilename>
                             QuakeML file to load for earthquake origins to use
      --rayp, --onlyrayp     only output the ray parameter
      --rel=phase[,phase...] times relative to the first of the given phases
      --rev                  only prints underside and bottom turn points, e.g.
                               ^ and v
      --staxml=<stationxmlFilename>
                             StationXML file to extract station latitudes and
                               longitudes from
      --time, --onlytime     only output travel time
      --turn                 only prints bottom turning points, e.g. v
      --under                only prints underside reflection points, e.g. ^
      --verbose              enable verbose output
Model Args
  -h, --evdepth, --sourcedepth=depth[,depth...]
                             source depth in km
      --mod, --model=<modelName>
                             use velocity model "modelName" for calculations.
                             Default is iasp91. Other builtin models include
                               prem, ak135, ak135fcont, and ak135favg.
      --scat, --scatter=s s  scattering depth and distance in degrees, which
                               may be negative. Only effects phases with 'o' or
                               'O' in the phase name.
      --stadepth, --receiverdepth=depth[,depth...]
                             the receiver depth in km for stations not at the
                               surface
Phase Names
  -p, --ph, --phase=phase[,phase...]
                             seismic phase names
      --phasefile=<phaseFiles>
                             read list of phase names from file
Distance is given by:
      --deg, --degree=d[,d...]
                             distance in degrees
      --degreerange=d[,d...] [d [d]]
                             regular distance range in degrees, one of max min,
                               max or min,max,stepDefault min is 0 and step is
                               10.
      --exactdegree=d[,d...] exact distance traveled in degrees, not 360-d
      --exactkilometer=km[,km...]
                             exact distance traveled in kilometers, not 360-k
      --kilometerrange=k[,k...] [k [k]]
                             regular distance range in kilometers, one of max
                               min,max or min,max,step.Default min is 0 and
                               step is 10.
      --km, --kilometer=km[,km...]
                             distance in kilometers
      --rayparamdeg=s/deg[,s/deg...]
                             ray parameter from the source in s/deg, up or down
                               is determined by the phase
      --rayparamidx=i[,i...] ray parameter from the source as index into model
                               sampling, up or down is determined by the phase
      --rayparamkm=s/km[,s/km...]
                             ray parameter from the source in s/km, up or down
                               is determined by the phase
      --rayparamrad=s/rad[,s/rad...]
                             ray parameter from the source in s/rad, up or down
                               is determined by the phase
      --takeoff=deg[,deg...] takeoff angle in degrees from the source zero is
                               down, 90 horizontal, 180 is up
      --takeoffrange=k[,k...] [k [k]]
                             regular range in takeoff angle in degrees, one of
                               max min,max or min,max,step.Default min is 0 and
                               step is 10.
Lat,Lon influenced by:
      --az=<azimuth>         azimuth in degrees
      --baz=<backAzimuth>    backazimuth in degrees
      --evt, --event=l l     event latitude and longitude.  Creates a distance
                               if station is also given.
      --sta, --station=l l   station latitude and longitude. Creates a distance
                               if event is also given.
Output Type:
      --json                 outputs as JSON
      --text                 outputs as Text