[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