← Back to team overview

yade-dev team mailing list archive

contact logic (again)

 

Hi,

based on the collider benchmark I thought new collider could be developed (someone? Nice topic for diploma thesis: google "NBC contact detection" or "munjiza-rougier" and other). For that reason, I renamed BroadInteractor to Collider and I would like to move collider-independent logic there.

The Collider::mayCollide says straightforwardly whether bodies can make contact at all (clumps, maybe other things). No problem here.

Collider::handleExistingInteraction will be (not yet used) reponsible for changing isReal, isNew flags and signalling that the interaction should be deleted (if it returns false). I would like someone (Bruno?) to review to code whether it is OK.

Another change I have in mind is removing haveDistantTransient; marking real contacts to be deleted by the constitutive law incurs no penalty, except for a very specific case where AABBs stop overlapping at the same iteration (not later) that spheres geometrically stop touching; this happens only if spheres would be aligned along an axis. In that case, the "penalty" would be that the interaction would be marked !isReal by InteractionGeometryMetaEngine and deleted at next iteration by the collider, instead of being deleted by the collider right away.

Second potential problem with haveDistantTransient is that you can have multiple constitutive laws, of which one will want to keep distant interaction and the other would not (there are no transient/persistent interactions anymore).

Therefore it seems appropriate to require that constitutive laws delete interactions.

Last thing: there are colliders I suspect are not used (and maintained): PersistentTriangulationCollider, SAPCollider, DistantPersistentSAPCollider. Couldn't we remove those from the tree?

Best, Vaclav

PS. I am aware of http://yade.wikia.com/wiki/Sanitizing_Contact_Logic. Let me know if I overlooked something there.



Follow ups