Finite Element Transient Analysis

There is a need in certain structural dynamics finite element analysis problems to perform a response analysis in the time domain. This would be the case, for example, if the stiffness was non-linear. Loss-of-clearance or contact between two adjacent vibrating parts is another analysis example.

Consider the case of base excitation in the form of a PSD. A time history can be readily synthesized to satisfy the PSD. The corresponding number of time history samples may overwhelm the finite element program’s allowable array sizes or cause excessive processing time and memory usage, however.

Certain military and aerospace PSD specifications have an upper frequency of 2000 Hz. A synthesized time history should thus have a sample rate of at least 20 KHz, which is ten times the highest PSD frequency. The total number of time history points would be 1.2 million if the specified duration was 60 seconds.

Now consider that the peak response must be calculated and that fatigue is unimportant. This would be the case for evaluating the resulting response with respect to yielding, ultimate stress limit, or relative displacement.

A shorter duration time history can be synthesized to satisfy this need as presented in this paper: Abbreviated_FEA_Transient.pdf

The abbreviated time history is derived using response spectra. Its response spectrum must envelop that of the full-duration PSD as determined from Rayleigh distribution of the PSD response.

* * *

Matlab Scripts for this Method:

* * *

See also:

SDOF Response to an acceleration PSD Base Input

Peak Response for Random Vibration

* * *

– Tom Irvine

Vibrationdata Matlab Signal Analysis & Structural Dynamics Package


Please send me an Email if you are going to use this package.

Thank you,
Tom Irvine

* * *

Here is a Matlab GUI multi-function signal analysis package:
Vibrationdata Signal Analysis Package

Alternate Link for Package    (Save link as)

The main script is: vibrationdata.m

The remaining scripts are supporting functions.

This is a work-in-progress. Some features are not yet installed but will be in a future revision. Please check back for updates.

The download and extraction process should be straightforward, but here are some slides for those who need instruction:  Vibrationdata_download.pptx

See also:  An Introduction to Shock & Vibration Response Spectra eBook

* * *

Here are some webinar and slide presentations which demonstrate the use of the GUI package in exercises:

Webinar Index

Structural Dynamics Webinars

Fatigue Webinars

Seismic Test & Analysis Webinars

Circuit Board Shock & Vibration Analysis

Nastran Modal Transient & Response Spectrum Analysis for Base Excitation

Launch Vehicle Vibroacoustics

Vibroacoustics/Statistical Energy Analysis

* * *

Currently installed features include:

autocorrelation & cross-correlation
Bessel, Butterworth & mean filters
Fourier transform, FFT, waterfall FFT, spectrogram
FFT for Machine Vibration ISO 10816
PSD, cross power spectral density & energy spectral density
PSD time history synthesis
SRS & SRS Tripartite
SRS time history synthesis
SDOF response to base input and applied force
cepstrum & auto-cepstrum
integration & differentiation
trend removal
rainflow cycle counting
fatigue damage spectrum
ISO Generic Vibration Criteria
modal frequency response functions including H1, H2 & coherence
half-power bandwidth method for damping estimation
generate sine, white noise and other time history waveforms
Helmholtz resonator
spring surge natural frequencies
Davenport-King wind spectrum
Dryden & von Karman gust spectra
Pierson-Moskowitz Ocean wave spectrum
rectangular plate analysis using both classical and finite element methods
spherical bearing stress
unit conversion

Future revisions will have additional functions.

* * *

Please contact me if you have suggestions for added features or if you find bugs.

* * *

See also: Python Signal Analysis Package

* * *

Tom Irvine

Gnuplot – Plotting Program


is a portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms. The source code is copyrighted but freely distributed (i.e., you don’t have to pay for it). It was originally created to allow scientists and students to visualize mathematical functions and data interactively, but has grown to support many non-interactive uses such as web scripting

Gnuplot can be downloaded from previous link or from: softpedia gnuplot

* * *

Here is an example for plotting the time history shown above using the following files:

Gnuplot command file:  plot_drop.plt

Time history:  drop.txt

* * *

Here is an example for generating a graph with two subplots using the multiplot command.

Gnuplot command file:  plot_drop_multiplot.plt

Time histories:  drop.txt  &  drop_velox.txt

Here is an alternate example that plots the two curves in separate windows:  plot_drop_2.plt

* * *

The follow command is then entered into the gnuplot window:

gnuplot>load “plot_drop.plt”

* * *

The drop_plot.plt file also generates a corresponding png file as shown at the beginning of this post.

The  above plot was made using Gnuplot Version 4.6 patchlevel 3.

The png file can be accessed by other applications but may require the following command first depending on the application, operating system, etc.


* * *

Here is an example for plotting a power spectral density in log-log format, with some manually added tics.

Data file: plate.psd

Gnuplot file: plot_psd.plt

gnuplot>load “plot_psd.plt”

* * *

Here is an example for plotting a shock response spectrum with two curves and a legend.

Data file:  half_sine_srs.txt

Gnuplot file:  plot_srs.plt

gnuplot> load “plot_srs.plt”

* * *

Here is an example for calling gnuplot from within a Fortran program running in Ubuntu:  fortran_gnuplot_demo.f

The key code line is:

CALL SYSTEM(‘gnuplot gnuplot_demo.plt -persist’)

* * *

See also:  Python & Gnuplot

* * *

– Tom Irvine

PSD Bandsplitting

Some power spectral density test specifications are too high in amplitude for a given shaker system.  Bandsplitting can be cautiously used in these cases.

Here is a brief guideline paper:  bandsplit.pdf

Here is a Matlab script that implements bandsplitting per the guidelines:

The main script is bandsplit.m.  The remaining scripts are supporting functions

Here is an example: bandsplitting_example.pdf

* * *

A bandsplitting function is also included in: Vibrationdata Matlab GUI Package

* * *

See also:

Random Vibration & Power Spectral Density Page

– Tom Irvine

Enveloping Random Vibration PSD Functions

These Matlab scripts determine an optimum envelope for an acceleration power spectral density:

The optimum envelope is the that which yields the lowest GRMS and Velocity RMS values.

The acceleration is assumed to be the base excitation for an array of independent, parallel single-degree-of-freedom systems. The vibration response spectrum method is used to justify the envelope.  This provides a rational method for peak-clipping.

The damping ratio is fixed at 0.05, equivalent to Q=10. The natural frequency is an independent variable.

The user must input a power spectral density file.

The file must be ASCII text with two columns:

Freq(Hz) PSD(G^2/Hz)

The main script is envelope_plateau.m

The remaining functions are supporting functions.

* * *

The above scripts generate an optimum PSD which has a series of ramps and plateaus.

Here are the original scripts which generate a more free-form PSD:

The main script is envelope.m

* * * also contains a script:  envelope_srs_psd.m.

This script can be used to derive a PSD to envelop an SRS.  The script uses the Rayleigh distribution to determine the n-sigma peak for each natural frequency based on the the product of the the natural frequency and duration.

* * *

See also:

Optimized PSD Envelope for Nonstationary Vibration

* * *

– Tom Irvine

Cross Power Spectral Density

The scripts in: calculate the cross power spectral density of two signals.

These scripts have an option to sub-divide the data into segments and then take an ensemble average.  This tends to smooth the resulting magnitude and phase curves, but the spectral frequency resolution is widened as a trade-off.

The scripts also calculate the coherence function.

This method is best-suited for stationary data.

* * *

Here is an alternate script set that calculates the cross spectral density as a single record using the entire signal.

This method would be appropriate for the case of transient pulses.

* * *

See also:  Python Cross Power Spectral Density

* * *

Tom Irvine

Contact Form:

Peak Response for Random Vibration

Single-degree-of-freedom System


Please see the following post for an important revision:  Peak Response to Random Vibration with Probability of Exceedance


Consider a single-degree-of-freedom system subjected to a broadband random vibration base input, where the input is stationary and has a normal distribution.  (The following calculation also works for an applied force.)

The system’s response will be narrowband random, with amplification at the system’s natural frequency.   The response will also have a normal distribution.

The typical assumption is that the peak response will be “3-sigma.”

Note that 1-sigma is equivalent to the GRMS value assuming a zero mean.

Higher sigma values can actually occur depending on the duration and natural frequency.

The highest expected response peak is estimated as:

sqrt [ 2 ln (fn T ) ] + 0.5772 / sqrt [ 2 ln (fn T ) ]


sqrt is the square root

ln is the natural log

fn is the natural frequency (Hz)

T is the duration(sec)

This formula is derived from the Rayleigh distribution as shown in:

Equivalent Static Loads for Random Vibration: eqstatic.pdf

A Matlab script for this calculation is given at:  peak_response_random.m

As an example, consider a system with a natural frequency of 200 Hz subjected to stationary random vibration over a duration of 60 seconds.  The maximum expected peak is 4.3-sigma for this case.

See also:  Peak Response for Multiple Random Vibration Events peak_response_multiple_events.pdf

* * *

The method can be extended to a multi-degree-of-freedom-system as shown in:  mdof_peak.pdf

* * *

Matlab script: Vibrationdata Signal Analysis Package

See also:  Rayleigh Distribution

– Tom Irvine

Power Spectral Density of a Time History

The Matlab scripts in calculate the power spectral density function for a time history.

The main script is:  PSD.m

The remaining scripts are supporting functions.

* * *

A Fortran power spectral density program is given at:  PSD.F

* * *

See also:

Matlab Random Vibration Page

Random Vibration & Power Spectral Density Page

Python Power Spectral Density

* * *

Please let me know if you have any questions.

Thank you,
Tom Irvine

Power Spectral Density Overall Level

The overall RMS level of a power spectral density function is equal to the square root of the area under the curve.

Power spectral density specifications are typically given in log-log format.  Thus special integration rules apply.

The Matlab scripts in  calculate the overall level of a power spectral density function.

The main script is psd_integ.m.

The other scripts are supporting functions.

Tom Irvine

SDOF Response to an acceleration PSD Base Input


This set of Matlab scripts calculates the response of a single-degree-of-freedom system to an acceleration power spectral density base input:

The power spectral density may vary arbitrarily with frequency.

The main script is:  sdof_ran.m

The user must specify the natural frequency and damping ratio.

The script performs a point-by-point multiplication of the base input by the power transmissibility function.  This method is more accurate than Miles equation which assumes a constant PSD over the frequency domain from zero to infinity.

The input file must have two columns: frequency(Hz) & accel(G^2/Hz)

* * *

A vibration response spectrum can be calculated for a single-degree-of-freedom system for the case where natural frequency is left as an independent variable.

Matlab scripts for this calculation are given at:

The main script is:  VRS.m

* * *

See also:

Matlab Random Vibration Page

Random Vibration & Power Spectal Density Page

Vibration Response Spectrum Page

Please let me know if you have any questions.

Thank you,
Tom Irvine