Version:

salvus.modules.near_surface.processing.point_to_line_source_conversion

salvus.modules.near_surface.processing.point_to_line_source_conversion salvus modules near_surface processing point_to_line_source_conversion
Point to line source conversion in Salvus.

Functions

convert_point_to_line_source()

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.
SIGNATURE
def convert_point_to_line_source(
    st: obspy.Stream,
    source_coordinates: np.ndarray | list[float],
    receiver_coordinates: np.ndarray | list[float],
    transform_type: str,
    velocity_m_s: float,
    distance_type: str = "offset",
    hybrid_transformation_transition_zone: (
        collections.abc.Sequence[float] | None
    ) = None,
) -> obspy.Stream: ...
ARGUMENTS
Required
st
Type:obspy.Stream
Description:
Waveform data. All traces must have exactly the same samples and are interpreted as different components of a single receiver.
Required
source_coordinates
Type:np.ndarray | list[float]
Description:
2-D source coordinates. The coordinates are assumed to be already projected onto a 2-D plane.
Required
receiver_coordinates
Type:np.ndarray | list[float]
Description:
2-D receiver coordinates. The coordinates are assumed to be already projected onto a 2-D plane.
Required
transform_type
Type:str
Description:
Which transform type to use. See the docstring for details.
Required
velocity_m_s
Type:float
Description:
Assumed velocity of the medium in meter per second.
Optional
distance_type
Type:str
Default value:'offset'
Description:
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.
Optional
hybrid_transformation_transition_zone
Type:collections.abc.Sequence[float] | None
Default value:None
Description:
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
Return type: obspy.Stream

Used in tutorials

Functionality from this module is used in the following tutorials.
PAGE CONTENTS