Grasshopper

algorithmic modeling for Rhino

Hi,

I couldn't really find this in the manual, but are there references/sources for the solvers that Kangaroo uses? Verlet integration is quite straightforward, but I'm unfamiliar with Archimedes and ArchimedesRK4.

What does Archimedes entail? And is the RK4 version simply classic RK4, or some alternative 4th order Runge-Kutta solver (e.g. not the same as given on Wikipedia)?

Thanks for any info or leads!

Views: 1437

Replies to This Discussion

Good question.

Thanks!

Well, after comparing to my own classic RK4 component, it seems to be classic RK4. I still don't know what the 'Archimedes' in solvers 2 and 3 refers to though.

Hi Diederick,

The 'Archimedes' solver essentially ignores momentum.

So normally I am summing forces and using Newton's second law to calculate accelerations, then using these accelerations to calculate velocities, and finally updating positions.

Archimedes mode skips the middle part, and simply moves the particles by some factor of the summed force vector acting on them.

The difference is clearest if you look at a pendulum - With Verlet (actually I use velocity verlet, which is slightly different) the particle will swing past the lowest point, then back again, and depending on the amount of damping the oscillations will gradually die down.
With Archimedes mode the pendulum will just swing directly to the lowest point, slowing down as it gets there, and not overshoot.
So it is a bit like always having a critical level of damping.

ArchimedesRK4 does the same thing, but using 4th order Runge-Kutta to better estimate the position at the end of each timestep.

The name and idea for this mode came from a suggestion by Tomohiro Tachi. I can't find a reference right now, but apparently Archimedes thought that this was how physics worked before Newton got it right. It's 'wrong' in terms of real world physics, but sometimes quite useful in form-finding where you are just interested in reaching equilibrium.

I've experimented with a few other more exotic solvers that allowed larger timesteps, but usually at the cost of significantly greater calculation per timestep, and always kept coming back to the velocity verlet, which seems to work very nicely for many purposes. For unconditionally stable simulations and arbitrarily stiff springs I think it really needs a switch to implicit methods, which I've been meaning to implement for ages, but haven't had a good stretch of time to properly concentrate on it.

Hi Daniel,

Thank you for this clarification. We were curious about this as well.

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service