SourceParametersEstimation/sp_jk.py

25 lines
1006 B
Python

import numpy as np
def sp_jk(freq_bins, amp_spectra):
# Calculate source parameters using J and K Snoke's integrals
# with correction for the limited frequency band. The routine
# ignores quality factor in calculations (ideally, the spectrum
# should be corrected for attenuation before).
# For each waveform, calculate the J and K integrals and source parameters.
Av = amp_spectra * 2 * np.pi * freq_bins
jf = (2 * np.trapz(Av ** 2, x=freq_bins) + 2 / 3 * (amp_spectra[0] * 2 * np.pi * freq_bins[0]) ** 2 *
freq_bins[0] + 2 * (amp_spectra[-1] * 2 * np.pi * freq_bins[-1]) ** 2 * freq_bins[-1])
kf = (2 * np.trapz(amp_spectra ** 2, x=freq_bins) + 2 * amp_spectra[0] ** 2 * freq_bins[0] +
2 / 3 * amp_spectra[-1] ** 2 * freq_bins[-1])
# Calculation of spectral level and corner frequency
mo = 2 * (kf ** 3 / jf) ** 0.25 # spectral level from Snoke's integrals
fo = np.sqrt(jf / kf) / (2 * np.pi) # corner frequency
return mo, fo