This situation is partly described in [2]. I used it just in a special case:
- spheres with CpmMat
- facets with FrictMat
- Ig2_Facet_Sphere
- Ip2_FrictMat_CpmMat

so Ig2 always order the particles with different shapes in order
Facet-Sphere, so the materials are also ordered FrictMat-CpmMat fitting
perfectly the Ip2 definition :-) this was done "correctly" by luck, so I
did not have the discussed problem in this case..

If I used CpmMat for facets and FrictMat for spheres, or used CpmMat and
FrictMat for spheres only, I would have had this error..

cheers
Jan


2015-07-23 12:36 GMT+02:00 Bruno Chareyre <1475...@bugs.launchpad.net>:

> I don't understand this assert either.
> Just adding more questions:
> -Can the same problem also appear in Ip2_FrictMat_CpmMat_FrictPhys?
> -This one requires that mat1 is Frict and Mat2 is Cpm, how can it be
> always true? [4]
>
> The good fix would be to let materials be swapped, I don't believe it
> really needs two different functors.
>
> [4] http://bazaar.launchpad.net/~yade-pkg/yade/git-
> trunk/view/head:/pkg/dem/ConcretePM.cpp#L25
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1475844
>
> Title:
>   Swap problem in InteractionLoop
>
> Status in Yade:
>   New
>
> Bug description:
>   When you use two different materials, it might happen that
>   IntreactionLoop ends with error [1]. It is because of IPhys stage (see
>   also the comment in [1], but in reality Ip2 can by non-symmetric).
>
>   Possible solutions:
>   1) define both Ip2_Mat1_Mat2 and Ip2_Mat2_Mat1 (according to [2] maybe
> does not work..)
>   2) replace assert [1] (something like   if (swap) {
> I->functorCase.phys=physDispatcher->getFunctor2D(b2->material,b1->material,swap);
> swap=false }). Is the assert necessary at all?
>   3) make option 1) somehow automatic (using some macro?)
>
>   Pros and cons:
>   1) would mess the source code and documentation a bit, but otherwise I
> think it is ok
>   2) would it have some side effects? Is it ok for Law2 stage? etc etc?
>   3) maybe the best option if the solution is reasonable
>
>   cheers
>   Jan
>
>   [1]
> http://bazaar.launchpad.net/~yade-pkg/yade/git-trunk/view/head:/pkg/common/InteractionLoop.cpp#L116
>   [2] https://answers.launchpad.net/yade/+question/269315
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/yade/+bug/1475844/+subscriptions
>

-- 
You received this bug notification because you are a member of Yade
developers, which is subscribed to Yade.
https://bugs.launchpad.net/bugs/1475844

Title:
  Swap problem in InteractionLoop

Status in Yade:
  New

Bug description:
  When you use two different materials, it might happen that
  IntreactionLoop ends with error [1]. It is because of IPhys stage (see
  also the comment in [1], but in reality Ip2 can by non-symmetric).

  Possible solutions:
  1) define both Ip2_Mat1_Mat2 and Ip2_Mat2_Mat1 (according to [2] maybe does 
not work..)
  2) replace assert [1] (something like   if (swap) { 
I->functorCase.phys=physDispatcher->getFunctor2D(b2->material,b1->material,swap);
 swap=false }). Is the assert necessary at all?
  3) make option 1) somehow automatic (using some macro?)

  Pros and cons:
  1) would mess the source code and documentation a bit, but otherwise I think 
it is ok
  2) would it have some side effects? Is it ok for Law2 stage? etc etc?
  3) maybe the best option if the solution is reasonable

  cheers
  Jan

  [1] 
http://bazaar.launchpad.net/~yade-pkg/yade/git-trunk/view/head:/pkg/common/InteractionLoop.cpp#L116
  [2] https://answers.launchpad.net/yade/+question/269315

To manage notifications about this bug go to:
https://bugs.launchpad.net/yade/+bug/1475844/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : yade-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to