[cig-commits] commit: Take out maxStrainRate and put back minimumViscosity in DruckerPrager

Mercurial hg at geodynamics.org
Tue Jul 13 11:01:21 PDT 2010


changeset:   851:377d6be0734f
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Mon Jul 12 15:53:42 2010 -0700
files:       Rheology/src/DruckerPrager.c Rheology/src/DruckerPrager.h
description:
Take out maxStrainRate and put back minimumViscosity in DruckerPrager


diff -r 3bcb1e10ea75 -r 377d6be0734f Rheology/src/DruckerPrager.c
--- a/Rheology/src/DruckerPrager.c	Mon Jul 12 15:46:16 2010 -0700
+++ b/Rheology/src/DruckerPrager.c	Mon Jul 12 15:53:42 2010 -0700
@@ -77,7 +77,7 @@ DruckerPrager* DruckerPrager_New(
 	FeVariable*           pressureField,
 	SwarmVariable*        swarmPressure,
 	double                minimumYieldStress,
-	double                maxStrainRate,
+	double                minimumViscosity,
 	double                frictionCoefficient,
 	double                frictionCoefficientAfterSoftening,
         double                boundaryCohesion,
@@ -112,7 +112,7 @@ DruckerPrager* DruckerPrager_New(
                         boundaryFront,
                         boundaryBack,
                         minimumYieldStress,
-                        maxStrainRate,
+                        minimumViscosity,
                         hydrostaticTerm );
    self->isConstructed = True;
    return self;
@@ -150,7 +150,7 @@ void _DruckerPrager_Init(
                 Bool                      boundaryFront,
                 Bool                      boundaryBack,
                 double                    minimumYieldStress,
-                double                    maxStrainRate,
+                double                    minimumViscosity,
                 HydrostaticTerm*          hydrostaticTerm )
 {
 	DruckerPrager_Particle*   particleExt;
@@ -162,7 +162,7 @@ void _DruckerPrager_Init(
 	self->pressureField       = pressureField;
 	self->frictionCoefficient = frictionCoefficient;
 	self->minimumYieldStress  = minimumYieldStress;
-	self->maxStrainRate    = maxStrainRate;
+	self->minimumViscosity    = minimumViscosity;
 	self->swarmPressure       = swarmPressure;
 	
 	/* Strain softening of Cohesion and friction - (linear
@@ -181,7 +181,7 @@ void _DruckerPrager_Init(
         self->boundaryBack=boundaryBack;
 
 	self->minimumYieldStress = minimumYieldStress;
-	self->maxStrainRate = maxStrainRate;
+	self->minimumViscosity = minimumViscosity;
         self->hydrostaticTerm=hydrostaticTerm;
 
 	/* Update Drawing Parameters */
@@ -264,7 +264,7 @@ void _DruckerPrager_AssignFromXML( void*
                         Stg_ComponentFactory_GetBool(  cf,  self->name, (Dictionary_Entry_Key)"boundaryFront", False ),
                         Stg_ComponentFactory_GetBool(  cf,  self->name, (Dictionary_Entry_Key)"boundaryBack", False ),
 			Stg_ComponentFactory_GetDouble( cf, self->name, (Dictionary_Entry_Key)"minimumYieldStress", 0.0 ),
-			Stg_ComponentFactory_GetDouble( cf, self->name, (Dictionary_Entry_Key)"maxStrainRate", 0.0),
+			Stg_ComponentFactory_GetDouble( cf, self->name, (Dictionary_Entry_Key)"minimumViscosity", 0.0),
                         Stg_ComponentFactory_ConstructByKey( cf, self->name, 
                                                              (Dictionary_Entry_Key)"HydrostaticTerm", HydrostaticTerm, False, data ) );
 }
@@ -351,7 +351,7 @@ double _DruckerPrager_GetYieldCriterion(
 	double                            frictionCoefficient;
 	double                            frictionCoefficientAfterSoftening;
 	double                            minimumYieldStress;
-	double                            maxStrainRate;
+	double                            minimumViscosity;
 	double                            effectiveCohesion;
 	double                            effectiveFrictionCoefficient;
 	double                            frictionalStrength;
@@ -371,7 +371,7 @@ double _DruckerPrager_GetYieldCriterion(
 	frictionCoefficient                = self->frictionCoefficient;
 	frictionCoefficientAfterSoftening  = self->frictionCoefficientAfterSoftening;
 	minimumYieldStress                 = self->minimumYieldStress;
-	maxStrainRate                   = self->maxStrainRate;
+	minimumViscosity                   = self->minimumViscosity;
 	
 	particleExt = ExtensionManager_Get( materialPointsSwarm->particleExtensionMgr, materialPoint, self->particleExtHandle );
 
@@ -481,18 +481,18 @@ void _DruckerPrager_HasYielded(
 		double                           yieldIndicator )
 {
    DruckerPrager* self = (DruckerPrager*)rheology;
-   double strainRate=self->strainRateSecondInvariant;
-   double viscosity;
+   double old_viscosity = ConstitutiveMatrix_GetIsotropicViscosity( constitutiveMatrix );
+   double viscosity = yieldCriterion/(2*self->strainRateSecondInvariant);
 
-   if(self->maxStrainRate>0 && strainRate>self->maxStrainRate)
-     strainRate=self->maxStrainRate;
-   viscosity = yieldCriterion/(2*strainRate);
+   if(viscosity<self->minimumViscosity)
+     viscosity=self->minimumViscosity;
 
    ConstitutiveMatrix_SetIsotropicViscosity( constitutiveMatrix, viscosity );
 
    if( constitutiveMatrix->sle && constitutiveMatrix->sle->nlFormJacobian ) {
-     double old_viscosity = ConstitutiveMatrix_GetIsotropicViscosity( constitutiveMatrix );
+
       constitutiveMatrix->derivs[8] += old_viscosity * self->curFrictionCoef / yieldIndicator;
+
    }
 
 }
diff -r 3bcb1e10ea75 -r 377d6be0734f Rheology/src/DruckerPrager.h
--- a/Rheology/src/DruckerPrager.h	Mon Jul 12 15:46:16 2010 -0700
+++ b/Rheology/src/DruckerPrager.h	Mon Jul 12 15:53:42 2010 -0700
@@ -71,7 +71,7 @@
       FeVariable*                                         pressureField;                         \
       SwarmVariable*                                      swarmPressure;                         \
       double                                              minimumYieldStress;                    \
-      double                                              maxStrainRate;                      \
+      double                                              minimumViscosity;                      \
       double                                              frictionCoefficient;                   \
       double                                              frictionCoefficientAfterSoftening;     \
 		double                                              boundaryCohesion;                              \
@@ -104,7 +104,7 @@
       FeVariable*           pressureField,
       SwarmVariable*        swarmPressure,
       double                minimumYieldStress,
-      double                maxStrainRate,
+      double                minimumViscosity,
       double                frictionCoefficient,
       double                frictionCoefficientAfterSoftening,
       double                                              boundaryCohesion,
@@ -158,7 +158,7 @@
                 Bool                      boundaryFront,
                 Bool                      boundaryBack,
                 double                    minimumYieldStress,
-                double                    maxStrainRate,
+                double                    minimumViscosity,
                 HydrostaticTerm*          hydrostaticTerm );
 
 



More information about the CIG-COMMITS mailing list