Swap problem in InteractionLoop
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:
- define both Ip2_Mat1_Mat2 and Ip2_Mat2_Mat1 (according to [2] maybe does not work..)
- 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?
- make option 1) somehow automatic (using some macro?)
Pros and cons:
- would mess the source code and documentation a bit, but otherwise I think it is ok
- would it have some side effects? Is it ok for Law2 stage? etc etc?
- 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
Original bug report by Jan Stránský on 2015-07-18 : https://bugs.launchpad.net/yade/+bug/1475844
Edited by Janek Kozicki