yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #11753
[Branch ~yade-pkg/yade/git-trunk] Rev 3554: TSC engine: internal compaction now may consider isotropic tensile cases. See http://www.mail-arc...
------------------------------------------------------------
revno: 3554
committer: jduriez <jerome.duriez@xxxxxxxxxxx>
timestamp: Thu 2014-12-04 17:09:17 -0700
message:
TSC engine: internal compaction now may consider isotropic tensile cases. See http://www.mail-archive.com/yade-dev@xxxxxxxxxxxxxxxxxxx/msg11047.html
modified:
pkg/dem/TriaxialStressController.cpp
--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk
Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== modified file 'pkg/dem/TriaxialStressController.cpp'
--- pkg/dem/TriaxialStressController.cpp 2014-11-18 19:46:27 +0000
+++ pkg/dem/TriaxialStressController.cpp 2014-12-05 00:09:17 +0000
@@ -200,14 +200,17 @@
{
p_bottom->vel=Vector3r::Zero(); p_top->vel=Vector3r::Zero(); p_left->vel=Vector3r::Zero(); p_right->vel=Vector3r::Zero(); p_back->vel=Vector3r::Zero(); p_front->vel=Vector3r::Zero();
if (isARadiusControlIteration) {
- Real sigma_iso_ = std::abs( bool(stressMask & 1)*goal1 + bool(stressMask & 2)*goal2 + bool(stressMask & 4)*goal3 );
+ Real sigma_iso_ = bool(stressMask & 1)*goal1 + bool(stressMask & 2)*goal2 + bool(stressMask & 4)*goal3;
sigma_iso_ /= bool(stressMask & 1) + bool(stressMask & 2) + bool(stressMask & 4);
- if (sigma_iso_<=std::abs(meanStress)) maxMultiplier = finalMaxMultiplier;
+ if (std::abs(sigma_iso_)<=std::abs(meanStress)) maxMultiplier = finalMaxMultiplier;
if (meanStress==0) previousMultiplier = maxMultiplier;
else {
// previousMultiplier = 1+0.7*(sigma_iso-s)*(previousMultiplier-1.f)/(s-previousStress); // = (Dsigma/apparentModulus)*0.7
// previousMultiplier = std::max(2-maxMultiplier, std::min(previousMultiplier, maxMultiplier));
- previousMultiplier = 1.+(sigma_iso_-std::abs(meanStress))/sigma_iso_*(maxMultiplier-1.); // = (Dsigma/apparentModulus)*0.7
+ if (sigma_iso_ < 0) // compressive case: we have to increase radii if meanStress > sigma_iso_, considering that sigma_iso_ < 0. We end with the same expression as before sign change
+ previousMultiplier = 1.+(sigma_iso_-meanStress)/sigma_iso_*(maxMultiplier-1.); // = (Dsigma/apparentModulus)*0.7
+ else // tensile case: we have to increase radii if meanStress > sigma_iso_ too. But here sigma_iso_ > 0 => another expression
+ previousMultiplier = 1.+(meanStress-sigma_iso_)/sigma_iso_*(maxMultiplier-1.); // = (Dsigma/apparentModulus)*0.7
}
previousStress = meanStress;
//Real apparentModulus = (s-previousStress)/(previousMultiplier-1.f);