Convolution Double Difference Misfit
For two stations, i and j, the convolution double difference misfit is defined as the squared difference of convolution of observed and synthetic data. The misfit \(\chi(\mathbf{m})\) for a given Earth model \(\mathbf{m}\) at a given component is
Double difference misfit functions result in two adjoint sources, one for each station in the pair i, j. The corresponding adjoint sources for the misfit function \(\chi(\mathbf{m})\) is defined as the difference of the differential waveform misfits:
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 [Yuan2016].
Note
This particular implementation uses Simpson’s rule to evaluate the definite integral.
Usage
adjsrc_type = "convolution_dd"
The following code snippet illustrates the basic usage of the convolution 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="convolution_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.)]
)