← Back to team overview

yade-dev team mailing list archive

Re: Dem3DOFGeom : ScGeom

 



Suppose sphere and facet in contact, where the facet rotates along axis
parallel to the contact normal, so that the contact circumscribes a
circle around the facet's rotation center -- will that work?
Yes, of course. Why not?

Perhaps I should illustrate, so you'll see how incremental algorithm works.

ScGeom.cpp :

c1x = (x - rbp1.pos);//x is the contact point, defined in Ig2_X_Y_ScGeom
c2x = (x - rbp2.pos);
Vector3r relativeVelocity = (rbp2.vel+rbp2.angVel.cross(c2x)) - (rbp1.vel+rbp1.angVel.cross(c1x));//avoidRatchetting=false here if (scene->isPeriodic) relativeVelocity += scene->cell->velGrad*scene->cell->Hsize*c->cellDist.cast<Real>(); relativeVelocity = relativeVelocity-normal.dot(relativeVelocity)*normal;//keep the shear part only
shearInc = relativeVelocity*scene->dt;

This definition of relative velocity between material points coinciding with contact point at time "t" obviously doesn't assume anything on shapes. It just needs the contact point, the normal, and the motion of each body. Then, in ElasticContactLaw.cpp, we will account for the rotation of contact geometry during the timestep, and increment the force :

currentContactGeometry->rotate(currentContactPhysics->shearForce);
shearForce -= currentContactPhysics->ks*currentContactGeometry->shearIncrement();

After that, there is the plasticity condition, also  independant of shapes :

if( shearForce.squaredNorm() > maxFs ) shearForce *= Mathr::Sqrt(maxFs) / shearForce.norm();

That is all.

Bruno




References