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

brad at geodynamics.org brad at geodynamics.org
Thu Aug 23 17:12:00 PDT 2012


Author: brad
Date: 2012-08-23 17:11:59 -0700 (Thu, 23 Aug 2012)
New Revision: 20624

Modified:
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/feassemble/GeometryTet3D.cc
   short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/feassemble/GeometryTri2D.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitApp.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1DQuadratic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din2DLinear.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din2DQuadratic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din3DLinear.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din3DQuadratic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2DLinear.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2DQuadratic.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXY.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXYZ.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearYZ.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh3DLinear.py
   short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh3DQuadratic.py
Log:
Started updating elasticity explicit stable time step unit tests.

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/feassemble/GeometryTet3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/feassemble/GeometryTet3D.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/feassemble/GeometryTet3D.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -278,7 +278,7 @@
   PetscLogFlops(numEdges*9);
 
   // TODO: Add radius of inscribed sphere
-  // r = V / 3*A
+  // r = V / (3*A)
 
   return minWidth;
 } // minCellWidth

Modified: short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/feassemble/GeometryTri2D.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/feassemble/GeometryTri2D.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/libsrc/pylith/feassemble/GeometryTri2D.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -229,7 +229,7 @@
   const PylithScalar a  = sqrt(pow(xC-xB,2) + pow(yC-yB, 2));
   const PylithScalar b  = sqrt(pow(xA-xC,2) + pow(yA-yC, 2));
   
-  const PylithScalar k = (a + b + c) / 3.0;
+  const PylithScalar k = 0.5 * (a + b + c);
   const PylithScalar r = sqrt(k*(k-a)*(k-b)*(k-c)) / k;
   minWidth = r;
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -348,7 +348,7 @@
 void 
 pylith::feassemble::TestElasticityExplicit::testUpdateStateVars(void)
 { // testUpdateStateVars
-  CPPUNIT_ASSERT(0 != _data);
+  CPPUNIT_ASSERT(_data);
 
   topology::Mesh mesh;
   ElasticityExplicit integrator;
@@ -364,13 +364,15 @@
 void
 pylith::feassemble::TestElasticityExplicit::testStableTimeStep(void)
 { // testStableTimeStep
+  CPPUNIT_ASSERT(_data);
+
   topology::Mesh mesh;
   ElasticityExplicit integrator;
   topology::SolutionFields fields(mesh);
   _initialize(&mesh, &integrator, &fields);
 
-  const PylithScalar stableTimeStep = integrator.stableTimeStep(mesh);
-  CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXSCALAR, stableTimeStep);
+  const PylithScalar dtStable = integrator.stableTimeStep(mesh);
+  CPPUNIT_ASSERT_EQUAL(1.0, dtStable/_data->dtStableExplicit);
 } // testStableTimeStep
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitApp.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitApp.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitApp.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -56,6 +56,7 @@
     self._calculateJacobian()
     self._calculateResidualLumped()
     self._calculateJacobianLumped()
+    self._calcDtStable()
     self._initData()
     self.data.write(self.name)
     return
@@ -63,6 +64,16 @@
 
   # PRIVATE METHODS ////////////////////////////////////////////////////
 
+  def _calcDtStable(self):
+    """
+    Calculate stable time step for explicit time stepping.
+    """
+    vp = ((self.lameLambda + 2.0*self.lameMu) / self.density)**0.5
+    minCellWidth = self.mesh.minCellWidth
+    self.dtStableExplicit = minCellWidth / vp
+    return
+
+
   def _calculateResidualLumped(self):
     """
     Calculate contribution to residual of operator for integrator.
@@ -84,7 +95,11 @@
   def _initData(self):
 
     ElasticityApp._initData(self)
+    
     # Calculated values
+    self.data.addScalar(vtype="PylithScalar", name="_dtStableExplicit",
+                       value=self.dtStableExplicit,
+                       format="%16.8e");
     self.data.addArray(vtype="PylithScalar", name="_valsResidualLumped",
                        values=self.valsResidualLumped,
                        format="%16.8e", ncols=self.spaceDim)

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -21,6 +21,7 @@
 // ----------------------------------------------------------------------
 // Constructor
 pylith::feassemble::ElasticityExplicitData::ElasticityExplicitData(void) :
+  dtStableExplicit(1.0e+99),
   valsResidualLumped(0),
   valsJacobianLumped(0)
 { // constructor

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -44,6 +44,7 @@
 
   /// @name Calculated values.
   //@{
+  PylithScalar dtStableExplicit; ///< Stable time step for explicit time integration.
   PylithScalar* valsResidualLumped; ///< Expected values from residual calculation (lumped Jacobian).
   PylithScalar* valsJacobianLumped; ///< Expected values from lumped Jacobian calculation.
   //@}

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_dtStableExplicit =   3.75000000e-04;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
@@ -129,6 +131,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_dtStableExplicit =   3.75000000e-04;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
@@ -151,6 +153,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_dtStableExplicit =   4.45596817e-05;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
@@ -151,6 +153,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_dtStableExplicit =   7.34858411e-05;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
@@ -284,6 +286,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_dtStableExplicit =   1.11111111e-04;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
@@ -190,6 +192,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_dtStableExplicit =   1.11111111e-04;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
@@ -518,8 +520,8 @@
 const PylithScalar pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsJacobianLumped[] = {
   2.57903646e+06,  2.57903646e+06,  2.57903646e+06,
   2.40117187e+06,  2.40117187e+06,  2.40117187e+06,
+  2.40117187e+06,  2.40117187e+06,  2.40117187e+06,
   2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
-  2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
   1.20947917e+07,  1.20947917e+07,  1.20947917e+07,
   8.35963542e+06,  8.35963542e+06,  8.35963542e+06,
   8.35963542e+06,  8.35963542e+06,  8.35963542e+06,
@@ -541,6 +543,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_dtStableExplicit =   3.75000000e-04;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DLinear::_gravityVec[] = {
  -1.00000000e+08,
 };
@@ -129,6 +131,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_dtStableExplicit =   3.75000000e-04;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_gravityVec[] = {
  -1.00000000e+08,
 };
@@ -151,6 +153,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_dtStableExplicit =   4.45596817e-05;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DLinear::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
@@ -151,6 +153,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_dtStableExplicit =   7.34858411e-05;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_gravityVec[] = {
   0.00000000e+00, -1.00000000e+08,
 };
@@ -284,6 +286,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_dtStableExplicit =   1.11111111e-04;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DLinear::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
@@ -190,6 +192,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc	2012-08-24 00:11:59 UTC (rev 20624)
@@ -43,6 +43,8 @@
 
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_dt =   1.00000000e-02;
 
+const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_dtStableExplicit =   1.11111111e-04;
+
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_gravityVec[] = {
   0.00000000e+00,  0.00000000e+00, -1.00000000e+08,
 };
@@ -518,8 +520,8 @@
 const PylithScalar pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsJacobianLumped[] = {
   2.57903646e+06,  2.57903646e+06,  2.57903646e+06,
   2.40117187e+06,  2.40117187e+06,  2.40117187e+06,
+  2.40117187e+06,  2.40117187e+06,  2.40117187e+06,
   2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
-  2.40117188e+06,  2.40117188e+06,  2.40117188e+06,
   1.20947917e+07,  1.20947917e+07,  1.20947917e+07,
   8.35963542e+06,  8.35963542e+06,  8.35963542e+06,
   8.35963542e+06,  8.35963542e+06,  8.35963542e+06,
@@ -541,6 +543,7 @@
   matId = _matId;
   matLabel = const_cast<char*>(_matLabel);
   dt = _dt;
+  dtStableExplicit = _dtStableExplicit;
   gravityVec = const_cast<PylithScalar*>(_gravityVec);
   vertices = const_cast<PylithScalar*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh	2012-08-24 00:11:59 UTC (rev 20624)
@@ -65,6 +65,8 @@
 
   static const PylithScalar _dt;
 
+  static const PylithScalar _dtStableExplicit;
+
   static const PylithScalar _gravityVec[];
 
   static const PylithScalar _vertices[];

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -51,6 +51,8 @@
     self.vertices = numpy.array( [[-0.25], [2.0]], dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
     self.verticesRef = numpy.array( [[-1.0], [+1.0]], dtype=numpy.float64)
+
+    self.minCellWidth = 2.25
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1DQuadratic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1DQuadratic.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1DQuadratic.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -53,6 +53,8 @@
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     self.verticesRef = numpy.array([[-1.0], [1.0], [0.0]],
                                    dtype=numpy.float64)
+
+    self.minCellWidth = 2.25
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din2DLinear.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din2DLinear.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din2DLinear.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -52,6 +52,9 @@
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
     self.verticesRef = numpy.array([ [-1.0], [1.0] ], dtype=numpy.float64)
+
+    self.minCellWidth = ((self.vertices[1][0]-self.vertices[0][0])**2 + \
+                          (self.vertices[1][1]-self.vertices[0][1])**2)**0.5
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din2DQuadratic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din2DQuadratic.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din2DQuadratic.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -52,6 +52,9 @@
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     self.verticesRef = numpy.array([[-1.0], [1.0], [0.0]], dtype=numpy.float64)
+
+    self.minCellWidth = ((self.vertices[1][0]-self.vertices[0][0])**2 + \
+                          (self.vertices[1][1]-self.vertices[0][1])**2)**0.5
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din3DLinear.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din3DLinear.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din3DLinear.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -54,6 +54,9 @@
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
     self.verticesRef = numpy.array( [[-1.0], [1.0]], dtype=numpy.float64)
+
+    self.minCellWidth = ((self.vertices[1][0]-self.vertices[0][0])**2 + \
+                          (self.vertices[1][1]-self.vertices[0][1])**2)**0.5
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din3DQuadratic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din3DQuadratic.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh1Din3DQuadratic.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -55,6 +55,9 @@
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     self.verticesRef = numpy.array([[-1.0], [1.0], [0.0]], dtype=numpy.float64)
+
+    self.minCellWidth = ((self.vertices[1][0]-self.vertices[0][0])**2 + \
+                          (self.vertices[1][1]-self.vertices[0][1])**2)**0.5
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2DLinear.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2DLinear.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2DLinear.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -57,6 +57,13 @@
                                      [+1.0, -1.0],
                                      [-1.0, +1.0]],
                                     dtype=numpy.float64)
+
+    a = (0.1**2 + 0.9**2)**0.5
+    b = (1.3**2 + 0.7**2)**0.5
+    c = (1.0**2 + 0.2**2)**0.5
+    k = 0.5 * (a + b + c)
+    r = (k*(k-a)*(k-b)*(k-c))**0.5 / k
+    self.minCellWidth = r
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2DQuadratic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2DQuadratic.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2DQuadratic.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -64,6 +64,13 @@
                                      [-1.0,  0.0],
                                      [ 0.0, -1.0]],
                                     dtype=numpy.float64)
+
+    a = (2.0**2 + 1.2**2)**0.5
+    b = (1.5**2 + 0.3**2)**0.5
+    c = (0.5**2 + 1.5**2)**0.5
+    k = 0.5 * (a + b + c)
+    r = (k*(k-a)*(k-b)*(k-c))**0.5 / k
+    self.minCellWidth = r
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXY.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXY.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXY.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -51,13 +51,20 @@
                                    dtype=numpy.float64)
     self.vertices = numpy.array( [[ 0.0,  0.0,  0.0],
                                   [-1.0,  0.0,  0.0],
-                                  [ 0.0,  0.0,  1.0]],
+                                  [ 0.0,  1.0,  0.0]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     self.verticesRef = numpy.array( [[-1.0, -1.0],
                                      [+1.0, -1.0],
                                      [-1.0, +1.0]],
                                     dtype=numpy.float64)
+
+    a = (1.0**2 + 0.0**2 + 0.0**2)**0.5
+    b = (1.0**2 + 0.0**2 + 1.0**2)**0.5
+    c = (0.0**2 + 0.0**2 + 1.0**2)**0.5
+    k = 0.5 * (a + b + c)
+    r = (k*(k-a)*(k-b)*(k-c))**0.5 / k
+    self.minCellWidth = r
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXYZ.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXYZ.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXYZ.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -58,6 +58,13 @@
                                      [+1.0, -1.0],
                                      [-1.0, +1.0]],
                                     dtype=numpy.float64)
+
+    a = (1.0**2 + 0.0**2 + 0.0**2)**0.5
+    b = (1.0**2 + 0.0**2 + 1.0**2)**0.5
+    c = (0.0**2 + 0.0**2 + 1.0**2)**0.5
+    k = 0.5 * (a + b + c)
+    r = (k*(k-a)*(k-b)*(k-c))**0.5 / k
+    self.minCellWidth = r
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearYZ.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearYZ.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearYZ.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -58,6 +58,13 @@
                                      [+1.0, -1.0],
                                      [-1.0, +1.0]],
                                     dtype=numpy.float64)
+
+    a = (0.0**2 + 1.0**2 + 0.0**2)**0.5
+    b = (0.0**2 + 1.0**2 + 0.0**2)**0.5
+    c = (0.0**2 + 0.0**2 + 1.0**2)**0.5
+    k = 0.5 * (a + b + c)
+    r = (k*(k-a)*(k-b)*(k-c))**0.5 / k
+    self.minCellWidth = r
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh3DLinear.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh3DLinear.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh3DLinear.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -59,6 +59,15 @@
                                      [-1.0, +1.0, -1.0],
                                      [-1.0, -1.0, +1.0]],
                                     dtype=numpy.float64)
+
+    v0 = self.vertices[0,:]
+    v1 = self.vertices[1,:]
+    v2 = self.vertices[2,:]
+    v3 = self.vertices[3,:]
+    vol = 1.0
+    area = 0.5
+    r = vol / (3*area)
+    self.minCellWidth = r
     return
   
 

Modified: short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh3DQuadratic.py
===================================================================
--- short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh3DQuadratic.py	2012-08-23 22:51:13 UTC (rev 20623)
+++ short/3D/PyLith/branches/v1.7-trunk/unittests/libtests/feassemble/data/Mesh3DQuadratic.py	2012-08-24 00:11:59 UTC (rev 20624)
@@ -73,6 +73,15 @@
                                      [ 0.0, -1.0,  0.0],
                                      [-1.0,  0.0,  0.0]],
                                     dtype=numpy.float64)
+
+    v0 = self.vertices[0,:]
+    v1 = self.vertices[1,:]
+    v2 = self.vertices[2,:]
+    v3 = self.vertices[3,:]
+    vol = 1.0
+    area = 0.5
+    r = vol / (3*area)
+    self.minCellWidth = r
     return
   
 



More information about the CIG-COMMITS mailing list