The University of Sheffield
4 files

dispersion.m - A MatLab script for phase angle and amplitude correction of pressure bar signals

posted on 2016-10-12, 12:04 authored by Andrew BarrAndrew Barr

(A Python version of this script is also available)

In processing the signals from split Hopkinson pressure bar (SHPB) experiments it is often assumed that longitudinal stress waves in the pressure bars propagate one-dimensionally at a common velocity c_0, and so measurements taken at the strain gauges are often simply translated to the end of the bar using a suitable time delay. In reality, stress waves propagate at a specific phase velocity, c_p, which is a function of frequency and the bar's diameter, one-dimensional wave speed and Poisson's ratio. Phase velocity decreases as the frequency of a wave increases, leading to dispersion of a signal as it propagates down the bar. Dispersion of the stress pulse is accompanied by a frequency-dependent variation in stress and strain across the bar cross-section, so that a signal recorded on the surface of the bar at some distance from the specimen will not accurately describe the stresses the specimen was subjected to, and hence cannot be used to accurately determine the specimen response.

This script uses an implementation of the dispersion-correction method described by Tyas and Pope (2005) to ensure that the inferred measurements of axial stress and strain accurately represent the specimen behaviour. In this method:

  1. The time-domain strain signal is converted into the frequency domain using the fast Fourier transform (FFT)
  2. A correction is applied to the phase angle of each frequency component to account for the dispersion over the distance between the strain gauge and the bar end, using Bancroft's equation.
  3. A correction is applied to the amplitude of each frequency component using the factors M_1 and M_2, which account for the variation of strain and Young's modulus across the bar cross section, respectively. These are derived from Davies' analysis of the radial effects in a cylindrical pressure bar.
  4. The signal is transformed back into the time domain using the inverse FFT.

Dispersion.m uses a pre-calculated, normalised look-up table of phase velocity, M1 and M2 to improve calculation time. A lookup table for a Poisson's ratio of 0.29 has been provided in the .zip file, and other tables can be constructed using the relationships defined in Tyas and Pope (2005) with the accompanying phasevelocity.m script.

Further information on the operation of the script is also available in Barr (2016), linked below.


EPSRC 1390522



  • There is no personal data or any that requires ethical approval


  • The data complies with the institution and funders' policies on access and sharing

Sharing and access restrictions

  • The uploaded data can be shared openly

Data description

  • The file formats are open or commonly used

Methodology, headings and units

  • There is a file including methodology, headings and units, such as a readme.txt