← Back to team overview

yade-users team mailing list archive

[Question #687862]: Assign avoidSelfInteractionMask while detecting contacts in compatible group masks

 

New question #687862 on Yade:
https://answers.launchpad.net/yade/+question/687862

Hi,

I am wondering what is the best way to avoid detecting self interactions for particles inside a group mask and at the same time keep interactions among particles with a different mask, which is compatible with the former one.

For example in the script cubePBscaled.py [1], I want to ignore interactions for the PBs assembling the box (bodies: bbb, bA, bB, bC, bD etc. with mask=3), but I want to keep interactions among bodies with b.mask=1, i.e. the falling cuboids.

Currently, if I set collider.avoidSelfInteractionMask = 3, the contacts among the bodies with b.mask=1 are not detected either, cause masks 1 and 3 have common bits.

To be clear, what I want is:
- to detect possible contact for particles in the group masks: 1-1 (cuboid-cuboid), 1-3 (cuboid-box) and
- to ignore possible contact for particles in the the group mask: 3-3 (box-box).

Looking in Collider.cpp [2], currently we have:
	!( (b1->groupMask == b2->groupMask) && b1->maskCompatible(avoidSelfInteractionMask) )
and I can achieve what I need, using:
	!( (b1->groupMask == b2->groupMask) && b1->groupMask == avoidSelfInteractionMask )

Is there a chance I can introduce a new flag to do this, e.g. "avoidSelfInteractionMaskOnly" or is there a workaround, without changing the collider?

Thanks in advance!
Vasileios

[1] https://gitlab.com/yade-dev/trunk/blob/master/examples/PotentialBlocks/cubePBscaled.py
[2] https://gitlab.com/yade-dev/trunk/blob/master/pkg/common/Collider.cpp#L40

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.