← Back to team overview

yade-dev team mailing list archive

[svn] r1462 - eudoxos

 

------------------------------------------------------------------------
r1462 | eudoxos | 2008-08-12 16:20:23 +0200 (wto, 12 sie 2008) | 4 lines
Changed paths:
   M /trunk/extra/Brefcom.cpp
   M /trunk/extra/Brefcom.hpp
   M /trunk/gui/py/PythonUI_rc.py
   M /trunk/pkg/dem/Engine/DeusExMachina/TriaxialCompressionEngine.cpp

1. Fix error with newer ipython coming from the fact that sys.argv wasn't defined in the embedded python env.
2. Fixes in brefcom.
3. stopSimulationLoop in TriaxialCompressionEngine if we enter LIMBO state.

------------------------------------------------------------------------
Index: pkg/dem/Engine/DeusExMachina/TriaxialCompressionEngine.cpp
===================================================================
--- pkg/dem/Engine/DeusExMachina/TriaxialCompressionEngine.cpp	(revision 1461)
+++ pkg/dem/Engine/DeusExMachina/TriaxialCompressionEngine.cpp	(revision 1462)
@@ -216,6 +216,7 @@
 	
 	if ( currentState==STATE_LIMBO )
 	{		
+		Omega::instance().stopSimulationLoop();
 		return;
 	}
 
@@ -233,14 +234,14 @@
 		Real dt = Omega::instance().getTimeStep();
 		
 		if (abs(epsilonMax) > abs(strain[1])) {
-		if ( currentStrainRate != strainRate ) currentStrainRate += ( strainRate-currentStrainRate ) *0.0003; // !!! if unloading (?)
-		//else currentStrainRate = strainRate;
+			if ( currentStrainRate != strainRate ) currentStrainRate += ( strainRate-currentStrainRate ) *0.0003; // !!! if unloading (?)
+			//else currentStrainRate = strainRate;
 
-		/* Move top and bottom wall according to strain rate */
-		PhysicalParameters* p=static_cast<PhysicalParameters*> ( Body::byId ( wall_bottom_id )->physicalParameters.get() );
-		p->se3.position += 0.5*currentStrainRate*height*translationAxis*dt;
-		p = static_cast<PhysicalParameters*> ( Body::byId ( wall_top_id )->physicalParameters.get() );
-		p->se3.position -= 0.5*currentStrainRate*height*translationAxis*dt;
+			/* Move top and bottom wall according to strain rate */
+			PhysicalParameters* p=static_cast<PhysicalParameters*> ( Body::byId ( wall_bottom_id )->physicalParameters.get() );
+			p->se3.position += 0.5*currentStrainRate*height*translationAxis*dt;
+			p = static_cast<PhysicalParameters*> ( Body::byId ( wall_top_id )->physicalParameters.get() );
+			p->se3.position -= 0.5*currentStrainRate*height*translationAxis*dt;
 		} else {
 			Omega::instance().stopSimulationLoop();
 		}
Index: extra/Brefcom.hpp
===================================================================
--- extra/Brefcom.hpp	(revision 1461)
+++ extra/Brefcom.hpp	(revision 1462)
@@ -280,12 +280,12 @@
 class GLDrawBrefcomContact: public GLDrawInteractionPhysicsFunctor {
 	public: virtual void go(const shared_ptr<InteractionPhysics>&,const shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool wireFrame);
 	virtual ~GLDrawBrefcomContact() {};
-	virtual void registerAttributes(){ REGISTER_ATTRIBUTE(contactLine); REGISTER_ATTRIBUTE(dmgLabel); REGISTER_ATTRIBUTE(epsT); REGISTER_ATTRIBUTE(epsTAxes); REGISTER_ATTRIBUTE(normal); REGISTER_ATTRIBUTE(colorStrain); }
+	virtual void registerAttributes(){ REGISTER_ATTRIBUTE(contactLine); REGISTER_ATTRIBUTE(dmgLabel); REGISTER_ATTRIBUTE(epsT); REGISTER_ATTRIBUTE(epsTAxes); REGISTER_ATTRIBUTE(normal); REGISTER_ATTRIBUTE(colorStrain); REGISTER_ATTRIBUTE(epsNLabel);}
 	RENDERS(BrefcomContact);
 	REGISTER_CLASS_NAME(GLDrawBrefcomContact);
 	REGISTER_BASE_CLASS_NAME(GLDrawInteractionPhysicsFunctor);
 	DECLARE_LOGGER;
-	static bool contactLine,dmgLabel,epsT,epsTAxes,normal,colorStrain;
+	static bool contactLine,dmgLabel,epsT,epsTAxes,normal,colorStrain,epsNLabel;
 };
 REGISTER_SERIALIZABLE(GLDrawBrefcomContact,false);
 
Index: extra/Brefcom.cpp
===================================================================
--- extra/Brefcom.cpp	(revision 1461)
+++ extra/Brefcom.cpp	(revision 1462)
@@ -284,6 +284,7 @@
 
 bool GLDrawBrefcomContact::contactLine=true;
 bool GLDrawBrefcomContact::dmgLabel=true;
+bool GLDrawBrefcomContact::epsNLabel=true;
 bool GLDrawBrefcomContact::epsT=false;
 bool GLDrawBrefcomContact::epsTAxes=false;
 bool GLDrawBrefcomContact::normal=false;
@@ -299,9 +300,15 @@
 		glScale(len,radius,radius);
 		glutSolidCube(1);
 	} */
+	Vector3r lineColor(BC->omega,1-BC->omega,0.0); /* damaged links red, undamaged green */
 
-	if(contactLine) Shop::GLDrawLine(b1->physicalParameters->dispSe3.position,b2->physicalParameters->dispSe3.position,Vector3r(BC->omega,1-BC->omega,0.0) /* damaged links red, undamaged green */ );
-	if(dmgLabel){ Shop::GLDrawNum(BC->omega,0.5*(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position),Vector3r(BC->omega,1-BC->omega,0.)); }
+	Real epsTransNegAbs=-max(0.,BC->epsTrans);
+	if(colorStrain) lineColor=Vector3r(min(1.,max(0.,epsTransNegAbs/BC->epsCrackOnset-1)),min(1.,epsTransNegAbs/BC->epsCrackOnset),1);
+
+	if(contactLine) Shop::GLDrawLine(b1->physicalParameters->dispSe3.position,b2->physicalParameters->dispSe3.position);
+	if(dmgLabel){ Shop::GLDrawNum(BC->omega,0.5*(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position),lineColor); }
+	if(epsNLabel){ Shop::GLDrawNum(BC->epsN,0.5*(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position),lineColor); }
+
 	const Vector3r& cp=static_pointer_cast<SpheresContactGeometry>(i->interactionGeometry)->contactPoint;
 	if(epsT){
 		Real maxShear=(BC->undamagedCohesion-BC->sigmaN*BC->tanFrictionAngle)/BC->G;
Index: gui/py/PythonUI_rc.py
===================================================================
--- gui/py/PythonUI_rc.py	(revision 1461)
+++ gui/py/PythonUI_rc.py	(revision 1462)
@@ -42,6 +42,7 @@
 	import time;
 	while True: time.sleep(1)
 else:
+	sys.argv=runtime.args # could be [] as well
 	from IPython.Shell import IPShellEmbed
 	sys.argv=['<embedded python interpreter>']
 	ipshell = IPShellEmbed(banner=r"""__   __    ____          ____                      _