← Back to team overview

yade-users team mailing list archive

Re: [Question #670511]: Ambiguous dispatch : too much laws ?

 

Question #670511 on Yade changed:
https://answers.launchpad.net/yade/+question/670511

Nicolas Godet gave more information on the question:
Hello,

Here we are, I had issue with the lubrificationlaw that can't compute if
some bodies inter-penetrate at time=0.0 so we fix it by isolating this
bodies using mask and collider.avoidSelfInteractionMask.

I notice some strange bugs so I asked permission so share the whole script and it's OK.
So, I will explain and here is the main script : https://pastebin.com/hkmimXSb (sorry for the size). I comment what concerns the modified DragEngine so it should run without problem on an updated Yadedaily.

The script as it is on pastebin runs on single and multiple threads without problem but the spherepack go through the walls. 
I analyze the forces between bodies using a test script : https://pastebin.com/GaMW8Bhn
A lubrication force exists between the spheres so that's enough for my problem, a basic FrictPhys between spheres and flexible barrier is OK.


Now, if you invert the lines 202 and 203 (first the FrictMat_FrictMat_LubricationPhys and second the FrictPhys), I noticed several issues.
1- The spherepack still go through the walls.
2- If you try to run on multiple threads, it returns an ambiguous dispatch. 
/home/godetnicolas/myYade/trunk/lib/multimethods/DynLibDispatcher.hpp:344: ambiguous 2d dispatch (arg1=ScGeom6D, arg2=WirePhys, distance=1), dispatch matrix:
AMBIGUOUS: 0+8 -> Law2_ScGeom_ImplicitLubricationPhys
AMBIGUOUS: 1+3 -> Law2_ScGeom_FrictPhys_CundallStrack
AMBIGUOUS: 2+3 -> Law2_ScGeom_FrictPhys_CundallStrack
AMBIGUOUS: 2+5 -> Law2_ScGeom6D_CohFrictPhys_CohesionMoment
AMBIGUOUS: 6+3 -> Law2_GridCoGridCoGeom_FrictPhys_CundallStrack
AMBIGUOUS: 7+5 -> Law2_ScGeom6D_CohFrictPhys_CohesionMoment
AMBIGUOUS: 11+3 -> Law2_ScGridCoGeom_FrictPhys_CundallStrack


So I summarize: 
- I have a collider issue, the spherepack go through the walls. This issue does not appear in my script without the flexible barrier (https://pastebin.com/JTSv5Ucr) 
- The order of Ip2 functors affects something that causes ambiguous dispatch with multi-thread computing but it does not appear on single-thread computing.

I tried to be as clear as possible but it's not simple.
The main script is very long, it's still a work in progress and there is a lot of improvements that need to be done to clarified the script.

Nicolas

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