Feeds:
Posts
Comments

Archive for the ‘Power Spectral Density’ Category

There is an occasional need to compare the effects of two different power spectral density (PSD) base input functions for a particular component. This would be the case if the component has already been tested to one PSD but now must be subjected to a new PSD specification.

A comparison can readily be performed using a Vibration Response Spectrum (VRS) if the PSDs have the same duration. This requires estimates of the bounds for both the amplification factor Q and the natural frequency.

The task is more complex if the PSDs have different durations. A Fatigue Damage Spectrum (FDS) comparison can be performed as an extension of the VRS method. This also requires estimates of the fatigue exponent.

The method is demonstrated using an actual case history: psd_fatigue_comparison.pdf

* * *

Here is the source code for a C++ vibration response program which has a fatigue damage spectrum option: vrs.cpp

The calculation can also be performed using the Matlab script set: VRS.zip

The main script is:  VRS.m

But the C++ version is much faster!

* * *

See also:

Rainflow Fatigue Cycle Counting

Dirlik Rainflow Counting Method from Response PSD

SDOF Response to an acceleration PSD Base Input

* * *

- Tom Irvine

Read Full Post »

PowerPoint File:

Webinar_14_PSD_synthesis.pptx

* * *

Matlab script: Vibrationdata Signal Analysis Package

* * *

See also: Vibrationdata Webinars

* * *

- Tom Irvine

Read Full Post »

PowerPoint File:

Webinar_13_PSD_sdof_response.pptx

Audio/Visual File:

SDOF_Response_to_PSD_Input.wmv

* * *

Reference Paper:  Derivation of Miles Equation

* * *

Matlab script: Vibrationdata Signal Analysis Package

* * *

See also: Vibrationdata Webinars

* * *

- Tom Irvine

Read Full Post »

PowerPoint File:

Webinar_12_PSD_data.pptx

Audio/Visual File:

PSD data.wmv

Data:

Taurus_auto.dat – Time(sec) & Accel(G)

* * *

Matlab script: Vibrationdata Signal Analysis Package

* * *

See also: Vibrationdata Webinars

* * *

- Tom Irvine

Read Full Post »

PowerPoint File:

Webinar_11_PSD.ppt

The sample PSD specification is taken from:  NAVMAT-P9492

Audio/Visual File:

PSD.wmv

* * *

Reference Papers:

Integration of the Power Spectral Density Function

Statistical Degrees-of-Freedom

Power Spectral Density Units [ G^2 / Hz ]

* * *

Matlab script: Vibrationdata Signal Analysis Package

* * *

See also: Vibrationdata Webinars

* * *

- Tom Irvine

Read Full Post »

flight_data_ns

There is a need to derive a PSD envelope for nonstationary acceleration time histories, including launch vehicle data, which may be similar to that shown in the above figure.

A PSD can be derived using rainflow fatigue cycle counting along with a Miners-type relative fatigue damage index.  The enveloping is then justified using a comparison of fatigue damage spectra between the candidate PSD and the measured time history.

The derivation process can be performed in a trial-and-error manner in order to obtain the PSD with the least overall GRMS level which still envelops the flight data in terms of fatigue damage spectra.  The Dirlik method can be used to calculate the fatigue damage spectrum of each candidate PSD in the frequency domain, instead of using the longer, time domain synthesis approach.

Furthermore, this can be done for a number of Q and fatigue exponent permutations for the case where these values are unknown.  This adds conservatism to the final PSD envelope.

Again, the goal is to derive the minimum PSD which envelopes the measured data in terms of fatigue.  The PSD’s duration is selected by the user.  It may or may not be the same as that of the measured data.  The method will scale the PSD to compensate for either a shorter or longer duration.

Statistical uncertainty factors or safety margins can then be added as a separate, post-processing step.

* * *

Here is a C++ program for applying this acceleration PSD derivation method for a user-supplied base input time history.

envelope_fds.cpp

envelope_fds.exe

* * *

Here is a similar C++ program for deriving a force PSD for an applied force time history.

envelope_fds_force.cpp

envelope_fds_force.exe

* * *

Here is a similar C++ program for deriving an acoustic SPL for an acoustic pressure time history.  The  applied and derived pressure fields are assumed to be uniform and fully correlated.

envelope_fds_acoustic.cpp

envelope_fds_acoustic.exe

* * *

Here is a Matlab MEX script set for an acceleration PSD: envelope_fds_matlab_mex.zip

Instructions: Go to the Matlab Command Window.

Type:

>>mex -setup

The C++ source code is compiled with Matlab as:

>>mex rainflow_mex.cpp

Then run the script:

>>envelope_fds

* * *

Here is a corresponding paper:  optimize_psd_fds.pdf 

* * *

See also:

Rainflow Fatigue Cycle Counting

Fatigue Damage Spectrum, Time Domain

Dirlik Rainflow Counting Method from Response PSD

Here is a previous method which performs fatigue comparison calculations strictly in the time domain for a single PSD candidate.  It does not have automatic optimization capabilities, however.

Enveloping Nonstationary Random Vibration Data

* * *

- Tom Irvine

Read Full Post »

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:

VRS.zip

srs_sine_syn.zip

* * *

See also:

SDOF Response to an acceleration PSD Base Input

Peak Response for Random Vibration

* * *

- Tom Irvine

Read Full Post »

Here is a Matlab GUI multi-function signal analysis package: vibrationdata.zip

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.

* * *

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
SPL
cepstrum & auto-cepstrum
integration & differentiation
trend removal
rainflow cycle counting
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

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

Contact Form:

Read Full Post »

drop_d


Gnuplot
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.

gnuplot>clear

* * *

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

Read Full Post »

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: bandsplit.zip

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

* * *

See also:

Random Vibration & Power Spectral Density Page

- Tom Irvine

Read Full Post »

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

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: envelope.zip

The main script is envelope.m

* * *

envelope.zip 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

Read Full Post »

The scripts in:  cross_psd.zip 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 CPSD_from_fourier.zip 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:

Read Full Post »

Older Posts »

Follow

Get every new post delivered to your Inbox.

Join 173 other followers

%d bloggers like this: