[cig-commits] commit: Remove minimumViscosity and add maxStrainRate to DruckerPrager

Mercurial hg at geodynamics.org
Wed May 26 22:50:34 PDT 2010


changeset:   846:8c1c069c7f4f
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Wed May 26 22:47:37 2010 -0700
files:       Rheology/src/DruckerPrager.c Rheology/src/DruckerPrager.h
description:
Remove minimumViscosity and add maxStrainRate to DruckerPrager


diff -r 7f4f5de1cc81 -r 8c1c069c7f4f Rheology/src/DruckerPrager.c
--- a/Rheology/src/DruckerPrager.c	Fri Apr 23 13:03:15 2010 -0700
+++ b/Rheology/src/DruckerPrager.c	Wed May 26 22:47:37 2010 -0700
@@ -77,7 +77,7 @@ DruckerPrager* DruckerPrager_New(
 	FeVariable*           pressureField,
 	SwarmVariable*        swarmPressure,
 	double                minimumYieldStress,
-	double                minimumViscosity,
+	double                maxStrainRate,
 	double                frictionCoefficient,
 	double                frictionCoefficientAfterSoftening,
         double                boundaryCohesion,
@@ -112,7 +112,7 @@ DruckerPrager* DruckerPrager_New(
                         boundaryFront,
                         boundaryBack,
                         minimumYieldStress,
-                        minimumViscosity,
+                        maxStrainRate,
                         hydrostaticTerm );
    self->isConstructed = True;
    return self;
@@ -150,7 +150,7 @@ void _DruckerPrager_Init(
                 Bool                      boundaryFront,
                 Bool                      boundaryBack,
                 double                    minimumYieldStress,
-                double                    minimumViscosity,
+                double                    maxStrainRate,
                 HydrostaticTerm*          hydrostaticTerm )
 {
 	DruckerPrager_Particle*   particleExt;
@@ -162,7 +162,7 @@ void _DruckerPrager_Init(
 	self->pressureField       = pressureField;
 	self->frictionCoefficient = frictionCoefficient;
 	self->minimumYieldStress  = minimumYieldStress;
-	self->minimumViscosity    = minimumViscosity;
+	self->maxStrainRate    = maxStrainRate;
 	self->swarmPressure       = swarmPressure;
 	
 	/* Strain softening of Cohesion and friction - (linear
@@ -181,7 +181,7 @@ void _DruckerPrager_Init(
         self->boundaryBack=boundaryBack;
 
 	self->minimumYieldStress = minimumYieldStress;
-	self->minimumViscosity = minimumViscosity;
+	self->maxStrainRate = maxStrainRate;
         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)"minimumViscosity", 0.0),
+			Stg_ComponentFactory_GetDouble( cf, self->name, (Dictionary_Entry_Key)"maxStrainRate", 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                            minimumViscosity;
+	double                            maxStrainRate;
 	double                            effectiveCohesion;
 	double                            effectiveFrictionCoefficient;
 	double                            frictionalStrength;
@@ -371,7 +371,7 @@ double _DruckerPrager_GetYieldCriterion(
 	frictionCoefficient                = self->frictionCoefficient;
 	frictionCoefficientAfterSoftening  = self->frictionCoefficientAfterSoftening;
 	minimumYieldStress                 = self->minimumYieldStress;
-	minimumViscosity                   = self->minimumViscosity;
+	maxStrainRate                   = self->maxStrainRate;
 	
 	particleExt = ExtensionManager_Get( materialPointsSwarm->particleExtensionMgr, materialPoint, self->particleExtHandle );
 
@@ -481,18 +481,18 @@ void _DruckerPrager_HasYielded(
 		double                           yieldIndicator )
 {
    DruckerPrager* self = (DruckerPrager*)rheology;
-   double old_viscosity = ConstitutiveMatrix_GetIsotropicViscosity( constitutiveMatrix );
-   double viscosity = yieldCriterion/(2*self->strainRateSecondInvariant);
+   double strainRate=self->strainRateSecondInvariant;
+   double viscosity;
 
-   if(viscosity<self->minimumViscosity)
-     viscosity=self->minimumViscosity;
+   if(self->maxStrainRate>0 && strainRate>self->maxStrainRate)
+     strainRate=self->maxStrainRate;
+   viscosity = yieldCriterion/(2*strainRate);
 
    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 7f4f5de1cc81 -r 8c1c069c7f4f Rheology/src/DruckerPrager.h
--- a/Rheology/src/DruckerPrager.h	Fri Apr 23 13:03:15 2010 -0700
+++ b/Rheology/src/DruckerPrager.h	Wed May 26 22:47:37 2010 -0700
@@ -71,7 +71,7 @@
       FeVariable*                                         pressureField;                         \
       SwarmVariable*                                      swarmPressure;                         \
       double                                              minimumYieldStress;                    \
-      double                                              minimumViscosity;                      \
+      double                                              maxStrainRate;                      \
       double                                              frictionCoefficient;                   \
       double                                              frictionCoefficientAfterSoftening;     \
 		double                                              boundaryCohesion;                              \
@@ -104,7 +104,7 @@
       FeVariable*           pressureField,
       SwarmVariable*        swarmPressure,
       double                minimumYieldStress,
-      double                minimumViscosity,
+      double                maxStrainRate,
       double                frictionCoefficient,
       double                frictionCoefficientAfterSoftening,
       double                                              boundaryCohesion,
@@ -158,7 +158,7 @@
                 Bool                      boundaryFront,
                 Bool                      boundaryBack,
                 double                    minimumYieldStress,
-                double                    minimumViscosity,
+                double                    maxStrainRate,
                 HydrostaticTerm*          hydrostaticTerm );
 
 



More information about the CIG-COMMITS mailing list