[cig-commits] r22188 - in short/3D/PyLith/branches/v1.7-trunk: libsrc/pylith/friction modulesrc/friction

brad at geodynamics.org brad at geodynamics.org
Fri Jun 7 16:46:34 PDT 2013


Author: brad
Date: 2013-06-07 16:46:33 -0700 (Fri, 07 Jun 2013)
New Revision: 22188

Modified:
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/FrictionModel.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/FrictionModel.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/RateStateAgeing.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/RateStateAgeing.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakening.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakening.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningStress.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningStress.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTime.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTime.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTimeStable.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTimeStable.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/StaticFriction.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/StaticFriction.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/TimeWeakening.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/TimeWeakening.hh
   short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/FrictionModel.i
   short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/RateStateAgeing.i
   short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakening.i
   short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningStress.i
   short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningTime.i
   short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningTimeStable.i
   short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/StaticFriction.i
   short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/TimeWeakening.i
Log:
Added calculation of derivative of friction with slip.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/FrictionModel.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/FrictionModel.cc	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/FrictionModel.cc	2013-06-07 23:46:33 UTC (rev 22188)
@@ -327,6 +327,28 @@
 } // calcFriction
 
 // ----------------------------------------------------------------------
+// Compute derivative of friction with slip at vertex.
+PylithScalar
+pylith::friction::FrictionModel::calcFrictionDeriv(const PylithScalar t,
+						   const PylithScalar slip,
+						   const PylithScalar slipRate,
+						   const PylithScalar normalTraction)
+{ // calcFrictionDeriv
+  assert(_fieldsPropsStateVars);
+
+  assert(_propsFiberDim+_varsFiberDim == _propsStateVarsVertex.size());
+  const PylithScalar* propertiesVertex = &_propsStateVarsVertex[0];
+  const PylithScalar* stateVarsVertex = (_varsFiberDim > 0) ?
+    &_propsStateVarsVertex[_propsFiberDim] : 0;
+
+  const PylithScalar frictionDeriv = _calcFrictionDeriv(t, slip, slipRate, normalTraction,
+						   propertiesVertex, _propsFiberDim,
+						   stateVarsVertex, _varsFiberDim);
+  
+  return frictionDeriv;
+} // calcFrictionDeriv
+
+// ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 pylith::friction::FrictionModel::updateStateVars(const PylithScalar t,

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/FrictionModel.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/FrictionModel.hh	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/FrictionModel.hh	2013-06-07 23:46:33 UTC (rev 22188)
@@ -168,6 +168,23 @@
 			    const PylithScalar slipRate,
 			    const PylithScalar normalTraction);
   
+  /** Compute derivative of friction with slip at vertex.
+   *
+   * @pre Must call retrievePropsAndVars for cell before calling
+   * calcFriction().
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   *
+   * @returns Derivative of friction (magnitude of shear traction).
+   */
+  PylithScalar calcFrictionDeriv(const PylithScalar t,
+				 const PylithScalar slip,
+				 const PylithScalar slipRate,
+				 const PylithScalar normalTraction);
+  
   /** Compute friction at vertex.
    *
    * @pre Must call retrievePropsAndVars for cell before calling
@@ -267,6 +284,30 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars) = 0;
   
+  /** Compute derivative friction with slip from properties and state
+   * variables.
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
+   * @returns Derivative of friction (magnitude of shear traction) at vertex.
+   */
+  virtual
+  PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				  const PylithScalar slip,
+				  const PylithScalar slipRate,
+				  const PylithScalar normalTraction,
+				  const PylithScalar* properties,
+				  const int numProperties,
+				  const PylithScalar* stateVars,
+				  const int numStateVars) = 0;
+  
   /** Update state variables (for next time step).
    *
    * @param t Time in simulation.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/RateStateAgeing.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/RateStateAgeing.cc	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/RateStateAgeing.cc	2013-06-07 23:46:33 UTC (rev 22188)
@@ -32,7 +32,7 @@
 #include <cassert> // USES assert()
 #include <sstream> // USES std::ostringstream
 #include <stdexcept> // USES std::runtime_error
-#include <iostream>
+
 // ----------------------------------------------------------------------
 namespace pylith {
   namespace friction {
@@ -341,6 +341,47 @@
 
 
 // ----------------------------------------------------------------------
+// Compute derivative of friction with slip from properties and
+// state variables.
+PylithScalar
+pylith::friction::RateStateAgeing::_calcFrictionDeriv(const PylithScalar t,
+						      const PylithScalar slip,
+						      const PylithScalar slipRate,
+						      const PylithScalar normalTraction,
+						      const PylithScalar* properties,
+						      const int numProperties,
+						      const PylithScalar* stateVars,
+						      const int numStateVars)
+{ // _calcFrictionDeriv
+  assert(properties);
+  assert(_RateStateAgeing::numProperties == numProperties);
+  assert(numStateVars);
+  assert(_RateStateAgeing::numStateVars == numStateVars);
+
+  PylithScalar frictionDeriv = 0.0;
+  if (normalTraction <= 0.0) {
+    // if fault is in compression
+
+    const PylithScalar slipRateLinear = _linearSlipRate;
+
+    const PylithScalar a = properties[p_a];
+    const PylithScalar b = properties[p_b];
+    const PylithScalar slipRate0 = properties[p_slipRate0];
+
+    if (slipRate >= slipRateLinear) {
+      frictionDeriv = -normalTraction * a / (slipRate * _dt);
+    } else {
+      frictionDeriv = -normalTraction * a / (slipRateLinear * _dt);
+    } // else
+  } // if    
+
+  PetscLogFlops(12);
+
+  return frictionDeriv;
+} // _calcFrictionDeriv
+
+
+// ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 pylith::friction::RateStateAgeing::_updateStateVars(const PylithScalar t,

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/RateStateAgeing.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/RateStateAgeing.hh	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/RateStateAgeing.hh	2013-06-07 23:46:33 UTC (rev 22188)
@@ -144,6 +144,29 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars);
 
+  /** Compute derivative of friction with slip from properties and
+   * state variables.
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
+   * @returns Derivative of friction (magnitude of shear traction) at vertex.
+   */
+  PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				  const PylithScalar slip,
+				  const PylithScalar slipRate,
+				  const PylithScalar normalTraction,
+				  const PylithScalar* properties,
+				  const int numProperties,
+				  const PylithScalar* stateVars,
+				  const int numStateVars);
+
   /** Update state variables (for next time step).
    *
    * @param t Time in simulation.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakening.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakening.cc	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakening.cc	2013-06-07 23:46:33 UTC (rev 22188)
@@ -305,6 +305,41 @@
 } // _calcFriction
 
 // ----------------------------------------------------------------------
+// Compute derivative of friction with slip from properties and
+// state variables.
+PylithScalar
+pylith::friction::SlipWeakening::_calcFrictionDeriv(const PylithScalar t,
+						    const PylithScalar slip,
+						    const PylithScalar slipRate,
+						    const PylithScalar normalTraction,
+						    const PylithScalar* properties,
+						    const int numProperties,
+						    const PylithScalar* stateVars,
+						    const int numStateVars)
+{ // _calcFrictionDeriv
+  assert(properties);
+  assert(_SlipWeakening::numProperties == numProperties);
+  assert(stateVars);
+  assert(_SlipWeakening::numStateVars == numStateVars);
+
+  PylithScalar frictionDeriv = 0.0;
+  if (normalTraction <= 0.0) {
+    // if fault is in compression
+    const PylithScalar slipPrev = stateVars[s_slipPrev];
+    const PylithScalar slipCum = stateVars[s_slipCum] + fabs(slip - slipPrev);
+
+    if (slipCum < properties[p_d0]) {
+      frictionDeriv = -normalTraction * (properties[p_coefS] - properties[p_coefD]) / properties[p_d0];
+    } // if
+  } // if
+
+  PetscLogFlops(7);
+
+  return frictionDeriv;
+} // _calcFrictionDeriv
+
+
+// ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 pylith::friction::SlipWeakening::_updateStateVars(const PylithScalar t,

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakening.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakening.hh	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakening.hh	2013-06-07 23:46:33 UTC (rev 22188)
@@ -131,6 +131,29 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars);
   
+  /** Compute derivative of friction with slip from properties and
+   * state variables.
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
+   * @returns Derivative of friction (magnitude of shear traction) at vertex.
+   */
+  PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				  const PylithScalar slip,
+				  const PylithScalar slipRate,
+				  const PylithScalar normalTraction,
+				  const PylithScalar* properties,
+				  const int numProperties,
+				  const PylithScalar* stateVars,
+				  const int numStateVars);
+
   /** Update state variables (for next time step).
    *
    * @param t Time in simulation.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningStress.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningStress.cc	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningStress.cc	2013-06-07 23:46:33 UTC (rev 22188)
@@ -299,6 +299,41 @@
 } // _calcFriction
 
 // ----------------------------------------------------------------------
+// Compute derivative of friction with slip from properties and
+// state variables.
+PylithScalar
+pylith::friction::SlipWeakeningStress::_calcFrictionDeriv(const PylithScalar t,
+							  const PylithScalar slip,
+							  const PylithScalar slipRate,
+							  const PylithScalar normalTraction,
+							  const PylithScalar* properties,
+							  const int numProperties,
+							  const PylithScalar* stateVars,
+							  const int numStateVars)
+{ // _calcFrictionDeriv
+  assert(properties);
+  assert(_SlipWeakeningStress::numProperties == numProperties);
+  assert(stateVars);
+  assert(_SlipWeakeningStress::numStateVars == numStateVars);
+
+  PylithScalar frictionDeriv = 0.0;
+  if (normalTraction <= 0.0) {
+    // if fault is in compression
+    const PylithScalar slipPrev = stateVars[s_slipPrev];
+    const PylithScalar slipCum = stateVars[s_slipCum] + fabs(slip - slipPrev);
+
+    if (slipCum < properties[p_d0]) {
+      frictionDeriv = (properties[p_stressStatic] - properties[p_stressDyn]) / properties[p_d0];
+    } // if
+  } // if
+
+  PetscLogFlops(7);
+
+  return frictionDeriv;
+} // _calcFrictionDeriv
+
+
+// ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 pylith::friction::SlipWeakeningStress::_updateStateVars(const PylithScalar t,

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningStress.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningStress.hh	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningStress.hh	2013-06-07 23:46:33 UTC (rev 22188)
@@ -125,6 +125,29 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars);
 
+  /** Compute derivative of friction with slip from properties and
+   * state variables.
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
+   * @returns Derivative of friction (magnitude of shear traction) at vertex.
+   */
+  PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				  const PylithScalar slip,
+				  const PylithScalar slipRate,
+				  const PylithScalar normalTraction,
+				  const PylithScalar* properties,
+				  const int numProperties,
+				  const PylithScalar* stateVars,
+				  const int numStateVars);
+
   /** Update state variables (for next time step).
    *
    * @param t Time in simulation.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTime.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTime.cc	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTime.cc	2013-06-07 23:46:33 UTC (rev 22188)
@@ -32,6 +32,7 @@
 #include <cassert> // USES assert()
 #include <sstream> // USES std::ostringstream
 #include <stdexcept> // USES std::runtime_error
+
 // ----------------------------------------------------------------------
 namespace pylith {
   namespace friction {
@@ -313,6 +314,41 @@
 } // _calcFriction
 
 // ----------------------------------------------------------------------
+// Compute derivative of friction with slip from properties and
+// state variables.
+PylithScalar
+pylith::friction::SlipWeakeningTime::_calcFrictionDeriv(const PylithScalar t,
+							const PylithScalar slip,
+							const PylithScalar slipRate,
+							const PylithScalar normalTraction,
+							const PylithScalar* properties,
+							const int numProperties,
+							const PylithScalar* stateVars,
+							const int numStateVars)
+{ // _calcFrictionDeriv
+  assert(properties);
+  assert(_SlipWeakeningTime::numProperties == numProperties);
+  assert(stateVars);
+  assert(_SlipWeakeningTime::numStateVars == numStateVars);
+
+  PylithScalar frictionDeriv = 0.0;
+  if (normalTraction <= 0.0) {
+    // if fault is in compression
+    const PylithScalar slipPrev = stateVars[s_slipPrev];
+    const PylithScalar slipCum = stateVars[s_slipCum] + fabs(slip - slipPrev);
+
+    if (slipCum < properties[p_d0] && t < properties[p_weaktime]) {
+      frictionDeriv = -normalTraction * (properties[p_coefS] - properties[p_coefD]) / properties[p_d0];
+    } // if
+  } // if
+
+  PetscLogFlops(7);
+
+  return frictionDeriv;
+} // _calcFrictionDeriv
+
+
+// ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 pylith::friction::SlipWeakeningTime::_updateStateVars(const PylithScalar t,

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTime.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTime.hh	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTime.hh	2013-06-07 23:46:33 UTC (rev 22188)
@@ -125,6 +125,29 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars);
 
+  /** Compute derivative of friction with slip from properties and
+   * state variables.
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
+   * @returns Derivative of friction (magnitude of shear traction) at vertex.
+   */
+  PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				  const PylithScalar slip,
+				  const PylithScalar slipRate,
+				  const PylithScalar normalTraction,
+				  const PylithScalar* properties,
+				  const int numProperties,
+				  const PylithScalar* stateVars,
+				  const int numStateVars);
+
   /** Update state variables (for next time step).
    *
    * @param t Time in simulation.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTimeStable.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTimeStable.cc	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTimeStable.cc	2013-06-07 23:46:33 UTC (rev 22188)
@@ -329,6 +329,48 @@
 } // _calcFriction
 
 // ----------------------------------------------------------------------
+// Compute derivative of friction with slip from properties and
+// state variables.
+PylithScalar
+pylith::friction::SlipWeakeningTimeStable::_calcFrictionDeriv(const PylithScalar t,
+							      const PylithScalar slip,
+							      const PylithScalar slipRate,
+							      const PylithScalar normalTraction,
+							      const PylithScalar* properties,
+							      const int numProperties,
+							      const PylithScalar* stateVars,
+							      const int numStateVars)
+{ // _calcFrictionDeriv
+  assert(properties);
+  assert(_SlipWeakeningTimeStable::numProperties == numProperties);
+  assert(stateVars);
+  assert(_SlipWeakeningTimeStable::numStateVars == numStateVars);
+
+  PylithScalar frictionDeriv = 0.0;
+  if (normalTraction <= 0.0) {
+    // if fault is in compression
+    const PylithScalar slipPrev = stateVars[s_slipPrev];
+    const PylithScalar slipCum = stateVars[s_slipCum] + fabs(slip - slipPrev);
+
+    const PylithScalar slipWeak = (slipCum >= properties[p_d0]) ? 1.0 : slipCum / properties[p_d0];
+    PylithScalar timeWeak = 1.0;
+    if (t < properties[p_weaktime]) {
+      timeWeak = 0.0;
+    } else if (t < properties[p_weaktime] + properties[p_t0]) {
+      timeWeak = (t - properties[p_weaktime]) / properties[p_t0];
+    } // if/else
+    if (slipWeak > timeWeak && slipCum < properties[p_d0]) {
+      frictionDeriv = -normalTraction * (properties[p_coefS] - properties[p_coefD]) / properties[p_d0];
+    } // if
+  } // if
+
+  PetscLogFlops(11);
+
+  return frictionDeriv;
+} // _calcFrictionDeriv
+
+
+// ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 pylith::friction::SlipWeakeningTimeStable::_updateStateVars(const PylithScalar t,

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTimeStable.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTimeStable.hh	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/SlipWeakeningTimeStable.hh	2013-06-07 23:46:33 UTC (rev 22188)
@@ -131,6 +131,29 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars);
 
+  /** Compute derivative of friction with slip from properties and
+   * state variables.
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
+   * @returns Derivative of friction (magnitude of shear traction) at vertex.
+   */
+  PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				  const PylithScalar slip,
+				  const PylithScalar slipRate,
+				  const PylithScalar normalTraction,
+				  const PylithScalar* properties,
+				  const int numProperties,
+				  const PylithScalar* stateVars,
+				  const int numStateVars);
+
   /** Update state variables (for next time step).
    *
    * @param t Time in simulation.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/StaticFriction.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/StaticFriction.cc	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/StaticFriction.cc	2013-06-07 23:46:33 UTC (rev 22188)
@@ -167,4 +167,21 @@
 } // _calcFriction
 
 
+// ----------------------------------------------------------------------
+// Compute derivative of friction with slip from properties and
+// state variables.
+PylithScalar
+pylith::friction::StaticFriction::_calcFrictionDeriv(const PylithScalar t,
+						     const PylithScalar slip,
+						     const PylithScalar slipRate,
+						     const PylithScalar normalTraction,
+						     const PylithScalar* properties,
+						     const int numProperties,
+						     const PylithScalar* stateVars,
+						     const int numStateVars)
+{ // _calcFrictionDeriv
+  return 0.0;
+} // _calcFrictionDeriv
+
+
 // End of file 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/StaticFriction.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/StaticFriction.hh	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/StaticFriction.hh	2013-06-07 23:46:33 UTC (rev 22188)
@@ -96,6 +96,29 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars);
 
+  /** Compute derivative of friction with slip from properties and
+   * state variables.
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
+   * @returns Derivative of friction (magnitude of shear traction) at vertex.
+   */
+  PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				  const PylithScalar slip,
+				  const PylithScalar slipRate,
+				  const PylithScalar normalTraction,
+				  const PylithScalar* properties,
+				  const int numProperties,
+				  const PylithScalar* stateVars,
+				  const int numStateVars);
+
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/TimeWeakening.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/TimeWeakening.cc	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/TimeWeakening.cc	2013-06-07 23:46:33 UTC (rev 22188)
@@ -32,7 +32,7 @@
 #include <cassert> // USES assert()
 #include <sstream> // USES std::ostringstream
 #include <stdexcept> // USES std::runtime_error
-#include <iostream>
+
 // ----------------------------------------------------------------------
 namespace pylith {
   namespace friction {
@@ -284,6 +284,23 @@
 } // _calcFriction
 
 // ----------------------------------------------------------------------
+// Compute derivative of friction with slip from properties and
+// state variables.
+PylithScalar
+pylith::friction::TimeWeakening::_calcFrictionDeriv(const PylithScalar t,
+						    const PylithScalar slip,
+						    const PylithScalar slipRate,
+						    const PylithScalar normalTraction,
+						    const PylithScalar* properties,
+						    const int numProperties,
+						    const PylithScalar* stateVars,
+						    const int numStateVars)
+{ // _calcFrictionDeriv
+  return 0.0;
+} // _calcFrictionDeriv
+
+
+// ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 pylith::friction::TimeWeakening::_updateStateVars(const PylithScalar t,

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/TimeWeakening.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/TimeWeakening.hh	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/friction/TimeWeakening.hh	2013-06-07 23:46:33 UTC (rev 22188)
@@ -125,6 +125,29 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars);
   
+  /** Compute derivative of friction with slip from properties and
+   * state variables.
+   *
+   * @param t Time in simulation.
+   * @param slip Current slip at location.
+   * @param slipRate Current slip rate at location.
+   * @param normalTraction Normal traction at location.
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
+   * @returns Derivative of friction (magnitude of shear traction) at vertex.
+   */
+  PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				  const PylithScalar slip,
+				  const PylithScalar slipRate,
+				  const PylithScalar normalTraction,
+				  const PylithScalar* properties,
+				  const int numProperties,
+				  const PylithScalar* stateVars,
+				  const int numStateVars);
+
   /** Update state variables (for next time step).
    *
    * @param slip Current slip at location.

Modified: short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/FrictionModel.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/FrictionModel.i	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/FrictionModel.i	2013-06-07 23:46:33 UTC (rev 22188)
@@ -149,6 +149,23 @@
 				const PylithScalar normalTraction);
   
 
+      /** Compute derivative of friction with slip at vertex.
+       *
+       * @pre Must call retrievePropsAndVars for cell before calling
+       * calcFriction().
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       *
+       * @returns Derivative of friction (magnitude of shear traction).
+       */
+      PylithScalar calcFrictionDeriv(const PylithScalar t,
+				     const PylithScalar slip,
+				     const PylithScalar slipRate,
+				     const PylithScalar normalTraction);
+  
       /** Compute friction at vertex.
        *
        * @pre Must call retrievePropsAndVars for cell before calling
@@ -246,6 +263,30 @@
 				 const PylithScalar* stateVars,
 				 const int numStateVars) = 0;
 
+      /** Compute derivative friction with slip from properties and state
+       * variables.
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       *
+       * @returns Derivative of friction (magnitude of shear traction) at vertex.
+       */
+      virtual
+      PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				      const PylithScalar slip,
+				      const PylithScalar slipRate,
+				      const PylithScalar normalTraction,
+				      const PylithScalar* properties,
+				      const int numProperties,
+				      const PylithScalar* stateVars,
+				      const int numStateVars) = 0;
+  
       /** Update state variables (for next time step).
        *
        * @param t Current time.

Modified: short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/RateStateAgeing.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/RateStateAgeing.i	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/RateStateAgeing.i	2013-06-07 23:46:33 UTC (rev 22188)
@@ -90,6 +90,29 @@
 				 const PylithScalar* stateVars,
 				 const int numStateVars);
 
+      /** Compute derivative of friction with slip from properties and
+       * state variables.
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       *
+       * @returns Derivative of friction (magnitude of shear traction) at vertex.
+       */
+      PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				      const PylithScalar slip,
+				      const PylithScalar slipRate,
+				      const PylithScalar normalTraction,
+				      const PylithScalar* properties,
+				      const int numProperties,
+				      const PylithScalar* stateVars,
+				      const int numStateVars);
+
       /** Update state variables (for next time step).
        *
        * @param slip Current slip at location.

Modified: short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakening.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakening.i	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakening.i	2013-06-07 23:46:33 UTC (rev 22188)
@@ -89,6 +89,29 @@
 				 const PylithScalar* stateVars,
 				 const int numStateVars);
 
+      /** Compute derivative of friction with slip from properties and
+       * state variables.
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       *
+       * @returns Derivative of friction (magnitude of shear traction) at vertex.
+       */
+      PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				      const PylithScalar slip,
+				      const PylithScalar slipRate,
+				      const PylithScalar normalTraction,
+				      const PylithScalar* properties,
+				      const int numProperties,
+				      const PylithScalar* stateVars,
+				      const int numStateVars);
+
       /** Update state variables (for next time step).
        *
        * @param slip Current slip at location.

Modified: short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningStress.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningStress.i	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningStress.i	2013-06-07 23:46:33 UTC (rev 22188)
@@ -83,6 +83,29 @@
 				 const PylithScalar* stateVars,
 				 const int numStateVars);
 
+      /** Compute derivative of friction with slip from properties and
+       * state variables.
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       *
+       * @returns Derivative of friction (magnitude of shear traction) at vertex.
+       */
+      PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				      const PylithScalar slip,
+				      const PylithScalar slipRate,
+				      const PylithScalar normalTraction,
+				      const PylithScalar* properties,
+				      const int numProperties,
+				      const PylithScalar* stateVars,
+				      const int numStateVars);
+
     }; // class SlipWeakeningStress
 
   } // friction

Modified: short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningTime.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningTime.i	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningTime.i	2013-06-07 23:46:33 UTC (rev 22188)
@@ -83,6 +83,29 @@
 				 const PylithScalar* stateVars,
 				 const int numStateVars);
 
+      /** Compute derivative of friction with slip from properties and
+       * state variables.
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       *
+       * @returns Derivative of friction (magnitude of shear traction) at vertex.
+       */
+      PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				      const PylithScalar slip,
+				      const PylithScalar slipRate,
+				      const PylithScalar normalTraction,
+				      const PylithScalar* properties,
+				      const int numProperties,
+				      const PylithScalar* stateVars,
+				      const int numStateVars);
+
     }; // class SlipWeakeningTime
 
   } // friction

Modified: short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningTimeStable.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningTimeStable.i	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/SlipWeakeningTimeStable.i	2013-06-07 23:46:33 UTC (rev 22188)
@@ -83,6 +83,29 @@
 				 const PylithScalar* stateVars,
 				 const int numStateVars);
 
+      /** Compute derivative of friction with slip from properties and
+       * state variables.
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       *
+       * @returns Derivative of friction (magnitude of shear traction) at vertex.
+       */
+      PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				      const PylithScalar slip,
+				      const PylithScalar slipRate,
+				      const PylithScalar normalTraction,
+				      const PylithScalar* properties,
+				      const int numProperties,
+				      const PylithScalar* stateVars,
+				      const int numStateVars);
+
     }; // class SlipWeakeningTimeStable
 
   } // friction

Modified: short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/StaticFriction.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/StaticFriction.i	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/StaticFriction.i	2013-06-07 23:46:33 UTC (rev 22188)
@@ -83,6 +83,29 @@
 				 const PylithScalar* stateVars,
 				 const int numStateVars);
 
+      /** Compute derivative of friction with slip from properties and
+       * state variables.
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       *
+       * @returns Derivative of friction (magnitude of shear traction) at vertex.
+       */
+      PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				      const PylithScalar slip,
+				      const PylithScalar slipRate,
+				      const PylithScalar normalTraction,
+				      const PylithScalar* properties,
+				      const int numProperties,
+				      const PylithScalar* stateVars,
+				      const int numStateVars);
+
     }; // class StaticFriction
 
   } // friction

Modified: short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/TimeWeakening.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/TimeWeakening.i	2013-06-07 23:03:23 UTC (rev 22187)
+++ short/3D/PyLith/branches/v1.7-trunk/modulesrc/friction/TimeWeakening.i	2013-06-07 23:46:33 UTC (rev 22188)
@@ -101,6 +101,29 @@
 			    const PylithScalar* properties,
 			    const int numProperties);
       
+      /** Compute derivative of friction with slip from properties and
+       * state variables.
+       *
+       * @param t Time in simulation.
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       *
+       * @returns Derivative of friction (magnitude of shear traction) at vertex.
+       */
+      PylithScalar _calcFrictionDeriv(const PylithScalar t,
+				      const PylithScalar slip,
+				      const PylithScalar slipRate,
+				      const PylithScalar normalTraction,
+				      const PylithScalar* properties,
+				      const int numProperties,
+				      const PylithScalar* stateVars,
+				      const int numStateVars);
+
     }; // class TimeWeakening
 
   } // friction



More information about the CIG-COMMITS mailing list