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)


_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp
_______________________________________________
yade-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/yade-dev

Reply via email to