[ODE] Iterative solution

david@csworkbench.com david at csworkbench.com
Sun Mar 16 18:21:01 2003


Let me clear up a few things.... I am not creating islands, I'm
replacing the island finding code, and sending every joint and the 2
bodies it connects to to the solver (Cholesky factorization/solving
turned out to be faster than LCP, btw) as it's own little island.  I
might put the island creation code back in there after I get it working
really well with a constant number of iterations (or a variable number
of iterations systemwide).  So far I'm pretty happy with the speed, and I
still recalculate the jacobian every iteration (that's about to change).

I've found a way to pull the collisions out of the loop: reduce contact
ERP to ERP/iterations.  When I take the jacobian calculation out, I'll
pass it the full stepsize, but iterate by stepsize/iterations, so that
should make it so a normal ERP will work.

Performance update: I just simulated 100 touching cars (500 bodies, 400
regular joints, ~400 contact joints) at around 10 fps.  With a little
more optimization, we may be about to redefine ODE for mid- and large-
sized systems....

Let me know if you think I'm on the right track with taking the Jacobian
out of the loop.  It sounds right to me (would make the system actually
able to converge on an "answer"), but I could be wrong.

David Whittaker

> Billy Zelsnack wrote:
>> Islands are still important because each island can converge in its
>> own number of steps.
>
> Quite so, excellent point.  It's just a shame that the island-finding
> is what, O(nlogn) itself?  But a cheap one.
>
> --
> Adam D. Moss   . ,,^^   adam@gimp.org   http://www.foxbox.org/   co:3
> busting makes me feel good
> kthx bye
>
> _______________________________________________
> ODE mailing list
> ODE@q12.org
> http://q12.org/mailman/listinfo/ode