MLCP solver blows up for smaller timestep?

Post Reply
maletinkert9n
Posts: 2
Joined: Wed Feb 18, 2015 1:17 pm

MLCP solver blows up for smaller timestep?

Post by maletinkert9n »

Strangely, the MLCP solver blows up as I decrease the (fixed) simulation timestep from 10 us down to 1 (some instability) and 0.1 us (totally blows up). Is this an intrinsic property of the MLCP algorithm or is it just because timesteps this small get into rounding off errors?

Strangely, the simulation works just fine for the largest timestep of 10 us.
Basroil
Posts: 463
Joined: Fri Nov 30, 2012 4:50 am

Re: MLCP solver blows up for smaller timestep?

Post by Basroil »

maletinkert9n wrote:Strangely, the MLCP solver blows up as I decrease the (fixed) simulation timestep from 10 us down to 1 (some instability) and 0.1 us (totally blows up). Is this an intrinsic property of the MLCP algorithm or is it just because timesteps this small get into rounding off errors?

Strangely, the simulation works just fine for the largest timestep of 10 us.
For timesteps that small you'll likely need double precision, and even then it might not be perfectly stable. Considering the default step is ~16ms, 1us is quite a bit outside the intended step size
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Re: MLCP solver blows up for smaller timestep?

Post by Erwin Coumans »

There is no 'MLCPSolver' that you can execute, it is just an interface. Please provide the actual MLCPSolver that you use,
such as btDantzigLCP, btLemkeSolver,btSolveProjectedGaussSeidel or btPATHSolver.

It is very common to run the regular btSequentialImpulseConstraintSolver at 1000Hz or 3000Hz, using double precision. I haven't done much testing running the other solvers at small time steps.
Thanks,
Erwin
Post Reply