Pressure Vessel Failure: Case-Study
We were recently hired to investigate the cause of pressure vessel failure. In my line of work, I can…
18 February 2026During last week I’ve posted a tip in the FEA Guild about using Benchmarks. Some great pointers were in the comments, but one got my attention the most:

While there is no chance that I will build such database myself, I’m pretty sure we have a chance of making one together! I will try to add some benchmarks from time to time, for various problems. This way, when you will learn, you will have a chance to check if what you do “gives” correct answers.
If you have some examples solved in FEA, that would be good for this purpose let me know ([email protected], or in the comments below). Building such a database really would help us all!
I couldn’t create a benchmark from the scratch in a day, but I dig out a benchmark I had in the archives and refresh it a bit!
When it makes sense to do benchmarks:
In all of those cases making a benchmark is a good idea.
What is benchmarking?
If you have never met the term before, to do a benchmark means to solve a problem you already know the solution of (and that you are certain of it). This way, you can test your FEA setup, and hope that it will produce correct answers. This way, you may be sure, that the procedure you will use in other, similar problems works properly!
There are of course benchmarks for a lot of problems. Today I will discuss one for geometric nonlinearity in shells. This is most likely one of the most famous tests, widely used in a lot of scientific papers! It was originally published by prof. Rotter in 1989, but since then it was done and re-checked by a lot of people doing shell design.
If you are interested original text it was published in Journal of Structural Engineering, Vol. 115, May 1989. It described a popular imperfection shape caused by welding depression dividing this shape into “Type A” and “Type B”, hence the name of the benchmark (as well as one of the popular imperfection shapes used in the design of shells).
Join my 2h FREE Live Event and learn all that you need to know to start using Nonlinear FEA as an Expert! I will talk about:
The problem itself was described very well and easily allowed for reproduction of this analysis, which is one of the reasons why it became so popular. The original text discusses outcomes from analyzes using those imperfections, but here we will focus on a specific case described in the paper (there were several there).
Create a shell model with the length to radius ratio L / r = 3. Radius to thickness ratio of the shell is r / t = 1000. Material is linearly elastic with E = 200 GPa and Poisson’s ratio v = 0.3. Shell is simply supported at ends (S3), and even a mesh size is defined in the region of imperfection as 0.25√(rt).
This means that you can pick a lot for yourself. Just to give you an example, it may look like this:

At the top, you can support translations in horizontal directions, while at the bottom all 3 translations. If you want to use a cylindrical coordinate system, just remember to “point” Z-axis as I did here and all remains the same!
Naturally, load goes at the top edge (directly downwards). Value doesn’t really matter (you will do a post-failure analysis anyway). Just make sure it is higher than capacity. If you don’t know where to start, expected capacity is around 37kN/m. This means that the load of 50kN/m on the top circumference (directly downward to cause compression) should do the trick. You will see later where I got this from : )
Looks innocent right?
In all honesty, I hate symmetrical uniformy supported shells! They always give trouble with convergence. Analitically, discretely supported shell is almost impossible to solve… but in FEA it’s actually the easier case!
This is of course not the end of “fun”. After all… we are missing the imperfection!
As in all scientific research, there will be equations!. Imperfection amplitude is given by:

Where:
is the imperfection amplitude (it this benchmark equal to t, so in the “example” I’ve described above that would be 0.001m or 1mm). The “x” is a coordinate along shell length (x=0 in the middle of the shell where the imperfection is applied).
This means that the imperfection has a maximal amplitude in the middle of the shell, and it changes starting from the middle in both directions!
Additionally:

All of the equations above came straight from the paper. Originally an “x” coordinate is used for imperfection distribution. This is a bit unfortunate (as most likely you will have an x-axis in your model, and it won’t “fit”). Just to avoid confusion, this is how imperfection should be located:

It’s worth noticing, that the paper already suggests element size near the imperfection (this is the “important space”). So there is no need to do mesh convergence study. Just make elements near the imperfections QUAD4 squares with the edge length of 0.25√(rt). In our case that is 7.9mm. This means you will have around 800 elements along the circumference. That is quite a lot, don’t be surprised : )
This is a “scientific paper”, so everything is made dimensionless. But we already assumed a lot of dimensions (see the drawing above). This means, that I can actually calculate the equation, to show you how the imperfection will look like in our case:

Note:
The “x” coordinate in the vertical axis on the chart is the one shown in green on the drawing above. Maximal deformations are in the middle of the shell. Also, maximal amplitude is to the inside (this is why radious is smaller than 1 in that direction).
I think it is self-explanatory at this stage. You should implement such a shell with such imperfections and load it as we discussed. The task is to calculate the critical capacity of the shell… so the load under which the shell will buckle.
Note, that you should use nonlinear geometry, but elastic material property (material is elastic)!
This is when the benchmark starts. If you want to test your “nonlinear geometry skills” give this task a swing. I admit it made me sweat when I attempted it for the first time! Good luck!
If you don’t know how to implement such imperfection to your model, I discuss this first below – you can peek there without looking kudos I guess!

There are several possibilities on how to implement such geometry:
With your model ready (remember to apply the compressive load at one of the ends of the shell, define geometrically nonlinear analysis (I have a post on how to do it). Then run the analysis and draw a stability path (you can read about it here). The outcome should look like this:

Note:
I went’ “scientific” in the charts – yours can be simplier. The idea here is that the delta (horizontal axis) is the vertical deformation of the top edge of the shell. On the vertical axis, you see the stress I’ve got, divided by the “theoretical” critical stress according to Timoshenko equation. This is how the benchmark is solved “oryginally”. I will describe how it is done below!
In your case, you can simply plot the “load” at the top edge. In that case, the “turn” on the chart should be around 37kN/m : )
If you have defined more steps, the post-critical path may be much longer. Usually, when I do benchmarks I tend to leave only a few increments after failure which is quite easy… since I know the outcome from the start! This saves an enormous amount of computing time!
Side note:
This is also a very good example on how to use subcases. Notice that at the start I only have few “dots” on the chart. I knew nothing will happen there, so I allowed solver to go “quickly”. Then, near the capacity (I knew the outcome before I’ve started so I could set that manually!), I’ve made the steps much smaller, so I could “catch” the proper outcome! This is however not the main “issue” here.
As promised, a small discussion on what exactly is on the vertical axis : )
Clearly, this is not a load multiplier, nor load, nor even stress! The outcome of the paper is given as a “non-dimensional” value.
Stand back, I’m about to do science!
For reasons I can’t really explain it is believed, that outcomes provided in relation to other outcomes are more “scientific” than outcomes given in MPa, kN or m. I never understood it, but this is how it is. Theoretically, it helps, as you can take a look at the study, input your data and calculate something. But I think, it just makes stuff more difficult to understand : )
With this note, the outcome is a relation between compressive longitudinal stress in the shell denoted as
(simply edge load in kN/m divided by shell thickness) and “classical” stress.
The “classical” stress was derived almost 100 years ago, and relates to buckling capacity of a perfect shell supported uniformly on one edge and uniformly compressed on the other. In fact, this is the only “solved” problem for vertically compressed shells… and I love how prof. Rotter refers to it as “classical” rather than “Timoshenko stress”. It gives a nice perspective : )
The equation for this value is used in all codes for shell buckling:

And in our case this is:

So, on the vertical axis of the chart, you saw a value that should be calculated in a relatively simple way:
The original outcome is:

Ok, I’ve promised you that I will show you how I got the outcome I gave you at the very start. I mean, you most likely know already, but I will do the math here, so you don’t have to : )
Since the outcome is:

I can calculate that the
is 121MPa x 0.306 which gives 37MPa. That is the compressive stress in the vertical direction in our shell. Knowing that the shell is 0.001m thick, I know that such a compressive stress will be caused by 37kN/m of longitudinal compression (force along circumference). This is how I knew that the capacity is 37kN/m, and this is also what you can have on your vertical axis of the chart… if you don’t feel like getting the scientific outcome!
And finally, the shape!
There should be 18 complete buckling waves around the circumference. Of course, the deformations on the animation below are crazy out of scale: 750 times higher to be precise. To avoid such a big scale I would have to calculate much more of the post-critical behavior… and I don’t like to waste so much computing power : )

If you received the same outcome… everything is fine – you did a correct job! If not, try to tweak your analysis settings and, check if the model response you have received is symmetric (it should be, if not something is wrong in the model).
And if everything else fails, make sure that the actual shape you are using is correct!
Let’s make this a challenge – if you will manage to solve this, make a small screenshot with your solved model (and the chart) and send them to me. I will add you to the hall of fame!
Share
Join the discussion