yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #02850
Re: python contact laws
Say that the second contact law uses different IPhys and IGeom than
the previous one, in this case it seems perhaps not possible..
It could be done. For instance, you could loop on all interactions of
type 1, delete them and replace them with interactions of type 2.
It would need to define explicitely the conversion rule from attributes
1 to attributes 2 (in cpp, python, it would be difficult via simple xml
edit/search/remplace).
(whatever, in python or modifying html). Ok, if it is not possible I
see to find a different solution.
BTW, so in our simulation is it possible to have more than one contact
law? Can we dispatch between them?
Not sure what you mean.
1st case (best guess) : more than one law for the same body pair. Yade
is not really designed for that, but it is possible to have two
interaction laws at the same time between the same two bodies (see
capillary law). It needs to include all parameters needed by the two
laws in one unique interaction physics (CapillaryPhys inherits from
FrictPhys and add capillary parameters, it is used by both
Law2_ScGeom_FrictPhys_Basic and Law2_ScGeom_CapillaryPhys_Capillarity).
You could do the same for your problem I think.
2nd case : If there is only one law between each pair, then using many
contact law is straightforward. Say you have bodies with material types
A and B in the simulation, dispatchers will first generate AAPhys,
BBPhys, or ABPhys depending on the materials in each pair. Then
dipatcher will look for Ip2_geom_AA_, Ip2_geom_BB_, or Ip2_geom_AB_. All
you need is define each of the functors (there is no example of an "AB"
phys in Yade yet but I don't think anything prevent that).
Bruno
Follow ups
References