Improper optimizing in karamba3d for buckling


Finally, I am able to work out the buckling analysis of the column attached to rigid link. I cross checked with manual calculation the different values of buckling load factor with length variation of rigid link and it matches. Thanks a lot. The trend is that as I increase the rigid link length, the buckling load factor decreases.

Now I have to find the optimal shape i.e., the one maximizing Buckling load factor for different lengths of the rigid link. The problem is that the optimize cross-section component of Karamba is unable to choose proper cross-section sizes and hence is providing me with cross-sections that lead to buckling load factor less than 1, where it can clearly provide larger cross-sections.

I’ve attached the GH script below for your perusal.
for optimization circular (51.6 KB)

Please kindly guide me on how to properly utilize it.

Hi @abdulalim.khan,

are you able to provide a screenshot of this buckling load factor issue? Which version of Karamba are you using?

When I open your script the Buckling load factor is 1.1 after the cross section optimisation.

Hi Matthew,

Yes sure, below is the screenshot.

I am using Karamba 1.3.3 build 201012.

The system is like this, the column is attached to a rigid link which is transmitting the load. Now the study is to be done on how buckling load factor is varied and cross section optimized with changing the length of rigid link.

I already checked the values of buckling load factor for a uniform section and it matches with hand calculation. But now cross section optimization is not handled properly.

The understanding is that if rigid link length is too large the corresponding value of buckling load factor matches with the cantilever case. So even the optimized shape will be same as cantilever column. Another case is if rigid link length is same as column then it corresponds to both ends simply supported.

As it can be seen from screenshot, buckling load factor equates to less than 1, when it can provide larger cross section but it doesn’t.

Thank you again for your quick response and I will really appreciate it if the issue can be solved.

for optimization circular (58.3 KB)

Hi @abdulalim.khan,

the reason for this error is that you did not specify buckling lengths for the split column element. When you apply a buckling length of column length H*2, then you will see that the optimisation gives you the accurate results without any buckling issues.

for optimization circular (63.7 KB)

Hi @matttam,

Thank you. I really appreciate your time going through the scripts. I will go through the model and make sure to adjust the buckling length.

One more thing I want to confirm, I understand we can also provide user-defined diameter and cross-sections to the model.
If so can I use other optimization plugins like Galapagos, Opossum, etc to the diameters as variables and buckling load factor as an objective function? Can you guide me through the process if and how other optimization plugins be used and how to arrange the data from Karamba for this process?


Yes, you can create unique cross sections by using the Cross Sections component.

If you use optimisation plugins, you need to first define the parameters and the objective that you wish to optimise, you can refer to for a reference.

Hi @matttam

Thank you, I have gone through the file you suggested. But I am not able to provide the data from gene pool to act as the diameter for each segment of beam element.
So instead, I gave different cross sections to each segment via number slider for the diameter (that act as variable for the optimization tool, here Opossum is used but Galapagos can also be used). I attached the objective function to the buckling load factor (which has to be maximized). The issue is that the cross-sections derived are uniform throughout the length of the column but it has to be non-uniform.


Further, with this type of cross-sections definition, I am not able to use OptiCroSec component of Karamba3D.

OPOSSUM optimization circular (98.5 KB)

Hi @abdulalim.khan, why are you not able to use the unique cross sections for the cross section optimisation?

I am not familiar with Opossum so therefore cannot assist you in this case, but it might be that you are optimising for maximising buckling load factors, so the largest cross section gives you the best results, whereas in fact, you want to optimize to reduce the buckling load factor, making sure that the value is above 1. Am I correct?

Hi @matttam ,

I created separate cross-sections for each segment of the beam and then merged them. When I connect the merged cross-sections to OptiCrosSec component the model only picks one cross-section among the 10 cross sections creations. It can be checked by changing the diameter slider of each cross-section. (In the script provided OptiCroSec provides the diameter of segment A to the whole beam).

Please find the gh script below.

unique cross section to (89.9 KB)

Hi, i think you are going about the optimisation the wrong way. Please refer to this example to see how you can set up a cross section optimisation with custom profiles:

Thank you @matttam for your assistance. I will go through the example set and then implement it.