How to Model a Membrane in Karamba?

Dear experts,

I have a few questions about how to model a triangular membrane bound to a triangular frame and loaded under uniform wind pressure (85.3 KB). Would you help me? Thanks!

  1. In the Generation tab from Loads component you can choose between generating Point loads or Line loads. Which one should be selected to properly model the membrane? I want the pressure to be applied over the membrane and transmitted to the beams frame.

  2. Whereas 1st and 2nd order analyses do provide very large displacements, the Non-linear analysis (WIP) provides relatively small (and more feasible) displacements instead. Why is this so? Should I trust the non-linear analysis, shouldn´t I? Can Karamba shell finite elements properly deal with membranes modeling?

  3. If you enable the Preview of 1st or 2nd order analyses Beam and Shell Views components, it is possible to smoothly control the deformation using the corresponding slider in the ModelView component. This is fine. However, for Non-linear and Modal analyses the Deformation slider just toggles on/off the deformation display. Is this the expected behavior? I think a smooth behavior is mandatory to check that the bars are adequately linked to the membrane border.

1 Like

Dear @Vigardo,
ad 1.) For membrane and shells surface loads are automatically discretized as point-loads. The line load option exists for beam elements.
ad 2.) The geometric non-linear analysis takes into account the increase of in-plane forces due to transverse displacements. Make sure that the non-linear calculation reaches a load-factor of ‘1’. It terminates at lower load-levels if convergence can not be achieved.
ad 3.) It is the expected behavior. Non-linear displacements can not be scaled linearly. As a work-around you can append a linear step at the end of the non-linear calculation. For this you should be able to apply linear scaling.
You use membrane elements from Karamba3D 2.0.0 WIP - right?
– Clemens

1 Like

Thanks Clemens for the usual quick and accurate response!

  1. Then, I just have to leave deselected the Line load option to avoid “counting twice” the mesh load, am I right?

  2. So for my case, I just have to trust the Non-linear analysis if it has converged (by checking load-factor reaches 1) and forget all results from 1st and 2nd order ones, correct?

  3. Ok, you’re right, but other FEA tools usually let you iterate over all or just a few of the different “structural snapshots” following the non-linear trajectory path. Would it be great having this kind of feature in future Karamba3D releases.
    Regarding the appending of a linear step at the end of the non-linear calculation it is a clever work-around. I understand that the linear scaling will be applied to the final (hopefully converged) structure in order to check that the loads were properly transmitted between the membrane and the beams, is this right?

Thank you so much for the info! I didn’t know that there was a WIP version available with brand-new membrane elements ready to use:

“added membrane elements. Create them by setting ‘bending’ to false at the MeshToShell- or ModifyShell-component.”

That’s awesome news! I’ll install Karamba3D 2.0.0_201020 WIP and check it asap!

PS: Do you plan having a “cable” element soon? Is it on your schedule?

Hello @Vigardo,
ad 1. The line-load option should have little impact on the solution in your case. It is meant to assure that the bending moment in long beam-elements comes out correctly.

ad 2. 2nd order analysis should render correct results in case of small displacements when the prestress in the membrane is large as compared to the increase of in-plane forces during deformation.

ad 3. Being able to step through the converged states could be a useful feature indeed. The last step is not automatically assumed to be linear. One needs to set ‘NLoadSteps’ accordingly: The remaining load-cases are assumed to be linear based on the state after the non-linear calculation (see here).

– Clemens

Hi Clemens! Thanks for your kind help!

  1. Sorry, but if I select Line-load option the membrane seems not loaded while the beams does. Conversely, the results look better if I just select the Point-load option (i.e. the membrane appears loaded and transmits the force to the beams).

  2. You can check in the figure below that the 2nd order analysis displacements (Disp.II panel) are huge in comparison with those obtained from Non-Linear and Large-Deformation analyses. Should I understand that I get such wrong results because the membrane has not been pre-stressed? If so, how would it be pre-stressed?

  3. Ok, I´ll take this into account when I have multiple load-cases. Thanks!

  4. I´ve installed the last Karamba 3D WIP and compared the results between Non-Linear (NL) and Large Deformation (LD) analyses (82.4 KB). If you play with the “Beam/Subtriangle Subdivs” slider you will check that the maximum displacements and membrane shape smoothly converge for both analyses, so it looks great! However, I can´t find the way to show the Von Mises stress or Utilization % in LD analysis. ShellView only produces output for Cross-section Render Setting. Why is this so? It would be great comparing the results from both types of analysis.

  5. After this initial comparison, I´ve set False the Bending input of the MeshToShell component (in Materials Cross-Section group) to test your brand new membrane finite elements. Unfortunately, the Non-Linear component crashes and complains with the following error (with all solution procedures):

[“1. Unknown error occurred while solving for the structural response of the system. May cause errors in exported models.”]

The Large Deformation component also crashes, but with a different error:

[“1. Could not calculate deformed model. Use the component ‘Analyze’ to get details.”]

The Analyze component says:

[“1. There are 6 rigid body modes in the system. This means some parts can move freely without causing deformation. Try to use the ‘Eigen Modes’-component and activate the display of local coordinate axes: The first eigen-mode will be the rigid body motion. If this does not help, check whether you have a pinned support directly attached to a hinge. A hinge introduces an extra node which may cause the problem. When analyzing a flat shell structure one has to lock the rotation perpendicular to the plate in at least one node.”]

Accordingly, I´ve checked the normal modes and the membrane blows out above and below the triangle plane…

  1. By the way, I can´t adequately visualize the normal modes (with Bending of shell elements set to True). I can only visualize something if I set the Result-Case from Model View component to number 4… but I haven´t used Load Cases yet…

Am I doing something wrong? Is Karamba 2.0.0 WIP ready to model this kind of membrane systems or should we wait for the final release? Thanks!

Hello @Vigardo,

ad 1. My answer was unprecise: I should have written selecting the ‘line-load’ option in addition to ‘point-loads’.

ad 2. I think the difference comes from the fact that 2nd order analysis does is based on the assumption of small displacements and thus does not take into account the increase of in-plane forces due to transverse displacements.

ad 4. The ‘Large Deformation’-analysis is for shape finding only (see manual). For the derivation of stresses it is too inaccurate. This is the reason why it does not output Von Mises stresses.

ad 5. Thanks for the bug report! Could you please file an issue at This would be great. Did you pre-stress the membrane? If so use the ‘Analyze ThII’-component. Alternatively you can set NII to a positive value via the ‘ModifyElement’-component.

ad 6. Each mode shows as a load-case.

Karamba3D 2.0.0 WIP should be ready to model this kind of membrane systems.

– Clemens

1 Like

Hi Clemens,

1-4. Ok.

  1. As you´ve indicated, I´ve registered at GitHub and reported the bug ( I hope it helps to improve even more your excellent software!

  2. If I understood well, in the ResCase input contextual help it says that by setting “All” load cases you can control which mode will be shown with ResCase input (see I have a slider connected to it). However, it only shows a mode shape when I select number 4 at this slider… no matter how large deformation is (I tried up tu 1000).

Sorry for the delay and thanks for all your comments!

Hey @Vigardo and @cp1 , I downloaded your newest defenition

however there are two things that I do not understand:

  1. The bending input of the MeshToShell is still set to True - does that mean that it does not really behave like a membrane? Or is just defining the thickness of the element sufficient to simulate it’s behavior? For what cases would setting it to False be important?
  2. Actually setting the bending input to True results in huge deformations in the TH1 and TH2 analyses (probrably caused by rigid body modes) and results in 0cm displacement in the Non-linear Analysis. This does not make much sense to me… Is there sth, that still needs to be fixed, or is there sth wrong with my thinking (highly probable)?
    btw. I installed the newest Karamba (2.0.0_210212).

Thanks a lot!

1 Like

Hello @rudolf.neumerkel,
ad 1.) if ‘Bending’ is set to true at the ‘meshToShell’-component one gets a shell - with bending stiffness. For membranes one needs to switch ‘Bending’ to false.
ad 2.) A shell calculation with very thin cross sections leads to numerical problems since the bending stiffness is much smaller than the membrane stiffness. This prohibits convergence of the non-linear calculation and leads to zero displacement since no load-increment achieves equilibrium.

In order to make the example work for membranes, define an initial prestress (NII) via a ModifyElement-component (see attached definition: (100.0 KB) ) so that there is a geometric stiffness perpendicular to the membrane’s plane. This is taken into account be the Analyze-component (see here).
Since the ‘AnalyzeThII’-component tries to compute NII on its own (see here), it will zero out the initial NII given. Therefore one needs to supply a load (e.g. temperature) which causes in-plane tension.
– Clemens

Non-Karamba related response, but more of a membrane related response.

If the membrane would be mechanically tensioned, then it makes zero sense to do a 3 point sail. (Unless the plan is to create a very fancy water collector) The reason is that tensile membranes benefit of a combination of pre-stress and double curvature. The minimum points to achieve double curvature are 4. The more curvature in combination with pre-tension, the more area load you can carry. Analysiswise, you need to materialize the membrane with the corresponding e-moduli for the material you are going to use and analyze your structure non-linearly.

I hope this basic info helps you.

Hello @davidsmavrov,
you are right about the beneficial effect of double curvature, but I would not say, that it makes zero sense to do a mechanically tensioned 3 point sail. It depends on the intended application.
– Clemens

1 Like

I hope I am right… I´ve been building these things for the past 14 years :smiley:
For a roof system… Dangerous idea. A facade, kind of ok. Or if you are going to make a triangular ETFE pneumatic cushion, because it will obtain double curvature under pressure. Otherwise… I don´t know. Maybe if the material is a PVC mesh that does not allow the collection of water. Because these things can collect serious amount of water very very fast.

But then again the load bearing capacity of a 4 point sail is so much better, that it far outweights any other factors…

Thanks for the information and sharing your experience!
– Clemens

1 Like

hello @karamba3d , I tried to add an initial prestress (NII) with the “modify element” component and a load which causes in-plane tension. however the analysis II component still has this error:

  1. The structural system buckles under the given loads in 360 modes. Reduce the compressive normal forces.
    Displacement increments did not converge: The Euclidean norm of the difference of the nodal displacements for the last two iterations was 51.4075098244249[m]. The target tolerance is 1E-07[m].

how could i solve?

here is my definition
Simple (35.7 KB)

Thank you

Hi, i have answered your question here: The structural system buckles under the given loads - #5 by matttam

Hey @karamba3d, sorry for my very late response. I am now diving into the simulation of membranes again and saw, that I did not respond to your answer.

The file you provided applies a temperature load as well as N_II via the modify element component.

  • Q1: Why both?
  • Q2: How does one select the corresponding initial prestresses? Different values for T give different results… Why is it set to 50? Or is the prestress set according to the material capabilities and allowed deformations?

The mesh loads are set to be oriented local to the mesh, this should correspond to an inflated membrane. In the Analyze ThII the deformed model does not resemble an inflated membrane, but rather a one where forces are applied in the z-direction. AFAIK the load vector does not follow the deformed FE-model in the second order analysis.

  • Q3: Is that correct?

In order to simulate a load vector that follows the deformed model one has to apply a geometric non-linearity, in this case with the AnalyzeNonLinWIP component. The non-linear analysis in the file does not seem to converge however / gives incredibly large deofrmations

  • Q4: Do you know what the reason for that is?

Thanks a lot! :building_construction: :building_construction: :building_construction:

Hello @rudolf.neumerkel,

the initial NII provided via the ‘Modify Element’-component stabilizes the system in the first iteration of the ThII-analysis. After that the normal forces caused by the temperature load override the initial NII values.

The different values for the temperature load result in different normal forces. The value of 50 was an arbitrary choice and depends on the location of your structure.

The second order theory analysis is based on the assumption of small displacements. That is why the local orientation of the mesh-load takes no effect.

The geometrically non-linear analysis is still work in progress. For form-finding you could try the K3D large deformation analysis (see here).

– Clemens

1 Like