Mondaic
This API reference is not for the latest stable Salvus version.

salvus.modules.near_surface.processing.point_to_line_source_conversion

Point to line source conversion in Salvus.

Functions

convert_point_to_line_source()

def convert_point_to_line_source(
    st: obspy.core.stream.Stream,
    source_coordinates: Union[numpy.ndarray, List[float]],
    receiver_coordinates: Union[numpy.ndarray, List[float]],
    transform_type: str,
    velocity_m_s: float,
    distance_type: str = "offset",
    hybrid_transformation_transition_zone: Optional[Sequence[float]] = None,
) -> obspy.core.stream.Stream:
    ...

Convert data from a point source to a line source.

This is necessary when using 3-D observed data in 2-D inversions.

This function implements some of the algorithms described in

Forbriger et al. (2014), Line-source simulation for shallow-seismic data. Part 1: theoretical background https://doi.org/10.1093/gji/ggu199

The algorithms are described in section 5 of the paper and we largely follow the nomenclature established there. The paper, along with Part 2, furthermore explains the applicability and limitations of the approach taken here, so please have a look.

All convolutions in this function are performed in the frequency domain.

Transformation types:

  • single_velocity: Assumes a homogeneous full space. Implements the approximation of Forbriger et al. (2014) equation 52. Technically only works in homogeneous full space models but works decently well for wavefields containing many different types of waves.
  • single_velocity_exact: Same as single_velocity but uses the exact formulation. It is a bit more accurate in the near-field but also a bit slower. See Forbringer et al. (2014) equation 31 for details.
  • direct_wave: Uses the source-receiver distance as a proxy for the travel time. Useful for shallow seismic data including surface waves. See Forbringer et al. (2014), section 5.2, for details.
  • reflected_wave: Estimates the travelled distance via the given velocity and the actual travel time. Useful for reflected waves. See Forbringer et al. (2014), section 5.1, for details.
  • hybrid: Use the single_velocity transformation up close and the direct_wave one further away. Interpolate between both in a transition zone. See Forbringer et al. (2014), section 5.3 for more details on the reasoning behind this.
Parameters
  • st obspy.core.stream.Stream — Waveform data. All traces must have exactly the same samples and are interpreted as different components of a single receiver.
  • source_coordinates Union[numpy.ndarray, List[float]] — 2-D source coordinates. The coordinates are assumed to be already projected onto a 2-D plane.
  • receiver_coordinates Union[numpy.ndarray, List[float]] — 2-D receiver coordinates. The coordinates are assumed to be already projected onto a 2-D plane.
  • transform_type str — Which transform type to use. See the docstring for details.
  • velocity_m_s float — Assumed velocity of the medium in meter per second.
  • distance_type str — How the distance between source and receiver is computed. Can be either "offset" or "full". "offset" will ignore the y coordinates, whereas "full" will compute the full 2-D distance between the two points.
  • hybrid_transformation_transition_zone Optional[Sequence[float]] — The transition zone for the hybrid transformation type. Must only be given when using it. Must be a tuple of two numbers, both denoting two distances in meters. For a source-receiver distance/offset of less than the first number, the single_velocity transform will be used. For a larger distance/offset the direct_wave transform will be used. It will linearly interpolate between both in the transition zone.
Returns obspy.core.stream.Stream