Mondaic

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()

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, varphi\\varphi 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_synthetic npt.NDArray — synthetic waveforms.
  • sampling_rate_in_hertz float — Sampling rate.
  • data_observed None — observed waveforms. Must be None!
Returns tuple[float, npt.NDArray] — tuple of misfit value and adjoint source

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_synthetic npt.NDArray — synthetic waveforms.
  • data_observed npt.NDArray — observed waveforms.
  • sampling_rate_in_hertz float — Sampling rate.
Returns tuple[float, npt.NDArray] — tuple of misfit value and adjoint source