disba
disba copied to clipboard
Dunkin matrix method can find the root while the fast-delta matrix method can't (base order)
Description of the problem
I set a two layer model :
model.true_model
{'thick': [0.002, 0.015], 'vp': [1.2375343056249999, 1.740763080625], 'vs': [0.15, 0.45], 'rho': [1.4501699956971361, 1.7773312121113325] }
and then I use the dunkin matrix method and fast-delta method to calcualte the dispersion wave,I get a two different result following:
from disba import PhaseDispersion
Velocity_model = np.hstack((thick_true.reshape(-1,1),vp.reshape(-1,1),vs.reshape(-1,1),rho.reshape(-1,1)))
t = np.linspace(1/60,1/5,100)
pd = PhaseDispersion(*Velocity_model.T,algorithm="dunkin")
cpr = [pd(t, mode=i, wave="rayleigh") for i in range(3)]
cpr
from disba import PhaseDispersion
Velocity_model = np.hstack((thick_true.reshape(-1,1),vp.reshape(-1,1),vs.reshape(-1,1),rho.reshape(-1,1)))
t = np.linspace(1/60,1/5,100)
pd = PhaseDispersion(*Velocity_model.T,algorithm="fast-delta")
cpr = [pd(t, mode=i, wave="rayleigh") for i in range(3)]
cpr
System information
- Operating system: Ubuntu
- Python installation (Anaconda, system, ETS):Anaconda python3.8
- Version of Python:python 3.8
- Version of this package:
Indeed, these two algorithms calculate the secular function differently. For some models, Dunkin's matrix algorithm works but Fast Delta doesn't, for others, it's the opposite. However, I would recommend using Dunkin's matrix for most cases and only try Fast Delta if Dunkin's matrix fails.