Example #1
0
 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)
Example #2
0
    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))
Example #3
0
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)