During 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 (firstname.lastname@example.org, 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:
- You try to solve a problem of a different kind for the first time or after a long break!
- When you bought a new software package or created one yourself.
- When you are just learning about something, and you are not sure if what you are doing is correct.
- Or maybe you have come up with a new approach to solving nonlinear problems and you would like to validate it.
- It’s also possible that you just opened silo code EN 1993-4-1 and have no clue where to take the required comparison outcomes from.
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.
Weld Type A
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).
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!
Weld type A
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!
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:
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!
Imperfection how to!
There are several possibilities on how to implement such geometry:
- The easiest is to draw such chart into your CAD software (this can be easily done with generated point coordinates in Excel), and then copying such line into your FEA package and creating shell by rotation of this line along the axis of the shell. Just pay attention where the line is and around which axis you will rotate it!
- You can simply do it manually. Sure, it would take a bit of time, but not as much as you would think! Just calculate the coordinates, insert points and you’re done : )
- Some time ago I wrote a script that manually generates such weld depression on a given height in a shell, but this is mostly since I use it as imperfection in some shell designs. If you wish to make a benchmark only – then there is no point in making such script, just import the lines from CAD software and you’re done.
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:
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!
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.
Science and all the jazz
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:
- Check what is the circumferential load applied in any given analysis step
- Divide this value by shell thickness (in this case 0.001m)
- What you obtained, divide by 121MPa
- This is what was drawn on the vertical axis, and this is how the outcomes in the paper were originally presented
The original outcome is:
The “actual” outcome
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 : )
This is it!
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!
Want to learn more?
This is a really neat nonlinear problem. If you want to learn more about nonlinear analysis, be sure to check my nonlinear FEA course. It’s free and waiting for you below: