Question #691285 on Yade changed:
https://answers.launchpad.net/yade/+question/691285

NGANDU KALALA Gauthier posted a new comment:
Hi Jan,

Thank you for the response. This is a MWE i propose for a better understanding 
of my problem.
As it is not possible to provide the mill mesh file in gmsh format,  The mill 
is simulated here as a cylinder of the same size, rotating around z-axis.  The 
balls are added to the mill using sphere pack, (p=pack.SpherePack());
However the behavior is not quite what I expected, especially since the mill is 
not equipped with a lifter to make the balls circulate in the mill as it is 
physically done. However there are interactions with the mill that normally 
have to produce normal and tangential forces, That i can't save actually.

I also noticed that the increased rigidity, some balls pass through the walls 
of the mill, instead of remaining inside.*
Moreover, I expected that at the beginning of the simulation, packages of balls 
could fall along the y-axis, to disintegrate afterwards. But i notice that it 
already disintegrates before falling, and go in the whole direction of mill, 
despite the acceleration of gravity is defined according to the y-axis.*
*
Finaly find the same recording problem mentioned above.

This is the MWE.

# Material
rho        = 7640.0    # [kg/m^3] density (of the balls)
Eyoung     = 900.0e9   # [N/m]    equivalent normal stiffness
vp         = 0.6       # [N/m]    equivalent tangential stiffness
en         = 0.3       # [-]      normal coefficient of restitution 
(sphere/sphere)
mu         = 2         # [-]      friction coefficient
rMean      = 0.8/2.0
length     = 0.4
rBall      = 0.0075    # [m] ball radius
sphRadFuzz = 0.8

# Simulation
pcv   = 70.0   # [%] percentage of critical velocity
tEnd  = 10.0   # [s] total simulation time
O.dt  = 1.0e-5 # [s] fixed time step
tRec  = 1.0e-2 # [s] recording interval
#material of cylinder
cylMat = 
O.materials.append(FrictMat(poisson=vp,young=Eyoung,density=rho,frictionAngle=radians(mu)))

#material of spheres
ballMat = 
O.materials.append(FrictMat(poisson=vp,young=Eyoung,density=rho,frictionAngle=radians(mu)))

ids=O.bodies.append(geom.facetCylinder((0,0,0),0.8,0.4,segmentsNumber=64, 
wallMask=7, angleRange=None, 
                          radiusTopInner=-1, 
radiusBottomInner=-1,material=cylMat))
#walls = O.bodies.append([
#          utils.wall((0,0,length/2),2,material=Mat1,color=(1,1,1),sense=+1),
#          utils.wall((0,0,-length/2),2,material=Mat1,color=(1,1,1),sense=+1)
#        ])
# define domains for initial cloud of red and blue spheres
packHt=.8*rMean # size of the area
bboxes=[(Vector3(-.5*length,-.5*packHt,-.5*packHt),Vector3(.5*length,0,.5*packHt)),(Vector3(-.5*length,-.5,-.5*packHt),Vector3(.5*length,.5*packHt,.5*packHt))]
colors=(1,0,0),(0,0,1)
for i in (0,1): # red and blue spheres
        sp=pack.SpherePack(); 
        bb=bboxes[i]; 
        vol=(bb[1][0]-bb[0][0])*(bb[1][1]-bb[0][1])*(bb[1][2]-bb[0][2])
        
sp.makeCloud(bb[0],bb[1],rBall,sphRadFuzz,int(.25*vol/((4./3)*pi*rBall**3)),False)
        
O.bodies.append([utils.sphere(s[0],s[1],material=ballMat,color=colors[i]) for s 
in sp])

O.engines = [
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]),
    InteractionLoop(

        [Ig2_Sphere_Sphere_ScGeom(),
         Ig2_Facet_Sphere_ScGeom(),
         Ig2_Wall_Sphere_ScGeom()],
        [Ip2_FrictMat_FrictMat_MindlinPhys()],
        [Law2_ScGeom_MindlinPhys_Mindlin()]
    ),
  
   #GravityEngine(gravity=(0,-3e4,0)), # gravity artificially high, to make it 
faster going ;-)
   
RotationEngine(ids=ids,angularVelocity=1000,rotateAroundZero=True,rotationAxis=(0,0,1)),
   NewtonIntegrator(damping=0,gravity=[0,0,-9.81]),
   PyRunner(command='exportForces()',iterPeriod=1)
]
def exportForces():
  # Mechanical power
  data = [ ]  # List of data for each interaction
  for i in O.interactions:
  
    # Force by sphere on facet
    if isinstance(O.bodies[i.id1].shape,Sphere) \
        and isinstance(O.bodies[i.id2].shape,Facet):
      fn = i.phys.normalForce
      fs = i.phys.shearForce
      cp = i.geom.contactPoint
      pd = i.geom.penetrationDepth
      d  = 
dict(normalForce=fn,shearForce=fs,contactPoint=cp,penetrationDepth=pd, 
id1=i.id1,id2=i.id2)
      data.append(d)
      print(data)

      # Save data
      dataSim = "data{:06d}.json".format(O.iter)
      with open(DataSim,"w") as f:
        json.dump(data,f,indent=2)

O.dt = 1e-6
###
O.run(int(math.ceil(tEnd/O.dt))+1)

Thank's

Gauthier

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to