SV: [ODE] Iterative solution

Russ Smith russ at q12.org
Tue Mar 18 01:23:02 2003


hi,

i'm curious about your algorithm. you stated it like this (in summary):

> for i = 0 to maxIterations
>  ...
>  foreach joint
>   solve LCP problem for this joint
>   add resulting forces to each body's accumulators
>  next joint
>  foreach body
>   adjust velocity by force and torque accumulators
>   adjust body's position by velocity
>   reset force and torque accumulators to 0
>  next body
> next i

so it seems that the body position drifts during the solution process?
why not keep the position constant and just adjust the velocity? -
because the constraints are (mostly) velocity constraints.

your algorithm seems like a form of block-jacobi iteration for solving
the system matrix. i'm curious if this could be improved by converting
it to block-gauss-siedel or block-SOR. i'm also wondering what the
trade-off is between the blocking and non-blocking iterative matrix
schemes ... in the blocking scheme it seems like the maximum convergence
eigenvalue is lower (so convergence is faster) but you have so do the
extra work of the mini-LCP's at each step ... hmmmm, this is a
worthwhile subject of study. does anyone know if there are any existing
papers on this subject?

is your code a plug-in replacement for ODE's existing solver? i'm
looking forward to seeing it...

russ.

-- 
Russell Smith
http://www.q12.org