Welcome to ask.woodem.org. You may post when you login through your GitHub account.

collision detection engine with reset distant factor

0 votes
asked Feb 25 by trucgiao91 (500 points)
edited Feb 25 by trucgiao91

Hi Vaclav, 

I was runing some simulation with one macro pore in the structure and  at the stage,some of the particles around this pore broken all of its contacts, so they basically floating around in side the pore area. 

When I use VTK export the contact network, I find out that these 'free particles' are actually not free in a sense that they created hard contact with other particles but in a wierd sense, it seems to me that they are not touching but still the contact are established. (their distance is larger than (r1+r2)). see Figures. 


step-mstepn-withSpheresclosed up


Here my assumption that it seems to me the distance factor is larger than 1? 

I checked the demfield the value is one but still I have strange behavior. Is there someway to prevent it from happening? I am thinking of letting particles with zero cohesive contact to disappear

something like

S.dem.par.disappear(s.id, mask = 'somevalue')


Best regards,



1 Answer

0 votes
answered Mar 1 by eudoxos (49,030 points)
Hi Giao, the distFactor is only used for creating a contact, but it will exist as long as the contact law does not dissolve it. This logic is in https://github.com/woodem/woo/blob/91e0435b8611594a0e29fccf2227c65865082d18/pkg/dem/Concrete.cpp#L331 and you see that omega must be above omegaThreshold so that the contact gets deleted. By default, it is 1., so actually contacts will be kept something like forever (well, this seems like a bug to make this default); set it to perhaps 0.9 or 0.99 or somesuch -- check how much residual strength you have at that point (close to zero). This will make the contacts disappear. And also the simulation faster. HTH, Vaclav
commented Mar 12 by trucgiao91 (500 points)

Hi Vaclav,
sorry for late reply, I was working also on some other subjects in parallel.

I am not sure if you get me right... I got you point that once cohesive contact is established (from beginning), as long as the omega threshold is 1 then it will exist forever. I usually set it to 0.999. What I meant is in my simulation those particles with zero cohesive contact, they float around in the pore and create hard contact with particles near them, when I check their distant, it is larger than (r1+r2), for example in the second figure you can see that contact length in the middle is generally greater than the initial cohesive one.
is it the case that for newly created contact (hard contact), the distant factor is still the value that i set from beginning (which is 1.5 in this case)?

I checked the class Sphere and Concrete, it seems that distFactor from DemField is passed to the functors Bo1SphereAabb() and Cg2SphereSphere_L6Geom() properly. So I dont know where I missed...

But anyway is it a problem if I just simply remove particles during simulation, those with no cohesive contacts?


commented Mar 18 by eudoxos (49,030 points)

M... there are a few things which come to mind:

  1. check what deformation corresponds to omega threshold 0.999, it might be significant.
  2. check cohesiveThresholdStep (10 by default), it determines whether a newly created contact will be cohesive -- the default means only the very beginning of the simulation will form cohesive contacts). But you say those contacts are not cohesive
  3. check distFactor (you already did that)
  4. it might be some other bug, but I'd be surprised if something so basic would be wrong

No problem to delete particles, if that works for you. Their contacts will be deleted as well (i.e. energy will be disappearing from the system; but I suppose that is not a concern here)

HTH, Vaclav