[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