yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #01172
[svn] r1734 - trunk/extra
Author: eudoxos
Date: 2009-03-29 03:57:12 +0200 (Sun, 29 Mar 2009)
New Revision: 1734
Modified:
trunk/extra/Brefcom.cpp
trunk/extra/Brefcom.hpp
Log:
1. Rate-dependent fixes (more to come) in brefcom.
Modified: trunk/extra/Brefcom.cpp
===================================================================
--- trunk/extra/Brefcom.cpp 2009-03-27 08:59:17 UTC (rev 1733)
+++ trunk/extra/Brefcom.cpp 2009-03-29 01:57:12 UTC (rev 1734)
@@ -161,15 +161,16 @@
}
Real BrefcomContact::computeDmgOverstress(Real epsN, Real dt){
- if(kappaD>=epsN*omega){ // unloading, no viscous stress
- kappaD=epsN*omega;
+ if(dmgStrain>=dmgStrain*omega){ // unloading, no viscous stress
+ LOG_DEBUG("Unloading, no viscous overstress");
return 0.0;
}
- Real c=epsCrackOnset*(1-omega)*pow(dmgTau/dt,dmgRateExp)*pow(epsN*omega-kappaD,dmgRateExp-1.);
+ Real c=epsCrackOnset*(1-omega)*pow(dmgTau/dt,dmgRateExp)*pow(epsN*omega-dmgStrain,dmgRateExp-1.);
Real beta=solveBeta(c,dmgRateExp);
- Real deltaDmgStrain=(epsN*omega-kappaD)*exp(beta);
- kappaD+=deltaDmgStrain;
- return (epsN*omega-kappaD)*E;
+ Real deltaDmgStrain=(epsN*omega-dmgStrain)*exp(beta);
+ dmgStrain+=deltaDmgStrain;
+ LOG_DEBUG("deltaDmgStrain="<<deltaDmgStrain<<", viscous overstress "<<(epsN*omega-dmgStrain)*E);
+ return (epsN*omega-dmgStrain)*E;
}
Real BrefcomContact::computeViscoplScalingFactor(Real sigmaTNorm, Real sigmaTYield,Real dt){
@@ -236,8 +237,6 @@
rootBody=_rootBody;
if(!functor) functor=shared_ptr<ef2_Spheres_Brefcom_BrefcomLaw>(new ef2_Spheres_Brefcom_BrefcomLaw);
functor->logStrain=logStrain;
- LOG_FATAL("Deprecated BrefcomLaw doesn't pass its parameters to the functor, results would be garbage. Fix me or use ef2_Spheres_Brefcom_BrercomLaw directly instead.");
- throw;
FOREACH(const shared_ptr<Interaction>& I, *rootBody->interactions){
if(!I->isReal) continue;
functor->go(I->interactionGeometry, I->interactionPhysics, I.get(), rootBody);
Modified: trunk/extra/Brefcom.hpp
===================================================================
--- trunk/extra/Brefcom.hpp 2009-03-27 08:59:17 UTC (rev 1733)
+++ trunk/extra/Brefcom.hpp 2009-03-29 01:57:12 UTC (rev 1734)
@@ -74,6 +74,8 @@
dmgTau,
//! exponent in the rate-dependent damage evolution
dmgRateExp,
+ //! damage strain
+ dmgStrain,
//! characteristic time for viscoplasticity (if non-positive, no rate-dependence for shear)
plTau,
//! exponent in the rate-dependent viscoplasticity
@@ -102,7 +104,7 @@
- BrefcomContact(): NormalShearInteraction(),E(0), G(0), tanFrictionAngle(0), undamagedCohesion(0), crossSection(0), xiShear(0), dmgTau(-1), dmgRateExp(0), plTau(-1), plRateExp(0), epsPlSum(0.) { createIndex(); epsT=Vector3r::ZERO; kappaD=0; isCohesive=false; neverDamage=false; omega=0; Fn=0; Fs=Vector3r::ZERO; epsPlSum=0; }
+ BrefcomContact(): NormalShearInteraction(),E(0), G(0), tanFrictionAngle(0), undamagedCohesion(0), crossSection(0), xiShear(0), dmgTau(-1), dmgRateExp(0), dmgStrain(0), plTau(-1), plRateExp(0), epsPlSum(0.) { createIndex(); epsT=Vector3r::ZERO; kappaD=0; isCohesive=false; neverDamage=false; omega=0; Fn=0; Fs=Vector3r::ZERO; epsPlSum=0; }
// BrefcomContact(Real _E, Real _G, Real _tanFrictionAngle, Real _undamagedCohesion, Real _equilibriumDist, Real _crossSection, Real _epsCrackOnset, Real _epsFracture, Real _expBending, Real _xiShear, Real _tau=0, Real _expDmgRate=1): InteractionPhysics(), E(_E), G(_G), tanFrictionAngle(_tanFrictionAngle), undamagedCohesion(_undamagedCohesion), equilibriumDist(_equilibriumDist), crossSection(_crossSection), epsCrackOnset(_epsCrackOnset), epsFracture(_epsFracture), expBending(_expBending), xiShear(_xiShear), tau(_tau), expDmgRate(_expDmgRate) { epsT=Vector3r::ZERO; kappaD=0; isCohesive=false; neverDamage=false; omega=0; Fn=0; Fs=Vector3r::ZERO; /*TRVAR5(epsCrackOnset,epsFracture,Kn,crossSection,equilibriumDist); */ }
virtual ~BrefcomContact();
@@ -118,6 +120,7 @@
(xiShear)
(dmgTau)
(dmgRateExp)
+ (dmgStrain)
(plTau)
(plRateExp)
(transStrainCoeff)