[cig-commits] r16291 - short/3D/PyLith/trunk/libsrc/friction

surendra at geodynamics.org surendra at geodynamics.org
Sat Feb 20 21:18:15 PST 2010


Author: surendra
Date: 2010-02-20 21:18:15 -0800 (Sat, 20 Feb 2010)
New Revision: 16291

Modified:
   short/3D/PyLith/trunk/libsrc/friction/RateStateAgeing.cc
   short/3D/PyLith/trunk/libsrc/friction/RateStateAgeing.hh
Log:
Added some comments about Rate and State implementation with Ageing Law

Modified: short/3D/PyLith/trunk/libsrc/friction/RateStateAgeing.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/friction/RateStateAgeing.cc	2010-02-21 04:26:06 UTC (rev 16290)
+++ short/3D/PyLith/trunk/libsrc/friction/RateStateAgeing.cc	2010-02-21 05:18:15 UTC (rev 16291)
@@ -276,6 +276,7 @@
   double mu_f = 0.0;
   if (normalTraction < 0.0) {
     // if fault is in compression
+    // Using Regularized Rate and State equation
     const double f0 = properties[p_coef];
 
     const double slipRate0 = properties[p_slipRate0];
@@ -312,21 +313,29 @@
   assert(0 != numProperties);
 
   const double dt = _dt;
-  const double thetaN = stateVars[s_state];
+  const double thetaTVertex = stateVars[s_state];
+  const double thetaTpdtVertex;
   const double L = properties[p_L];
   const double expTerm = exp(-slipRate * dt / L);
   const double vDtL = slipRate * dt / L;
 
   // Ageing law
+  // d(theta)/dt = (1 - slipRate * theta / L)
+  // Above ODE is integrated from t->t+dt keeping slipRate constant gives
+  // thetaTpdt = thetaT * exp(- slipRate * theta / L)
+  //             + L / slipRate * (1 -  exp(- slipRate * theta / L))
   if (vDtL < 0.00001)
-    // Use first three terms of taylor expansion of 
-    // expTerm when it approaches unity
-    stateVars[s_state] = thetaN * expTerm + 
+    // As (slipRate * dt / L) --> 0, exp(-slipRate * dt / L) --> 1
+    // So using first three term in the Taylor series expansion of 
+    // exp(- slipRate * theta / L) i.e., exp(-x) = 1 - x + (x^2)/2;
+    thetaTpdtVertex = thetaTVertex * expTerm + 
                         dt - 0.5 * slipRate * pow(dt,2) / L;
   else
-    stateVars[s_state] = thetaN * expTerm +
+    thetaTpdtVertex = thetaTVertex * expTerm +
                        L / slipRate * (1 - expTerm);
 
+  stateVars[s_state] = thetaTpdtVertex;
+
   PetscLogFlops(6);
     
 } // _updateStateVars

Modified: short/3D/PyLith/trunk/libsrc/friction/RateStateAgeing.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/friction/RateStateAgeing.hh	2010-02-21 04:26:06 UTC (rev 16290)
+++ short/3D/PyLith/trunk/libsrc/friction/RateStateAgeing.hh	2010-02-21 05:18:15 UTC (rev 16291)
@@ -13,6 +13,17 @@
 /** @file libsrc/friction/RateStateAgeing.hh
  *
  * @brief C++ Rate and State fault constitutive model with ageing law.
+ *
+ * Implementation comes from "Kaneko, Y., N. Lapusta, and J.-P. Ampuero 
+ * (2008), Spectral element modeling of spontaneous earthquake rupture on
+ * rate and state faults: Effect of velocity-strengthening friction at 
+ * shallow depths, J. Geophys. Res., 113, B09317" 
+ *
+ * Regularized Rate & State equation : Eqn(15) of Kaneko et. al. (2008)
+ *
+ * Ageing Law : Eqn (19), of Kaneko et. al. (2008) added separate expression
+ * if (slipRate * dt / L) < = 0.00001 by using Taylor series expansion of
+ * exp(slipRate * dt / L) for the term (1 - exp(slipRate * dt / L))
  */
 
 #if !defined(pylith_friction_ratestateageing_hh)



More information about the CIG-COMMITS mailing list