Form finding suspension bridge with Kangaroo


Before i begin i want to ask you if following is achievable with kangaroo.

I have got a suspension bridge analytical model (just lines).

I need to find a form of main cable with hangers according to some constraints:

  1. i want to keep a deck at its position so fixing points in XYZ but i need Z gravity force from deck to still be transformed into the hanger
  2. hangers and main cable will have defined load per length
  3. hangers and main cable will have the room to change their shape to obtain equilibrium.

I am most concerned about the part to transfer loads from fixed deck into hangers.


1 Like

Hi @Juan_Gallo,

This sort of inverted form-finding process is interesting, where you need to keep some points in fixed locations, but without them being supports. Simply anchoring them doesn’t work.
It needs a slightly different approach, and probably a new Goal, but I think then it is possible.

This old discussion is perhaps relevant.
As I mention there, in the old Kangaroo I had a projected force goal that might be just what is needed here - a cable which adjusts its tension so that the force projected onto a given vector is some given value.
So for example, you can fix one end of a line and say that it always has to produce the same vertical force at that end, so when the cable is vertical it will have a lower tension, and as it becomes more angled, the tension increases as needed so the vertical component remains the same.

I’d forgotten about it as nobody ever seemed to use or miss it, but it should be fairly simple to code up a version for K2 - I’ll try soon.

i am thinking anchoring connection from deck to hangers only in x and y so that Z is free but in that case i will need to iterate hangers length to achieve zero deflection in the deck …

too few bridge engineers then know about kangaroo then :smiley: this is something that is always relevant for bridges because you know desired deck position and shape from the beginning but you dont know the shape of cables (for cable stayed and suspension bridges) under dead loads. There are some specialized tools (i could find Sofistik FEA software which has some special code up for the task) to get there but for prototyping stages grasshopper (kangaroo) would be ideal. If you get the initial form found shape according to constraints its then possible to obtain initial unstrained lengths of tension members and once you get it it is then fairly simple to use conventional FEA software for further analysis because you can simply load geometry with initial strain according to found form …


Okay, here’s a new ‘projected force’ goal for Kangaroo 2.

The deck is not fixed in place at all and has loads at each vertex.
The cables are fixed at their top points and act only in tension - you’ll see the deck moves horizontally but doesn’t move vertically, indicating that the vertical component of the diagonal cable tensions is perfectly balancing the vertical deck load.
From this it should be possible to convert to actual cable lengths and pre-tension considering material like these examples in the thread linked above.
image (10.7 KB)
You’ll need to set the assembly reference location for the KangarooSolver.dll (making sure to reference the right one for the version of Rhino you are running as given here).

1 Like

i am going to look into that.
this is video about bridge force and form optimization:

might be interesting for you to get some ideas

thank you for your instantaneous reactions. i am not familiar with kangaroo yet. i want to ask some basic questions.

A is it that by default all “lines” are considered to be infinitely stiff and cable like (tension only)?
B i can see beam component, but thats not supposed to be a way to assign stiffness to cables? is it possible to calculate with elements with defined stiffness directly?
C once i have solution of shape you say you it should be possible to derive unstrained lengths, in order to do that i need to find forces first, the example you provided, i can not see any component with forces output. only way to get initial length is to know final length and force which means stress and with E you can derive initial length.

BTW. the component you provided seems promising to achieve my goal. I will just plugin Z load of deck into c# projected force goal and hopefully it will fly. Ideally if i could get calculated reaction force from the deck and connect that value as a projected force goal. Is it possible to get reactions in a point? I am planning to assign stifness with the beam component to the deck.

This is furthest i got: (17.7 KB)

It does not seem to work - converge to solution.

I think it is not under or overconstrained problem.

I set deck achor points to move only in Z. Load from deck is defined in Z direction. Hangers are constrained to projected vertical force equal to point loads from deck. Main cable is constrained to move freely except hanger main cable connections are fixed in X. Last condition is that main cable should have constant force along its whole length.

I suspect maybe there is too many conditions? Please have a look at the definition. I think it could find correct stable position of elements satisfying all conditions listed above.

I agree it is an appropriately constrained problem.
It seems the tension in the main cable just needs to be much higher (like >40), then it is stable- (17.2 KB)
I was surprised to see the number needs to be so high, I’d have to think a bit about why that is.

-edit - aha, there are 36 unit vertical loads applied along it, so I guess it makes sense that the cable tension needs to be in this range.

1 Like

I am going to have a look. Please could you give me or link me insight how kangaroo operates related to my ABC questios above.

Fantastic it works! I had not hoped i could have figured out this problem by the end of the day :slight_smile: thanks to you. Now i can play with it a little, incorporate selfweight of cables so the shape is as close to reality as possible.

1 Like