Cross Correlation Traveltime Misfit
Warning
Please refer to the original paper [Tromp2005] for rigorous mathematical derivations of this misfit function.
Traveltime misfits simply measure the squared traveltime difference. The misfit \(\chi(\mathbf{m})\) for a given Earth model \(\mathbf{m}\) and a single receiver and component is given by
\(T^{obs}\) is the observed traveltime, and \(T(\mathbf{m})\) the predicted traveltime in Earth model \(\mathbf{m}\).
Note
In practice traveltime are measured by cross correlating observed and
predicted waveforms. This particular implementation here measures cross
correlation time shifts with subsample accuracy with a fitting procedure
explained in [Deichmann1992]. For more details see the documentation of
the xcorr_pick_correction()
function
and the corresponding
Tutorial.
The adjoint source for the same receiver and component is then given by
where \(N\) is a normalization factor 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"
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]
config = pyadjoint.get_config(adjsrc_type="cc_traveltime",
min_period=20., max_period=100.,
taper_percentage=0.3, taper_type="cos")
adj_src = pyadjoint.calculate_adjoint_source(config=config,
observed=obs, synthetic=syn,
windows=[(800., 900.)]
)