[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