[cig-commits] r22283 - in short/3D/PyLith/branches/v1.7-trunk/templates: friction friction/tests materials materials/tests

brad at geodynamics.org brad at geodynamics.org
Fri Jun 14 15:22:52 PDT 2013


Author: brad
Date: 2013-06-14 15:22:51 -0700 (Fri, 14 Jun 2013)
New Revision: 22283

Modified:
   short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.cc
   short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.hh
   short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.i
   short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.py
   short/3D/PyLith/branches/v1.7-trunk/templates/friction/configure.ac
   short/3D/PyLith/branches/v1.7-trunk/templates/friction/frictioncontrib.i
   short/3D/PyLith/branches/v1.7-trunk/templates/friction/tests/TestViscousFriction.py
   short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.cc
   short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.hh
   short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.i
   short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.py
   short/3D/PyLith/branches/v1.7-trunk/templates/materials/configure.ac
   short/3D/PyLith/branches/v1.7-trunk/templates/materials/materialscontrib.i
   short/3D/PyLith/branches/v1.7-trunk/templates/materials/tests/TestPlaneStrainState.py
Log:
Backport updates from v2.0.0.

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.cc	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.cc	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 // This code was developed as part of the Computational Infrastructure
 // for Geodynamics (http://geodynamics.org).
 //
-// Copyright (c) 2010-2012 University of California, Davis
+// Copyright (c) 2010-2013 University of California, Davis
 //
 // See COPYING for license information.
 //
@@ -52,7 +52,7 @@
       const int numProperties = 3;
 
       // Friction model parameters.
-      const pylith::materials::Metadata::ParamDescription properties[] = {
+      const pylith::materials::Metadata::ParamDescription properties[numProperties] = {
 	{ "static_coefficient", 1, pylith::topology::FieldBase::SCALAR },
 	{ "reference_slip_rate", 1, pylith::topology::FieldBase::SCALAR },
 	{ "cohesion", 1, pylith::topology::FieldBase::SCALAR },
@@ -62,15 +62,16 @@
       const int numStateVars = 1;
 
       // State variables.
-      const pylith::materials::Metadata::ParamDescription stateVars[] = {
+      const pylith::materials::Metadata::ParamDescription stateVars[numStateVars] = {
 	{ "slip_rate", 1, pylith::topology::FieldBase::SCALAR },
       };
 
       // Values expected in spatial database
       const int numDBProperties = 3;
-      const char* dbProperties[3] = { "static-coefficient",
-				      "reference-slip-rate",
-				      "cohesion",
+      const char* dbProperties[numDBProperties] = { 
+	"static-coefficient",
+	"reference-slip-rate",
+	"cohesion",
       };
 
       // These are the state variables stored during the
@@ -80,7 +81,8 @@
       // slip rate.
 
       const int numDBStateVars = 1;
-      const char* dbStateVars[1] = { "slip-rate",
+      const char* dbStateVars[numDBStateVars] = { 
+	"slip-rate",
       };      
       
     } // _ViscousFriction
@@ -130,12 +132,11 @@
 // ----------------------------------------------------------------------
 // Compute properties from values in spatial database.
 void
-contrib::friction::ViscousFriction::_dbToProperties(
-				   PylithScalar* const propValues,
-				   const pylith::scalar_array& dbValues) const
+contrib::friction::ViscousFriction::_dbToProperties(PylithScalar* const propValues,
+						    const pylith::scalar_array& dbValues) const
 { // _dbToProperties
   // Check consistency of arguments
-  assert(0 != propValues);
+  assert(propValues);
   const int numDBValues = dbValues.size();
   assert(_ViscousFriction::numDBProperties == numDBValues);
 
@@ -172,11 +173,11 @@
 // Nondimensionalize properties.
 void
 contrib::friction::ViscousFriction::_nondimProperties(PylithScalar* const values,
-						    const int nvalues) const
+						      const int nvalues) const
 { // _nondimProperties
   // Check consistency of arguments.
-  assert(0 != _normalizer);
-  assert(0 != values);
+  assert(_normalizer);
+  assert(values);
   assert(nvalues == _ViscousFriction::numProperties);
 
   // Get scales needed to nondimensional parameters from the
@@ -197,11 +198,11 @@
 // Dimensionalize properties.
 void
 contrib::friction::ViscousFriction::_dimProperties(PylithScalar* const values,
-						      const int nvalues) const
+						   const int nvalues) const
 { // _dimProperties
   // Check consistency of arguments.
-  assert(0 != _normalizer);
-  assert(0 != values);
+  assert(_normalizer);
+  assert(values);
   assert(nvalues == _ViscousFriction::numProperties);
 
   // Get scales needed to dimensional parameters from the
@@ -221,12 +222,11 @@
 // ----------------------------------------------------------------------
 // Compute state variables from values in spatial database.
 void
-contrib::friction::ViscousFriction::_dbToStateVars(
-				  PylithScalar* const stateValues,
-				  const pylith::scalar_array& dbValues) const
+contrib::friction::ViscousFriction::_dbToStateVars(PylithScalar* const stateValues,
+						   const pylith::scalar_array& dbValues) const
 { // _dbToStateVars
   // Check consistency of arguments.
-  assert(0 != stateValues);
+  assert(stateValues);
   const int numDBValues = dbValues.size();
   assert(_ViscousFriction::numDBStateVars == numDBValues);
 
@@ -242,11 +242,11 @@
 // Nondimensionalize state variables.
 void
 contrib::friction::ViscousFriction::_nondimStateVars(PylithScalar* const values,
-						  const int nvalues) const
+						     const int nvalues) const
 { // _nondimStateVars
   // Check consistency of arguments.
-  assert(0 != _normalizer);
-  assert(0 != values);
+  assert(_normalizer);
+  assert(values);
   assert(nvalues == _ViscousFriction::numStateVars);
 
   // Get scales needed to nondimensional parameters from the
@@ -265,7 +265,7 @@
 // Dimensionalize state variables.
 void
 contrib::friction::ViscousFriction::_dimStateVars(PylithScalar* const values,
-					       const int nvalues) const
+						  const int nvalues) const
 { // _dimStateVars
   // Check consistency of arguments.
   assert(_normalizer);
@@ -315,6 +315,39 @@
 } // _calcFriction
 
 // ----------------------------------------------------------------------
+// Compute derivative of friction with slip from properties and state variables.
+PylithScalar
+contrib::friction::ViscousFriction::_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
+  // Check consistency of arguments.
+  assert(properties);
+  assert(_ViscousFriction::numProperties == numProperties);
+  assert(numStateVars);
+  assert(_ViscousFriction::numStateVars == numStateVars);
+
+  // Compute friction traction.
+  PylithScalar frictionDeriv = 0.0;
+  if (normalTraction <= 0.0) {
+    // if fault is in compression
+
+    // We want the derivative of friction with respect to
+    // slip. Because the friction model depends on slip rate, we
+    // approximate the derivative with respect to slip by taking the
+    // derivative with respect to slip rate and multiplying by the time step (dt).
+    frictionDeriv = -normalTraction * properties[p_coefS] / (properties[p_v0] * _dt);
+  } // if
+
+  return frictionDeriv;
+} // _calcFrictionDeriv
+
+// ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 contrib::friction::ViscousFriction::_updateStateVars(const PylithScalar t,

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.hh	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.hh	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 // This code was developed as part of the Computational Infrastructure
 // for Geodynamics (http://geodynamics.org).
 //
-// Copyright (c) 2010-2012 University of California, Davis
+// Copyright (c) 2010-2013 University of California, Davis
 //
 // See COPYING for license information.
 //
@@ -44,8 +44,7 @@
 } // pylith
 
 // ViscousFriction -------------------------------------------------------
-class contrib::friction::ViscousFriction : 
-  public pylith::friction::FrictionModel
+class contrib::friction::ViscousFriction : public pylith::friction::FrictionModel
 { // class ViscousFriction
   friend class TestViscousFriction; // unit testing
 
@@ -141,6 +140,29 @@
 			     const PylithScalar* stateVars,
 			     const int numStateVars);
 
+  /** 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.
+   */
+  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);
+  
   // --------------------------------------------------------------------
   // Optional function in the PyLith interface for a fault
   // constitutive model. Even though this function is optional, for it

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.i	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.i	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 // This code was developed as part of the Computational Infrastructure
 // for Geodynamics (http://geodynamics.org).
 //
-// Copyright (c) 2010-2012 University of California, Davis
+// Copyright (c) 2010-2013 University of California, Davis
 //
 // See COPYING for license information.
 //
@@ -90,6 +90,28 @@
 				 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 ViscousFriction
 
   } // friction

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.py	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/friction/ViscousFriction.py	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 # This code was developed as part of the Computational Infrastructure
 # for Geodynamics (http://geodynamics.org).
 #
-# Copyright (c) 2010-2012 University of California, Davis
+# Copyright (c) 2010-2013 University of California, Davis
 #
 # See COPYING for license information.
 #

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/friction/configure.ac
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/friction/configure.ac	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/friction/configure.ac	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 # This code was developed as part of the Computational Infrastructure
 # for Geodynamics (http://geodynamics.org).
 #
-# Copyright (c) 2010-2011 University of California, Davis
+# Copyright (c) 2010-2013 University of California, Davis
 #
 # See COPYING for license information.
 #

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/friction/frictioncontrib.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/friction/frictioncontrib.i	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/friction/frictioncontrib.i	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 // This code was developed as part of the Computational Infrastructure
 // for Geodynamics (http://geodynamics.org).
 //
-// Copyright (c) 2010-2012 University of California, Davis
+// Copyright (c) 2010-2013 University of California, Davis
 //
 // See COPYING for license information.
 //

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/friction/tests/TestViscousFriction.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/friction/tests/TestViscousFriction.py	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/friction/tests/TestViscousFriction.py	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 # This code was developed as part of the Computational Infrastructure
 # for Geodynamics (http://geodynamics.org).
 #
-# Copyright (c) 2010-2012 University of California, Davis
+# Copyright (c) 2010-2013 University of California, Davis
 #
 # See COPYING for license information.
 #

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.cc	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.cc	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 // This code was developed as part of the Computational Infrastructure
 // for Geodynamics (http://geodynamics.org).
 //
-// Copyright (c) 2010-2012 University of California, Davis
+// Copyright (c) 2010-2013 University of California, Davis
 //
 // See COPYING for license information.
 //
@@ -62,7 +62,7 @@
       const int numProperties = 3;
 
       // Physical properties. 
-      const pylith::materials::Metadata::ParamDescription properties[] = {
+      const pylith::materials::Metadata::ParamDescription properties[numProperties] = {
 	{ "density", 1, pylith::topology::FieldBase::SCALAR },
 	{ "mu", 1, pylith::topology::FieldBase::SCALAR },
 	{ "lambda", 1, pylith::topology::FieldBase::SCALAR },
@@ -70,7 +70,7 @@
 
       // Values expected in spatial database
       const int numDBProperties = 3;
-      const char* dbProperties[] = { "density", "vs", "vp" };      
+      const char* dbProperties[numDBProperties] = { "density", "vs", "vp" };      
       
       // These are the state variables stored during the
       // simulation. Usually, we store only the time-dependent values
@@ -82,7 +82,7 @@
       const int numStateVars = 2;
       
       /// State variables.
-      const pylith::materials::Metadata::ParamDescription stateVars[] = {
+      const pylith::materials::Metadata::ParamDescription stateVars[numStateVars] = {
 	{ "total_strain", tensorSize, pylith::topology::FieldBase::TENSOR },
 	{ "stress", tensorSize, pylith::topology::FieldBase::TENSOR },
       };
@@ -146,12 +146,11 @@
 // ----------------------------------------------------------------------
 // Compute parameters from values in spatial database.
 void
-contrib::materials::PlaneStrainState::_dbToProperties(
-				PylithScalar* const propValues,
-                                const pylith::scalar_array& dbValues)
+contrib::materials::PlaneStrainState::_dbToProperties(PylithScalar* const propValues,
+						      const pylith::scalar_array& dbValues)
 { // _dbToProperties
   // Check consistency of arguments
-  assert(0 != propValues);
+  assert(propValues);
   const int numDBValues = dbValues.size();
   assert(_PlaneStrainState::numDBProperties == numDBValues);
 
@@ -201,8 +200,8 @@
 							 const int nvalues) const
 { // _nondimProperties
   // Check consistency of arguments.
-  assert(0 != _normalizer);
-  assert(0 != values);
+  assert(_normalizer);
+  assert(values);
   assert(nvalues == _PlaneStrainState::numProperties);
 
   // Get scales needed to nondimensional parameters from the
@@ -227,8 +226,8 @@
 						      const int nvalues) const
 { // _dimProperties
   // Check consistency of arguments
-  assert(0 != _normalizer);
-  assert(0 != values);
+  assert(_normalizer);
+  assert(values);
   assert(nvalues == _PlaneStrainState::numProperties);
 
   // Get scales needed to dimensional parameters from the
@@ -256,10 +255,10 @@
 						    const int numStateVars)
 { // calcDensity
   // Check consistency of arguments.
-  assert(0 != density);
-  assert(0 != properties);
+  assert(density);
+  assert(properties);
   assert(_numPropsQuadPt == numProperties);
-  assert(0 != stateVars);
+  assert(stateVars);
   assert(_numVarsQuadPt == numStateVars);
 
   // Set density using physical properties (trivial since one our
@@ -285,17 +284,17 @@
 						   const bool computeStateVars)
 { // _calcStress
   // Check consistency of arguments.
-  assert(0 != stress);
+  assert(stress);
   assert(_PlaneStrainState::tensorSize == stressSize);
-  assert(0 != properties);
+  assert(properties);
   assert(_numPropsQuadPt == numProperties);
-  assert(0 != stateVars);
+  assert(stateVars);
   assert(_numVarsQuadPt == numStateVars);
-  assert(0 != totalStrain);
+  assert(totalStrain);
   assert(_PlaneStrainState::tensorSize == strainSize);
-  assert(0 != initialStress);
+  assert(initialStress);
   assert(_PlaneStrainState::tensorSize == initialStressSize);
-  assert(0 != initialStrain);
+  assert(initialStrain);
   assert(_PlaneStrainState::tensorSize == initialStrainSize);
 
   // Extract the material properties from the properties array.
@@ -338,17 +337,17 @@
 					     const int initialStrainSize)
 { // calcElasticConsts
   // Check consistency of arguments.
-  assert(0 != elasticConsts);
+  assert(elasticConsts);
   assert(_PlaneStrainState::numElasticConsts == numElasticConsts);
-  assert(0 != properties);
+  assert(properties);
   assert(_numPropsQuadPt == numProperties);
-  assert(0 != stateVars);
+  assert(stateVars);
   assert(_numVarsQuadPt == numStateVars);
-  assert(0 != totalStrain);
+  assert(totalStrain);
   assert(_PlaneStrainState::tensorSize == strainSize);
-  assert(0 != initialStress);
+  assert(initialStress);
   assert(_PlaneStrainState::tensorSize == initialStressSize);
-  assert(0 != initialStrain);
+  assert(initialStrain);
   assert(_PlaneStrainState::tensorSize == initialStrainSize);
  
   // Extract the material properties from the properties array.
@@ -373,8 +372,7 @@
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
 PylithScalar
-contrib::materials::PlaneStrainState::stableTimeStepImplicit(
-				    const pylith::topology::Mesh& mesh) {
+contrib::materials::PlaneStrainState::stableTimeStepImplicit(const pylith::topology::Mesh& mesh) {
   // Override the ElasticMaterial::stableTimeStepImplicit() function
   // (which calls _stableTimeStepImplicit() for each quadrature point
   // ) with an optimized calculation of the stable time step. This is
@@ -386,11 +384,10 @@
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
 PylithScalar
-contrib::materials::PlaneStrainState::_stableTimeStepImplicit(
-				     const PylithScalar* properties,
-				     const int numProperties,
-				     const PylithScalar* stateVars,
-				     const int numStateVars) const
+contrib::materials::PlaneStrainState::_stableTimeStepImplicit(const PylithScalar* properties,
+							      const int numProperties,
+							      const PylithScalar* stateVars,
+							      const int numStateVars) const
 { // _stableTimeStepImplicit
   //  Return the stable time step for this material given its current
   // state. This function will never be called because we provide the
@@ -402,30 +399,52 @@
 } // _stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+contrib::materials::PlaneStrainState::_stableTimeStepExplicit(const PylithScalar* properties,
+							     const int numProperties,
+							     const PylithScalar* stateVars,
+							     const int numStateVars,
+							     const double minCellWidth) const
+{ // _stableTimeStepExplicit
+  assert(properties);
+  assert(_numPropsQuadPt == numProperties);
+ 
+  const PylithScalar mu = properties[p_mu];
+  const PylithScalar lambda = properties[p_lambda];
+  const PylithScalar density = properties[p_density];
+
+  assert(density > 0.0);
+  const PylithScalar vp = sqrt((lambda + 2*mu) / density);
+
+  const PylithScalar dtStable = minCellWidth / vp;
+  return dtStable;
+} // _stableTimeStepExplicit
+
+// ----------------------------------------------------------------------
 // Update state variables.
 void
-contrib::materials::PlaneStrainState::_updateStateVars(
-					    PylithScalar* const stateVars,
-					    const int numStateVars,
-					    const PylithScalar* properties,
-					    const int numProperties,
-					    const PylithScalar* totalStrain,
-					    const int strainSize,
-					    const PylithScalar* initialStress,
-					    const int initialStressSize,
-					    const PylithScalar* initialStrain,
-					    const int initialStrainSize)
+contrib::materials::PlaneStrainState::_updateStateVars(PylithScalar* const stateVars,
+						       const int numStateVars,
+						       const PylithScalar* properties,
+						       const int numProperties,
+						       const PylithScalar* totalStrain,
+						       const int strainSize,
+						       const PylithScalar* initialStress,
+						       const int initialStressSize,
+						       const PylithScalar* initialStrain,
+						       const int initialStrainSize)
 { // _updateStateVars
   // Check consistency of arguments.
-  assert(0 != stateVars);
+  assert(stateVars);
   assert(_numVarsQuadPt == numStateVars);
-  assert(0 != properties);
+  assert(properties);
   assert(_numPropsQuadPt == numProperties);
-  assert(0 != totalStrain);
+  assert(totalStrain);
   assert(_PlaneStrainState::tensorSize == strainSize);
-  assert(0 != initialStress);
+  assert(initialStress);
   assert(_PlaneStrainState::tensorSize == initialStressSize);
-  assert(0 != initialStrain);
+  assert(initialStrain);
   assert(_PlaneStrainState::tensorSize == initialStrainSize);
 
   // Store the tensor size as a local value.

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.hh	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.hh	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 // This code was developed as part of the Computational Infrastructure
 // for Geodynamics (http://geodynamics.org).
 //
-// Copyright (c) 2010-2012 University of California, Davis
+// Copyright (c) 2010-2013 University of California, Davis
 //
 // See COPYING for license information.
 //
@@ -49,8 +49,7 @@
 } // contrib
 
 // PlaneStrainState -----------------------------------------------------
-class contrib::materials::PlaneStrainState : 
-  public pylith::materials::ElasticMaterial
+class contrib::materials::PlaneStrainState : public pylith::materials::ElasticMaterial
 { // class PlaneStrainState
   friend class TestPlaneStrainState; // unit testing
 
@@ -199,6 +198,22 @@
 				       const PylithScalar* stateVars,
 				       const int numStateVars) const;
 
+  /** Get stable time step for explicit time integration.
+   *
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   * @param minCellWidth Minimum width across cell.
+   *
+   * @returns Time step
+   */
+  PylithScalar _stableTimeStepExplicit(const PylithScalar* properties,
+				       const int numProperties,
+				       const PylithScalar* stateVars,
+				       const int numStateVars,
+				       const double minCellWidth) const;
+  
   // --------------------------------------------------------------------
   // Optional function in the PyLith interface for a bulk constitutive
   // model. Even though this function is optional, for it to be used

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.i	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.i	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 // This code was developed as part of the Computational Infrastructure
 // for Geodynamics (http://geodynamics.org).
 //
-// Copyright (c) 2010-2012 University of California, Davis
+// Copyright (c) 2010-2013 University of California, Davis
 //
 // See COPYING for license information.
 //
@@ -176,6 +176,22 @@
 					   const PylithScalar* stateVars,
 					   const int numStateVars) const;
       
+      /** Get stable time step for explicit time integration.
+       *
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       * @param minCellWidth Minimum width across cell.
+       *
+       * @returns Time step
+       */
+      PylithScalar _stableTimeStepExplicit(const PylithScalar* properties,
+					   const int numProperties,
+					   const PylithScalar* stateVars,
+					   const int numStateVars,
+					   const double minCellWidth) const;
+
       // PROTECTED METHODS //////////////////////////////////////////////
     protected :
       

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.py	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/materials/PlaneStrainState.py	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 # This code was developed as part of the Computational Infrastructure
 # for Geodynamics (http://geodynamics.org).
 #
-# Copyright (c) 2010-2012 University of California, Davis
+# Copyright (c) 2010-2013 University of California, Davis
 #
 # See COPYING for license information.
 #

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/materials/configure.ac
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/materials/configure.ac	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/materials/configure.ac	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 # This code was developed as part of the Computational Infrastructure
 # for Geodynamics (http://geodynamics.org).
 #
-# Copyright (c) 2010-2011 University of California, Davis
+# Copyright (c) 2010-2013 University of California, Davis
 #
 # See COPYING for license information.
 #

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/materials/materialscontrib.i
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/materials/materialscontrib.i	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/materials/materialscontrib.i	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 // This code was developed as part of the Computational Infrastructure
 // for Geodynamics (http://geodynamics.org).
 //
-// Copyright (c) 2010-2012 University of California, Davis
+// Copyright (c) 2010-2013 University of California, Davis
 //
 // See COPYING for license information.
 //

Modified: short/3D/PyLith/branches/v1.7-trunk/templates/materials/tests/TestPlaneStrainState.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/templates/materials/tests/TestPlaneStrainState.py	2013-06-14 22:14:18 UTC (rev 22282)
+++ short/3D/PyLith/branches/v1.7-trunk/templates/materials/tests/TestPlaneStrainState.py	2013-06-14 22:22:51 UTC (rev 22283)
@@ -9,7 +9,7 @@
 # This code was developed as part of the Computational Infrastructure
 # for Geodynamics (http://geodynamics.org).
 #
-# Copyright (c) 2010-2012 University of California, Davis
+# Copyright (c) 2010-2013 University of California, Davis
 #
 # See COPYING for license information.
 #



More information about the CIG-COMMITS mailing list