%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_times
get_ray_paths
get_pierce_points
U 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)