← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-dev/yade/trunk] Rev 2509: Fix bug666246. See https://bugs.launchpad.net/yade/+bug/666246

 

------------------------------------------------------------
revno: 2509
committer: Sergei D. <sega@think>
branch nick: trunk
timestamp: Tue 2010-10-26 00:31:09 +0400
message:
  Fix bug666246. See https://bugs.launchpad.net/yade/+bug/666246
modified:
  pkg/dem/Ig2_Facet_Sphere_ScGeom.cpp
  pkg/dem/ViscoelasticPM.cpp


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

Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-dev/yade/trunk/+edit-subscription
=== modified file 'pkg/dem/Ig2_Facet_Sphere_ScGeom.cpp'
--- pkg/dem/Ig2_Facet_Sphere_ScGeom.cpp	2010-10-16 18:31:17 +0000
+++ pkg/dem/Ig2_Facet_Sphere_ScGeom.cpp	2010-10-25 20:31:09 +0000
@@ -31,7 +31,7 @@
 	Matrix3r facetAxisT=se31.orientation.toRotationMatrix(); 
 	Matrix3r facetAxis = facetAxisT.transpose();
 	// local orientation
-	Vector3r cl = facetAxis*(se32.position - se31.position);  // "contact line" in facet-local coords
+	Vector3r cl = facetAxis*(se32.position + shift2 - se31.position);  // "contact line" in facet-local coords
 
 	//
 	// BEGIN everything in facet-local coordinates
@@ -102,7 +102,7 @@
 			scm = shared_ptr<ScGeom>(new ScGeom());
 	  
 		normal = facetAxisT*normal; // in global orientation
-		scm->contactPoint = se32.position - (sphereRadius-0.5*penetrationDepth)*normal;
+		scm->contactPoint = se32.position + shift2 - (sphereRadius-0.5*penetrationDepth)*normal;
 		scm->penetrationDepth = penetrationDepth;
 		scm->radius1 = 2*sphereRadius;
 		scm->radius2 = sphereRadius;

=== modified file 'pkg/dem/ViscoelasticPM.cpp'
--- pkg/dem/ViscoelasticPM.cpp	2010-10-22 14:30:53 +0000
+++ pkg/dem/ViscoelasticPM.cpp	2010-10-25 20:31:09 +0000
@@ -67,8 +67,10 @@
 	axis = angle*geom.normal;
 	shearForce -= shearForce.cross(axis);
 
-	const Vector3r c1x = (geom.contactPoint - de1.pos);
-	const Vector3r c2x = (geom.contactPoint - de2.pos);
+	//const Vector3r c1x = (geom.contactPoint - de1.pos);
+	//const Vector3r c2x = (geom.contactPoint - de2.pos);
+	const Vector3r c1x = geom.radius1*geom.normal;
+	const Vector3r c2x = -geom.radius2*geom.normal;
 	/// The following definition of c1x and c2x is to avoid "granular ratcheting" 
 	///  (see F. ALONSO-MARROQUIN, R. GARCIA-ROJO, H.J. HERRMANN, 
 	///   "Micro-mechanical investigation of granular ratcheting, in Cyclic Behaviour of Soils and Liquefaction Phenomena",


Follow ups