← Back to team overview

yade-users team mailing list archive

"off contact" interaction 2

 

Hi Janek,

I have try something which is a little different from your suggestion in order to include my "capillary cohesion". It's in the "InteractingSphere2InteractingSphere4SphereContactGeometry" file. From my point of view, the problem was that the ContactGeometry (normal, Radius) was only define if "penetrationDepth>0" (l. 53 of this file). So, I have added few lines to define it even if "penetrationDepth!>0":

if (penetrationDepth>0)
   {
scm->contactPoint = se31.position+(s1->radius-0.5*penetrationDepth)*normal;//0.5*(pt1+pt2);
       scm->normal = normal;
       scm->penetrationDepth = penetrationDepth;
       scm->radius1 = s1->radius;
       scm->radius2 = s2->radius;
if (!c->interactionGeometry)
           c->interactionGeometry = scm;
return true;
   }
   else    // add
       scm->normal = normal;
       scm->radius1 = s1->radius;
       scm->radius2 = s2->radius;
if (!c->interactionGeometry)
           c->interactionGeometry = scm;
return true;
       //return false;  // before add


I don't know if this is the good way, but it seems working, Spheres interact without contact. *Unfortunately,* *there is still a problem* (...):

The condition for them to interact (in "CapillaryCohesiveLaw" file):

// Intergranular distance : Real D = (de2->se3.position-de1->se3.position).length()-(currentContactGeometry->radius1+currentContactGeometry->radius2);


if (D<Dcreation)

{
       Vector3r Fcap = 100000*currentContactGeometry->normal;

static_cast<Force*> ( ncb->actionParameters->find( id1 ,
   actionForce   ->getClassIndex() ).get() )->force    += Fcap;
   static_cast<Force*>   ( ncb->actionParameters->find( id2 ,
   actionForce   ->getClassIndex() ).get() )->force    -= Fcap;
currentContactPhysics->prevNormal = currentContactGeometry->normal;

}

is not active, and the elements always interact when their boundingvolumes interpenetrate, even if "Dcreation" is smaller than the "boxSize" ("aabb->halfSize = Vector3r(2*sphere->radius,2*sphere->radius,2*sphere->radius). I don't understand the cause of this: "Is there, somewhere, a condition which cancel mine?", or, "Is my condition wrong?".

I hope I am clear enough (...), thanks in advance.

         So long, Luc.

_______________________________________________
Yade-users mailing list
Yade-users@xxxxxxxxxxxxxxxx
http://lists.berlios.de/mailman/listinfo/yade-users