How to set tension to a line when drawing centenary with Kangarroo2


I am currently learning to model a cable catenary with Kangaroo2. Questions below:

  1. How can I understand the strength input for the “length(line)”?
  2. Where/how can I set the cable tension?

    Many thanks.


Hi David,
Simply put, the strength is the spring constant k, which can be calculated using E*A/L
Where E is the Young’s modulus (in Pa), A is the area(in m^2), and L is the length (in m)
The tension is not an input, since it will vary depending on the other goals acting on the spring, and is calculated in accordance with Hooke’s law from k and the extension of that segment.

Since you ask about catenaries though, be aware that when people talk about a catenary, they generally mean an idealised ‘inextensional’ cable which does not stretch any significant amount. In this case, you don’t need to worry about EA/L, and all you need to do is make the strength high in relation to the load, and adjust the sag of the cable by multiplying its initial length by some factor for the input to the Length parameter of the goal.

1 Like


Welcome to the community.

One piece of advice.
Since the link to that thread was added I need to say something. Be careful when using kangaroo. Even though it has a wide variety of applications these are narrow cases. This is not a physics engine. You can see the discussion in that thread is not so pretty. The method @DanielPiker has implemented “dynamic relaxation” allows an error to happen in order to solve a dynamic case. I do not fully understand it yet. Nor do I try, at this point. :wink: . I suggest you use one of the scripting components and put some math from your field in the code. Hopefully you know a bit of programming. If not, there are other components that you can use to put your equations inside. If you are a beginner grasshopper user, or if you do not know what “dynamic relaxation” means - avoid Kangaroo. This is my advice.

Who made it “not so pretty”?

// Rolf

1 Like

Thank you very much for your response.

Could you also explain the meaning of “Length”. How does it impact the sag?

I compared the two curves below. The one on top catenary in purple is I input the final length of the curve under a certain condition like tension and weight. The one below is generated by Kangaroo, which I still try to understand maybe the length shall be adjusted. Would you please explain the input “Length”? Many thanks.

That is a point of view.

A question here is whether you are trying to model an idealised inextensional catenary curve, or you want to find the shape of an elastic cable with a specific stiffness and weight.
(bear in mind that these will be extremely similar in most practical scenarios, since most things we’d think of as a rope or cable have a very low weight to stiffness ratio. If there are other loads beyond self weight applied though, the situation is different)

If it is just a single catenary curve between 2 points, and it’s the infinitely stiff version you want, then you can also use the grasshopper catenary component. As soon as you have multiple connected cables though it does make sense to use Kangaroo. The length input is the rest length of the segment - ie what length it is with no stretching forces applied. As mentioned earlier, you can use this and a strength of EA/L if you are interested in simulating precise deformations for given material properties.

If you just want to approximate an infinitely stiff cable, you can set the strength to something like 100000.
Alternatively, for catenaries, you can use the DynamicWeight1D goal - this modifies the weight of the segment to keep it proportional to the length, so you can use a lower stiffness, as the shape will stay a true catenary even though the segments change length.

The distinction between dynamic relaxation and physical dynamics isn’t actually relevant to your question, since we are talking about the final equilibrium state anyway, but it is actually quite simple -
it’s just that dynamic relaxation usually refers to setting parameters such as damping and mass in order to reach equilibrium as efficiently as possible, and the precise path and speed the system takes on its way doesn’t need to closely match physical reality (because it is the final static positions we are interested in, and these can still be numerically physically accurate).
If on the other hand you are trying specifically to model the dynamics, and have things move at more realistic speeds, you can use the ‘bouncy solver’ component.
Kangaroo can converge to numerically accurate static deformations based on material properties for things like cables and bending rods, including for large deformations. It makes no claim to model numerically accurate dynamics (in the sense of how many metres per second things will move at).