salvus.opt.misfits.cross_correlation_time_shift
salvus.opt.misfits.cross_correlation_time_shift salvus opt misfits cross_correlation_time_shift Cross correlation time shift misfits and adjoint sources.
Functions
cross_correlation_no_observed_data()
cross_correlation_no_observed_data()def cross_correlation_no_observed_data(
data_synthetic: npt.NDArray,
sampling_rate_in_hertz: float,
data_observed: None = None,
) -> tuple[float, npt.NDArray]: ...Cross correlation misfit without observed data.
This misfit formulation is based on that described in equation (11.25) from Fichtner, 2011 (https://doi.org/10.1007/978-3-642-15807-0). This corresponds to,
\\mathbf{f}^\\dagger = \\frac{1}{\\| \\partial_t \\varphi \\|_2^2} \\partial_t \\varphi \\, \\delta (\\mathbf{x} - \\mathbf{x}_\\mathrm{r}),where \\mathbf{f}^\\dagger is the adjoint source, is the synthetic waveform, and \\delta (\\mathbf{x} - \\mathbf{x}_\\mathrm{r}) is a sampling function that extracts the waveforms at the receiver location \\mathbf{x}_\\mathrm{r}.
Note that this function is only intended for computing the adjoint source for the given synthetic waveforms. The returned misfit value is meaningless, as no quantity is computed for it.
Parameters
data_syntheticnpt.NDArray — synthetic waveforms.sampling_rate_in_hertzfloat — Sampling rate.data_observedNone — observed waveforms. Must be None!
Returns tuple[float, npt.NDArray] — tuple of misfit value and adjoint source
cross_correlation_time_shift()
cross_correlation_time_shift()def cross_correlation_time_shift(
data_synthetic: npt.NDArray,
data_observed: npt.NDArray,
sampling_rate_in_hertz: float,
) -> tuple[float, npt.NDArray]: ...Compute the the cross correlation time shift misfit and adjoint source.
Parameters
data_syntheticnpt.NDArray — synthetic waveforms.data_observednpt.NDArray — observed waveforms.sampling_rate_in_hertzfloat — Sampling rate.
Returns tuple[float, npt.NDArray] — tuple of misfit value and adjoint source