Coder Social home page Coder Social logo

arthurvl-maker / process_shpb Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 74 KB

process_SHPB.py - A Python algorithm for stress wave dispersion correction in split-Hopkinson pressure bar experiments

License: MIT License

Python 100.00%
acoustical-analysis acoustics dispersion-correction dynamics engineering python shpb shpb-process signal-analysis signal-processing

process_shpb's Introduction

process_SHPB.py - A Python algorithm for stress wave dispersion correction in split-Hopkinson pressure bar experiments

DESCRIPTION:

When processing signals from split-Hopkinson pressure bar (SHPB) experiments, it is frequently presumed that longitudinal stress waves in the pressure bars travel one-dimensionally at a common velocity of c0. Hence, measurements recorded at the strain gauges are commonly simply translated to the end of the bar using a suitable time delay. In reality, stress waves travel at a certain phase velocity, cp, which varies with frequency, bar diameter, one-dimensional wave speed and Poisson’s ratio. As the frequency of a wave rises, the phase velocity drops, resulting in signal dispersion as it propagates down the bar. The dispersion of the stress pulse is followed by a frequency-dependent fluctuation in stress and strain throughout the bar cross-section. Therefore, a signal recorded on the surface of the bar at some distance from the specimen will not accurately represent the stresses the specimen was subjected to, and hence cannot be used to objectively measure the specimen response.

process_SHPB.py is the main algorithm which processes all the SHPB test data, from which the subroutines dispersion.py and dispersion_factors.py are called. The algorithm was inspired by a Matlab script created by Barr (2016).

The inputs for the key function process_SHPB.py are: raw file, which is the raw file collected from the SHPB test; sample data, which is a list containing the length, mass and dry mass of the sample tested; confinement, which specifies the confinement of the sample tested using the SHPB apparatus either ”None”, “Ring” or “Reservoir”; and correction, which is either a dispersion correction or a simple time shift analysis. In the 'Processed_Data' folder, all the necessary key results are saved as .csv files.

The subroutine dispersion.py, in process_SHPB.py, uses an adaptation of Tyas and Pope’s (2005) dispersion-correction approach to verify that the inferred axial stress and strain data appropriately represent the specimen behaviour, as specified below:

  1. The fast Fourier transform (FFT) is used to convert the time-domain strain signal to the frequency domain.
  2. Using Bancroft’s equation, a correction is made to the phase angle of each frequency component to account for dispersion over the distance between the strain gauge and the bar end.
  3. The amplitude of each frequency component is corrected using the factors m1, m2, v_ratio and norm_freq, which account for strain and Young’s modulus fluctuation over the bar cross section, respectively. Davies’ investigation of radial effects in a cylindrical pressure bar yielded these results.
  4. The inverse FFT is used to transform the signal back into the time domain.

To save time, dispersion.py utilises a subroutine dispersion_factors.py, which includes a precalculated, normalised look-up table of phase velocity, m1, m2, v_ratio and norm_freq. process_SHPB.py, includes a lookup table for a Poisson’s ratio of 0.29. More tables can be generated using the calculation method outlined in Tyas and Pope (2005) and the Python script phase_velocity.py, (Van Lerberghe, A., Barr, A. D. (2023)), available on GitHub and ORDA, see links below.

FILES INCLUDED:

  • process_SHPB.py: Includes the main python function, with the documentation on the use of the function included in the file as comments. It requires dispersion.py, dispersion_factors.py, and dispersion_factors folder to run.
  • dispersion.py: A Python function, with the documentation on the use of the function included in the file as comments. It requires dispersion_factors.py to run.
  • dispersion_factors.py: A Python function, with the documentation on the use of the function included in the file as comments. It requires the folder dispersion_factors.
  • 'dispersion_factors' folder: A folder containing pre-calculated values of normalised frequency, normalised velocity and factors m1 and m2 for a material with a Poisson's ratio of 0.29 (i.e. stainless steel). This was calculated using the algorithm phase_velocity.py (Van Lerberghe, A., Barr, A. D. (2023)), available on GitHub and ORDA, see links below.

REFERENCES:

  • Tyas, A., Pope, D.J., (2005). Full correction of first-mode Pochhammer–Chree dispersion effects in experimental pressure bar signals. Measurement science and technology, 16(3), p.642.

MATLAB SOFTWARE:

PYTHON SOFTWARE:

AUTHORS:

Arthur Van Lerberghe [email protected] & Andrew D. Barr [email protected].

process_shpb's People

Contributors

arthurvl-maker avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.