You are right, of couse. > But how can I get shift2 in my Law* engine? > What is prefered path? > May be to use HertzMindlin.cpp:181 string: > > Vector3r shift2=scene->isPeriodic ? > Vector3r(scene->cell->Hsize*contact->cellDist.cast<Real>()) : > Vector3r::Zero(); > > Or to use precomputed shearIncrement from ScGeom? > But I need incidentVelocity too, but in ScGeom it is not cashed... > Yes, if you need the velocities you could get shift2 as above and then simply use the ScGeom function getIncidentVel to get the current impact velocity (as I am doing in HertzMindlin). We added this function on purpose in case velocity was needed inside the contact law. Btw, according to Vaclav, for Facet-Sphere interaction shift2 would not work properly.
> > I see that, currently in Ig2_Facet_Sphere, avoidRatcheting is true (my > > bad), I recommend turning it false : > > Ig2_Facet_Sphere_ScGeom.cpp:110 : > > scm->precompute(state1,state2,scene,c,normal,isNew,shift2,*_true_*); > > Why is avoidGranularRatcheting hard coded here? > Should I turn it false and commit? > I think in this case it should be False, but let's wait for Bruno's answer. For Sphere-Sphere interaction it should be True (see Bruno's comment and few papers related to the topic if you are interested), though I guess the point is still debated. Btw, now for Sphere-Sphere interaction everything works fine with the pbc (no explosions or such) even including ratcheting since Vaclav fixed the problem there (just to let you know). Chiara > > > > -- > Best regards, > Sergei D. > > -- > periodic boundary don't work with ViscEl classes > https://bugs.launchpad.net/bugs/666246 > You received this bug notification because you are a member of Yade > developers, which is subscribed to Yade. > > Status in Yet Another Dynamic Engine: Fix Committed > > Bug description: > Periodic boundary don't work with Ig2_Facet_Sphere_ScGeom and > Ig2_Sphere_Sphere_ScGeom functors. > > > #=============BEGIN SCRIPT TEST PERIODIC WITH > Ig2_Sphere_Sphere_ScGeom========== > # -*- coding: utf-8 > > from yade import utils > > sphereRadius=0.1 > tc=0.001# collision time > en=0.3 # normal restitution coefficient > es=0.3 # tangential restitution coefficient > density=2700 > frictionAngle=radians(35)# > params=utils.getViscoelasticFromSpheresInteraction(tc,en,es) > > sphereMat=O.materials.append(ViscElMat(density=density,frictionAngle=frictionAngle,**params)) > > > # Spheres > sphId=O.bodies.append([ > utils.sphere( (i*0.2+0.1,0.5,0.2), 0.1, material=sphereMat) for i in > range(5) > ]) > O.bodies[sphId[-1]].state.vel=(0.5,0.5,0) > > ## Engines > O.engines=[ > ForceResetter(), > InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]), > InteractionLoop( > [Ig2_Sphere_Sphere_ScGeom()], > [Ip2_ViscElMat_ViscElMat_ViscElPhys()], > [Law2_ScGeom_ViscElPhys_Basic()], > ), > NewtonIntegrator(damping=0), > ] > > O.periodic=True > O.cell.refSize=Vector3(1,1,1) > > O.dt=.01*tc > > O.saveTmp() > #==========================END====================== > > > #=============BEGIN SCRIPT TEST PERIODIC WITH > Ig2_Facet_Sphere_ScGeom========== > # -*- coding: utf-8 > > from yade import utils > > sphereRadius=0.1 > tc=0.001# collision time > en=0.3 # normal restitution coefficient > es=0.3 # tangential restitution coefficient > density=2700 > frictionAngle=radians(35)# > params=utils.getViscoelasticFromSpheresInteraction(tc,en,es) > > facetMat=O.materials.append(ViscElMat(frictionAngle=frictionAngle,**params)) > > sphereMat=O.materials.append(ViscElMat(density=density,frictionAngle=frictionAngle,**params)) > > floor > n=5. > s=1./n > for i in range(0,n): > for j in range(0,n): > O.bodies.append([ > utils.facet( > [(i*s,j*s,0.1),(i*s,(j+1)*s,0.1),((i+1)*s,(j+1)*s,0.1)],material=facetMat), > utils.facet( > [(i*s,j*s,0.1),((i+1)*s,j*s,0.1),((i+1)*s,(j+1)*s,0.1)],material=facetMat), > ]) > > # Spheres > sphId=O.bodies.append([ > utils.sphere( (0.5,0.5,0.2), 0.1, material=sphereMat), > ]) > O.bodies[sphId[-1]].state.vel=(0.5,0,0) > > ## Engines > O.engines=[ > ForceResetter(), > InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]), > InteractionLoop( > [Ig2_Facet_Sphere_ScGeom()], > [Ip2_ViscElMat_ViscElMat_ViscElPhys()], > [Law2_ScGeom_ViscElPhys_Basic()], > ), > GravityEngine(gravity=[0,0,-9.81]), > NewtonIntegrator(damping=0), > ] > > O.periodic=True > O.cell.refSize=Vector3(1,1,1) > > O.dt=.01*tc > > O.saveTmp() > #==========================END====================== > > > > _______________________________________________ > Mailing list: > https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev> > Post to : [email protected] > Unsubscribe : > https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev> > More help : https://help.launchpad.net/ListHelp >
_______________________________________________ Mailing list: https://launchpad.net/~yade-dev Post to : [email protected] Unsubscribe : https://launchpad.net/~yade-dev More help : https://help.launchpad.net/ListHelp

