User login


You are here

Stress Wave Propagation in a Split Hopkinson Pressure Bar

Hello I am a student of the University of Manchester. I am modelling a SHPB assembly together with the specimen, and I am having trouble with placing the loads,creating the boundary constrain between the incident, transmitter bar and the specimen. I created the interaction between the assembly with a suppressed TIE, and after loading and submitting the job I kept on getting errors. The load did not transmit to up to a quarter of the incident bar.
I neeed suggestions on how to apply the attachment between the separate components that make up the assembly, how to time step properly and the loading sequence.
I made use of ABAQUS Explicit


Hi Emeka,

For assembling, you may apply surface contact between the incident bar/specimen surface, and specimen/transmitted bar surface.

for loading, you may  either 1) apply displacement/stress pulse on the other end of the incident bar using amplitude or 2) create a part for the striker and apply velocity to the entire striker to hit the incident bar. 

The time increment should be less than the critical time t_c = L/c, where L is the minimum element size, and c is the elastic wave speed.

 Hope this  helps,

Yi Pan


I had used velocity bdry condition, but I got a situation where the incident and transmitter bars also get deformed. I actually modelled without a striker, but Im not really sure I applied the amplitude correctly. I need hints on how to create the amplitude.

Is it necessary to use amplitude if one is using velocity, bcos that could be my mistke.

Thank you very much

Here is the format to apply the BC by amplitude.  You can define the amplitude right atfter the *END ASSEMBLY keyword.

The data line is in the format of t0, V0, t1, V1, t2, v2, ...

*Amplitude, name=Amp-1
          0.,           0.,        5e-06,           1.,        4e-05,           1.,      4.5e-05,           0.

**node that i use the unit amplitude here, the real amplitude is applied when define BC.  

 Then when define boundary conditions,

** Name: BC-1 Type: Velocity/Angular velocity
*Boundary, amplitude=Amp-1, type=VELOCITY
Nodeset_of_the_striker, 1, 1, 10. 

**node that, 1,1, is the first DOF, 10 is tha real amplitude. 

Please also check the ABAQUS  user's manual.

D.Rittel's picture

Hi Emeka:

What you may wish to try is the following:

1. Your assembly is free. No constraints whatsovever.

2. You apply a BC consisting of a prescribed velocity or a pressure pulse. Since this is elastic wave propagation, it does not matter.

3. No special contact conditions between the specimen and the bars, unless if for some weird reason you see interpenetration.

4. Make it axially symmetric to save computing time time

5. Since you use A. explicit, I think that the Courant condition is automatically satisfied. You may wish to check convergence by refinig your mesh.

6. At first, make your specimen elastic only, to check reflection and transmission according to mechanical impedance without complications related to the constitutive model you select for the specimen.

Wishing you success!





D. Rittel

I have used "tie"constraint to hold the assembly together I need to supress it or delete it completely, how then will I hold the assembly together. Please can you tell me what kind of contact to use, and how to create amplitude(I am having problems with calculating the various periods and deciding the number of periods) . Thanks a lot

I think a tie constraint is inappropriate because the striker and the incident bar will separate after 2L/c, where L is the length of the striker. A tie constraint will tie them together forever unless you know when to

release the tie. A general contact or a master/slave contact is good to handle this.

You also need to apply some BCs to constrain rigid body motion.


D.Rittel's picture

Hi Emeka:

As you probably remember the applied stress sig resulting from the striker velocity V is  sing=rho(density)*C(wave velocity)V/2.

Now, you want to apply a velocity that causes a sig that is always lower than the yield strength of your bars. As a rule of thum, don't exceed 90 m/s. Moreover, the problem is linear, so that V=1 is enough for a start. So I suggest the following "realistic pulse:

0<t<5 microsec ==> V goes from 0 to 1 m/s

5<t<105 microsec ==> v=1 m/s

105<t<110 microsec ==> V goes back to 0.

Note that the same profile applies to a pressure pulse because of the relationthip mentioned above between V and sig.

Again: no constraints whatsoever. This is a dynamic simulation. Rigid body motion is not an issue and anyway, it comes much later after the pulse passage.

Hope it helps!


D. Rittel

I applied an Encastre BC on the srface of the cylinder constraining it in the X and Y directions, but leaving it free to translate in Z direction. I will try this suggestion immediately. Thanks again for ur assistance



As Daniel said, you do not need to define any constraints: your assembly must be free. You have to suppress all the BCs.

In fact, you need only to define the contact conditions between each part (surface-to-surface in Abaqus/explicit will be ok) and give an initial velocity to your striker (using Predefined Field) or define a pressure pulse (using Load/Pressure or BC/Velocity, the shape of the pulse can be defined in Amplitude, see format in YiPan second comment). 


Benjamin Erzar 


Hi I seem to still be having problems with my results. When I plot my Stress/Time curve to get a pulse the graphs all seem to be wrong.My curve instead of a neat pulse is a series of undulating peaks and valleys. I still seem to be doing something wrong, but cant spot it. Will be grateful for any suggestions

Hi, could you please post an image of the propagationg pulse?

You definitely can't get a neat pulse.


In this particular model the specimen flew out of the assembly when the wave was reflected from the transmitter bars. I reduced the load to resolve this but got no propagation. I also noticed that the striker had impact with the incident bar more than once. I tried to resolve this by making the boundary condition without an amplitude but the bars got deformed. Also I noticed that as the stress propagated there was attenuation, but at a certain point the characteristics of the graph became such that I could not explain. I have attached shortcuts to the pictures of the graphs to this post.I am grateful for your assistance

Reuben Govender's picture

The images you posted aren't very clear, so the times scales are difficult to read. What duration are you running the model for? Remember that for a set up with 2m long steel input and output HPB, the wave reaches the end of the output bar in slightly less than 1 millisec. If you have a loading pulse only 100 microsec long, then you need to output results at least every 5 microsec to begin to see changes in the pulse as it propagates.


I don't bother too much with field outputs for my SHPB models -  you want to see what happens at a "virtual strain gauge" at the correct position on the bar. I find it more beneficial to create an element set at the location of the strain gauge and ask for history outputsof stress and strain at this gauge. For specific history requests, you can have time resolution of about 0.1 microsec without generating huge ODB files - if you try to request field outputs at this frequency your ODB gets huge pretty quickly. 


Also if there is a double impact between the striker and the bar, you have probably applied your initial conditions to the striker incorrectly. In real experiments with a SHPB, you can get a second impact if the gas gun isn't set up correctly and there is persistent driving pressure on the striker. In a computational model, there shouldn't be anything driving the striker forward after it separates from the input bar.  





I am using a step time of 8E-4 seconds, and I have a blast duration of 3E-5 seconds. At present I am making use of the incident and transmitter bar, specimen with a velocity of 20m/s attached as boundary condition to the incident bar. Both bars are steel 0.5m long with a thin steel specimen. On the bars I have used a coarse mesh, with finer mesh along the edges and on the specimen a very fine mesh to enable me properly visualise the wave propagation. Thanks

Please bear with me, I cant seem to attach images properly

The time for the pulse propagate to the end of the transimitted bar is about 200 micro seconds. Your step time of 8E-4 seconds is OK (may be too long if you are eager to get the result).

The most important one is the time increment (delta_t). Make sure it is less than L/C, where L is the minimum element length,  C is the longitudinal wave speed, otherwise you may get unexpected results.


Matt Lewis's picture

It actually goes beyond "unexpected" here.  If you solve this problem with too large a time step you will have an unstable integration method and displacements and velocities will grow without bound (to NaN territory).

 Matt Lewis
Los Alamos, New Mexico

Reuben Govender's picture

You need a relatively fine axial mesh to capture the dispersion of the stress wave accurately - I published some guidelines for this at DYMAT 2006 (R.A. Govender, T.J. Cloete, G.N. Nurick, "A numerical investigation of dispersion in Hopkinson pressure bars", DYMAT 2006 proceedings, Journal de Physique IV.


What do you mean by blast duration? 


Also the 20 m/s "boundary condition " on the input bar doesn't sound right -  you should either apply a velocity initial condition to the striker, or  a finite amplitude, finite duration pressure condition to the non-specimen end of the input bar. 

Ambuj saxena's picture

 I am modelling SHPB test. I neeed suggestions on how to plot stress strain curve from output results of abaqus.

my results are comes in the form voinmises stress and logarithmic strain. but i m unable to plot stress strain curve.

any have the solution of this problem.

Subscribe to Comments for "Stress Wave Propagation in a Split Hopkinson Pressure Bar"

Recent comments

More comments


Subscribe to Syndicate