Hi Sergei, Are you sure these lines apply for facet-sphere?
> + const Vector3r c1x = geom.radius1*geom.normal; > + const Vector3r c2x = -geom.radius2*geom.normal; > For the facet, couldn't it be something like : const Vector3r c2x = (geom.contactPoint - de2.pos + shift2) ? 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_*); Bruno -- 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

