vpr.model.ttimod.update() vpr.get_vmodel(mtype='tti') vpr.model.dipArr[vpr.model.dipArr != 0.] = 90. vpr.model.strikeArr[vpr.model.strikeArr != 0.] = 33. vpr.model.init_etensor() vpr.model.rot_dip_strike() vpr.model.decompose() vpr.compute_tcps(wtype='ray') vpr.compute_tcps(wtype='love') # import tcps import numpy as np tcpsR1 = tcps.tcps_solver(vpr.model) vpr.model.flat = 0 tcpsR1.init_default_4() tcpsR1.dArr = vpr.model.get_dArr() tcpsR1.solve_PSV() CR1 = [] azArr = np.arange(360) * 1. for az in np.arange(360) * 1.: tcpsR1.psv_azi_perturb(az, False) CR1.append(tcpsR1.CA[1]) CR1 = np.array(CR1) tcpsL = tcps.tcps_solver(vpr.model) vpr.model.flat = 0
Spherical Earth: 1. dh = 1., 2., 4.; derived kernels are correct But the larger the dh, the larger the difference between the directly-computed and derived kernels! """ import eigen, tcps import vmodel import numpy as np import matplotlib.pyplot as plt m = vmodel.model1d() m.model_ak135_cps() m.flat = 1 tcps1 = tcps.tcps_solver(m) tcps1.init_default() tcps1.solve_PSV() # # tcps2 = tcps.tcps_solver(m) # tcps2.init_default(nl=100, dh=2.) # tcps2.verbose=1 # tcps2.solve_PSV() # # tcps3 = tcps.tcps_solver(m) # tcps3.init_default(nl=50., dh=4.) # tcps3.verbose=1 # tcps3.solve_PSV() #
# # model perturbation: isotropic -> VTI # # # m.add_perturb_layer_love(0, 20., 4, -0.1, True) # # m.add_perturb_layer_love(0, 20., 3, -0.3, True) # # m.add_perturb_layer_love(0, 20., 0, -0.05, True) # m.add_perturb_layer_love(0, 20., 1, 0.05, True) # m.add_perturb_layer_love(0, 20., 3, -0.05, True) # m.add_perturb_layer_love(0, 20., 4, 0.05, True) m.add_perturb_layer_love(0, 35, 0, -0.02, True) m.add_perturb_layer_love(0, 35, 1, 0.02, True) # m.add_perturb_layer_love(0, 20., 3, -0.05, True) m.add_perturb_layer_love(0, 35, 4, 0.02, True) tcpsR0 = tcps.tcps_solver(m) tcpsR0.init_default() tcpsR0.solve_PSV() m.init_tilt() m.dipArr[-1] = 90; m.dipArr[-2] = 90 m.strikeArr[-1] = 0; m.strikeArr[-2] = 0 m.rot_dip_strike() # m.rot_dip_strike() m.decompose() # # m.dipArr[-1] = 180; m.dipArr[-2] = 180 tcpsR = tcps.tcps_solver(m) tcpsR.init_default_2()
""" import eigen, tcps import vmodel import numpy as np import matplotlib.pyplot as plt m=vmodel.model1d() m=vmodel.model1d() m=vmodel.read_model(m, 'ak135.txt') # m.earth_flattening() eig1 = eigen.eigen_solver(m) eig1.init_default() eig1.solve_PSV() tcps1 = tcps.tcps_solver(m) tcps1.init_default() tcps1.solve_PSV() tcps2 = tcps.tcps_solver(m) tcps2.init_default(nl=100., dh=2.) tcps2.verbose=1 tcps2.solve_PSV() i=5 plt.plot((6371000. - eig1.r[::-1])/1000., (eig1.Kvsvdata[0,i,::-1]), 'ro-', ms=10) plt.plot(tcps1.dArr.cumsum(), tcps1.Kvsvdata[i, :]*4., 'bo-', ms=10) # # for i in xrange(10): # # plt.figure()
import matplotlib.pyplot as plt m=vmodel.model1d() m.model_ak135_cps() m.flat=1 # # # model perturbation: isotropic -> VTI # # # m.add_perturb_layer_love(0, 20., 4, -0.1, True) # # m.add_perturb_layer_love(0, 20., 3, -0.3, True) # m.add_perturb_layer_love(0, 20., 0, -0.1, True) m.add_perturb_layer_love(0, 20., 3, -0.1, True) m.add_perturb_layer_love(0, 20., 4, 0.1, True) tcpsR0 = tcps.tcps_solver(m) tcpsR0.init_default() tcpsR0.solve_PSV() m.init_tilt() m.dipArr[-1] = 70; m.dipArr[-2] = 70 m.strikeArr[-1] = 0.; m.strikeArr[-2] = 0. m.rot_dip_strike() m.decompose() # tcpsR1 = tcps.tcps_solver(m) tcpsR1.init_default() tcpsR1.solve_PSV() #
import matplotlib.pyplot as plt m=vmodel.model1d() m.model_ak135_cps() m.flat=1 # # # model perturbation: isotropic -> VTI # # # m.add_perturb_layer_love(0, 20., 4, -0.1, True) # # m.add_perturb_layer_love(0, 20., 3, -0.3, True) # m.add_perturb_layer_love(0, 20., 0, -0.1, True) m.add_perturb_layer_love(0, 20., 3, -0.1, True) m.add_perturb_layer_love(0, 20., 4, 0.1, True) tcpsL0 = tcps.tcps_solver(m) tcpsL0.init_default() tcpsL0.solve_SH() m.init_tilt() m.dipArr[-1] = 60; m.dipArr[-2] = 60 m.strikeArr[-1] = 0.; m.strikeArr[-2] = 0. m.rot_dip_strike() m.decompose() # tcpsL1 = tcps.tcps_solver(m) tcpsL1.init_default() tcpsL1.solve_SH() #
m2.add_perturb_layer(0, 20., 2, 6.06, False) m2.add_perturb_layer(0, 20., 3, 6.24, False) m2.add_perturb_layer(0, 20., 4, 0.72, False) m2.add_perturb_layer(0, 20., 5, 2.73, False) m2.init_tilt() m2.dipArr[-1] = 27 m2.dipArr[-2] = 27 m2.strikeArr[-1] = 110 m2.strikeArr[-2] = 110 m2.rot_dip_strike() m2.decompose() # tcpsR1 = tcps.tcps_solver(m1) tcpsR1.init_default() tcpsR1.solve_PSV() # tcpsR2 = tcps.tcps_solver(m2) tcpsR2.init_default() tcpsR2.solve_PSV() # CR1 = [] for baz in np.arange(36) * 10.: tcpsR1.psv_azi_perturb(baz, True) CR1.append(tcpsR1.CA[1]) CR2 = []
Spherical Earth: T = 5 - 100. sec, dT = 5 sec Results are consistent (< ~ 0.1%), result can be more consistent if nl is larger and dh is smaller. But this is computationally more expensive. """ import eigen, tcps, aniproppy import vmodel import numpy as np import matplotlib.pyplot as plt m=vmodel.model1d() m.model_ak135_cps() m.flat=1 tcpsR = tcps.tcps_solver(m) tcpsR.init_default_2() tcpsR.solve_PSV() tcpsL = tcps.tcps_solver(m) tcpsL.init_default_2() tcpsL.solve_SH() # ani = aniproppy.aniprop_solver(m) # ani.init_default(nl=50, dh=4.) ani.init_default_2() ani.solve_surf(0.) # # m.flat=1