pynetdesign.modelling.homo.calculate_M0#

pynetdesign.modelling.homo.calculate_M0(density, v, Q, rad_pattern, r, amps, f=None, fcorner=None, amps_type='displacement')[source]#

Calculates the seismic moment \(M_0\) in a homogeneous medium given the density \(\rho\), wave velocity \(v\), distance from the source \(r\) and the displacement amplitude spectrum \(\left|U(f)\right|\) using:

\[M_0 = \frac{4 \pi \rho v^3 r}{\left|R\right|}\,\left|U(f)\right|\,e^{\pi f t^*},\]

where \(R\) is the provided radiation pattern factor and the exponential term corrects for the intrinsic attenuation accumulated along the ray path.

The amplitudes passed in amps are the displacement amplitude spectrum \(\left|U(f)\right|\). Amplitudes of another type are converted to it with the coefficients of get_scaling_displacement, which follow from \(\left|V(f)\right| = 2 \pi f \left|U(f)\right|\).

The term \(t^*\) is the integral along the ray path of the inverse value of attenuation factor \(Q\) multiplied by the inverse of the wave velocity \(v\):

\[t^* = \int_R \frac{dr}{v(r) Q(r)},\]

which in a homogenous medium reads as

\[t^* = \frac{r}{vQ}.\]

Frequency \(f\) is the representative frequency of the wave. If it is not provided, it defaults to the peak frequency computed from the model, and limited by the corner frequency.

Parameters:
densityfloat

Density (kg/m^3)

vfloat

Wave velocity (m/s)

Qfloat

Attenuation factor

rad_patternfloat

Radiation pattern factor

rfloat or numpy.ndarray

Distance(s) from the source (m)

ampsfloat or numpy.ndarray

Displacement amplitude spectrum \(\left|U(f)\right|\), single value or array of amplitudes, one for each ray. If r is a single float, amps must be a single float If r is an array, amps must be an array of the same shape.

ffloat, optional, default: None

Frequency. If None, peak frequency is computed from the model

fcornerfloat, optional, default: None

Corner frequency, limit for peak frequency.

amps_typestr, optional, default: displacement

Type of amplitudes in amps, can be ‘displacement’, ‘velocity’, ‘acceleration’, ‘strain rate’, ‘strain’. Used for scaling of amplitudes in case f is None.

Returns:
M0float or array_like

Seismic moment (N m)