Hi, Bruno. > > For the facet, couldn't it be something like : > > const Vector3r c2x = (geom.contactPoint - de2.pos + shift2) ?
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... > > This is what would happen if the shear increment/velocity used in the > constitutive law were defined using ScGeom::getShear()/getIncidentVel(), > and if values were precomputed with avoidRatcheting=false. > > 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? ps. I see what Yade's code is very complicated now and I need to learn it again... -- 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 Post to : [email protected] Unsubscribe : https://launchpad.net/~yade-dev More help : https://help.launchpad.net/ListHelp

