← Back to team overview

yade-dev team mailing list archive

Re: Some cleaning in capillary law

 

I already answered today in the morning, but somehow the message did not get through. I send you the message again:


Hi Jerome,

I introduced isBroken some years ago to deactivate liquid bridges. I used it to simulate rising water level:

O.engines=O.engines+[PyRunner(iterPeriod=100,command='eraseLiquidBridges()')]

def eraseLiquidBridges():
  for i in O.interactions:
    if i.geom.contactPoint[2] < waterLevel and i.isReal:
      i.phys.isBroken=True        #delete liquid bridges below water level

meniscus is set to true by [1] or [2] automatically in the next time step, so in the current version it is not redundant with isBroken and can not be absorbed by it. 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). This is more or less a bug, but not harmful since the contact is inactive (does not influence forces on bodies). I use it to remember contacts, that were set to isBroken manually. The code is indeed quite confusing. I think that second condition in [3] can be deleted, since it will never be fulfilled.

[1] https://github.com/yade/trunk/blob/master/pkg/dem/Law2_ScGeom_CapillaryPhys_Capillarity.cpp#L123 [2] https://github.com/yade/trunk/blob/master/pkg/dem/Law2_ScGeom_CapillaryPhys_Capillarity.cpp#L126 [3] https://github.com/yade/trunk/blob/master/pkg/dem/Law2_ScGeom_CapillaryPhys_Capillarity.cpp#L161



Zitat von Bruno Chareyre <bruno.chareyre@xxxxxxxxxxxxxxx>:

On 29/10/14 01:31, Jerome Duriez wrote:
Hi,

* CapillaryPhys/MindlinPhys.isBroken is a bool attribute that is false
by default, never updated, and never usefully used neither in c++ nor
py files of source. Furthermore, its meaning according to the doc
seems quite redundant with "meniscus". Do you agree if I remove it ?
(it = isBroken)

Ok.

* Furthermore, the design of "meniscus" itself might maybe be
improved. Around l. 119  [1], this bool is set to true as soon as
there is contact, or if distantMeniscii should be created
And, around l.149 [2], it is set to false when volume is zero.
What is wrong here? meniscus is true when there is a meniscus (i.e. a
finite volume).

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






Follow ups

References