yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #05404
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