yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #12115
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