algorithmic modeling for Rhino

A discussion thread for posting questions and examples relating to Analysis model generation in Grasshoper to Oasys GSA.

Wouter Brok raised the question here about how to generate an element capable of tension resistance only.

Tie elements are available in GSA to emulate cables and tensile rods.  They can be generated in the Geometry Gym plugin be assigning the Beam type in the Beam Attributes component.  Model attached.

Note this will force the GSA solver to use a non linear solver to enforce this.  If you're confident your loading scenarios will only induce tensile forces, you can still use the static solver by setting a bar element (and then verifying manually no compression force exists).

Views: 7928


Replies to This Discussion

Hi Lukas,

Glad to hear.  I can understand why this is happening (surprising it hasn't been raised before).

I'll have to think about options for resolving it (other than closing and opening the gh def).

Send me an email or message to remind me if you haven't heard later in the week.




I am trying to model a global structure built out of separate elements (namely the 2005 Serpentine Pavilion) and analyse it using GSA & Jon's amazing plugin.

I want to connect each element to the next, rather than fixing them globally in space. I found the "create link" component, but haven't quite figured it out. Can I use it to connect a node in one element to an existing node in the next, and define a relationship between the elements in that way? Or is the trick to use the generated slave nodes to build up the next element in the sequence? Is there a better way altogether?

For instance, I'm very interested in Michael van Telgen's tube bridge, but couldn't run the definition (maybe it is a little old). How did you treat the relation between elements there?

Any ideas appreciated!


Hi Agnes,

Is Michael's the only definition not working for you?  Have you tried the other examples on the blog?

Generally elements are "connected" by assigning to end nodes (effectively a junction).  You can emulate translation and rotation releases (such as a slotted hole on a steel beam).

For some models, we might link degrees of freedom.  For example in a high rise building, the floor slab effectively prevents any difference in translation or vertical twist between any columns or walls joined to this.

Can you post (or email to me) any progress model so I can advise more accurately.



This is the connection that makes up the beam grid that I want to model: the pink is one continuous beam, with a hole in it, where the two green beams connect to each other with screws. So my issue is that in this connection, the pink beam will have a continuous deflection, but the green beams will rotate individually as the structure deflects. I want to be able to, for instance, link the nodes along the connection line in the z direction in one green beam to that of another.

No model exists quite yet, but if this is unclear I will happily start trying to make one. 

Thanks a lot!

Oh, and other definitions from the forum and from the blog are working, including the parametric beam one (Michael's) and the mesh results one (yours). It's just the truss bridge that's acting cranky.

My opinion this should be represented with element releases (created by attributes on the beam) where you want the "pin".

I'm happy to demonstrate this, but as I'm short on time can you set up the model basis?

Hello again,

of course, thanks so much! Here is a base model (with a base curve rh file), and an image to explain the problem. Hope it is clear! We only modelled the roof to start with, once we understand how to make the continuous beams we will start on the legs (and also dance from joy).

Thank you so much for your time & expertise, it is invaluable to us!


It's a pretty interesting model.  I've taken a look and hope this might help you a little.

First, Node "Restraints" are positions in the structure where it can't move (translation and/or rotation).  Normally this is at foundations or supporting structure not included in the model.  I've assumed these should be located at the perimeter.

Beam "Releases" emulate how the end of the member is fixed to supporting elements.  In your model, you want pins where there is a simple connection, but for the "connectivity" we want a node/junction where the supporting elements connect.  So I've split your lines up into two members.  Note also I set a 200mm "seek" tolerance for the existing node.

The resulting bending moment diagram should be zero at the ends of your members, as shown here.

Look forward to further questions.




Dear Jon,

amazing! Here are some followup questions:

What exactly is the need for a seek tolerance? Our current theory is that is helps the program find the nodes even after the structure has deformed - but then shouldn't it be needed for the locked nodes as well?

We are not previously familiar with GSA, (we have used mainly ABAQUS), and we are trying to keep the entire analysis in GH, doing the moment analysis with CurveElementForces and 1dSetDecompose. Could we see the moments in GSA directly from the GH file you gave us, or did you "post process" in GSA? (We notice a "Case A1" in your image.)

We have used the Model Decompose component to find the coordinates of nodes, and combine this with the element and node numbers, which we get from outputs P and V in 1dDecompose component. In this way we can recreate your moment image from above! However we get a few strange moments, please see the attached file.


Agnes & Lukas


I'm not sure if this is true for GSA (or even the same feature), but in general FEM analysis software enables the option to find structural nodes which lie close to each other, but aren't actually connected to the same elements.

Imagine two different elements are drawn with one coinciding point. The FEM software doesn't necessarily understand immediately that these two lines should actually be connected. It might just as well be two separate elements which just happen to have a coinciding geometric position at one point in the model.

To quickly resolve this problem (most?) FEM software implements a feature that merges coinciding nodes, with of without a certain margin of geometric distance of some prespecified proportion.

GSA does indeed have two such commands that will be useful here.

  • Collapse Coincident Nodes - condense nodes that are closer than a given distance tolerance into one
  • Connect 1D Elements - break elements where they cross other elements

Both commands will only operate on selected nodes/elements.

I haven't developed too far yet result depicting in Grasshopper, only extraction (in part it's redesigning the wheel so it's taken a lower priority).  I would like to do it, but it might not be just yet.

I simply baked the data to GSA, and solved and then there are buttons there to display results as you desire.  If you are using an automatic solver, there is an option for the model not to be closed (but take care you don't end up with lots of files).

For the seek tolerance, models are typically "geometry" precise in Grasshopper.  You might haven end offsets that facilitate a connection (like a cleat) and the seek tolerance allows the element still to connect to an existing analysis node (so the element ends join as connected).  You have some arcs and straight lines, so the points are "coincident" to a fairly large tolerance.  The plugin will automatically generate an "end offset" so the member axis is still in it's desired location.  Note also very few structural analysis software have curved member.

I'll try and look at your model ASAP, I'm a little short of time right at the moment.

Hope it helps,






© 2020   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service