%pylab inline
from __future__ import print_function
import matplotlib.pylab as plt
plt.style.use('ggplot')
plt.rcParams['figure.figsize'] = 12, 8
import warnings
warnings.filterwarnings("ignore")
from obspy.taup import TauPyModel
Nejdřív si načteme rychlostní model, TauP má předdefinováno několik 1-D rychlostních modelů:
Anebo si člověk může sestavit vlatní rychlostní model, nejdřív do formátů .tvel nebo .nd a použije funkci build_taup_model().
model = TauPyModel(model="iasp91")
K použití jsou podobné funkce jako u klasického TauP:
get_travel_timesget_ray_pathsget_pierce_pointsU variace s koncovkou _geo se místo distance zadávají dvojice (lat,lon).
arrivals = model.get_travel_times(source_depth_in_km=30, distance_in_degree=90, phase_list=['ttp+'])
print(arrivals)
Objekt Arrivals obsahuje jednotlivé objekty Arrival s atributy:
model.get_pierce_points())model.get_ray_paths())first = arrivals[0]
print(first.name)
first.__dict__
Zkratky pro předdefinované skupiny fází:
ttp = {p, P, Pn, Pdiff, PKP, PKiKP, PKIKP}ttp+ = ttp + {PcP, pP, pPdiff, pPKP, pPKIKP, pPKiKP, sP, sPdiff, sPKP, sPKIKP, sPKiKP}tts = {s, S, Sn, Sdiff, SKS, SKIKS}tts+ = tts + {sS, sSdiff, sSKS, sSKIKS, ScS, pS, pSdiff, pSKS, pSKIKS}ttbasic = ttp+ + tts+ + {ScP, SKP, SKIKP, PKKP, PKIKKIKP, SKKP, SKIKKIKP, PP, PKPPKP, PKIKPPKIKP}ttall = ttbasic + {SKiKP, PcS, PKS, PKIKS, PKKS, PKIKKIKS, SKKS, SKIKKIKS, SKSSKS, SKIKSSKIKS, SS, SP, PS}Můžeme vytvářet i jiné fáze, např. s využitím rozhraní v 410 km a 660 km.
Příklady:
Více viz oddíl Phase naming v https://docs.obspy.org/packages/obspy.taup.html
Vykreslovací funkce:
plot_travel_times() - časy příchodů vln v závisloti na epicentrální vzdálenostiplot_ray_paths() - paprsky pro jeden zdroj a plno přijímačůarrivals.plot_times() - časy příchodů vln v závisloti na jedné epicentrální vzdálenostiarrivals.plot_rays()model.get_ray_paths()from obspy.taup import plot_travel_times, plot_ray_paths
plt.rcParams['figure.figsize'] = 12, 8
plot_travel_times(source_depth=30, phase_list=['P','Pdiff','PcP','PKP','PKIKP','PKiKP', 'PP'], npoints=200)
Přiřazení původních názvů PKP větví k názvům fází v ObsPy:
PKPab = PKP
PKPbc = PKP
PKPdf = PKIKP
PKPcd = PKiKP
plot_travel_times(source_depth=30, phase_list=['PKP','PKIKP','PKiKP'], npoints=200,
min_degrees=130, max_degrees=160)
arrivals = model.get_ray_paths(source_depth_in_km=30, distance_in_degree=147, phase_list=['PKP','PKIKP','PKiKP'])
arrivals.plot_rays(plot_type='spherical', legend=True)
phases = ['P']
phases = ['P', 'p^410P']
phases = ['P', 'p^410P', 'Pv660p^410Pv660P']
phases = ['P', 'p^410P', 'Pv660p^410Pv660P', 'sP']
phases = ['P', 'p^410P', 'Pv660p^410Pv660P', 'sP', 'sPP']
arrivals = model.get_ray_paths(source_depth_in_km=500, distance_in_degree=20, phase_list=phases)
arrivals.plot_rays(plot_type='cartesian', legend='lower right')
plot_ray_paths(source_depth=30, phase_list=['SKKS'], npoints=100, legend=True, plot_all=False)
plot_ray_paths(source_depth=30, phase_list=['PKJKS'], npoints=100, legend=True)
plot_ray_paths(source_depth=30, phase_list=['PcPPcPPcP'], npoints=60, legend=True, plot_all=False)
plot_ray_paths(source_depth=30, phase_list=['Pdiff', 'PP'], npoints=100, legend=True, plot_all=True)