Shock Response Spectrum
From Python Wiki
Mechanical shock pulses are often analyzed in terms of shock response spectra (SRS). The shock response spectrum assumes that the shock pulse is applied as a common base input to an array of independent single-degree-of-freedom systems. The shock response spectrum gives the peak response of each system with respect to the natural frequency. Damping is typically fixed at a constant value, such as 5%, which is equivalent to an amplification factor of Q=10.
The following tutorial gives further information: srs_intr.pdf
The scripts on this page require the utility module tompy.py
Arbitrary Base Input - SRS Calculation
The SRS for an an arbitrary base input can be calculated via a digital recursive filtering relationship, which models the convolution integral.
The filtering relationship can be implemented in Python by importing the lfilter function from scipy.
from scipy.signal import lfilter
A script for doing this is given at: srs.py
A version for calculating and plotting the SRS in tripartite format is given at: srs_tripartite.py
A script for calculating the SRS via a convolution integral is given at: srs_conv.py
Arbitrary Base Input - SRS Calculation - GUI Version
A GUI version written using Tkinter is given at srs_gui.py
Arbitrary Base Input - Time Domain Response for a given SDOF System
Digital recursive filtering relationship method: arbit.py
GUI version using Tkinter: arbit_gui.py
Runge-Kutta fourth order method (for non-stiff systems): arbit_rk4.py
The response of an SDOF system to a half-sine base input can be calculated via a Laplace transform which yields a closed-form solution, as shown in sbase.pdf
A script is given at: half_sine_base.py
Note that the peak response may occur either during or after the half-sine pulse depending on the pulse duration, natural frequency, and damping ratio.
Terminal Sawtooth Pulse
The response of an SDOF system to a terminal sawtooth base input can also be calculated via a Laplace transform. terminal_sawtooth.pdf
A script is given at: terminal_sawtooth_base.py
Here is a GUI for classical pulses which uses Tkinter: classical_base_gui.py
An SRS program for base excitation is given at: QSRS.F
Arbitrary Applied Force - Time Domain Response for a given SDOF System
A script for the response to an applied force is given at: arbit_force.py