← Back to team overview

yade-dev team mailing list archive

[svn] r1920 - in trunk: gui/py pkg/common/Engine/StandAloneEngine pkg/dem/DataClass pkg/dem/Engine/EngineUnit pkg/dem/Engine/StandAloneEngine pkg/dem/PreProcessor pkg/dem/meta pkg/mass-spring/PreProcessor pkg/realtime-rigidbody/PreProcessor pkg/snow/PreProcessor py/tests scripts scripts/test

 

Author: eudoxos
Date: 2009-08-05 10:32:18 +0200 (Wed, 05 Aug 2009)
New Revision: 1920

Modified:
   trunk/gui/py/PythonUI_rc.py
   trunk/pkg/common/Engine/StandAloneEngine/DistantPersistentSAPCollider.cpp
   trunk/pkg/common/Engine/StandAloneEngine/PersistentSAPCollider.cpp
   trunk/pkg/common/Engine/StandAloneEngine/PersistentSAPCollider.hpp
   trunk/pkg/dem/DataClass/Clump.hpp
   trunk/pkg/dem/Engine/EngineUnit/InteractingMyTetrahedron2AABB.hpp
   trunk/pkg/dem/Engine/StandAloneEngine/NewtonsDampedLaw.cpp
   trunk/pkg/dem/PreProcessor/CohesiveTriaxialTest.cpp
   trunk/pkg/dem/PreProcessor/DirectShearCis.cpp
   trunk/pkg/dem/PreProcessor/Funnel.cpp
   trunk/pkg/dem/PreProcessor/MembraneTest.cpp
   trunk/pkg/dem/PreProcessor/ModifiedTriaxialTest.cpp
   trunk/pkg/dem/PreProcessor/SDECImpactTest.cpp
   trunk/pkg/dem/PreProcessor/SDECLinkedSpheres.cpp
   trunk/pkg/dem/PreProcessor/SDECMovingWall.cpp
   trunk/pkg/dem/PreProcessor/SDECSpheresPlane.cpp
   trunk/pkg/dem/PreProcessor/SimpleScene.cpp
   trunk/pkg/dem/PreProcessor/SimpleShear.cpp
   trunk/pkg/dem/PreProcessor/TestSimpleViscoelastic.cpp
   trunk/pkg/dem/PreProcessor/TetrahedronsTest.cpp
   trunk/pkg/dem/PreProcessor/TetrahedronsTest.hpp
   trunk/pkg/dem/PreProcessor/ThreePointBending.cpp
   trunk/pkg/dem/PreProcessor/TriaxialTest.cpp
   trunk/pkg/dem/PreProcessor/TriaxialTestWater.cpp
   trunk/pkg/dem/PreProcessor/UniaxialStrainerGen.cpp
   trunk/pkg/dem/meta/Shop.cpp
   trunk/pkg/mass-spring/PreProcessor/HangingCloth.cpp
   trunk/pkg/realtime-rigidbody/PreProcessor/BoxStack.cpp
   trunk/pkg/realtime-rigidbody/PreProcessor/RotatingBox.cpp
   trunk/pkg/snow/PreProcessor/SnowCreepTest.cpp
   trunk/pkg/snow/PreProcessor/SnowVoxelsLoader.cpp
   trunk/py/tests/__init__.py
   trunk/py/tests/wrapper.py
   trunk/scripts/regression-tests.py
   trunk/scripts/simple-scene.py
   trunk/scripts/test/wm3-wrap.py
Log:
1. Replace PersistentSAPCollider and DistantPersistentSAPCollider by InsertionSortCollider everywhere. The two are still in the sources, but are not compiled. Will be removed in near future. Added to deprecated table in python so that old scripts still work.
2. Add some more regression tests for the python wrapper.
3. Fix timestep in HangingCloth (it does some weird things, can someone check it or just remove mass-spring from the tree?)



Modified: trunk/gui/py/PythonUI_rc.py
===================================================================
--- trunk/gui/py/PythonUI_rc.py	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/gui/py/PythonUI_rc.py	2009-08-05 08:32:18 UTC (rev 1920)
@@ -76,14 +76,15 @@
 	'BrefcomDamageColorizer':'CpmPhysDamageColorizer',
 	'BrefcomGlobalCharacteristics':'CpmGlobalCharacteristics',
 	# renamed back to comply with the c++ name, 4.8.2009
-	'Preprocessor':'FileGenerator'
+	'Preprocessor':'FileGenerator',
+	'PersistentSAPCollider':'InsertionSortCollider',
 }
 
 for oldName in renamed:
 	class warnWrap:
 		def __init__(self,_old,_new): self.old,self.new=_old,_new
 		def __call__(self,*args,**kw):
-			import warnings; warnings.warn("Class `%s' was renamed to `%s', update your code!"%(self.old,self.new),DeprecationWarning,stacklevel=2);
+			import warnings; warnings.warn("Class `%s' was renamed to (or replaced by) `%s', update your code!"%(self.old,self.new),DeprecationWarning,stacklevel=3);
 			return _proxyNamespace[self.new](*args,**kw)
 	_proxyNamespace[oldName]=warnWrap(oldName,renamed[oldName])
 

Modified: trunk/pkg/common/Engine/StandAloneEngine/DistantPersistentSAPCollider.cpp
===================================================================
--- trunk/pkg/common/Engine/StandAloneEngine/DistantPersistentSAPCollider.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/common/Engine/StandAloneEngine/DistantPersistentSAPCollider.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -6,7 +6,9 @@
 *  GNU General Public License v2 or later. See file LICENSE for details. *
 *************************************************************************/
 
-#include "DistantPersistentSAPCollider.hpp"
+YADE_REQUIRE_FEATURE(Say goodbye to this piece of crappy code!)
+
+#include"DistantPersistentSAPCollider.hpp"
 #include<yade/core/Body.hpp>
 #include<yade/core/MetaBody.hpp>
 #include<yade/core/BodyContainer.hpp>
@@ -252,4 +254,4 @@
 	}
 }
 
-YADE_PLUGIN((DistantPersistentSAPCollider));
\ No newline at end of file
+YADE_PLUGIN((DistantPersistentSAPCollider));

Modified: trunk/pkg/common/Engine/StandAloneEngine/PersistentSAPCollider.cpp
===================================================================
--- trunk/pkg/common/Engine/StandAloneEngine/PersistentSAPCollider.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/common/Engine/StandAloneEngine/PersistentSAPCollider.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -8,6 +8,8 @@
 *  GNU General Public License v2 or later. See file LICENSE for details. *
 *************************************************************************/
 
+YADE_REQUIRE_FEATURE(Say goodbye to this piece of crappy code!)
+
 #include"PersistentSAPCollider.hpp"
 #include<yade/core/Body.hpp>
 #include<yade/core/MetaBody.hpp>
@@ -314,4 +316,4 @@
 	}
 }
 
-YADE_PLUGIN((PersistentSAPCollider));
\ No newline at end of file
+YADE_PLUGIN((PersistentSAPCollider));

Modified: trunk/pkg/common/Engine/StandAloneEngine/PersistentSAPCollider.hpp
===================================================================
--- trunk/pkg/common/Engine/StandAloneEngine/PersistentSAPCollider.hpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/common/Engine/StandAloneEngine/PersistentSAPCollider.hpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -8,6 +8,8 @@
 
 #pragma once
 
+#error PersistentSAPCollider is forbidden
+
 #include<yade/core/Collider.hpp>
 #include<yade/core/InteractionContainer.hpp>
 #include <list>

Modified: trunk/pkg/dem/DataClass/Clump.hpp
===================================================================
--- trunk/pkg/dem/DataClass/Clump.hpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/DataClass/Clump.hpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -52,7 +52,7 @@
 
 	@todo GravityEngine should be applied to members, not to clump as such?! Still not sure. Perhaps Clumps should have mass and inertia set to zeros so that engines unaware of clumps do not act on it. It would have some private mass and insertia that would be used in NewtonsForceLaw etc for clumps specially...
 
-	@note PersistentSAPCollider bypass Clumps explicitly. This no longer depends on the absence of boundingVolume.
+	@note Collider::mayCollide (should be used by all colliders) bypasses Clumps explicitly. This no longer depends on the absence of boundingVolume.
 	@note Clump relies on its id being assigned (as well as id of its components); therefore, only bodies that have already been inserted to the container may be added to Clump which has been itself already added to the container. We further requier that clump id is greater than ids of clumped bodies
  
  */

Modified: trunk/pkg/dem/Engine/EngineUnit/InteractingMyTetrahedron2AABB.hpp
===================================================================
--- trunk/pkg/dem/Engine/EngineUnit/InteractingMyTetrahedron2AABB.hpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/Engine/EngineUnit/InteractingMyTetrahedron2AABB.hpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -13,7 +13,7 @@
  * \brief This class exists for the sole purpose of creating AABB
  * (AxisAligneBoundingBox) from class InteractingMyTetrahedron
  *
- * AABB is used by class PersistentSAPCollider to detect possible interaction between two
+ * AABB is used by class InsertionSortCollider to detect possible interaction between two
  * bodies. Once you write this class for your InteractingGeometry, interactions
  * will be automatically detected and created for you.
  *

Modified: trunk/pkg/dem/Engine/StandAloneEngine/NewtonsDampedLaw.cpp
===================================================================
--- trunk/pkg/dem/Engine/StandAloneEngine/NewtonsDampedLaw.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/Engine/StandAloneEngine/NewtonsDampedLaw.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -94,10 +94,13 @@
 			}
 
 			// blocking DOFs
-			if(rb->blockedDOFs==0){ /* same as: rb->blockedDOFs==PhysicalParameters::DOF_NONE */
+			if(rb->blockedDOFs==PhysicalParameters::DOF_NONE){
 				rb->angularVelocity=rb->angularVelocity+dt*rb->angularAcceleration;
 				rb->velocity=rb->velocity+dt*rb->acceleration;
+			} else if(rb->blockedDOFs==PhysicalParameters::DOF_ALL){
+				/* do nothing */
 			} else {
+				// handle more complicated cases here
 				if((rb->blockedDOFs & PhysicalParameters::DOF_X)==0) rb->velocity[0]+=dt*rb->acceleration[0];
 				if((rb->blockedDOFs & PhysicalParameters::DOF_Y)==0) rb->velocity[1]+=dt*rb->acceleration[1];
 				if((rb->blockedDOFs & PhysicalParameters::DOF_Z)==0) rb->velocity[2]+=dt*rb->acceleration[2];

Modified: trunk/pkg/dem/PreProcessor/CohesiveTriaxialTest.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/CohesiveTriaxialTest.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/CohesiveTriaxialTest.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -30,7 +30,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/DistantPersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -590,7 +590,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 //	rootBody->engines.push_back(sdecTimeStepper);	
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new DistantPersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(cohesiveFrictionalContactLaw);
@@ -697,4 +697,4 @@
 
 
 
-YADE_PLUGIN((CohesiveTriaxialTest));
\ No newline at end of file
+YADE_PLUGIN((CohesiveTriaxialTest));

Modified: trunk/pkg/dem/PreProcessor/DirectShearCis.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/DirectShearCis.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/DirectShearCis.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -31,7 +31,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -319,7 +319,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(sdecTimeStepper);
 	rootBody->engines.push_back(boundingVolumeDispatcher);	
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(shared_ptr<Engine>(new ElasticContactLaw));

Modified: trunk/pkg/dem/PreProcessor/Funnel.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/Funnel.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/Funnel.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -18,7 +18,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -275,7 +275,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(sdecTimeStepper);
 	rootBody->engines.push_back(boundingVolumeDispatcher);	
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(shared_ptr<Engine>(new ElasticContactLaw));
@@ -316,4 +316,4 @@
 }
 
 
-YADE_PLUGIN((Funnel));
\ No newline at end of file
+YADE_PLUGIN((Funnel));

Modified: trunk/pkg/dem/PreProcessor/MembraneTest.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/MembraneTest.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/MembraneTest.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -27,7 +27,7 @@
 
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 
@@ -310,7 +310,7 @@
 	rootBody->engines.clear();
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(boundingVolumeDispatcher);	
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
         rootBody->engines.push_back(constitutiveLaw);
@@ -352,4 +352,4 @@
 
 
 
-YADE_PLUGIN((MembraneTest));
\ No newline at end of file
+YADE_PLUGIN((MembraneTest));

Modified: trunk/pkg/dem/PreProcessor/ModifiedTriaxialTest.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/ModifiedTriaxialTest.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/ModifiedTriaxialTest.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -32,7 +32,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -583,7 +583,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 //	rootBody->engines.push_back(sdecTimeStepper);	
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(elasticContactLaw);
@@ -691,4 +691,4 @@
 
 
 
-YADE_PLUGIN((ModifiedTriaxialTest));
\ No newline at end of file
+YADE_PLUGIN((ModifiedTriaxialTest));

Modified: trunk/pkg/dem/PreProcessor/SDECImpactTest.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/SDECImpactTest.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/SDECImpactTest.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -24,7 +24,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -449,7 +449,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(sdecTimeStepper);
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(elasticContactLaw);
@@ -494,4 +494,4 @@
 	
 }
 
-YADE_PLUGIN((SDECImpactTest));
\ No newline at end of file
+YADE_PLUGIN((SDECImpactTest));

Modified: trunk/pkg/dem/PreProcessor/SDECLinkedSpheres.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/SDECLinkedSpheres.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/SDECLinkedSpheres.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -28,7 +28,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -326,7 +326,7 @@
 	rootBody->engines.push_back(sdecTimeStepper);
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(constitutiveLaw);
@@ -367,4 +367,4 @@
 	
 }
 
-YADE_PLUGIN((SDECLinkedSpheres));
\ No newline at end of file
+YADE_PLUGIN((SDECLinkedSpheres));

Modified: trunk/pkg/dem/PreProcessor/SDECMovingWall.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/SDECMovingWall.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/SDECMovingWall.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -21,7 +21,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -348,7 +348,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(sdecTimeStepper);
 	rootBody->engines.push_back(boundingVolumeDispatcher);	
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(shared_ptr<Engine>(new ElasticContactLaw));
@@ -395,4 +395,4 @@
 }
 
 
-YADE_PLUGIN((SDECMovingWall));
\ No newline at end of file
+YADE_PLUGIN((SDECMovingWall));

Modified: trunk/pkg/dem/PreProcessor/SDECSpheresPlane.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/SDECSpheresPlane.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/SDECSpheresPlane.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -22,7 +22,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -327,7 +327,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(sdecTimeStepper);
 	rootBody->engines.push_back(boundingVolumeDispatcher);	
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(shared_ptr<Engine>(new ElasticContactLaw));
@@ -372,4 +372,4 @@
 }
 
 
-YADE_PLUGIN((SDECSpheresPlane));
\ No newline at end of file
+YADE_PLUGIN((SDECSpheresPlane));

Modified: trunk/pkg/dem/PreProcessor/SimpleScene.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/SimpleScene.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/SimpleScene.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -29,7 +29,7 @@
 #include<yade/pkg-dem/ElasticContactLaw.hpp>
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
 #include<yade/pkg-dem/SimpleElasticRelationships.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 
 
 
@@ -56,7 +56,7 @@
 		// use boundingVolumeDispatcher that we defined above
 		rootBody->engines.push_back(boundingVolumeDispatcher);
 		//@
-		shared_ptr<PersistentSAPCollider> collider(new PersistentSAPCollider);
+		shared_ptr<InsertionSortCollider> collider(new InsertionSortCollider);
 			rootBody->engines.push_back(collider);
 		//@
 		shared_ptr<InteractionGeometryMetaEngine> igeomDispatcher(new InteractionGeometryMetaEngine);

Modified: trunk/pkg/dem/PreProcessor/SimpleShear.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/SimpleShear.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/SimpleShear.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -30,7 +30,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -301,7 +301,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(globalStiffnessTimeStepper);
 	rootBody->engines.push_back(boundingVolumeDispatcher);	
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(shared_ptr<Engine>(new ContactLaw1));

Modified: trunk/pkg/dem/PreProcessor/TestSimpleViscoelastic.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/TestSimpleViscoelastic.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/TestSimpleViscoelastic.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -21,7 +21,7 @@
 #include<yade/pkg-common/InteractionPhysicsMetaEngine.hpp>
 #include<yade/pkg-common/MetaInteractingGeometry.hpp>
 #include<yade/pkg-common/MetaInteractingGeometry2AABB.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/pkg-common/PhysicalActionApplier.hpp>
 #include<yade/pkg-common/PhysicalActionContainerReseter.hpp>
 #include<yade/pkg-common/PhysicalParametersMetaEngine.hpp>
@@ -166,7 +166,7 @@
     rootBody->engines.clear();
     rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
     rootBody->engines.push_back(boundingVolumeDispatcher);	
-    rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+    rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
     rootBody->engines.push_back(interactionGeometryDispatcher);
     rootBody->engines.push_back(interactionPhysicsDispatcher);
     rootBody->engines.push_back(constitutiveLaw);

Modified: trunk/pkg/dem/PreProcessor/TetrahedronsTest.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/TetrahedronsTest.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/TetrahedronsTest.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -20,7 +20,7 @@
 #include<yade/pkg-common/Box.hpp>
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 
@@ -344,7 +344,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	//rootBody->engines.push_back(sdecTimeStepper);
 	rootBody->engines.push_back(boundingVolumeDispatcher);	
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(shared_ptr<Engine>(new MyTetrahedronLaw));
@@ -394,4 +394,4 @@
 	tet->v[3]=size*(Mathr::UnitRandom()*0.7+1.0)*Vector3r(0.16,0.93,-0.33);
 }
 
-YADE_PLUGIN((TetrahedronsTest));
\ No newline at end of file
+YADE_PLUGIN((TetrahedronsTest));

Modified: trunk/pkg/dem/PreProcessor/TetrahedronsTest.hpp
===================================================================
--- trunk/pkg/dem/PreProcessor/TetrahedronsTest.hpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/TetrahedronsTest.hpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -24,7 +24,7 @@
  *  - with class InteractingMyTetrahedron2AABB registered in TetrahedronsTest inside an MetaEngine called
  *     boundigVolumeDispatcher yade will automatically create AABB from InteractingMyTetrahedron
  *
- *  - with AABB available, the PersistentSAPCollider will be able to detect that two bodies are interacting
+ *  - with AABB available, the InsertionSortCollider will be able to detect that two bodies are interacting
  *
  *  - if interaction is detected, an appropriate EngineUnit will be called, in
  *    this small example I have just two of them:

Modified: trunk/pkg/dem/PreProcessor/ThreePointBending.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/ThreePointBending.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/ThreePointBending.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -26,7 +26,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -313,7 +313,7 @@
 	rootBody->engines.push_back(sdecTimeStepper);
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(constitutiveLaw);
@@ -354,4 +354,4 @@
 	
 }
 
-YADE_PLUGIN((ThreePointBending));
\ No newline at end of file
+YADE_PLUGIN((ThreePointBending));

Modified: trunk/pkg/dem/PreProcessor/TriaxialTest.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/TriaxialTest.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/TriaxialTest.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -30,8 +30,8 @@
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/pkg-common/Facet.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
 #include<yade/pkg-common/InsertionSortCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -694,4 +694,4 @@
 
 
 
-YADE_PLUGIN((TriaxialTest));
\ No newline at end of file
+YADE_PLUGIN((TriaxialTest));

Modified: trunk/pkg/dem/PreProcessor/TriaxialTestWater.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/TriaxialTestWater.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/TriaxialTestWater.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -36,7 +36,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -563,7 +563,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 //	rootBody->engines.push_back(sdecTimeStepper);	
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(elasticContactLaw);
@@ -682,4 +682,4 @@
 
 
 
-YADE_PLUGIN((TriaxialTestWater));
\ No newline at end of file
+YADE_PLUGIN((TriaxialTestWater));

Modified: trunk/pkg/dem/PreProcessor/UniaxialStrainerGen.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/UniaxialStrainerGen.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/PreProcessor/UniaxialStrainerGen.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -16,7 +16,7 @@
 #include<yade/pkg-common/InteractionPhysicsMetaEngine.hpp>
 #include<yade/pkg-common/PhysicalActionApplier.hpp>
 #include<yade/pkg-common/PhysicalParametersMetaEngine.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/pkg-common/ConstitutiveLawDispatcher.hpp>
 #include<yade/pkg-dem/NewtonsDampedLaw.hpp>
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
@@ -95,8 +95,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(boundingVolumeDispatcher);
 
-	shared_ptr<PersistentSAPCollider> collider(new PersistentSAPCollider);
-		collider->haveDistantTransient=true;
+	shared_ptr<InsertionSortCollider> collider(new InsertionSortCollider);
 		rootBody->engines.push_back(collider);
 
 	shared_ptr<InteractionGeometryMetaEngine> igeomDispatcher(new InteractionGeometryMetaEngine);

Modified: trunk/pkg/dem/meta/Shop.cpp
===================================================================
--- trunk/pkg/dem/meta/Shop.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/dem/meta/Shop.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -14,7 +14,7 @@
 #include<yade/pkg-common/Box.hpp>
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 
 #include<yade/pkg-common/InteractingBox.hpp>
 #include<yade/pkg-common/InteractingSphere.hpp>
@@ -221,7 +221,7 @@
 
 	rootBody->engines.push_back(boundingVolumeDispatcher);
 
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 
 	shared_ptr<InteractionGeometryMetaEngine> interactionGeometryDispatcher(new InteractionGeometryMetaEngine);
 	interactionGeometryDispatcher->add(new InteractingSphere2InteractingSphere4SpheresContactGeometry);

Modified: trunk/pkg/mass-spring/PreProcessor/HangingCloth.cpp
===================================================================
--- trunk/pkg/mass-spring/PreProcessor/HangingCloth.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/mass-spring/PreProcessor/HangingCloth.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -23,7 +23,7 @@
 #include<yade/pkg-common/InteractingBox.hpp>
 #include<yade/core/MetaBody.hpp>
 //#include<yade/pkg-common/FrictionLessElasticContactLaw.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 //#include<yade/pkg-common/MassSpringBody2RigidBodyLaw.hpp>
 
 #include<yade/lib-serialization/IOFormatManager.hpp>
@@ -157,7 +157,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(boundingVolumeDispatcher);
 	rootBody->engines.push_back(geometricalModelDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(explicitMassSpringConstitutiveLaw);
@@ -181,6 +181,7 @@
 	physics2->se3		= Se3r(Vector3r(0,0,0),q);
 
 	rootBody->isDynamic	= false;
+	rootBody->dt=1e-2;
 
 	shared_ptr<MetaInteractingGeometry> set(new MetaInteractingGeometry());
 	set->diffuseColor	= Vector3r(0,0,1);
@@ -505,4 +506,4 @@
 	body->physicalParameters	= physics;
 }
 
-YADE_PLUGIN((HangingCloth));
\ No newline at end of file
+YADE_PLUGIN((HangingCloth));

Modified: trunk/pkg/realtime-rigidbody/PreProcessor/BoxStack.cpp
===================================================================
--- trunk/pkg/realtime-rigidbody/PreProcessor/BoxStack.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/realtime-rigidbody/PreProcessor/BoxStack.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -16,7 +16,7 @@
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
 #include<yade/core/Body.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/pkg-common/RigidBodyParameters.hpp>
 #include<yade/pkg-common/TranslationEngine.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
@@ -258,7 +258,7 @@
 	rootBody->engines.clear();
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(shared_ptr<Engine>(new FrictionLessElasticContactLaw));
 	rootBody->engines.push_back(gravityCondition);
@@ -296,4 +296,4 @@
 	rootBody->physicalParameters 		= physics;
 }
 
-YADE_PLUGIN((BoxStack));
\ No newline at end of file
+YADE_PLUGIN((BoxStack));

Modified: trunk/pkg/realtime-rigidbody/PreProcessor/RotatingBox.cpp
===================================================================
--- trunk/pkg/realtime-rigidbody/PreProcessor/RotatingBox.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/realtime-rigidbody/PreProcessor/RotatingBox.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -14,7 +14,7 @@
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
 #include<yade/core/Body.hpp>
-#include<yade/pkg-common/PersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/pkg-common/RigidBodyParameters.hpp>
 #include<yade/pkg-common/RotationEngine.hpp>
 
@@ -278,7 +278,7 @@
 	rootBody->engines.clear();
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(shared_ptr<Engine>(new FrictionLessElasticContactLaw));
 	rootBody->engines.push_back(gravityCondition);
@@ -317,4 +317,4 @@
 }
 
 
-YADE_PLUGIN((RotatingBox));
\ No newline at end of file
+YADE_PLUGIN((RotatingBox));

Modified: trunk/pkg/snow/PreProcessor/SnowCreepTest.cpp
===================================================================
--- trunk/pkg/snow/PreProcessor/SnowCreepTest.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/snow/PreProcessor/SnowCreepTest.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -30,7 +30,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/DistantPersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -602,7 +602,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 //	rootBody->engines.push_back(sdecTimeStepper);	
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new DistantPersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(cohesiveFrictionalContactLaw);
@@ -709,4 +709,4 @@
 
 
 
-YADE_PLUGIN((SnowCreepTest));
\ No newline at end of file
+YADE_PLUGIN((SnowCreepTest));

Modified: trunk/pkg/snow/PreProcessor/SnowVoxelsLoader.cpp
===================================================================
--- trunk/pkg/snow/PreProcessor/SnowVoxelsLoader.cpp	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/pkg/snow/PreProcessor/SnowVoxelsLoader.cpp	2009-08-05 08:32:18 UTC (rev 1920)
@@ -23,7 +23,7 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/DistantPersistentSAPCollider.hpp>
+#include<yade/pkg-common/InsertionSortCollider.hpp>
 #include<yade/lib-serialization/IOFormatManager.hpp>
 #include<yade/core/Interaction.hpp>
 #include<yade/pkg-common/BoundingVolumeMetaEngine.hpp>
@@ -474,7 +474,7 @@
 	rootBody->engines.push_back(shared_ptr<Engine>(new PhysicalActionContainerReseter));
 //	rootBody->engines.push_back(sdecTimeStepper);	
 	rootBody->engines.push_back(boundingVolumeDispatcher);
-	rootBody->engines.push_back(shared_ptr<Engine>(new DistantPersistentSAPCollider));
+	rootBody->engines.push_back(shared_ptr<Engine>(new InsertionSortCollider));
 	rootBody->engines.push_back(interactionGeometryDispatcher);
 	rootBody->engines.push_back(interactionPhysicsDispatcher);
 	rootBody->engines.push_back(cohesiveFrictionalContactLaw);

Modified: trunk/py/tests/__init__.py
===================================================================
--- trunk/py/tests/__init__.py	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/py/tests/__init__.py	2009-08-05 08:32:18 UTC (rev 1920)
@@ -1 +1,26 @@
-# python knows by this file that this directory is an importable module
+import unittest 
+
+# add any new test suites to the list here, so that they are picked up by testAll
+allTests=['wrapper',]
+
+# fully qualified module names
+allTestsFQ=['yade.tests.'+test for test in allTests]
+
+def testModule(module):
+	"""Run all tests defined in the module specified, return TestResult object 
+	(http://www.python.org/doc/2.6/lib/unittest.html#testresult-objects.html)
+	for further processing.
+
+	@param module: fully-qualified module name, e.g. yade.tests.wrapper
+	"""
+	suite=unittest.defaultTestLoader().loadTestsFromName(module)
+	return unittest.TextTestRunner(verbosity=2).run(suite)
+
+def testAll():
+	"""Run all tests defined in all yade.tests.* modules and return
+	TestResult object for further examination."""
+	suite=unittest.defaultTestLoader.loadTestsFromNames(allTestsFQ)
+	return unittest.TextTestRunner(verbosity=2).run(suite)
+
+	
+

Modified: trunk/py/tests/wrapper.py
===================================================================
--- trunk/py/tests/wrapper.py	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/py/tests/wrapper.py	2009-08-05 08:32:18 UTC (rev 1920)
@@ -1,6 +1,14 @@
 import unittest
 from yade.wrapper import *
+from miniWm3Wrap import *
+from yade._customConverters import *
+from math import *
 
+"""
+This test module covers python/c++ transitions, for both classes deriving from Serializable,
+but also for other classes that we wrap (like Wm3).
+"""
+
 # copied from PythonUI_rc, should be in some common place (utils? runtime?)
 def listChildClassesRecursive(base):
 	ret=set(O.childClasses(base)); ret2=set()
@@ -54,14 +62,64 @@
 		self.assert_(id.physDispatcher.functors[0].name=='SimpleElasticRelationships')
 		self.assert_(id.constLawDispatcher.functors[0].name=='Law2_Dem3Dof_Elastic_Elastic')
 	def testParallelEngineCtor(self):
-		pass
-	## test what shold fail:
-	## passing wrong EngineUnit type to a dispatcher
-	## reading/writing non-existent attribute
-
-def run():
-	suite=unittest.TestLoader().loadTestsFromTestCase(TestObjectInstantiation)
-	unittest.TextTestRunner(verbosity=2).run(suite)
+		pe=ParallelEngine([InsertionSortCollider(),[BoundingVolumeMetaEngine(),BexResetter()]])
+		self.assert_(pe.slaves[0].name=='InsertionSortCollider')
+		self.assert_(len(pe.slaves[1])==2)
+		pe.slaves=[]
+		self.assert_(len(pe.slaves)==0)
+	##		
+	## testing incorrect operations that should raise exceptions
+	##
+	def testWrongFunctorType(self):
+		# dispatchers accept only correct functors
+		self.assertRaises(TypeError,lambda: ConstitutiveLawDispatcher([InteractingSphere2AABB()]))
+	def testInvalidAttr(self):
+		# accessing invalid attributes raises KeyError
+		self.assertRaises(KeyError,lambda: Sphere(attributeThatDoesntExist=42))
+		self.assertRaises(KeyError,lambda: Sphere()['attributeThatDoesntExist'])
 	
-
+class TestWm3Wrapper(unittest.TestCase):
+	def assertVQAlmostEqual(self,v1,v2):
+		"floating-point comparison of vectors/quaterions"
+		self.assertEqual(len(v1),len(v2));
+		for i in range(len(v1)): self.assertAlmostEqual(v1[i],v2[i],msg='Component '+str(i)+' of '+str(v1)+' and '+str(v2))
+	def testVector2(self):
+		v=Vector2(1,2); v2=Vector2(3,4)
+		self.assert_(v+v2==Vector2(4,6))
+		self.assert_(Vector2.UNIT_X.Dot(Vector2.UNIT_Y)==0)
+		self.assert_(Vector2.ZERO.Length()==0)
+	def testVector3(self):
+		v=Vector3(3,4,5); v2=Vector3(3,4,5)
+		self.assert_(v[0]==3 and v[1]==4 and v[2]==5)
+		self.assert_(v.SquaredLength()==50)
+		self.assert_(v==(3,4,5)) # comparison with list/tuple
+		self.assert_(v==[3,4,5])
+		self.assert_(v==v2)
+		x,y,z,one=Vector3.UNIT_X,Vector3.UNIT_Y,Vector3.UNIT_Z,Vector3.ONE
+		self.assert_(x+y+z==one)
+		self.assert_(x.Dot(y)==0)
+		self.assert_(x.Cross(y)==z)
+	def testQuaternion(self):
+		# construction
+		q1=Quaternion((0,0,1),pi/2)
+		q2=Quaternion(Vector3(0,0,1),pi/2)
+		q1==q2
+		x,y,z,one=Vector3.UNIT_X,Vector3.UNIT_Y,Vector3.UNIT_Z,Vector3.ONE
+		self.assertVQAlmostEqual(q1*x,y)
+		self.assertVQAlmostEqual(q1*q1*x,-x)
+		self.assertVQAlmostEqual(q1*q1.Conjugate(),Quaternion.IDENTITY)
+		self.assertVQAlmostEqual(q1.ToAxisAngle()[0],(0,0,1))
+		self.assertAlmostEqual(q1.ToAxisAngle()[1],pi/2)
+	# not really wm3 thing, but closely related
+	def testSe3Conversion(self):
+		pp=PhysicalParameters()
+		pp['se3']=(Vector3.ZERO,Quaternion.IDENTITY)
+		self.assert_(pp['se3'][0]==Vector3.ZERO)
+		self.assert_(pp['se3'][1]==Quaternion.IDENTITY)
+		pp['se3']=((1,2,3),Quaternion((1,1,1),pi/4))
+		self.assert_(pp['se3'][0]==(1,2,3))
+		self.assert_(pp['se3'][0]==pp.pos)
+		self.assert_(pp['se3'][1]==Quaternion((1,1,1),pi/4))
+		self.assert_(pp['se3'][1]==pp.ori)
 		
+	

Modified: trunk/scripts/regression-tests.py
===================================================================
--- trunk/scripts/regression-tests.py	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/scripts/regression-tests.py	2009-08-05 08:32:18 UTC (rev 1920)
@@ -1,4 +1,11 @@
-# Run regression tests
-# All of them should be enumerated here, so that we can run them at once.
-from yade.tests import wrapper # add module2,module3 as they become available
-wrapper.run()
+"""
+Run all defined regression tests, then exit.
+Exit status is 0 on success and nonzero on failure.
+"""
+import yade.tests
+result=yade.tests.testAll()
+if result.wasSuccessful():
+	print "*** ALL TESTS PASSED ***"
+else:
+	print "********************** SOME TESTS FAILED ************************"
+sys.exit(0 if result.wasSuccessful() else 1)

Modified: trunk/scripts/simple-scene.py
===================================================================
--- trunk/scripts/simple-scene.py	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/scripts/simple-scene.py	2009-08-05 08:32:18 UTC (rev 1920)
@@ -31,7 +31,7 @@
 	]),
 	## Using bounding boxes created by the previous engine, find possible body collisions.
 	## These possible collisions are inserted in Omega.interactions container (MetaBody::transientInteractions in c++).
-	PersistentSAPCollider(),
+	InsertionSortCollider(),
 	## Decide whether the potential collisions are real; if so, create geometry information about each potential collision.
 	## Here, the decision about which EngineUnit to use depends on types of _both_ bodies.
 	## Note that there is no EngineUnit for box-box collision. They are not implemented.

Modified: trunk/scripts/test/wm3-wrap.py
===================================================================
--- trunk/scripts/test/wm3-wrap.py	2009-08-04 18:12:39 UTC (rev 1919)
+++ trunk/scripts/test/wm3-wrap.py	2009-08-05 08:32:18 UTC (rev 1920)
@@ -6,8 +6,8 @@
 tuple(x2)
 # operations and operators
 x+y+z==one
-x.Dot(y)==z
-x.Cross(y)==0
+x.Dot(y)==0
+x.Cross(y)==z
 # methods
 one.Length()