def test_frf(self): """ """ frequencies = np.logspace(0, 3, 200) for i, gmt in enumerate(['dis', 'vel', 'acc']): responses = frf(frequencies, 100, 0.05, 'dis') fs = os.path.join(FIG_DIR, 'response.frf.%i.png' % (i+1,)) f, axes = plt.subplots(2, sharex=True) axes[0].semilogx(frequencies, np.degrees(np.angle(responses))) axes[1].loglog(frequencies, np.abs(responses)) axes[0].grid() axes[1].grid() plt.savefig(fs)
def test_frf(self): """ """ frequencies = np.logspace(0, 2.4, 200) for gmt in ['dis', 'vel', 'acc']: responses = frf(frequencies, 100, 0.05, gmt) mgntds, angles = np.abs(responses), np.degrees(np.angle(responses)) _, axes = plt.subplots(2, sharex=True) axes[0].plot(frequencies, mgntds) axes[1].plot(frequencies, angles) axes[0].grid() axes[1].grid() axes[0].set_title('Amplitude') axes[1].set_title('Phase') plt.savefig(os.path.join(OUTPUT_DIR, 'response.frf.%s.png' % gmt))
def calc(fas, frequencies, damping, duration, rms_duration_fnc=None): """ Responses are dis. """ responses = [] for f in frequencies: if rms_duration_fnc is None: ## no correction rms_duration = duration else: rms_duration = rms_duration_fnc(f) response_amplitudes = fas.amplitudes * np.abs(frf(fas.frequencies, f, damping, gmt='dis')) * (2 * np.pi * f)**2 m0, m1, m2, m4 = calc_spectral_moments([0, 1, 2, 4], fas.frequencies, response_amplitudes) y_rms = np.sqrt(m0/rms_duration) pf = calc_peak_factor(m0, m2, m4, duration) response = y_rms * pf responses.append(response) return np.array(responses)