[ODE] Previous timestep significance?
Adam Moravanszky [Novodex]
adam.moravanszky at novodex.com
Mon Oct 13 15:02:06 MST 2003
Hi,
I believe the dependence is implicit, and can be demonstrated by this
example:
* run the simulation of a resting box stack with a time step of 0.001
* now run it with a time step of 0.1.
--> The first case should work better than the second, but even the second
should 'kind of' work, i.e. not explode.
* run the simulation of a resting box stack with a time steps alternating on
even and odd frames between 0.001 and 0.1.
--> I believe this won't work at all, the stack may 'explode', with the
boxes flying apart.
I have not actually tried this in ODE, but rather in one of my own codes,
but I identified the part that does this, and I have a hunch that ODE will
behave similarly.
The explanation is this:
With a large time step, the simulation error is magnified, and the resulting
interpenetration at the end of the time step will be relatively large. The
positional constraint basically tries to correct (most of) this large error
during the next time step. If that next time step is also large, then the
required correction force will be reasonable. If on the other hand, the
next time step is tiny, then the corrective force will be huge. On the
other hand if the initial time step had been small as well, then the initial
penetration would also have been quite small, and there would not be a
problem.
The root of the problem is the use of the inverse of dt as a scaling factor
in the penalty force computation, which goes to infinity as dt goes to zero.
Unfortunately this is mathematically founded but numerically unwise. One
could confirm this suspicion by trying to run the simulation with a very
very small dt, such as 1e-6.
-- Adam
----- Original Message -----
From: "Konstantin Voloshin" <volk6 at mail.ru>
To: <ode at q12.org>
Sent: Monday, October 13, 2003 2:23 PM
Subject: [ODE] Previous timestep significance?
> Hello,
>
> There was a message by Nate a few days ago
> ( http://q12.org/pipermail/ode/2003-October/010146.html )
> saying that behaviour of ODE-world at the next step
> depends on the ammount of previous time-step.
>
> It seemed questionary to me. I looked at code, and haven't
> found places holding a value of timestep between calls of
> dWorldStep. Also I found that dWorldStep first accumulates
> joint-forces, then applies them and zeroes accumulators.
>
> In other words, I haven't found any previous time-step influence
> into the world. Could someone approve or disapprove me?
>
> VolK
>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>
More information about the ODE
mailing list