Source code for bruges.transform.cumavg
# -*- coding: utf-8 -*-
"""
Average velocity equations.
All from Chris Liner, Elements of
3D Seismology, PennWell Press, 2004.
"""
import numpy as np
[docs]def v_rms(v, depth=None, time=None):
"""
Cumulative RMS mean of a velocity log. You must provide either
a depth or a time basis for the log.
Args:
v (ndarray): The velocity log.
depth (ndarray): The depth values corresponding to the log.
time (ndarray): The time values corresponding to the log.
Returns:
ndarray: The V_rms log.
"""
if (depth is None) and (time is None):
raise TypeError("You must provide a depth or time array")
if depth is None:
return np.sqrt(np.cumsum(v**2 / time) / np.cumsum(time))
else:
return np.sqrt(np.cumsum(depth * v) / np.cumsum(depth / v))
[docs]def v_avg(v, depth=None, time=None):
"""
Cumulative average of a velocity log. You must provide either
a depth or a time basis for the log.
Args:
v (ndarray): The velocity log.
depth (ndarray): The depth values corresponding to the log.
time (ndarray): The time values corresponding to the log.
Returns:
ndarray: The V_avg log.
"""
if (depth is None) and (time is None):
raise TypeError("You must provide a depth or time array")
if depth is None:
return np.cumsum(v * time) / np.cumsum(time)
else:
return np.cumsum(depth) / np.cumsum(depth / v)
[docs]def v_bac(v, rho, depth):
"""
Cumulative Backus average of a velocity log. You must provide
either a depth or a time basis for the log.
For a non-cumulative version that can also provide sclaing for the
V_s log, as well as quality factor, see bruges.anisotropy.backus.
Args:
v (ndarray): The velocity log.
rho (ndarray): The density log.
depth (ndarray): The depth values corresponding to the logs.
Returns:
ndarray: The V_bac log.
"""
num = np.cumsum(depth**2)
den = np.cumsum(rho * depth) * np.cumsum(depth/(v**2 * rho))
return np.sqrt(num / den)