Ok, thanks for explanations.
For meniscus and the non-erased interactions, at least, see the attached
script, in which the interaction is never erased. As said Christian, this does
not harm because the capillary force is 0. Still, it is maybe useless to keep
it.
Inserting the following lines
else
if (!hertzOn) {
if (!cundallContactPhysics->meniscus)
scene->interactions->requestErase(interaction);
} else {
if (!mindlinContactPhysics->meniscus)
scene->interactions->requestErase(interaction);
}
between current lines 128-129 would solve this problem.
Agree ?
________________________________
From: Yade-dev [[email protected]]
on behalf of Bruno Chareyre [[email protected]]
Sent: October 29, 2014 6:09 AM
To: [email protected]
Subject: Re: [Yade-dev] Some cleaning in capillary law
This seems to me contradictory (zero volume meniscii might "form" between
contacting spheres depending on the succion) and, associated to the test l.139
[3], it leads, in some cases, to interactions that are never deleted, even if
there is no more geometrical overlap neither a meniscus with a non-zero amount
of water (because erase on l.160 might be switched).
I don't see the problem. Can you please show how to get these non-erased
interactions?
Cheers.
Bruno
# 2 spheres initially in geometrical contact, then pulled away
O.bodies.append(sphere(center=Vector3(0,0,0),radius=5e-4,dynamic=0))
O.bodies.append(sphere(center=Vector3(0,0,9.9e-4),radius=5e-4,dynamic=0))
O.engines=[ForceResetter()
,InsertionSortCollider([Bo1_Sphere_Aabb()])
,InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_CapillaryPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack(neverErase=1)]
)
,Law2_ScGeom_CapillaryPhys_Capillarity(capillaryPressure=300.e3)
,NewtonIntegrator(damping=.2)
,GlobalStiffnessTimeStepper()
,PyRunner(command='computeThings()',iterPeriod=1)
]
from yade import plot
def computeThings():
i = O.interactions[0,1]
plot.addData(i=O.iter,un = i.geom.penetrationDepth
,vM = i.phys.vMeniscus,Delta1=i.phys.Delta1,Delta2=i.phys.Delta2,fnCap=i.phys.fCap[2])
plot.plots={'i':'un','un':'fnCap',' un':'vM','un ':('Delta1','Delta2')}
plot.plot()
O.bodies[1].state.vel=Vector3(0,0,0.005)
O.run(2000,wait=1)
print 'Interaction still real: ', O.interactions[0,1].isReal
print 'With non-overlap: un < 0 since un =',O.interactions[0,1].geom.penetrationDepth
print 'And zero meniscus volume: V =', O.interactions[0,1].phys.vMeniscus
_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help : https://help.launchpad.net/ListHelp