← Back to team overview

yade-dev team mailing list archive

Re: Some cleaning in capillary law

 

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 [yade-dev-bounces+jerome.duriez=ucalgary.ca@xxxxxxxxxxxxxxxxxxx] on behalf of Bruno Chareyre [bruno.chareyre@xxxxxxxxxxxxxxx]
Sent: October 29, 2014 6:09 AM
To: yade-dev@xxxxxxxxxxxxxxxxxxx
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


Follow ups

References