Running a symmetrical simulation

The fascination of inflatable membrane structures has stayed with me, and I am now back at them again - this time for my doctoral thesis. So the first step is to understand the tools and membrane behavior properly, compare different simulation approaches (Kangaroo vs. FEM) with each other and with reality.

Starting with the simplest of cases, a square, I already get some strange results. I picked a quarter symmetrical part and applied the support conditions mentioned above. Along the symmetry planes, there are discontinuities: An outward kink along XZ-plane and an inward kink along the YZ-plane. Normally, the result should be a continuous surface…

Did I miss somthing here?

230215_inflation.gh (48.8 KB)

Thank you for your great response btw, I somehow missed it… Have to read it again, as I did not get everything 100% yet.

Cheers!!! :building_construction:

Hi @rudolf.neumerkel

One thing to watch out for is that the pressure, volume and wind goals work on triangulated meshes.
If you give it a quad mesh, it will just use a default triangulation, and if the diagonals are all pointing the same way that can give a tiny directional bias to the simulation.
If instead you use a symmetrical triangulation, such as with Stellate from Weaverbird (with zero offset), you can avoid this.
Also, after mirroring the result, check whether your meshes have aligned and welded verts - even if the geometry is symmetrical and smooth across the join, if the meshes aren’t welded, the difference in normals will appear as a kink in renders.
Finally, make sure the directional anchors are strong enough.
With these changes the result is smooth
230215_inflation2.gh (46.8 KB)

4 Likes

Hey @DanielPiker, thank you for response again and sorry for my late reply again.

Why do they only work on triangulated meshes? In theory quads should also be possible once the face normal for a quad is properly defined.

Introducing diagonals into the mesh significantly changes the shear behavior of the membrane, as can be seen in the diagonal section below (purple is with the added triangles - not visible here)

There is another curious thing:

Changing the mesh density does not affect the global shape, as can be seen below:

If the pressure is kept constant, increasing the mesh density should result in a stiffer membrane and thus a lower deformation. This is not the case here…
As a thought experiment image one heavy object lying on a bed of springs. The more springs that are placed underneath this object the smaller the deformation will be.

Is there something that I am missing here?

Thanks a lot and cheers,
Rudi

Hi @rudolf.neumerkel

Note that when you triangulate the meshes for volume/wind you can still use the untriangulated quad mesh for the edge lengths goal.

To calculate a pressure force for a face we need an area and a normal. From a triangle we get both in a direct way from the cross product. For a quad both are ambiguous, since it will generally not be flat.
Yes, potentially the goal could just accept quads and internally do something like calculating for both the possible triangulations and averaging the result, but at the time I decided it was better to leave that to the user for full control. I suppose I could add it though, as you’d still always have the option to supply triangles.

As for your experiment on mesh density - I’m guessing you kept the spring strength input value the same? remember this value is the spring constant - found as EA/L. If you reduce the lengths without proportionately increasing the strength, you are effectively making them less stiff. Here it looks like that is balancing out the effect of having more of them, so the deformation is staying the same.

1 Like

I tried inputting the triangulated mesh only to the pressure goal and continiue calculating with the quad mesh edges, but then the simulation “explodes”.

Yes, constant at some arbitrary value for now.

If the length is reduced the stiffnes should be increased no?

Sounds like something wrong in the setup, I can’t tell without the file, but perhaps just too high a pressure relative to the tension.

Again, the value you connect to the ‘Strength’ input is taken as the spring constant (often referred to as k). If you want to quantitavely model a real material, you need to input here EA/L.

If you halve the length you need to double the value of k to model the same modulus of elasticity.

Here’s a simple example - a cable supported at the top with a weight hanging on the bottom.
On the left modelled as 2 segments, and on the right as 1.

If we want to treat it as just different discretizations of the same cable, see how we need to double the value for the strength input for the 2 segment one, otherwise it would end up stretching twice as far.

1 Like

Here is a simplified case:

triangle_quad.gh (11.3 KB)

Excellent, was a bit tricky, but I got it now. :smiley:

Thanks :100:

…should have read the manual first , there it is explained as well

Ok, I found the problem:

When introducing the 4 additional lines to each quad with wbStellate to equally triangulate the mesh, one also has to give them a certain spring stiffness (that was my mistake, I just applied Length(Line) to the original quad curves. If the stiffness of the diagonal elements is 0, the each quad will “explode” obviously.

However, here is the problem: Yes, applying a certain stiffness to the diagonals solves the problem of convergence, but it introduces diagonals to a quad mesh, which now behaves significantly different, as a shear stiffness for each quad is now introduced.