crawtools.rotation_seismometer

Functions to convert rotation to horizotal seismometer signals, and vice versa, assuming only rotation through the gravitational field

Currently uses small-angle theory, simply multiplying radians by the gravitational attraction.

convert_motion

convert_motion(periods, vals, in_units, out_units)

Convert rotation units

Source code in crawtools/rotation_seismometer.py
55
56
57
58
59
def convert_motion(periods, vals, in_units, out_units):
    """Convert rotation units"""
    vals = match_dims(vals, periods)
    vals = _to_accel(periods, vals, in_units)
    return _from_accel(periods, vals, out_units)

convert_rotation

convert_rotation(periods, vals, in_units, out_units)

Convert rotation units

Source code in crawtools/rotation_seismometer.py
49
50
51
52
53
def convert_rotation(periods, vals, in_units, out_units):
    """Convert rotation units"""
    vals = _match_dims(vals, periods)
    vals = _to_rads(periods, vals, in_units)
    return _from_rads(periods, vals, out_units)

motion_to_rotation

motion_to_rotation(periods, vals, in_units='m/s^2', out_units='rad')

Convert horizontal motion to rotational equivalent

PSD is assumed to be in in_units/sqrt(Hz)

Parameters:
  • periods (array) –

    periods in seconds

  • vals (array or float) –

    PSD value in (in_units)/sqrt(Hz) at each period. If a scalar, the same value is applied at every period.

  • out_units (str, default: 'rad' ) –

    Reference units for rotation: '(n)rad', '(n)rad/s', '(n)rad.s'

Source code in crawtools/rotation_seismometer.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def motion_to_rotation(periods, vals, in_units='m/s^2', out_units='rad'):
    """
    Convert horizontal motion to rotational equivalent

    PSD is assumed to be in in_units/sqrt(Hz)

    Args:
        periods (np.array): periods in seconds
        vals (np.array or float):  PSD value in (in_units)/sqrt(Hz) at each period.
            If a scalar, the same value is applied at every period.
        out_units (str): Reference units for rotation: '(n)rad', '(n)rad/s', '(n)rad.s'
    """
    vals = _match_dims(vals, periods)
    vals = _to_accel(periods, vals, in_units)
    outp = vals / 9.8
    outp = _from_rads(periods, outp, out_units)
    return outp

rotation_to_motion

rotation_to_motion(periods, vals, in_units, out_units='m/s^2')

Return the horizontal PSD that will result from rotation through grav field

PSD is assumed to be in units/sqrt(Hz)

Parameters:
  • periods (array) –

    periods in seconds

  • vals (array or float) –

    rotationalPSDvalue at each period. If a scalar, the same value is applied at every period.

  • in_units (str) –

    Reference units for rotation: "rad", "rad.s", "rad/s", "nrad", "nrad.s", "nrad/s"

  • out_units (str, default: 'm/s^2' ) –

    Reference units for horizontal sensor: 'm', 'm/s' or 'm/s^2'

Source code in crawtools/rotation_seismometer.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def rotation_to_motion(periods, vals, in_units, out_units="m/s^2"):
    """
    Return the horizontal PSD that will result from rotation through grav field

    PSD is assumed to be in units/sqrt(Hz)

    Args:
        periods (np.array): periods in seconds
        vals (np.array or float): rotationalPSDvalue at each period.  If a scalar, the
            same value is applied at every period.
        in_units (str): Reference units for rotation: "rad", "rad.s", "rad/s",
            "nrad", "nrad.s", "nrad/s"
        out_units (str): Reference units for horizontal sensor: 'm', 'm/s' or 'm/s^2'
    """
    vals = _match_dims(vals, periods)
    vals = _to_rads(periods, vals, in_units)
    outp = vals * 9.8
    outp = _from_accel(periods, outp, out_units)
    return outp