Nonlinear buckling of a cylindrical shell


I’m working on nonlinear buckling of an axially compressed cylindrical shell with imperfections in form of a scaled first linear buckling mode shape. I had some doubts regarding boundary conditions but I chose the variant in which the bottom edge of the shell has all DOFs fixed and the top edge has only 2 translations (perpendicular to the shell’s axis) fixed via rigid body constraint (so that I can also apply load easily). The analytical solution for linear buckling assumes axial compression from both sides and no constraints on the edges but I get good agreement with it so this approach to BCs should be fine. I’m just not sure what the first mode shape should look like. Anyway, the biggest issues here are with the second analysis - nonlinear buckling. In Abaqus, I can get a nice collapse pattern using Riks solver but in CalculiX it’s not possible. Thus, I have to use *STATIC with NLGEOM and hope that it will converge. In most cases, it doesn’t (at least not fully). And even if it does, I don’t get what I would expect. Here’s the first mode shape from linear buckling with unit load (eigenvalue is in agreement with the analytical solution):

And here’s an example of what I get from a partially (87%) converged nonlinear buckling run:

I would rather expect something like this:

Here are some details regarding this analysis:

  • cylindrical shell size: radius = 200 mm, height = 400 mm, thickness = 2 mm
  • material: aluminum (bilinear plasticity with hardening included in the case shown above)
  • load: prescribed displacement causing compression (1 mm) - I tried with force too but it’s worse for convergence
  • imperfection scale factor: 2 (10% of the shell thickness wasn’t very promising so I used 100% instead)

Can you share some tips - how to make it fully converge and how to get the desired collapsed shape ? What is your approach to such analyses taking into account the lack of Riks solver ?

There are just a few examples of similar analyses performed in CalculiX. This guy obtained nice results but I think that he scaled the mode shape for imperfection too much: Nonlinear buckling of shell with imperfections (FEA) - YouTube

I was even thinking about using load imperfection (pressure acting on a small elliptical patch on the shell’s surface) but I would definitely prefer to stay with the current approach involving a scaled linear buckling mode shape.

i have in memory that there is for buckling
an issue at the boundary, what is called elephant feet,
it looks like your buckling mode.
" I’m just not sure what the first mode shape should look like"
i think it could look like these:



Thanks for the reply. What’s strange is that when I run the same case in Abaqus, I get this mode shape:

mode shape

And this deformed shape in nonlinear buckling (*STATIC in Abaqus converges fully):

That’s what I would also expect in CalculiX. It seems that the shell formulation (or actually lack thereof) and how rigid body constraint interacts with it is causing the problem and unphysical results (correct eigenvalue but different mode shape) in CalculiX. Now the question is if there’s any workaround.

maybe there is a problem with the boundary and shell elements,
because of the expansion,
Maybe it is better to work with solid model with two elements thickness,
so that you can use the midle nodes for the boundary with cylindrical coordinate system

1 Like

Without rigid body constraint (BC and load applied directly to the top edge) I get better mode shape:

And nonlinear buckling converges but deformed shape in nonlinear buckling is not good:

I would rather avoid using cylindrical coordinates and solid elements - this is supposed to be a tutorial as simple as possible. Perhaps I should try with different boundary conditions but so far none of the tested variants gave good results.

these is my first result with solid elements
with rectangular coordinate system
looks not to far away from chessboard pattern:

this is may the cause of a problems, shell in CalculiX being expanded to solid.

at another threads, previous discussion about rigid body shown different behavior compared to Abaqus for in-plane rotations

It seems that both chessboard and “bellow” patterns are correct:

The question is what makes each one of them appear instead of the other.

I would rather avoid solid elements since those would have to be hexahedrons and preparation of such a mesh is not a scope of this tutorial. Also, it’s kind of strange (and normally a bad practice) that solid mesh is used for such a thin-walled structure. Maybe some other workaround may help. If nothing works, I’ll consider changing the geometry or load type (e.g. to pressure) but axially compressed cylindrical shell is an interesting case and nicely shows imperfection sensitivity.

Right but the shape without rigid body constraint is also wrong (posted above) so expansion itself seems to be a reason in this case.

to my understanding the main different is the number of element nodes (equations). solid element may perform well compared to 2D shell at very thick, curved geometry and torsion/twist conditions.

improvement result of shell element use increasing number of integration point trough the thickness were solid element use number of element layer.

maybe not the shell expansions itself, but related to constraint implementation at curved geometry in which required to defines at local axes.

above similar examples shown reasonable results when the geometry is not curved.

Indeed, I was thinking about using a rectangular shell like in the example above but I want to make a comparison with an analytical solution and I don’t have it for linear buckling of such a structure. I don’t know if it even exists. Perhaps I will have to switch to plates but those are not so sensitive to imperfections.

Hi Calc_em,

This is my solution in ccx with shells and steel (210GPa , 0.3, compressive force F=100KN) :

-9 waves / Buckling factor = 10.95

Let me know if it agrees with your analytical solution as there is another suitable mode shape very close with (11 waves/ Buckling factor=11.14) .

Do you have some more data?. I would like to try Nonlinear tomorrow.

looks perfect
can you share these!

according to DIN 18800-4 the critical buckling load should be 3193115 N

0.605 x 1.0 x 210000.0 x 2 / 200 = 1270.5 x 2 x pi x 200 x 2 = 3193115 N ?


Looks great, thank you for checking this.

For steel, I get 1.933288*10^6 N using the formula from Roark’s.

I assume that your geometry is the same as mine and you are you using standard CalculiX’s shell elements. What is the mesh density ? And most importantly, what are the boundary conditions ?

Please share the .inp or Mecway file if it’s not a problem.

Sure, here it is:

  • Young’s modulus: 70 GPa, Poisson’s ratio: 0.35
  • plasticity data:

yield stress — plastic strain
160 MPa — 0
340 MPa — 0.3

@Calc_em looks like you’re using 4-node elements. I would use 8-node or a finer mesh since the wavelength is only a few elements long.

For the nonlinear, at 87% critical load, isn’t that just the elastic deformation shape without buckling?

Maybe you can put soft springs over the entire surface to help keep it stable during the buckling process? Ie. keep the load-deflection curve from going backwards.

Another trick is sometimes to use DIRECT for fixed time step sizes and it seems to somehow skip over the hard parts if you’re lucky.

Looks like 8 node elements are providing a different result.
8 node shells are stiffer and only buckle around 3.1e6 N depending on the BC (Type n=1, n=2 or n=4) but…
they can capture the buckling modes in the hoop direction.
Values are much closer to the DIN results and shape modes have all nice symmetric patterns.

@Calc_em, @dichtstoff

Let me search about the theoretical values and I will reply. ¿Could you open Mecway files >1000 nodes?


There is some plastic strain in that solution but only around that top edge with incorrect deformation caused by rigid body constraint. Also, the F-u plot seems to show no buckling. However, in Abaqus, I get a nice buckled shape shown above even for such small prescribed displacement of 1 mm.

For now, buckling is not even reached in CalculiX. But I was rather thinking about using a dynamic implicit step (and trying to make it quasi-static if it’s possible in CalculiX) in case of such issues.

Unfortunately not. Maybe you could share the exported .inp file ? So that I can take a look at the keywords used in it and compare your model with mine. Alternatively, a short description of boundary conditions and other differences from my case could suffice.

Notice as well this discussion related to eigenvalue extraction in CCX: Wrong eigenvalue calculation since v2.16

hi, i took a simple test for similar case quickly without plasticity. defines prescribed displacement applied directly to the edge (nodes) and given restrained lateral translations. the models converged and solved.

maybe i can try replicated your problems, in exactly the same values of imperfection and material plasticity included also

Yeah, but it seems to apply only to cases with negative/low eigenvalues. I use a unit compressive load for linear buckling analysis and thus I get large positive eigenvalues.

So the bottom edge was fully fixed (including rotations) and the top edge had two perpendicular translations blocked like in my model ? Are those S3 shell elements ? What was the imperfection scale factor ?

imperfection and scaled values being used,

results of 2mm prescribed dislacement (downward)

as discussed before CalculiX shell element can not restrained in element nodes local axes, this condition need to concern when in compared to Abaqus…

some notes,

  • decision of imperfection being used from modal shapes need to be reviewed to represent actually
  • shell element need to be layered to capture plasticity better.
  • need oriented node local axes to properly applied out of plane rotational restraint