← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-dev/yade/trunk] Rev 2319: - Add definition of work input from boundaries (resp. macro strain) in TriaxialStressController (...

 

------------------------------------------------------------
revno: 2319
committer: bchareyre <bchareyre@dt-rv020>
branch nick: trunk
timestamp: Mon 2010-07-05 15:38:12 +0200
message:
  - Add definition of work input from boundaries (resp. macro strain) in TriaxialStressController (resp. PeriTriaxController). 
modified:
  pkg/dem/Engine/GlobalEngine/PeriIsoCompressor.cpp
  pkg/dem/Engine/GlobalEngine/PeriIsoCompressor.hpp
  pkg/dem/Engine/PartialEngine/TriaxialStressController.cpp
  pkg/dem/Engine/PartialEngine/TriaxialStressController.hpp


--
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/Engine/GlobalEngine/PeriIsoCompressor.cpp'
--- pkg/dem/Engine/GlobalEngine/PeriIsoCompressor.cpp	2010-06-29 14:32:03 +0000
+++ pkg/dem/Engine/GlobalEngine/PeriIsoCompressor.cpp	2010-07-05 13:38:12 +0000
@@ -232,6 +232,8 @@
 		//-bogusPoisson*(cellGrow[ax1]/refSize[ax1])*(stiff[ax1]/cellArea[ax1])-bogusPoisson*(cellGrow[ax2]/refSize[ax2])*(stiff[ax2]/cellArea[ax2]);
 	}
  	for (int k=0;k<3;k++) strainRate[k]=scene->cell->velGrad(k,k);
+	//Update energy input
+	externalWork+=(scene->cell->velGrad*stressTensor).trace()*scene->dt*scene->cell->Hsize.determinant();
 	prevGrow = strainRate;
 	
 	if(allOk){

=== modified file 'pkg/dem/Engine/GlobalEngine/PeriIsoCompressor.hpp'
--- pkg/dem/Engine/GlobalEngine/PeriIsoCompressor.hpp	2010-06-29 14:32:03 +0000
+++ pkg/dem/Engine/GlobalEngine/PeriIsoCompressor.hpp	2010-07-05 13:38:12 +0000
@@ -67,6 +67,7 @@
 		((Real,currUnbalanced,NaN,"current unbalanced force (updated every globUpdate) |yupdate|"))
 		((Vector3r,prevGrow,Vector3r::Zero(),"previous cell grow"))
 		((Real,mass,NaN,"mass of the cell (user set)"))
+		((Real,externalWork,0,"Work input from boundary controller."))
 	);
 	DECLARE_LOGGER;
 };

=== modified file 'pkg/dem/Engine/PartialEngine/TriaxialStressController.cpp'
--- pkg/dem/Engine/PartialEngine/TriaxialStressController.cpp	2010-07-05 08:50:05 +0000
+++ pkg/dem/Engine/PartialEngine/TriaxialStressController.cpp	2010-07-05 13:38:12 +0000
@@ -62,6 +62,7 @@
 	}
 	previousTranslation[wall] = (1-wallDamping)*translation*normal[wall] + 0.8*previousTranslation[wall];// formula for "steady-flow" evolution with fluctuations
 	p->se3.position += previousTranslation[wall];
+	externalWork += previousTranslation[wall].dot(getForce(scene,wall_id[wall]));
 	// this is important is using VelocityBins. Otherwise the motion is never detected. Related to https://bugs.launchpad.net/yade/+bug/398089
 	p->vel=previousTranslation[wall]/scene->dt;
 	//if(log)TRVAR2(previousTranslation,p->se3.position);

=== modified file 'pkg/dem/Engine/PartialEngine/TriaxialStressController.hpp'
--- pkg/dem/Engine/PartialEngine/TriaxialStressController.hpp	2010-07-05 08:50:05 +0000
+++ pkg/dem/Engine/PartialEngine/TriaxialStressController.hpp	2010-07-05 13:38:12 +0000
@@ -99,10 +99,10 @@
 		((Real,height0,0,""))
 		((Real,width0,0,""))
 		((Real,depth0,0,""))		
-		((Real,sigma_iso,0,"applied confining stress (see :yref:`TriaxialStressController::isAxisymetric`)"))
-		((Real,sigma1,0,"applied stress on axis 1 (overriden if :yref:`TriaxialStressController::isAxisymetric`)"))
-		((Real,sigma2,0,"applied stress on axis 2 (overriden if :yref:`TriaxialStressController::isAxisymetric`)"))
-		((Real,sigma3,0,"applied stress on axis 3 (overriden if :yref:`TriaxialStressController::isAxisymetric`)"))
+		((Real,sigma_iso,0,"prescribed confining stress (see :yref:`TriaxialStressController::isAxisymetric`)"))
+		((Real,sigma1,0,"prescribed stress on axis 1 (see :yref:`TriaxialStressController::isAxisymetric`)"))
+		((Real,sigma2,0,"prescribed stress on axis 2 (see :yref:`TriaxialStressController::isAxisymetric`)"))
+		((Real,sigma3,0,"prescribed stress on axis 3 (see :yref:`TriaxialStressController::isAxisymetric`)"))
 		((bool,isAxisymetric,true,"if true, sigma_iso is assigned to sigma1, 2 and 3 (applies at each iteration and overrides user-set values of s1,2,3)"))
 		((Real,maxMultiplier,1.001,"max multiplier of diameters during internal compaction (initial fast increase - :yref:`TriaxialStressController::finalMaxMultiplier` is used in a second stage)"))
 		((Real,finalMaxMultiplier,1.00001,"max multiplier of diameters during internal compaction (secondary precise adjustment - :yref:`TriaxialStressController::maxMultiplier` is used in the initial stage)"))	
@@ -112,6 +112,7 @@
 		((bool,internalCompaction,true,"Switch between 'external' (walls) and 'internal' (growth of particles) compaction."))
 		((Real,meanStress,0,"Mean stress in the packing."))
 		((Real,volumetricStrain,0,"Volumetric strain (see :yref:`TriaxialStressController::strain`)."))
+		((Real,externalWork,0,"Energy provided by boundaries."))
  		,
 		/* extra initializers */
 		,