← Back to team overview

yade-dev team mailing list archive

Re: Call for brainstorming and re-design / capillary models issue

 

On 22/06/15 23:27, Janek Kozicki wrote:
> Can you paste O.engines=... from some of your python scripts? I want
> to see the currently used interface of this problem. If O.engines for
> Anton's and Luc's solutions are different, then please paste both.

Using (Luc's) global engine, note that the global engine is called
"Law2_" inconsistently since it contains its own interaction loop:
O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.5),Bo1_Facet_Aabb()]),
 InteractionLoop(
     [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=1.5)],
     [Ip2_FrictMat_FrictMat_CapillaryPhys()],
     [Law2_ScGeom_FrictPhys_CundallStrack(neverErase=1,label='el')]),
                                        ### ORDINARY "DRY" CONTACT LAW
 Law2_ScGeom_CapillaryPhys_Capillarity(createDistantMeniscii=1,capillaryPressure=0.01,label='cl'),####
HERE THE GLOBAL ENGINE FOR CAPILLARY FORCES
 NewtonIntegrator()
]

Using (Anton's) Law2 functor (elaborated on the fly to give an example):

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.5),Bo1_Facet_Aabb()]),
 InteractionLoop(
     [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=1.5)],
     [Ip2_ViscElCapMat_ViscElCapMat_ViscElCapPhys()],
     [Law2_ScGeom_ViscElCapPhys_Basic()]), #### CONTACT LAW + CAPILLARY
FORCE
  NewtonIntegrator()
]

> I am thinking that maybe allowing dispatcher to call not just the
> first one class that matches, but all of them (that were setup
> beforehand inside O.engines InteractionLoop), could solve the problem?
You are absolutely right.
In this case it still needs to workout a model for data classes.
Multiple inheritance maybe? But it may generate ambiguities:

class ViscElCapPhys : public ViscElPhys, public CapPhys {
...
REGISTER_CLASS_INDEX(ViscElCapPhys, ??????)
};


Bruno


Follow ups

References