yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #05064
[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 */
,