Difference between Bouncy solver and regular solver in Kagaroo2

Hi all,

I have 2 following questions in Kangaroo. Please help me

  1. I am trying to implement simple tensegrity structure in Kangaroo. I am getting different solution for bouncy solver and regualr solver. Attached my GH file. Am i doing something wrong?

  2. How to define a tension only member in kagaroo? that is unless there is tension in line object, that object should slack.

    needle point tower_final_8_springs_test_1unit.gh (48.1 KB)

I believe the Bouncy solver is going to output intermediate steps while it tries and approach the final solution. If you let the bouncy solver run through enough iterations it will eventually converge on the same solution as the regular solver.

I am allowing the bouncy solver to converge, the picture i posted is the final shape after convergence.
And how can i change the number of iterations?
(can you please go through my grasshopper script and let me know if i am implementing something wrong?)

Thanks

Your setup appears to have a very nearly stable intermediate solution.
In terms of the energy landscape it must be something like this:

Normally the bouncy solver and the normal solver will reach the same solution, as Scott says.
However, in a case like this, the regular solver might get stuck at (A), while the extra momentum the bouncy solver has can sometimes be enough to carry it over the plateau into the true energy minimum (B).

The ‘Threshold’ input for the regular solver controls when it considers itself converged. The default value is 10^-15 (it shows as 0 when you mouse-over it, but that’s just Grasshopper rounding for display). The energy gradient on the plateau here must be so low that it is stopping. However, if you actually input 0 for the Threshold, you’ll see it slows down, but after a while does carry on to the same solution as you get with the bouncy solver. Note that if you set a threshold of zero that means the solver will continue iterating indefinitely unless you set the On input to false.

Another thing I noticed in your definition is that you are using the DynamicWeight component. This is intended specifically for catenary form-finding with elastic cables, where the length changes significantly and you want to keep adjusting the loads accordingly. For an application like this one, all you need is to apply half the weight of each strut to each of its ends, with the regular Load goal.

3 Likes