TauP Find

TauP Find generates many possible phase paths through the given earth model. It is a way of cheating in that favorite game of seismologists, what’s that wiggle? It will attempt all possible paths within a model, subject to the given constraints. The output is either a simple list of possible phase names or travel times in the same format as taup time.

The complexity or length of the path is limited by the --max command line argument, which limits the number of interactions with discontinuities in the model, either reflection or phase conversion. For example, P and PKP both have 0 interactions while the phases sS and PcP both have one interaction due to the reflections and PKS has one due to the KS phase conversion. SKS has 2 because of the two shear-compression conversions at the core-mantle boundary and sP has 2 due to one phase conversion and one reflection, both at the surface.

Great care should be take as the combinatorial explosion is significant. In the iasp91 model for a surface source, --max 1 results in 85 phases while --max 2 results in over 1000 phases. Then --max 3 results in over 13,000 phases and --max 4 is over 160,000. The number of phase paths can be limited by a range of ray parameters or times or by disabling interactions with discontinuities in the model.

The phases may also be limited by a ray parameter range or optionally by a travel time range. Note that limiting by interaction number, via --max or limiting the ray parameter range via --rayparam or --rayparamkm are simple. Limiting by arrival time of the phase using the --time is more complex as the phase must be evaluated fully in the model, which takes longer. Both --rayparam and --time accept one or two values. If one, then the resulting phase must overlap that value, if two then it must overlap at least a part of that range. Note --time also working with --deltatime to allow specifying a single time and a delta time before and after it.

For example:

taup find --max 2 -h 100 --exclude 210

gives you all phases with 0,1 or 2 interactions for a 100 kilometer deep source, excluding interactions with the 210 discontinuity. Both the iasp91 and ak135 velocity models have very small discontinuities only in S velocity at 210, and so it is probably best to exclude that as it is too small to generate significant amplitude interacting phases. Note that many of these phases even with more substantial discontinuities may be of very small amplitude, below what is detectable, or may not exist at all for some distances and source depths.

This command:

taup find --max 2 --deg 35 -h 100 --time 400 420 --exclude 210

gives simimar phases to the previous, but also limits to arrivals between 400 and 420 seconds at 35 degrees away. If your seismogram contained what appears to be an arrival at roughly 410 seconds, this would give some possible phases that may explain it.

The usage is:

Usage: taup find [--amp] [--debug] [--help] [--onlynameddiscon] [--pwaveonly]
                 [--showrayparam] [--verbose]
                 [--attenuationfreq=<attenuationFreq>] [--deltatime=dt]
                 --max=<maxActions> [--mw=<mw>] [-o=<outFile>]
                 [--prop=<toolPropsFilename>] [--deg=d[,d...]]...
                 [--rayparamdeg=s/deg [s/deg]]... [--rayparamkm=s/km [s/km]]...
                 [--time=t [t]]... [--exclude=depth...]... [[--mod=<modelName>]
                 [-h=depth[,depth...]]... [--stadepth=depth[,depth...]]...
                 [--scat=s s]...] [[-p=phase[,phase...]]...
                 [--phasefile=<phaseFiles>]...] [--json | --text]
Find seismic phases in an earth model.

Options:

      --amp                show amplitude factor for each phase, only if --deg
      --attenuationfreq=<attenuationFreq>
                           attenuation frequency for amplitude calculations
      --debug              enable debugging output
      --deg, --degree=d[,d...]
                           distance in degrees
      --deltatime=dt       find arrivals within the +- deltatime, --times must
                             have single time
      --exclude=depth...   Exclude boundaries from phase conversion or
                             reflection interactions
                           May be depth (within tol) or named boundary like
                             moho, cmb, iocb
      --help               display this help message
      --max=<maxActions>   Maximum number of reflections and phase conversion
      --mw=<mw>            scale amplitude by source moment magnitude
  -o, --output=<outFile>   output to file, default is stdout.
      --onlynameddiscon    only interact with named discontinuities like moho,
                             cmb, iocb
      --prop=<toolPropsFilename>
                           load defaults from properties file
      --pwaveonly          only P wave legs, no S
      --rayparamdeg=s/deg [s/deg]
                           only keep phases that overlap the given ray
                             parameter range in s/deg
      --rayparamkm=s/km [s/km]
                           only keep phases that overlap the given ray
                             parameter range in s/km
      --showrayparam       show min and max ray parameter for each phase name
      --time=t [t]         find arrivals within the given range
      --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
Output Type:
      --json               outputs as JSON
      --text               outputs as Text