← Back to team overview

yade-dev team mailing list archive

Re: twist plastic moment

 


Now I've got two questions:
- Is any constitutive law able (without modification) to get its parameter from MatchMaker or it works with either PhysicalParameter or the MatchMaker?
- Where is declared algo and val in the class MatchMaker (just to satisfy my curiosity)?

MatchMaker only works gives one scalar value, and is used at the point where IPhys is created, i.e. the respective Ip2 functor (which derives interaction parameter from Materials of the two particles in interaction); the contact law does not care about that. For instance, https://www.yade-dem.org/sphinx/yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_FrictPhys.frictAngle defines friction angle. To use it, you do something like this

O.materials.append(...) # create a few materials, with ids 0,1,2

Then in the InteractionLoop, where Ip2 functor is placed, you would write something like

  Ip2_FrictMat_FrictMat_FrictPhys(frictAngle=MatchMaker(matches=[(0,0,.4),(0,1,.8),(1,1,0)],algo='min'))

That will set frictAngle to .4 for materials 0+0, .8 for 0+1 (or 1+0), 0 for 1+1. Any undefined combinations (like 2+*) will be computed using the algorighm "algo", which in this case is "min" (gives the minimum of frictionAngle contained in the Material class itself; those few algorithms are described in https://www.yade-dem.org/sphinx/yade.wrapper.html#yade.wrapper.MatchMaker.algo). For instance, you can prescribe fixed value .23 for any combination with

 frictAngle=MatchMaker(algo="val",val=.23)

and since we defined an automatic conversion from floats to MatchMaker, you can just write

 frictAngle=.23

as well.

For an example, you can have a look at http://bazaar.launchpad.net/~yade-dev/yade/trunk/annotate/head%3A/scripts/test/shots.py which uses MatchMaker objects to define coefficient of restitution (https://www.yade-dem.org/sphinx/yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_MindlinPhys).

Cheers, v.




References