← Back to team overview

yade-dev team mailing list archive

[Bug 923929] Re: OMP force container fails to reset forces on clump members

 

I wrote a ClumpsFactory extension and for some values there seems to be
a data race. After each iteration the forces are adapted from wrong
clumps and are multiplied by a factor 9 (?). When I use

    scene->forces.addForce(id, f);

instead of

    scene->forces.getForceUnsynced(id) += f;

I don't encounter this problem. Therefore I concluded there is a flaw in
the synchronization mechanism.

I also don't see how you can guarantee that there's no data race. STL
containers aren't thread safe if you are reading and writing at the same
time.

-- 
You received this bug notification because you are a member of Yade
developers, which is subscribed to Yade.
https://bugs.launchpad.net/bugs/923929

Title:
  OMP force container fails to reset forces on clump members

Status in Yet Another Dynamic Engine:
  Incomplete

Bug description:
  When clumps are used and no gravity engine is present, force containers are not reseting the forces on clump members. Junk values are accumulated over time and the clump itself soon disappears.
  A workaround is to addForce(0,0,0) once at startup on all bodies, this is done in Newton::action() currently.
  This is most probably (still to check) because containers sizes are checked vs. body Id only in addForce, which is never applied on clump members before they are in contact with something. Not clear is why the same problem does not appear also on standalone bodies.
  The crashing example was obtained from a series of personal scripts from Klaus Thoeni, not disclosed here.

To manage notifications about this bug go to:
https://bugs.launchpad.net/yade/+bug/923929/+subscriptions


References