← Back to team overview

yade-users team mailing list archive

[Question #214773]: Question about "ScGeom"

 

New question #214773 on Yade:
https://answers.launchpad.net/yade/+question/214773

Hi,
i am a little bit confused about,  how yade calculate the motion. Therefore i did 2 short tests.

test (Cundall & Strack):


from yade import  plot, geom, utils

#parameters:

r1 = 0.003
r2 = 0.003
E1 = 210e9
E2 = 90e9
poisson1 = 0.3
poisson2 = 0.14
frictionAngle = 0.07
density1 = 7900
density2 = 2500
g = 9.81
h = 0.1




O.materials.append(FrictMat(young=E1,poisson=poisson1,frictionAngle=frictionAngle,density=density1, label='mat_ground'))

O.materials.append(FrictMat(young=E2,poisson=poisson2,frictionAngle=frictionAngle,density=density2, label='mat_spheres'))


O.bodies.append(utils.sphere([0.01,0.01,0.1],0.003,color=[1,1,0], material='mat_spheres'))
sphere=O.bodies[0]
print O.time,sphere.state.vel[2],sphere.state.pos[2]

pot=O.bodies.append(utils.geom.facetCylinder((0,0,.04),.054,.08,orientation=Quaternion((0, 0, 0),0),segmentsNumber=20,wallMask=2, color=(0,1,0), fixed=True, material='mat_ground'))

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_ScGeom_FrictPhys_CundallStrack()]

   ),
  NewtonIntegrator(damping=0.2, gravity=(0,0,-9.81)),
 PyRunner(iterPeriod=1,command="myAddPlotData()"),
 PyRunner(iterPeriod=100000,command="addData()")
]

O.dt=1*utils.PWaveTimeStep()

def myAddPlotData():
	force=plot.addData(t=O.time,F=O.forces.f(0).norm())

def addData():
 print O.time,sphere.state.vel[2],sphere.state.pos[2]


plot.plots={'t':('F')}
plot.plot()

from yade import qt
v=qt.View()

Test (Hertz):

from yade import  plot, geom, utils

#parameters:

r1 = 0.003
r2 = 0.003
E1 = 210e9
E2 = 90e9
poisson1 = 0.3
poisson2 = 0.14
frictionAngle = 0.07
density1 = 7900
density2 = 2500
g = 9.81
h = 0.1




O.materials.append(FrictMat(young=E1,poisson=poisson1,frictionAngle=frictionAngle,density=density1, label='mat_ground'))

O.materials.append(FrictMat(young=E2,poisson=poisson2,frictionAngle=frictionAngle,density=density2, label='mat_spheres'))


O.bodies.append(utils.sphere([0.01,0.01,0.1],0.003,color=[1,1,0], material='mat_spheres'))
sphere=O.bodies[0]
print O.time,sphere.state.vel[2],sphere.state.pos[2]

pot=O.bodies.append(utils.geom.facetCylinder((0,0,.04),.054,.08,orientation=Quaternion((0, 0, 0),0),segmentsNumber=20,wallMask=2, color=(0,1,0), fixed=True, material='mat_ground'))

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
      [Ip2_FrictMat_FrictMat_MindlinPhys()],
      [Law2_ScGeom_MindlinPhys_HertzWithLinearShear()]

   ),
  NewtonIntegrator(damping=0.2, gravity=(0,0,-9.81)),
 PyRunner(iterPeriod=1,command="myAddPlotData()"),
 PyRunner(iterPeriod=100000,command="addData()")
]

O.dt=1*utils.PWaveTimeStep()

def myAddPlotData():
	force=plot.addData(t=O.time,F=O.forces.f(0).norm())

def addData():
 print O.time,sphere.state.vel[2],sphere.state.pos[2]


plot.plots={'t':('F')}
plot.plot()

from yade import qt
v=qt.View()

and this are my results:
http://s14.directupload.net/file/d/3080/9ui6zesh_pdf.htm

It is shown that i got 2 different forces. But the velocity and the position are nearly the same.  
So i took a look into the yade-code and i found out that that both contact laws (Law2_ScGeom_FrictPhys_CundallStrack, Law2_ScGeom_MindlinPhys_HertzWithLinearShear) need the penetrationDepth to calculate the normalForce.  
Now my question: 
Does yade calculate the motion independently from the force? Because the algorithm of the scGeom doesn't need any force:
https://www.yade-dem.org/doc/yade.wrapper.html?highlight=scgeom#yade.wrapper.ScGeom

Furthermore i'm interested in how yade calculate the velocity and position if there isn't a contact anymore? Is the NewtonIntegrator also independently from the forces of the contact law? It isn't that easy to find in the yade-cade. 






-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.