[cig-commits] r20623 - in short/3D/PyLith/branches/v1.7-trunk: libsrc/pylith/materials unittests/libtests/materials unittests/libtests/materials/data

brad at geodynamics.org brad at geodynamics.org
Thu Aug 23 15:51:14 PDT 2012


Author: brad
Date: 2012-08-23 15:51:13 -0700 (Thu, 23 Aug 2012)
New Revision: 20623

Modified:
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPrager3D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPrager3D.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPragerPlaneStrain.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPragerPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticMaterial.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticMaterial.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStress.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStress.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStrain1D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStrain1D.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStress1D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStress1D.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellIsotropic3D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellIsotropic3D.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellPlaneStrain.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLaw3D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLaw3D.hh
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLawPlaneStrain.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLawPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestDruckerPrager3D.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestDruckerPragerPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticIsotropic3D.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticMaterial.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticMaterial.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticPlaneStress.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticStrain1D.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticStress1D.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellQpQsIsotropic3D.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestMaxwellPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestPowerLaw3D.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestPowerLawPlaneStrain.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDepData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3D.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialApp.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrain.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStress.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1D.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1D.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1DData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1DData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElastic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElasticData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElasticData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDep.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDepData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDepData.hh
Log:
Worked on material unit tests for calculating stable time step for explicit time stepping.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPrager3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPrager3D.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPrager3D.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -432,6 +432,30 @@
 } // _stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::DruckerPrager3D::_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
+
+
+// ----------------------------------------------------------------------
 // Compute stress tensor at location from properties as an elastic
 // material.
 void

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPrager3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPrager3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPrager3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -229,6 +229,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;
+  
   /** Update state variables (for next time step).
    *
    * @param stateVars State variables at location.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPragerPlaneStrain.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPragerPlaneStrain.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPragerPlaneStrain.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -452,6 +452,30 @@
 } // _stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::DruckerPragerPlaneStrain::_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
+
+
+// ----------------------------------------------------------------------
 // Compute stress tensor at location from properties as an elastic
 // material.
 void

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPragerPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPragerPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/DruckerPragerPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -225,10 +225,26 @@
    * @returns Time step
    */
   PylithScalar _stableTimeStepImplicit(const PylithScalar* properties,
-				 const int numProperties,
-				 const PylithScalar* stateVars,
-				 const int numStateVars) const;
+				       const int numProperties,
+				       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;
+  
   /** Update state variables (for next time step).
    *
    * @param stateVars State variables at location.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticIsotropic3D.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -343,4 +343,28 @@
 } // _stableTimeStepImplicit
 
 
+// ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::ElasticIsotropic3D::_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
+
+
 // End of file 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticIsotropic3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -181,6 +181,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;
+  
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticMaterial.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticMaterial.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticMaterial.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -320,7 +320,6 @@
     sieveMesh->restrictClosure(*c_iter, coordsVisitor);
     const double minCellWidth = quadrature->minCellWidth(coordinatesCell);
 
-#if 0
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
       const PylithScalar dt = 
 	_stableTimeStepExplicit(&_propertiesCell[iQuad*numPropsQuadPt],
@@ -331,7 +330,6 @@
       if (dt < dtStable)
 	dtStable = dt;
     } // for
-#endif
   } // for
   
   return dtStable;

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticMaterial.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticMaterial.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticMaterial.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -337,14 +337,12 @@
    *
    * @returns Time step
    */
-#if 0
   virtual
   PylithScalar _stableTimeStepExplicit(const PylithScalar* properties,
 				       const int numProperties,
 				       const PylithScalar* stateVars,
 				       const int numStateVars,
 				       const double minCellWidth) const = 0;
-#endif
   
   /** Compute 2D deviatoric stress/strain from vector and mean value.
    *

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStrain.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -329,4 +329,28 @@
 } // _stableTimeStepImplicit
 
 
+// ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::ElasticPlaneStrain::_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
+
+
 // End of file 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -181,6 +181,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;
+  
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStress.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStress.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -332,4 +332,28 @@
 } // _stableTimeStepImplicit
 
 
+// ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::ElasticPlaneStress::_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
+
+
 // End of file 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStress.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticPlaneStress.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -183,6 +183,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;
+  
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStrain1D.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStrain1D.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -309,4 +309,28 @@
 } // _stableTimeStepImplicit
 
 
+// ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::ElasticStrain1D::_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
+
+
 // End of file 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStrain1D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStrain1D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -182,6 +182,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;
+  
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStress1D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStress1D.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStress1D.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -309,4 +309,28 @@
 } // _stableTimeStepImplicit
 
 
+// ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::ElasticStress1D::_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
+
+
 // End of file 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStress1D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStress1D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/ElasticStress1D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -183,6 +183,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;
+  
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -895,8 +895,31 @@
   return dtStable;
 } // _stableTimeStepImplicit
 
-#include <iostream>
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::GenMaxwellIsotropic3D::_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_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
+  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
+
+
+// ----------------------------------------------------------------------
 // Compute viscous strain for current time step.
 void
 pylith::materials::GenMaxwellIsotropic3D::_computeStateVars(

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellIsotropic3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -230,6 +230,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;
+  
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -843,8 +843,32 @@
   return dtStable;
 } // _stableTimeStepImplicit
 
-#include <iostream>
+
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::GenMaxwellPlaneStrain::_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_muEff];
+  const PylithScalar lambda = properties[p_lambdaEff];
+  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
+
+
+// ----------------------------------------------------------------------
 // Compute viscous strain for current time step.
 void
 pylith::materials::GenMaxwellPlaneStrain::_computeStateVars(

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -240,6 +240,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;
+  
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -974,6 +974,30 @@
 } // _stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::GenMaxwellQpQsIsotropic3D::_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_muEff];
+  const PylithScalar kappa = properties[p_kEff];
+  const PylithScalar density = properties[p_density];
+
+  assert(density > 0.0);
+  const PylithScalar vp = sqrt((kappa + 4.0/3.0*mu) / density);
+
+  const PylithScalar dtStable = minCellWidth / vp;
+  return dtStable;
+} // _stableTimeStepExplicit
+
+
+// ----------------------------------------------------------------------
 // Compute viscous strain for current time step.
 void
 pylith::materials::GenMaxwellQpQsIsotropic3D::_computeStateVars(

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/GenMaxwellQpQsIsotropic3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -230,6 +230,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;
+  
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellIsotropic3D.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellIsotropic3D.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -739,6 +739,30 @@
 } // _stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::MaxwellIsotropic3D::_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
+
+
+// ----------------------------------------------------------------------
 // Compute viscous strain for current time step.
 void
 pylith::materials::MaxwellIsotropic3D::_computeStateVars(

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellIsotropic3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellIsotropic3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -218,6 +218,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;
+  
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellPlaneStrain.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellPlaneStrain.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellPlaneStrain.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -697,6 +697,30 @@
 } // _stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::MaxwellPlaneStrain::_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
+
+
+// ----------------------------------------------------------------------
 // Compute viscous strain for current time step.
 void
 pylith::materials::MaxwellPlaneStrain::_computeStateVars(

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/MaxwellPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -232,6 +232,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;
+  
   // PRIVATE TYPEDEFS ///////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLaw3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLaw3D.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLaw3D.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -436,6 +436,30 @@
 } // _stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::PowerLaw3D::_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
+
+
+// ----------------------------------------------------------------------
 // Compute stress tensor at location from properties as an elastic
 // material.
 void

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLaw3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLaw3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLaw3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -233,6 +233,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;
+  
   /** Update state variables (for next time step).
    *
    * @param stateVars State variables at location.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLawPlaneStrain.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLawPlaneStrain.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLawPlaneStrain.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -436,6 +436,30 @@
 } // _stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Get stable time step for explicit time integration.
+PylithScalar
+pylith::materials::PowerLawPlaneStrain::_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
+
+
+// ----------------------------------------------------------------------
 // Compute stress tensor at location from properties as an elastic
 // material.
 void

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLawPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLawPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/materials/PowerLawPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -233,6 +233,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;
+  
   /** Update state variables (for next time step).
    *
    * @param stateVars State variables at location.

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestDruckerPrager3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestDruckerPrager3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestDruckerPrager3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Drucker-Prager elastoplastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestDruckerPragerPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestDruckerPragerPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestDruckerPragerPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Drucker-Prager elastoplastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticIsotropic3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticIsotropic3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -57,6 +57,7 @@
   CPPUNIT_TEST( test_calcElasticConsts );
   CPPUNIT_TEST( test_updateStateVars );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   CPPUNIT_TEST( testHasProperty );
   CPPUNIT_TEST( testHasStateVar );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticMaterial.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticMaterial.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticMaterial.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -393,6 +393,57 @@
 } // testStableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Test calcStableTimeStepExplicit()
+void
+pylith::materials::TestElasticMaterial::testStableTimeStepExplicit(void)
+{ // testStableTimeStepExplicit
+  topology::Mesh mesh;
+  ElasticStrain1D material;
+  ElasticStrain1DData data;
+  _initialize(&mesh, &material, &data);
+
+  // Get cells associated with material
+  const int materialId = 24;
+  const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
+  assert(!sieveMesh.isNull());
+  const ALE::Obj<SieveMesh::label_sequence>& cells = 
+    sieveMesh->getLabelStratum("material-id", materialId);
+  SieveMesh::point_type cell = *cells->begin();
+
+  // Setup quadrature
+  feassemble::Quadrature<topology::Mesh> quadrature;
+  feassemble::GeometryLine1D geometry;
+  quadrature.refGeometry(&geometry);
+  const int cellDim = 1;
+  const int numCorners = 3;
+  const int numQuadPts = 2;
+  const int spaceDim = 1;
+  const PylithScalar basis[] = { 0.455, -0.122, 0.667, -0.122, 0.455, 0.667 };
+  const PylithScalar basisDeriv[] = { 
+    -1.07735027e+00,
+    -7.73502692e-02,
+    1.15470054e+00,
+    7.73502692e-02,
+    1.07735027e+00,
+    -1.15470054e+00,
+  };
+  const PylithScalar quadPtsRef[] = { -0.577350269, 0.577350269 };
+  const PylithScalar quadWts[] = { 1.0, 1.0  };
+  quadrature.initialize(basis, numQuadPts, numCorners,
+			basisDeriv, numQuadPts, numCorners, cellDim,
+			quadPtsRef, numQuadPts, cellDim,
+			quadWts, numQuadPts,
+			spaceDim);
+
+  material.retrievePropsAndVars(cell);
+  const PylithScalar dt = material.stableTimeStepExplicit(mesh, &quadrature);
+
+  const PylithScalar tolerance = 1.0e-06;
+  const PylithScalar dtE = data.dtStableExplicit / 1000.0 * 2.0;
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, dt/dtE, tolerance);
+} // testStableTimeStepExplicit
+
+// ----------------------------------------------------------------------
 // Setup testing data.
 void
 pylith::materials::TestElasticMaterial::setUp(void)
@@ -635,7 +686,7 @@
 // Test _stableTimeStepImplicit()
 void
 pylith::materials::TestElasticMaterial::test_stableTimeStepImplicit(void)
-{ // _testCalcDensity
+{ // test_stableTimeStepImplicit
   CPPUNIT_ASSERT(0 != _matElastic);
   CPPUNIT_ASSERT(0 != _dataElastic);
   const ElasticMaterialData* data = _dataElastic;
@@ -648,9 +699,32 @@
 
   const PylithScalar tolerance = 1.0e-06;
   CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, dt/dtE, tolerance);
-} // _testStableTimeStepImplicit
+} // test_stableTimeStepImplicit
 
 // ----------------------------------------------------------------------
+// Test _stableTimeStepExplicit()
+void
+pylith::materials::TestElasticMaterial::test_stableTimeStepExplicit(void)
+{ // test_stableTimeStepExplicit
+  CPPUNIT_ASSERT(0 != _matElastic);
+  CPPUNIT_ASSERT(0 != _dataElastic);
+  const ElasticMaterialData* data = _dataElastic;
+
+  const PylithScalar minCellWidth = 1000.0;
+
+  const PylithScalar dt =
+    _matElastic->_stableTimeStepExplicit(data->properties, data->numPropsQuadPt,
+					 data->stateVars, data->numVarsQuadPt,
+					 minCellWidth);
+
+  const PylithScalar dtE = data->dtStableExplicit;
+
+  const PylithScalar tolerance = 1.0e-06;
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(dtE, dt, tolerance); // TEMPORARY
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, dt/dtE, tolerance);
+} // test_stableTimeStepExplicit
+
+// ----------------------------------------------------------------------
 // Setup nondimensionalization.
 void
 pylith::materials::TestElasticMaterial::setupNormalizer(void)

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticMaterial.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticMaterial.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticMaterial.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -56,6 +56,7 @@
   CPPUNIT_TEST( testCalcDerivElastic );
   CPPUNIT_TEST( testUpdateStateVars );
   CPPUNIT_TEST( testStableTimeStepImplicit );
+  CPPUNIT_TEST( testStableTimeStepExplicit );
 
   CPPUNIT_TEST_SUITE_END();
 
@@ -89,6 +90,9 @@
   /// Test stableTimeStepImplicit().
   void testStableTimeStepImplicit(void);
 
+  /// Test stableTimeStepExplicit().
+  void testStableTimeStepExplicit(void);
+
   // PUBLIC METHODS /////////////////////////////////////////////////////
 public :
 
@@ -117,6 +121,9 @@
   /// Test _stableTimeStepImplicit().
   void test_stableTimeStepImplicit(void);
 
+  /// Test _stableTimeStepExplicit().
+  void test_stableTimeStepExplicit(void);
+
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -57,6 +57,7 @@
   CPPUNIT_TEST( test_calcElasticConsts );
   CPPUNIT_TEST( test_updateStateVars );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   CPPUNIT_TEST_SUITE_END();
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticPlaneStress.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticPlaneStress.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -57,6 +57,7 @@
   CPPUNIT_TEST( test_calcElasticConsts );
   CPPUNIT_TEST( test_updateStateVars );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   CPPUNIT_TEST_SUITE_END();
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticStrain1D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticStrain1D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -57,6 +57,7 @@
   CPPUNIT_TEST( test_calcElasticConsts );
   CPPUNIT_TEST( test_updateStateVars );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   CPPUNIT_TEST_SUITE_END();
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticStress1D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticStress1D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestElasticStress1D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -57,6 +57,7 @@
   CPPUNIT_TEST( test_calcElasticConsts );
   CPPUNIT_TEST( test_updateStateVars );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   CPPUNIT_TEST_SUITE_END();
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Maxwell viscoelastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Maxwell viscoelastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellQpQsIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellQpQsIsotropic3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestGenMaxwellQpQsIsotropic3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Maxwell viscoelastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Maxwell viscoelastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestMaxwellPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestMaxwellPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestMaxwellPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Maxwell viscoelastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestPowerLaw3D.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestPowerLaw3D.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestPowerLaw3D.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Power Law viscoelastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestPowerLawPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestPowerLawPlaneStrain.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/TestPowerLawPlaneStrain.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -55,6 +55,7 @@
   CPPUNIT_TEST( testDimStateVars );
   CPPUNIT_TEST( test_calcDensity );
   CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( test_stableTimeStepExplicit );
 
   // Need to test Power Law viscoelastic specific behavior.
   CPPUNIT_TEST( testTimeStep );

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -167,7 +167,8 @@
         self._calcStress(strainB, muB, lambdaB, \
                            initialStressB, initialStrainB)
 
-    self.dtStableImplicit = 1.0e10
+    self.dtStableImplicit = 1.0e+10
+    self.dtStableExplicit = 1000.0 / vpA
 
     plasticStrainUpdated = numpy.zeros((numLocs, tensorSize),
                                        dtype=numpy.float64)

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::DruckerPrager3DElasticData::_dtStableImplicit =   1.00000000e+10;
 
+const PylithScalar pylith::materials::DruckerPrager3DElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::DruckerPrager3DElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -338,6 +340,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -46,8 +46,6 @@
     """
     ElasticMaterialApp.__init__(self, name)
 
-    # import pdb
-    # pdb.set_trace()
     numLocs = 2
 
     self.dimension = dimension
@@ -190,6 +188,7 @@
                                                initialStressB, initialStrainB)
 
     self.dtStableImplicit = 1.0e+99
+    self.dtStableExplicit = 1000.0 / vpA
 
     return
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_dtStableImplicit =   1.00000000e+99;
 
+const PylithScalar pylith::materials::DruckerPrager3DTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::DruckerPrager3DTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -338,6 +340,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPrager3DTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -78,7 +78,7 @@
     initialStrainA = [3.1e-4, 3.2e-4, 3.4e-4]
     muA = vsA*vsA*densityA
     lambdaA = vpA*vpA*densityA - 2.0*muA
-    stressZZInitialA = numpy.array([1.075e4], dtype=numpy.float64)
+    stressZZInitialA = 1.075e+4
 
     denomFrictionA = math.sqrt(3.0) * (3.0 - math.sin(frictionAngleA))
     denomDilatationA = math.sqrt(3.0) * (3.0 - math.sin(dilatationAngleA))
@@ -103,7 +103,7 @@
     alphaYieldB = 2.0 * math.sin(frictionAngleB)/denomFrictionB
     betaB = 6.0 * cohesionB * math.cos(frictionAngleB)/denomFrictionB
     alphaFlowB = 2.0 * math.sin(dilatationAngleB)/denomDilatationB
-    stressZZInitialB = numpy.array([2.575e4], dtype=numpy.float64)
+    stressZZInitialB = 2.575e+4
 
     self.lengthScale = 1.0e+3
     self.pressureScale = muA
@@ -179,6 +179,7 @@
                            initialStressB, initialStrainB)
 
     self.dtStableImplicit = 1.0e10
+    self.dtStableExplicit = 1000.0 / vpA
 
     stateVarsUpdatedA = numpy.array([stressZZInitialA, 0.0, 0.0, 0.0, 0.0],
                                     dtype=numpy.float64)

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::DruckerPragerPlaneStrainElasticData::_dtStableImplicit =   1.00000000e+10;
 
+const PylithScalar pylith::materials::DruckerPragerPlaneStrainElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::DruckerPragerPlaneStrainElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -252,6 +254,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -195,6 +195,7 @@
                                                stateVarsB)
 
     self.dtStableImplicit = 1.0e+99
+    self.dtStableExplicit = 1000.0 / vpA
 
     return
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::DruckerPragerPlaneStrainTimeDepData::_dtStableImplicit =   1.00000000e+99;
 
+const PylithScalar pylith::materials::DruckerPragerPlaneStrainTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::DruckerPragerPlaneStrainTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -252,6 +254,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/DruckerPragerPlaneStrainTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3D.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3D.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3D.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -119,6 +119,9 @@
 
     self.stress = stress
     self.elasticConsts = elasticConsts
+
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::ElasticIsotropic3DData::_dtStableImplicit =   1.00000000e+99;
 
+const PylithScalar pylith::materials::ElasticIsotropic3DData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::ElasticIsotropic3DData::_numPropertyValues[] = {
 1,
 1,
@@ -253,6 +255,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int* _numStateVarValues;

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialApp.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialApp.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialApp.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -89,6 +89,7 @@
 
     # Elastic material information
     self.dtStableImplicit = 1.0e+99
+    self.dtStableExplicit = 1.0e+99
     self.density = None
     self.strain = None
     self.stress = None
@@ -200,6 +201,9 @@
     self.data.addScalar(vtype="PylithScalar", name="_dtStableImplicit",
                         value=self.dtStableImplicit,
                         format="%16.8e")
+    self.data.addScalar(vtype="PylithScalar", name="_dtStableExplicit",
+                        value=self.dtStableExplicit,
+                        format="%16.8e")
     self.data.addArray(vtype="PylithScalar", name="_density",
                        values=self.density,
                        format="%16.8e", ncols=1)

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -20,6 +20,7 @@
 
 pylith::materials::ElasticMaterialData::ElasticMaterialData(void) :
   dtStableImplicit(0.0),
+  dtStableExplicit(0.0),
   density(0),
   strain(0),
   stress(0),

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticMaterialData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -43,6 +43,7 @@
 public:
 
   PylithScalar dtStableImplicit; ///< Stable time step for implicit time stepping.
+  PylithScalar dtStableExplicit; ///< Stable time step for explicit time stepping.
   PylithScalar* density; ///< Density at location.
   PylithScalar* strain; ///< Strain at location.
   PylithScalar* stress; ///< Stress at location.

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrain.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrain.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrain.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -118,6 +118,9 @@
 
     self.stress = stress
     self.elasticConsts = elasticConsts
+
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::ElasticPlaneStrainData::_dtStableImplicit =   1.00000000e+99;
 
+const PylithScalar pylith::materials::ElasticPlaneStrainData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::ElasticPlaneStrainData::_numPropertyValues[] = {
 1,
 1,
@@ -175,6 +177,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int* _numStateVarValues;

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStress.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStress.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStress.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -118,6 +118,9 @@
 
     self.stress = stress
     self.elasticConsts = elasticConsts
+
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::ElasticPlaneStressData::_dtStableImplicit =   1.00000000e+99;
 
+const PylithScalar pylith::materials::ElasticPlaneStressData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::ElasticPlaneStressData::_numPropertyValues[] = {
 1,
 1,
@@ -175,6 +177,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int* _numStateVarValues;

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1D.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1D.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1D.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -118,6 +118,9 @@
 
     self.stress = stress
     self.elasticConsts = elasticConsts
+
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::ElasticStrain1DData::_dtStableImplicit =   1.00000000e+99;
 
+const PylithScalar pylith::materials::ElasticStrain1DData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::ElasticStrain1DData::_numPropertyValues[] = {
 1,
 1,
@@ -143,6 +145,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int* _numStateVarValues;

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1D.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1D.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1D.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -118,6 +118,9 @@
 
     self.stress = stress
     self.elasticConsts = elasticConsts
+
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1DData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1DData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1DData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::ElasticStress1DData::_dtStableImplicit =   1.00000000e+99;
 
+const PylithScalar pylith::materials::ElasticStress1DData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::ElasticStress1DData::_numPropertyValues[] = {
 1,
 1,
@@ -143,6 +145,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1DData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1DData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/ElasticStress1DData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int* _numStateVarValues;

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -186,6 +186,7 @@
                                                initialStressB, initialStrainB,
                                                self.stateVars[1,:])
     self.dtStableImplicit = 0.2*min(min(maxwellTimeA), min(maxwellTimeB))
+    self.dtStableExplicit = 1000.0 / vpA
 
     return
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+06;
 
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -527,6 +529,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -213,6 +213,7 @@
                                                initialStressB, initialStrainB,
                                                stateVarsB)
     self.dtStableImplicit = 0.2*min(min(maxwellTimeA), min(maxwellTimeB))
+    self.dtStableExplicit = 1000.0 / vpA
 
     return
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+06;
 
+const PylithScalar pylith::materials::GenMaxwellIsotropic3DTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::GenMaxwellIsotropic3DTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -527,6 +529,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -194,6 +194,7 @@
                                                initialStressB, initialStrainB,
                                                self.stateVars[1,:])
     self.dtStableImplicit = 0.2*min(min(maxwellTimeA), min(maxwellTimeB))
+    self.dtStableExplicit = 1000.0 / vpA
 
     return
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_dtStableImplicit =   8.88888889e+06;
 
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::GenMaxwellPlaneStrainElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -378,6 +380,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -229,6 +229,7 @@
                                                initialStressB, initialStrainB,
                                                stateVarsB)
     self.dtStableImplicit = 0.2*min(min(maxwellTimeA), min(maxwellTimeB))
+    self.dtStableExplicit = 1000.0 / vpA
 
     return
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_dtStableImplicit =   8.88888889e+06;
 
+const PylithScalar pylith::materials::GenMaxwellPlaneStrainTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::GenMaxwellPlaneStrainTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -378,6 +380,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellPlaneStrainTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -212,6 +212,7 @@
         self._calcStress(strainB, muB, lambdaB, \
                            initialStressB, initialStrainB)
     self.dtStableImplicit = 0.2*min(min(maxwellTimeA), min(maxwellTimeB))
+    self.dtStableExplicit = 1000.0 / vpA
 
     return
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+05;
 
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::GenMaxwellQpQsIsotropic3DElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -570,6 +572,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -247,6 +247,7 @@
                          strainTB, visStrainB, visStrainBulkB,
                          initialStressB, initialStrainB)
     self.dtStableImplicit = 0.2*min(min(maxwellTimeA), min(maxwellTimeB),min(maxwellTimeBulkA), min(maxwellTimeBulkB))
+    self.dtStableExplicit = 1000.0 / vpA
 
     return
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+05;
 
+const PylithScalar pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::GenMaxwellQpQsIsotropic3DTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -570,6 +572,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/GenMaxwellQpQsIsotropic3DTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -146,6 +146,8 @@
         self._calcStress(strainB, muB, lambdaB, \
                            initialStressB, initialStrainB)
     self.dtStableImplicit = 0.2*min(maxwellTimeA, maxwellTimeB)
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_dtStableImplicit =   8.88888889e+06;
 
+const PylithScalar pylith::materials::MaxwellIsotropic3DElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::MaxwellIsotropic3DElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -377,6 +379,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -185,6 +185,8 @@
                                                initialStressB, initialStrainB)
 
     self.dtStableImplicit = 0.2*min(maxwellTimeA, maxwellTimeB)
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_dtStableImplicit =   8.88888889e+06;
 
+const PylithScalar pylith::materials::MaxwellIsotropic3DTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::MaxwellIsotropic3DTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -365,6 +367,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellIsotropic3DTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -164,6 +164,8 @@
                                                initialStressB, initialStrainB,
                                                self.stateVars[1,:])
     self.dtStableImplicit = 0.2*min(maxwellTimeA, maxwellTimeB)
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_dtStableImplicit =   8.88888889e+06;
 
+const PylithScalar pylith::materials::MaxwellPlaneStrainElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::MaxwellPlaneStrainElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -264,6 +266,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -199,6 +199,8 @@
                                                stateVarsB)
 
     self.dtStableImplicit = 0.2*min(maxwellTimeA, maxwellTimeB)
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_dtStableImplicit =   8.88888889e+06;
 
+const PylithScalar pylith::materials::MaxwellPlaneStrainTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::MaxwellPlaneStrainTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -264,6 +266,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/MaxwellPlaneStrainTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -193,6 +193,8 @@
                                          dtype=numpy.float64)
 
     self.dtStableImplicit = 0.1*min(maxwellTimeA, maxwellTimeB)
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::PowerLaw3DElasticData::_dtStableImplicit =   4.44444444e+06;
 
+const PylithScalar pylith::materials::PowerLaw3DElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::PowerLaw3DElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -393,6 +395,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -211,6 +211,8 @@
                                         powerLawExponentB, stressB)
 
     self.dtStableImplicit = 0.1*min(maxwellTimeA, maxwellTimeB)
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_dtStableImplicit =   4.44444444e+06;
 
+const PylithScalar pylith::materials::PowerLaw3DTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::PowerLaw3DTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -381,6 +383,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLaw3DTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElastic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElastic.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElastic.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -214,6 +214,8 @@
 
 
     self.dtStableImplicit = 0.1*min(maxwellTimeA, maxwellTimeB)
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElasticData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElasticData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElasticData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::PowerLawPlaneStrainElasticData::_dtStableImplicit =   4.09893495e+06;
 
+const PylithScalar pylith::materials::PowerLawPlaneStrainElasticData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::PowerLawPlaneStrainElasticData::_numPropertyValues[] = {
 1,
 1,
@@ -289,6 +291,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElasticData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElasticData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainElasticData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDep.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDep.py	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDep.py	2012-08-23 22:51:13 UTC (rev 20623)
@@ -223,6 +223,8 @@
                                         self.stateVarsUpdated[1,5:])
 
     self.dtStableImplicit = 0.1*min(maxwellTimeA, maxwellTimeB)
+    self.dtStableExplicit = 1000.0 / vpA
+
     return
 
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDepData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDepData.cc	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDepData.cc	2012-08-23 22:51:13 UTC (rev 20623)
@@ -47,6 +47,8 @@
 
 const PylithScalar pylith::materials::PowerLawPlaneStrainTimeDepData::_dtStableImplicit =   4.44444444e+06;
 
+const PylithScalar pylith::materials::PowerLawPlaneStrainTimeDepData::_dtStableExplicit =   1.92450090e-01;
+
 const int pylith::materials::PowerLawPlaneStrainTimeDepData::_numPropertyValues[] = {
 1,
 1,
@@ -277,6 +279,7 @@
   pressureScale = _pressureScale;
   densityScale = _densityScale;
   dtStableImplicit = _dtStableImplicit;
+  dtStableExplicit = _dtStableExplicit;
   numPropertyValues = const_cast<int*>(_numPropertyValues);
   numStateVarValues = const_cast<int*>(_numStateVarValues);
   dbPropertyValues = const_cast<char**>(_dbPropertyValues);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDepData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDepData.hh	2012-08-23 20:09:54 UTC (rev 20622)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/materials/data/PowerLawPlaneStrainTimeDepData.hh	2012-08-23 22:51:13 UTC (rev 20623)
@@ -69,6 +69,8 @@
 
   static const PylithScalar _dtStableImplicit;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const int _numPropertyValues[];
 
   static const int _numStateVarValues[];



More information about the CIG-COMMITS mailing list