Moving the discussion back to the bug tracker... Chiara: misunderstanding, sorry, I meant that the prevous Ig2_Facet_Sphere_ScGeom did not work for facets because the shift2 parameter was disregarded. Otherwise it should work with facets just fine, as well as any other shapes.
For getting periodicity &c in the contact law: please use Cell::intrShiftPos (computes the shift2, which moves id2 to the period of id1) and Cell::intrShiftVel (computes the velocity delta that must be added to id2's velocity so that they are as if in the same period). It takes care of possible ways of accounting for velGrad (Cell::homoDeform). -- 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

