← Back to team overview

yade-dev team mailing list archive

[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)