← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-pkg/yade/git-trunk] Rev 4007: Skip interactions, where one of body isClump

 

------------------------------------------------------------
revno: 4007
committer: Anton Gladky <gladky.anton@xxxxxxxxx>
timestamp: Fri 2014-06-06 21:26:47 +0200
message:
  Skip interactions, where one of body isClump
  
  It caused segmentation fault during intensive adding/removal
  clumps during the simulation.
modified:
  pkg/common/InteractionLoop.cpp


--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk

Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== modified file 'pkg/common/InteractionLoop.cpp'
--- pkg/common/InteractionLoop.cpp	2014-05-23 13:05:19 +0000
+++ pkg/common/InteractionLoop.cpp	2014-06-06 19:26:47 +0000
@@ -70,7 +70,9 @@
 		const shared_ptr<Body>& b2_=Body::byId(I->getId2(),scene);
 
 		if(!b1_ || !b2_){ LOG_DEBUG("Body #"<<(b1_?I->getId2():I->getId1())<<" vanished, erasing intr #"<<I->getId1()<<"+#"<<I->getId2()<<"!"); scene->interactions->requestErase(I); continue; }
-
+    
+    // Skip interaction with clumps
+    if (b1_->isClump() || b2_->isClump()) { continue; }
 		// we know there is no geometry functor already, take the short path
 		if(!I->functorCache.geomExists) { assert(!I->isReal()); continue; }
 		// no interaction geometry for either of bodies; no interaction possible
@@ -107,7 +109,7 @@
 			if(wasReal) scene->interactions->requestErase(I); // fully created interaction without geometry is reset and perhaps erased in the next step
 			continue; // in any case don't care about this one anymore
 		}
-
+		
 		// IPhysDispatcher
 		if(!I->functorCache.phys){
 			I->functorCache.phys=physDispatcher->getFunctor2D(b1->material,b2->material,swap);