[cig-commits] r11996 - in long/3D/Gale/trunk: . src/Underworld/Rheology/src

walter at geodynamics.org walter at geodynamics.org
Thu May 22 11:16:14 PDT 2008


Author: walter
Date: 2008-05-22 11:16:14 -0700 (Thu, 22 May 2008)
New Revision: 11996

Modified:
   long/3D/Gale/trunk/
   long/3D/Gale/trunk/src/Underworld/Rheology/src/MohrCoulomb.c
Log:
 r2166 at earth:  boo | 2008-05-22 11:09:57 -0700
 Fix a bug in the factor applied to the yield criterion. Also add commented out support for averaging viscosities between nonlinear iterations.



Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
   - 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2165
   + 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2166

Modified: long/3D/Gale/trunk/src/Underworld/Rheology/src/MohrCoulomb.c
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/MohrCoulomb.c	2008-05-22 18:16:10 UTC (rev 11995)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/MohrCoulomb.c	2008-05-22 18:16:14 UTC (rev 11996)
@@ -303,7 +303,6 @@
 
 	FeVariable_InterpolateWithinElement( pressureField, lElement_I, xi, &pressure );
 
-		
 	/* Calculate frictional strength.  We modify the friction and
            cohesion because we have grouped terms from the normal
            stresses and moved it to the yield indicator. */
@@ -312,7 +311,7 @@
 
         theta = 0.5 * atan( 1.0/ effectiveFrictionCoefficient);
 
-        factor=1/(sin(2*theta) - effectiveFrictionCoefficient*cos(2*theta));
+        factor=sin(2*theta);
         
         frictionalStrength = effectiveFrictionCoefficient * pressure*factor + effectiveCohesion*factor;
 
@@ -325,8 +324,8 @@
           minimumYieldStress=effectiveCohesion;
 	
 	/* Make sure frictionalStrength is above the minimum */
-	if ( frictionalStrength < minimumYieldStress) 
-		frictionalStrength = minimumYieldStress;
+	if ( frictionalStrength < minimumYieldStress*factor) 
+		frictionalStrength = minimumYieldStress*factor;
 	return frictionalStrength;
 }
 
@@ -336,6 +335,10 @@
    (and thus the viscosity), while the yieldIndicator depends linearly
    on the deviatoric stresses. */
 
+typedef struct  {
+  double effVisc;
+} StoreVisc_ParticleExt;
+
 void _MohrCoulomb_HasYielded( 
 		void*                                              rheology,
 		ConstitutiveMatrix*                                constitutiveMatrix,
@@ -349,6 +352,32 @@
 
   double beta=1.0-yieldCriterion/(yieldIndicator);
 
+/*     { */
+/*       StoreVisc_ParticleExt*            particleExt; */
+      
+/*       /\* Get Parameters From Material Extension *\/ */
+/*       particleExt          = ExtensionManager_Get( materialPointsSwarm->particleExtensionMgr, materialPoint, 2 ); */
+      
+/* /\*       if((particleExt->effVisc>viscosity*(1-beta) && particleExt->effVisc/viscosity*(1-beta)<1.0e3) *\/ */
+/* /\*          || (particleExt->effVisc<viscosity*(1-beta) && particleExt->effVisc/viscosity*(1-beta)>1.0e-3)) *\/ */
+/* /\*       if(particleExt->effVisc!=viscosity) *\/ */
+/* /\*         { *\/ */
+/* /\*           double new_viscosity; *\/ */
+/* /\*           new_viscosity=sqrt(particleExt->effVisc*viscosity*(1-beta)); *\/ */
+/* /\* /\\*           new_viscosity=(particleExt->effVisc+(viscosity*(1-beta)))/2; *\\/ *\/ */
+/* /\* /\\*           new_viscosity=pow(pow(particleExt->effVisc,1.0)*viscosity*(1-beta),1/2.0); *\\/ *\/ */
+/* /\*           beta=1.0-new_viscosity/viscosity; *\/ */
+/* /\*         } *\/ */
+
+/* /\*       if(lElement_I==340) *\/ */
+/* /\*         printf("has yielded %d %g %g %g\n",lElement_I,particleExt->effVisc,viscosity,viscosity*(1-beta)); *\/ */
+
+
+/*       if(lElement_I>680 && lElement_I<710) */
+/*         printf("has yielded %d %g %g %g %g\n",lElement_I,yieldCriterion, */
+/*                yieldIndicator,particleExt->effVisc,viscosity*(1-beta)); */
+/*     } */
+
   ConstitutiveMatrix_IsotropicCorrection( constitutiveMatrix, -viscosity * beta );
 }
 



More information about the cig-commits mailing list