← Back to team overview

yade-users team mailing list archive

Re: [Question #697877]: unexpected Plot of normal force

 

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

    Status: Open => Answered

Karol Brzezinski proposed the following answer:
Hi Pawan,

what you call "unwanted oscillation" really is a proper result. You have
no damping in your model, thus, pushed particle starts to oscillate.

I propose the following:
- turn on the force resetter,
- add some damping (e.g. 0.2),
- after adding the force, run the simulation until the oscillation calms,
- then move the wall.

Best wishes,
Karol

PS Theoretically you have two solutions that do not require damping:
- increase the force linearly in the infinite time period ;)
- less obvious: increase the force linearly in the time that is exactly integer multiplicity of the oscillation period.

But of course, my advice is damping.

####################
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

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.2),
    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()

O.run(int(3e6),wait = True)
plate.state.vel =(0,1,0) #plate given const. velocity in y direction
O.run(int(1e6),wait = True)

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