Buckling modes from thin-walled cylinder

Dear (and patient) experts,

I’m trying to model a thin walled cylinder with variable cross-section, but I’m observing three weird things in the buckling modes. Here you have the GH file: SellTower3.gh (105.6 KB)

  1. The lowest buckling factor (BF) increases as the mesh size decreases (please use the “Mesh size” slider to change it and check the BF value near Galapagos component). I think that it should happen exactly the opposite since the structure becomes less stiff when element size is reduced. Am I doing something wrong?

  2. Three different triangular meshing patterns were coded and tested (Mesh-UV, Alternate, and UV-Like) that can be selected using the drop-down box in the Model Selector group. If you switch between them, you will see that the ripples of the first buckling mode are a bit twisted when Mesh-UV and UV-Like meshing patterns are selected. Only the Alternate meshing produces the expected horizontal ripples. Would this be related to using triangular shell elements? If so, is in Karamba to-do list the implementation of quad shell elements?

  3. As expected, the maximum displacements and utilisation are the same in all of them. However, the buckling factors are slightly different (around 5%) between Alternate and “UV” meshes. The later (Mesh-UV and UV-Like) are essentially the same.

Thank you very much and congrats for the excellent software!

PD: Is there any way to easily visualise the shell elements (edges and thickness)? I had to plot the lines of the triangles manually and the thickness visualisation of individual elements is not very accurate.

Hi @Vigardo

Karamba automatically triangulates all quad meshfaces, so it is better if you feed in triangulated meshes in the input mesh geometry. It is also advisable to make your face density smaller. At the moment your mesh faces are approx 1m, so the results can be quite inaccurate. When you reduce the mesh sizes, you will start to see more comparison between the different mesh inputs. Meshing in general is a complex topic we are currently also looking at, as it can greatly affect the results.

If you want to see the mesh edges, you can simply turn on the mesh edge preview in Grasshopper with CTRL+M. To preview the shell thickness, you need to select Cross Section in Shell View.

See the simplified version of your script. SellTower3-mt.gh (50.9 KB)

Hi Matthew, thanks for the quick reply!

I´ve checked your meshing solution (Weaverbird’s Split Triangles Subdivision component). Despite it seems to do the job, the vertices of the subdivided triangles do not lay at cylinder surface anymore. But don’t worry for this, it is not the problem. My script already dealt with this and generates a triangular mesh directly. In addition, a thicker cross-section at the top of the cylinder is required to avoid premature buckling of the top part of the shell. Sorry, I didn´t explain it, it was my fault.

I´ll try to illustrate better the issues here using a figure. I had to go back to my complicated script, since it considers the required thicker thickness cross-section (e.g. 50 cm, at Top Ring Thick slider) at top. Please, if necessary, you can use this updated version of my script: ShellTower3b.gh (94.0 KB)


The first issue, as you can see, is that the first buckling mode for the “MeshUV” triangular meshing (left) is a bit tilted from the y-axis (green line, the direction of the horizontal load), whereas the “Alternate” triangular meshing (right) is totally symmetric. This latter is what it should be expected, don´t you agree? Is it normal that the former triangular meshing scheme leads to such tilted (or unsymmetrical) modes?

The second issue is related to the buckling factor value, which increases instead of decreasing with mesh size. In addition, a change in the lowest buckling mode shape for mesh sizes finer that 0.35 m. This is accompanied by an steady increase in buckling factor until about 0.2 or 0.1 m element size, where it converges to around 85-90 values.

I´m not an expert in Finite Element Analysis but I want to obtain meaningful optimisation results with Galapagos. This rare stiffening of the structure with finer mesh sizes is what scares me. Would you recommend me some right procedure to optimise this kind of shells?

Thanks a lot for your time and kind help!

PD: Edges visualisation, so simple as Ctrl-M :slight_smile:, thanks!
PPD: Yes, I know that 1 m is quite inaccurate (I usually leave coarse parameters in sliders to prevent freezing my computer at loading). I tried from 1 to 0.1 m element sizes to observe the issues.
PPPD: Perhaps I´ve confused you with the two UV based meshing schemes (MeshUV and UV-like). They where made just for cross-checking and debugging my script.

It is always a question of the mesh resolution. If you set it to be 0.1m then the values are quite similar and even the shape of the first buckling mode is quite similar. This is because the large mesh resolution causes quite inaccurate results. A general rule of thumb is to decrease the mesh size until you start to see little or no change in the results.

The increase in the buckling factor is correct as you should have higher buckling factors when the structure is stiffer. And the structure is stiffer (more accurate) when the mesh density is more defined.

You can also look into the cross section optimisation tool for optimisation the thickness of your shell too.

Hi Matthew, thanks for your interest in my issue.

Regarding the buckling factor increase issue:

Did you mean here that the structure is stiffer because it resembles better the perfect cylinder shape? This way I can understand that lower buckling factors are obtained with a coarser mesh, i.e. more “polygonal” instead of more circular.

In a simple beam it happens exactly the contrary, i.e. the finer the mesh the softer the model, and so, smaller buckling factors are obtained until convergence. Probably, this has confused me, sorry!

Then, I will use 0.2 or 0.1 m mesh size to solve this problem. I will also take a look to OptCrossSec component.

Regarding the tilted buckling modes issue:

This does not worry me very much since both meshing schemes converge to more less the same numerical values and shapes. However, it seems caused by the triangular elements orientation. Perhaps it would be nice having some quad shell element in future Karamba versions :wink:

Another questions related:

It seems that thin-walled cylindrical shells are very initial imperfections sensitive.
One option would be randomly perturbing the elements positions. Another would be applying some normal (or buckling) mode to the structure and then perform the buckling analysis.

What is the right way to include initial imperfections in the analysis with Karamba?

Will the buckling modes from the perturbed structures properly account for the initial imperfections or should I perform a Non-Linear analysis?

In the latter case, how would I detect when the structure becomes unstable?

Thank you very much!