Cross Correlation Traveltime Double Difference Misfit
Warning
Please refer to the original paper [Yuan2016] for rigorous mathematical derivations of this misfit function.
For two stations, i and j, the cross correlation traveltime double difference misfit is defined as the squared difference of cross correlations of observed and synthetic data. The misfit \(\chi(\mathbf{m})\) for a given Earth model \(\mathbf{m}\) at a given component is
where \(\Delta{s}(t, \mathbf{m})_{ij}\) is the cross correlation traveltime time shift of synthetic waveforms s_i and s_j,
and \(\mathbf{d}(t)\) is the cross correlation traveltime time shift of observed waveforms d_i and d_j,
The corresponding adjoint sources for the misfit function \(\chi(\mathbf{m})\) is defined as the difference of the differential waveform misfits
where the normalization factor \(N_{ij}\) is defined as:
Note
For the sake of simplicity we omit the spatial Kronecker delta and define the adjoint source as acting solely at the receiver’s location. For more details, please see [Tromp2005] and [Bozdag2011].
Note
This particular implementation uses Simpson’s rule to evaluate the definite integral.
Usage
adjsrc_type = "cc_traveltime_dd"
The following code snippet illustrates the basic usage of the cross correlation traveltime misfit function. See the corresponding Config object for additional configuration parameters.
import pyadjoint
obs, syn = pyadjoint.get_example_data()
obs = obs.select(component="Z")[0]
syn = syn.select(component="Z")[0]
obs_2, syn_2 = pyadjoint.get_example_data()
obs_2 = obs_2.select(component="R")[0]
syn_2 = syn_2.select(component="R")[0]
config = pyadjoint.get_config(adjsrc_type="cc_traveltime_dd",
min_period=20., max_period=100.)
# Calculating double-difference adjoint source returns two adjoint sources
adj_src, adj_src_2 = pyadjoint.calculate_adjoint_source(
config=config, observed=obs, synthetic=syn, windows=[(800., 900.)],
observed_2=obs_2, synthetic_2=syn_2, windows_2=[(800., 900.)]
)