yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #08273
[Question #236206]: Capillary force as a function of interparticle distance
New question #236206 on Yade:
https://answers.launchpad.net/yade/+question/236206
Hello all,
I am trying to see the capillary force changes as a function of the interparicle distance. Based on the papers I have found, the capillary force should be increased as the interparticle distance is decreased.
However, based on my script, the capillary force is steady and then drop to zero once the spheres are contacted.
It seem that it does not make sense to me.
Can anyone tell me what it is going on?
I always aprreciate your help.
from yade import plot,qt
#tag = O.tags['d.id']
#os.mkdir(tag)
r = 0.005 #particle radius , meter
h = 0.00067 #praticle distance, meter
#create two sphere paticles#
O.bodies.append([
utils.sphere(center=(0,0,-(r+h*0.5)),radius=r,fixed=False),
utils.sphere(center=(0,0,r+h*0.5),radius=r,fixed=False)
])
#define engines#
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=2)]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=2)],
[Ip2_FrictMat_FrictMat_MindlinCapillaryPhys()],
[Law2_ScGeom_MindlinPhys_Mindlin(neverErase=True)]
),
Law2_ScGeom_CapillaryPhys_Capillarity(capillaryPressure=40,createDistantMeniscii=True),
NewtonIntegrator(damping=0.2,gravity=(0,0,0)),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=1,timestepSafetyCoefficient=0.4),
PyRunner(iterPeriod=1,command='addPlotData()'),
PyRunner(iterPeriod=1,command='checkpos()')
]
#generate meniscii between the distant sphere#
#Cap.createDistantMeniscii=True #for drying path,it should be true for one step and then false. On the other hand, it should be always false for wetting path
#define the force on the sphere#
def addPlotData():
f0 = O.forces.f(0)
f1 = O.forces.f(1)
d0 = O.bodies[0].state.pos
d1 = O.bodies[1].state.pos
plot.addData(i=O.iter,f0forces=f0[2],f1forces=f1[2],b0displ=d0[2],b1displ=d1[2])
print f0[2],d0[2]
def checkpos():
f0 = O.forces.f(0)
#d0 = O.bodies[0].state.pos
if f0[2]<0.0001:
O.pause()
#display the force on the sphere#
#plot.plots={'i':('b0displ')}
plot.plots={'b0displ ':(('f0forces','bo'),),}
plot.plot()
plot.live=True
plot.autozoom=True
#O.dt=0.5*PWaveTimeStep()
qt.View()
#O.saveTmp()
O.run()
--
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.