← Back to team overview

yade-users team mailing list archive

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