← Back to team overview

yade-users team mailing list archive

[Question #697877]: unexpected Plot of normal force

 

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

Here is my simulation 
I have placed a sphere on a horizontal wall. A normal force is applied on the sphere vertically downward. Some velocity is given to the plate.

Now I am recording normal force on sphere vs displacement of plate graph.
Here I am expecting a constant value of normal force on sphere but Yade returns an abrupt behaviour in starting , however it is constant thereafter but with some different magnitude.
I have not used force resetter as it makes the graph periodic and gives unwanted results.

Kindly help us with how we can plot the actual normal force which is given initially on the graph.


from yade import plot
MaterialS=O.materials.append(FrictMat(young=70e6,poisson=.23,frictionAngle=radians(30)))  #material of sphere
MaterialP=O.materials.append(FrictMat(young=700e6,poisson=.23,frictionAngle=radians(30))) #material of plate
sp=sphere((0,0,0),1,material=MaterialS)  #creating sphere
plate=utils.wall(-1,axis=2,material=MaterialP) #creating plate
plateID=O.bodies.append(plate)  #plateID=0
spID=O.bodies.append(sp) #spID=1
O.forces.setPermF(1,(0,0,-4))  # 4 mag. force on sphere in -ve z direction
plate.state.vel =(0,1,0)  #plate given const. velocity in y direction
O.engines=[
    #ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Wall_Aabb()]),
    InteractionLoop(
     [Ig2_Wall_Sphere_ScGeom()],
     [Ip2_FrictMat_FrictMat_FrictPhys()],
     [Law2_ScGeom_FrictPhys_CundallStrack()]
    ),
    NewtonIntegrator(gravity=(0,0,0),damping=0),
    PyRunner(command='addPlotData()',iterPeriod=100)
]

def addPlotData():
	#if O.iter<10000:
  		#plot.addData(t=O.iter,FrictionForce=O.forces.f(0)[1],Displacement=O.bodies[0].state.pos[1])
  		#plot.addData(t=O.iter,NormalForce=O.forces.f(1)[2],Displacement=O.bodies[0].state.pos[1])
  		plot.addData(t=O.iter,NormalForce=O.forces.f(0)[2],Displacement=O.bodies[0].state.pos[1])
#plot.plots={'Displacement':('FrictionForce')}
plot.plots={'Displacement':('NormalForce')}
plot.plot()
O.dt=.5e-4*PWaveTimeStep()
O.saveTmp()



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