Support-less buckling and modal analyses?

Dear experts,

I´m trying to model the mechanical behavior (static, modal, and buckling analyses) of an underwater floating structure (an icosahedral capule or buoy) under hydrostatic pressure: (49.0 KB).

  1. This structure should be modeled as freely suspended (not attached to anything), i.e. no-supports. However, this seems not possible with Karamba, am I right?

If I fix the 6 DoFs of one vertex, I´m able to obtain a feasible static analysis. Unfortunately, this unrealistic constraint severely affects both the buckling and the normal modes. The first three frequencies as well as the first three buckling factors are too low.

In the images you can check the first 10 buckling factors and the differences between the 1st (unfeasible) and the 4th (feasible) buckling modes:

  1. Is there a way to force Karamba to perform modal and buckling analyses without any support? In principle, this should not be a problem for modern eigensolvers if the total resultant forces is zero (as it is in this case). If this were possible, I just would had to ignore the first 6 zero frequency and zero buckling factor modes.

  2. If “2.” is not possible, would you tell me the best way to model a “freely suspended” structure in Karamba?

Thanks a lot!

PS: I´ve just found a web about Free-Floating FEA models where the author explains the 3-2-1 method. This method seems to work for the static analysis of floating (unsupported) structures.

PPS: In this forum thread, “jhardy1” user says two key things:

  • a) If your structure is “free-floating” (e.g. aircraft in flight, free vibration modes, etc), then “Inertia Relief” can be a useful technique, if your software supports it; otherwise, the 3-2-1 approach can generally be applied, but it is important to note that the restraints should be carefully positioned such as to not attract any spurious net force that can’t actually go to the fictitious support nodes.
  • b) In the 3-2-1 approach, you need to ensure also that the locations of the artificial restraint nodes don’t influence vibration modes shapes or buckling mode shapes of interest (e.g. if one of your restraints is halfway along a beam, you may not be able to recover the fundamental vibration mode of the beam).

Do you agree? Is inertia relief technique available in Karamba?

Dear @Vigardo,
a “Inertia Relief” technique is not available in Karamba3D. However with a trick the calculation of eigenmodes can be done without supports (see here: (39.0 KB) ). The first six modes are the rigid body displacements.
Yet for buckling calculations this trick does not work. The 3-2-1 approach that you mention seems reasonable.

1 Like

Hi Clemens, thanks for your trick!

If I understood it well, it is not enough to provide to Assemble component a Support with all restraints released (I´ve checked this and some frequencies seem missing). So your solution works by disassembling first and then assembling the Karamba assemble. This way it is possible to obtain all symmetry related normal modes and frequencies. Thanks! Frequencies problem solved!

Unfortunately, I’m not sure about where to locate the supports of the 3-2-1 method to ensure that the artificial restraints do not influence buckling mode shapes since it is hard to know a priori their shape :slight_smile:

In another forum, somebody suggested a workaround: “Use a spring support over an area, or even two areas. Then reduce the spring constant to the minimum that will keep the model from flying off into space. You may have to try different locations for the spring support(s).”

Would you tell me the simplest way to accomplish this in Karamba? Perhaps, using dummy truss elements attached to the ground with a very low Young´s modulus or there exists some procedure to utilize spring-like supports or elements? Thanks!


Your structure is symmetrical, so perhaps the best way would be to have only one full restrained central support.
Which would be connected with several radial springs to your nodes

1 Like

Hi Jacques, thanks for your interesting contribution.

I´ve been checking Karamba´s manual, and I´ve found that there exist some kind of zero-length springs (check Spring cross-section component):

“Springs allow you to directly define the stiffness relation between two nodes via spring constants.”

“The input-plugs “Ct” and “Cr” expect to receive vectors with translational and rotational stiffness constants respectively. Their orientation corresponds to the local beam coordinate system to which they apply. In case of zero-length springs this defaults to the global coordinate system but can be changed with the “OrientateBeam” -component.”.

Perhaps, zero-length springs placed directly at node positions would do the job a bit simpler. How would I create such zero-length springs? Using zero-length lines and beams?

I don’t understand the term “springs of zero length”, because if it is a cross section, it is thus necessary to apply it on a bar?

When I use a spring in my models, I always need an additional point (support), and apllied the stiffness only on bar’s elements.

This means that if you want to control the stiffness of 12 nodes, you must define 12 other nodes (support) ?! (isn’t it ?)

Your example is more practical, a symmetrical structure with the same sections, (I don’t know how your loads are …).

It seems easier to define a single support, the spring sections will have the same length and approximately (under hydrostatic pressure) the same forces, therefore roughly the same rigidity.

And on a uniform outer pressure all your nodes will have the same displacement.

1 Like

Hi Jacques,

Perhaps @karamba3d can shed some light about how zero-length springs are used.

You´re right, it is needed an additional support at one end of the springs. Your approach works fine. I just added one support point with all DoFs fixed at the center of the icosahedron and connected it to all 12 vertices using beam elements and spring cross-sections: (86.8 KB). Note that I also tried a couple of (unsuccessful) alternatives (using zero-length spring beams and unsupported springs between consecutive vertices), but they are just disabled by default.

Now, by progressively reducing the springs strength with the corresponding slider, the results quickly converge to the feasible solution. In the image, you can check the shape of the first feasible buckling mode, it is well separated from the close-to-zero modes.

For completeness, here you have, from left to right, Clemens´ trick normal modes, and the normal modes and buckling factors obtained using very soft springs (0.1 kN/m springs for 101 kN/m2 hidrostatic pressure).
Capsule3 Capsule4 Capsule5

However, there is still something that worries me:

Why there are just 3 close-to-zero modes for buckling analysis whereas there are 6 for normal mode analysis? The first 3 buckling modes seem to be rigid body rotations… but what about the 3 translations? Should´t be there as well?

PS: Perhaps rotations are not being constrained effectively for this springs configuration? Now I realize that spring lengths are the same for rigid body rotations, so may this be the reason why 3 rotations appear but 3 translations not? I´m a bit confused here…sorry.

PPS: In order to test what I said in PS, I did some tests using 3 orthogonal supports attached to each vertex by the corresponding springs. However, the same happens, i.e. just 3 close-to-zero rotational buckling modes.

I´m not totally sure, but after deeply thinking about it I´ve some reasoning that would explain the number of close-to-zero modes differences between buckling and modal analyses. Sorry for the long text, it is a bit hard to explain.

Normal modes represent all the infinitesimal vibration shapes that a given system would experience without any forces, just as a consequence of its own stiffness and mass distribution. Thus, my “submarine capsule” system attached to the ground by weak springs has 6 close-to-zero vibrational modes since it should be able to almost-freely vibrate as a rigid body (3 translational + 3 rotational DoFs). So there is not problem at all here.

By contrast, the results provided by buckling analysis are different. Buckling modes represent the shapes and the critical load level that turn the system unstable. This means that above such loading level any infinitesimal displacement will not be counteracted by the corresponding reaction and the structure will fail. In other words, the reaction capacity of the system is exhausted.

For simplicity, lets consider a unidimensional (1D) case, for example, a doubly pinned column axially compressed. When compression force reaches the critical Euler buckling load, the capacity of the column to withstand infinitesimal lateral perturbations disappears (i.e. the external load action in the infinitesimally distorted column produces a greater torque than the reaction the column is able to produce) and thus buckles according to the well known “compressed spaghetti” shape.

If the support and its reaction force are replaced by an external load (equal but opposite to the load on top) and two dummy weak springs at both ends attached to fixed supports, the system becomes analogue to my floating capsule problem (practically “floating free”). In this case, the buckling mode shapes should be equivalent as for the doubly pinned case. I mean, there should not appear any translation buckling mode since this motion does not cause any instability. In other words, the reaction capacity of the dummy springs does not exhaust for any compressive load.

In the 3D case of my capsule, the 3 close-to-zero buckling modes observed are rigid body rotations because they correspond to the “rotational” buckling of the springs connecting the vertices to the central fixed node (at some loading point they do not oppose sufficiently to infinitesimal rotations). Similarly to the 1D case, there are no translation modes since any increase in compressive pressure does not reduce the capacity of the dummy springs to withstand any rigid body translation.

Of course, all this reasoning depends on how springs are implemented in Karamba.

Is this physically sound to you or perhaps I´m overthinking a lot :slight_smile:? Do you agree?

Hello @Vigardo,
the 6 Eigenmodes with zero Eigenvalue come from the 6 rigid body DOFs of your structure. They do not show up in the buckling analysis because there a different algorithm for determining the structural response is used.
You could connect your structure to pinned supports via very soft springs. Did you try this?
– Clemens

Hi Clemens, thanks for interest!

Yes, I understand that the 6 zero eigenmodes correspond to the 6 rigid body DoFs of the system. What I do not fully understand yet is that only 3 rigid body rotations are obtained as the first 3 buckling modes. Despite buckling analysis relies on a different algorithm, it seems reasonable to expect 3 additional rigid body translational modes as well, but now this is not so clear for me, even upon the long boring dissertation of my previous post :slight_smile:.

Yes I could obtain feasible buckling modes in several ways using soft springs. The way I like most now is connecting the structure to fixed supports using 6 or 1 very soft springs of finite length per vertex. If I use pinned supports instead, the buckling modes remain the same but there appear additional very low-frequencies in the vibrational analysis. You can check this by removing rotational constraints from the Support component in the cyan color group: (98.8 KB)

I don´t know how to use zero-length springs. Please, would you illustrate how to do this? I´ve read the manual and performed some tests in the GH file above unsuccessfully. Thanks!

Hi @Vigardo,
under ‘…Rhino 6\Plug-ins\Karamba\Examples\TestExamples\Zero_Length_Element’ there is the example ‘’. It shows hot to define zero length elements. You probably do not need them: springs do not have a spatial extension in Karamba3D (see manual).