A tension-only spring (rubber band or bungee cord)

I would like to simulate a bungee cord. I need a one-way spring: it exerts a pulling force when stretched beyond rest length, but does not exert a pushing force when shortened below rest length. Is there a version of Length(Line) that does this?

Bungee cord do have some resistance while compressing it, but as it is really flexible, it will “crumple” instead.
Do the same.
Make your pulling spring be composed of 3 or more (the more the better) chained springs. This way it will be able to pull but will just “crumple” when compressed.

Thank you for the suggestion, Riccardo. In my application I don’t need to model the details of “crumpling”, so in the meantime I found what I think is a simpler solution. At Running a symmetrical simulation Daniel Piker writes “(you can also use ClampLength to create springs with non-zero rest length which act only in tension).”

So here is what I think I need to do.

ClampLength exerts no force when the length is between LowerLimit and UpperLimit. When the length is greater than UpperLimit, it exerts a spring-like force that grows linearly with “length-UpperLimit”. So what I need is to set LowerLimit equal to zero, UpperLimit equal to rest-length, and Strength inversely proportional to rest-length.
That statement about Strength comes from Daniel Piker. At How to set tension to a line when drawing centenary with Kangarroo2 he writes “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)”

I would appreciate if someone can confirm that I am understanding ClampLength correctly.

2 Likes

See this as well:

PS: I have various things on that matter … but using solely C# … thus they could be kinda a big black box to you (unless you know how to code).

Yes, that’s all correct!

Thanks, Daniel. The mechanics of ClampLength are working fine in my simulation of a tensegrity structure, but I no longer see the lines in the output. This is because the O output of the solver produces lines for Length(Line) but nulls for ClampLength. Do you have any advice on how to obtain those lines?

To get the lines in the output you can connect them to a ‘Show’ component and connect that to the GoalObjects input.