[cig-commits] r16000 - in short/3D/PyLith/branches/pylith-friction: libsrc/feassemble unittests/libtests/feassemble unittests/libtests/feassemble/data

brad at geodynamics.org brad at geodynamics.org
Wed Nov 18 15:05:46 PST 2009


Author: brad
Date: 2009-11-18 15:05:45 -0800 (Wed, 18 Nov 2009)
New Revision: 16000

Added:
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh
Modified:
   short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc
   short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc
   short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc
   short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/Mesh1DLinear.py
   short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/generate.sh
Log:
Work on large deformation unit tests. Fixed some large deformation bugs in computing the Jacobian.

Modified: short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -118,7 +118,6 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& vertices = _quadrature->refGeometry().vertices();
   const double_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
@@ -306,7 +305,7 @@
 
     // Compute B(transpose) * sigma, first computing strains
     _logger->eventBegin(stressEvent);
-    _calcDeformation(&deformCell, basisDeriv, vertices, dispTCell,
+    _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTCell,
 		     numBasis, numQuadPts, spaceDim);
     calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
     const double_array& stressCell = _material->calcStress(strainCell, true);

Modified: short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -127,7 +127,6 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& vertices = _quadrature->refGeometry().vertices();
   const double_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
@@ -291,7 +290,7 @@
     // Compute B(transpose) * sigma, first computing deformation
     // tensor and strains
     _logger->eventBegin(stressEvent);
-    _calcDeformation(&deformCell, basisDeriv, vertices, dispTpdtCell,
+    _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTpdtCell,
 		     numBasis, numQuadPts, spaceDim);
     calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
     const double_array& stressCell = _material->calcStress(strainCell, true);
@@ -344,7 +343,6 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double_array& vertices = _quadrature->refGeometry().vertices();
   const double_array& quadWts = _quadrature->quadWts();
   assert(quadWts.size() == numQuadPts);
   const int numBasis = _quadrature->numBasis();
@@ -479,7 +477,7 @@
       
     _logger->eventBegin(computeEvent);
     // Compute deformation tensor, strains, and stresses
-    _calcDeformation(&deformCell, basisDeriv, vertices, dispTpdtCell,
+    _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTpdtCell,
 		     numBasis, numQuadPts, spaceDim);
     calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
 

Modified: short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -520,13 +520,6 @@
 	const double valIJnl = valInl * basisDeriv[iQ+jBasis];
 	const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
 	const int jBlock = jBasis*spaceDim;
-	std::cout << "iBasis: " << iBasis
-		  << ", jBasis: " << jBasis
-		  << ", l11: " << l11
-		  << ", valIJ: " << valIJ
-		  << ", s11: " << s11
-		  << ", valInl" << valIJnl
-		  << std::endl;
 	_cellMatrix[iBlock+jBlock] += valIJ + valIJnl;
       } // for
     } // for
@@ -573,7 +566,7 @@
     const int iS = iQuad*tensorSize;
     const double s11 = stress[iS+0];
     const double s22 = stress[iS+1];
-    const double s12 = stress[iS+2];
+    const double s12 = stress[iS+2] * 0.5; // WHY 0.5!!!!
 
     double l11 = 0.0;
     double l12 = 0.0;
@@ -605,15 +598,18 @@
 
 	// Generated using Maxima (see jacobian2d_lgdeform.wxm)
 	const double Ki0j0 = 
-	  l12*Niq*(l12*Niq*l12*Njq*C2222 + 
-		   l12*Niq*((l11+1.0)*Njq+l12*Njp)*C2212 + 
-		   l12*Niq*(l11+1.0)*Njp*C1122) + 
-	  ((l11+1.0)*Niq+l12*Nip)*(l12*Njq*C2212 + 
-				 ((l11+1.0)*Njq+l12*Njp)*C1212 + 
-				 (l11+1.0)*Njp*C1112) + 
-	  (l11+1.0)*Nip*(l12*Njq*C1122 + 
-		       ((l11+1.0)*Njq+l12*Njp)*C1112 +
-		       (l11+1.0)*Njp*C1111);
+	  l12*Niq*(l12*Njq*C2222 + 
+		   ((l11+1)*Njq+l12*Njp)*C2212 + 
+		   (l11+1)*Njp*C1122) + 
+	  ((l11+1)*Niq+l12*Nip)*(l12*Njq*C2212 + 
+				 ((l11+1)*Njq+l12*Njp)*C1212 + 
+				 (l11+1)*Njp*C1112) + 
+	  (l11+1)*Nip*(l12*Njq*C1122 + 
+		       ((l11+1)*Njq+l12*Njp)*C1112 + 
+		       (l11+1)*Njp*C1111);
+
+
+
 	const double Ki0j1 =
 	  l12*Niq*((l22+1.0)*Njq*C2222 + 
 		   (l21*Njq+(l22+1.0)*Njp)*C2212 + 
@@ -649,6 +645,15 @@
 
 	const int jBlock = (jB);
 	const int jBlock1 = (jB+1);
+	std::cout << "s11: " << s11
+		  << ", s12: " << s12
+		  << ", s22: " << s22
+		  << ", Knl: " << Knl
+		  << ", Ki0j0: " << Ki0j0
+		  << ", Ki0j1: " << Ki0j1
+		  << ", Ki1j0: " << Ki1j0
+		  << ", Ki1j1: " << Ki1j1
+		  << std::endl;
 	_cellMatrix[iBlock +jBlock ] += Ki0j0 + Knl;
 	_cellMatrix[iBlock +jBlock1] += Ki0j1;
 	_cellMatrix[iBlock1+jBlock ] += Ki1j0;
@@ -657,6 +662,13 @@
     } // for
   } // for
   PetscLogFlops(numQuadPts*(1+numBasis*(2+numBasis*(3*11+4))));
+
+  std::cout << "cellMatrix: ";
+  for (int i=0; i < numBasis*spaceDim; ++i) {
+    for (int j=0; j < numBasis*spaceDim; ++j)
+      std::cout << "  " << _cellMatrix[i*numBasis*spaceDim+j];
+    std::cout << std::endl;
+  } // for
 } // _elasticityJacobian2D
 
 // ----------------------------------------------------------------------
@@ -1143,7 +1155,7 @@
 
 
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
-    (*strain)[iQuad] = 0.5*(deform[iQuad]*deform[iQuad] - 1.0);
+      (*strain)[iQuad] = 0.5*(deform[iQuad]*deform[iQuad] - 1.0);
 } // _calcTotalStrain1D
   
 // ----------------------------------------------------------------------
@@ -1178,6 +1190,12 @@
     (*strain)[iStrain+2] =
       0.5 * (deform[iDeform  ]*deform[iDeform+1] + 
 	     deform[iDeform+2]*deform[iDeform+3]);
+      std::cout << "iQuad: " << iQuad
+		<< ", strain:"
+		<< "  " << (*strain)[iStrain  ]
+		<< "  " << (*strain)[iStrain+1]
+		<< "  " << (*strain)[iStrain+2]
+		<< std::endl;
   } // for
 } // _calcTotalStrain2D
   
@@ -1255,9 +1273,30 @@
     for (int iBasis=0, iQ=iQuad*numBasis*dim; iBasis < numBasis; ++iBasis)
       for (int iDim=0, indexD=0; iDim < dim; ++iDim)
 	for (int jDim=0; jDim < dim; ++jDim, ++indexD)
+	  {
 	  (*deform)[iQuad*deformSize+indexD] += 
 	    basisDeriv[iQ+iBasis*dim+jDim] *
 	    (vertices[iBasis*dim+iDim] + disp[iBasis*dim+iDim]);
+	  std::cout << "vertex: " << vertices[iBasis*dim+iDim]
+		    << ", disp: " << disp[iBasis*dim+iDim]
+		    << ", basisDeriv: " << basisDeriv[iQ+iBasis*dim+jDim]
+		    << std::endl;
+	  }
+
+  for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+    std::cout << "\n\niQuad: " << iQuad
+	      << ", deformation tensor: "
+	      << std::endl;
+    for (int iDim=0; iDim < dim; ++iDim) {
+      std::cout << "  ";
+      for (int jDim=0; jDim < dim; ++jDim) {
+	std::cout << "  " << (*deform)[iQuad*deformSize+iDim*dim+jDim];
+      }
+      std::cout << std::endl;
+    }
+  }
+  
+		    
 } // _calcDeformation
   
 

Modified: short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm
===================================================================
--- short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm	2009-11-18 23:05:45 UTC (rev 16000)
@@ -1,5 +1,5 @@
 /* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/
-/* [ Created with wxMaxima version 0.8.3a ] */
+/* [ Created with wxMaxima version 0.8.2 ] */
 
 /* [wxMaxima: input   start ] */
 Bnl: matrix([N11,0,N21,0,N31,0],

Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am	2009-11-18 23:05:45 UTC (rev 16000)
@@ -69,6 +69,9 @@
 	TestIntegratorElasticityLgDeform.cc \
 	TestElasticityImplicitLgDeform.cc \
 	TestElasticityImplicitLgDeform1DLinear.cc \
+	TestElasticityImplicitLgDeform1DQuadratic.cc \
+	TestElasticityImplicitLgDeform2DLinear.cc \
+	TestElasticityImplicitLgDeform2DQuadratic.cc \
 	test_feassemble.cc
 
 
@@ -97,6 +100,9 @@
 	TestElasticityImplicitGrav3DQuadratic.hh \
 	TestElasticityImplicitLgDeform.hh \
 	TestElasticityImplicitLgDeform1DLinear.hh \
+	TestElasticityImplicitLgDeform1DQuadratic.hh \
+	TestElasticityImplicitLgDeform2DLinear.hh \
+	TestElasticityImplicitLgDeform2DQuadratic.hh \
 	TestGeometryPoint1D.hh \
 	TestGeometryPoint2D.hh \
 	TestGeometryPoint3D.hh \
@@ -157,6 +163,9 @@
 	data/ElasticityImplicitGravData3DLinear.cc \
 	data/ElasticityImplicitGravData3DQuadratic.cc \
 	data/ElasticityImplicitLgDeformData1DLinear.cc \
+	data/ElasticityImplicitLgDeformData1DQuadratic.cc \
+	data/ElasticityImplicitLgDeformData2DLinear.cc \
+	data/ElasticityImplicitLgDeformData2DQuadratic.cc \
 	data/QuadratureData.cc \
 	data/QuadratureData1DLinear.cc \
 	data/QuadratureData1DQuadratic.cc \
@@ -208,6 +217,9 @@
 	data/ElasticityImplicitGravData3DLinear.hh \
 	data/ElasticityImplicitGravData3DQuadratic.hh \
 	data/ElasticityImplicitLgDeformData1DLinear.hh \
+	data/ElasticityImplicitLgDeformData1DQuadratic.hh \
+	data/ElasticityImplicitLgDeformData2DLinear.hh \
+	data/ElasticityImplicitLgDeformData2DQuadratic.hh \
 	data/QuadratureData.hh \
 	data/QuadratureData1DLinear.hh \
 	data/QuadratureData1DQuadratic.hh \

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,47 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform1DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData1DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryLine1D.hh" // USES GeometryLine1D
+#include "pylith/materials/ElasticStrain1D.hh" // USES ElasticStrain1D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform1DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform1DQuadratic::setUp(void)
+{ // setUp
+  TestElasticityImplicitLgDeform::setUp();
+
+  _data = new ElasticityImplicitLgDeformData1DQuadratic();
+  _gravityField = 0;
+  GeometryLine1D geometry;
+  CPPUNIT_ASSERT(0 != _quadrature);
+  _quadrature->refGeometry(&geometry);
+  _material = new materials::ElasticStrain1D;
+
+  CPPUNIT_ASSERT(0 != _data);
+  CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+		       std::string(_data->matType));
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D quadratic cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicit1dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicit1dquadratic_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace feassemble {
+    class TestElasticityImplicitLgDeform1DQuadratic;
+  } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform1DQuadratic :
+  public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform1DQuadratic
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform1DQuadratic );
+
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testIntegrateResidual );
+  CPPUNIT_TEST( testIntegrateJacobian );
+  CPPUNIT_TEST( testUpdateStateVars );
+  CPPUNIT_TEST( testStableTimeStep );
+
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform1DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicit1dquadratic_hh
+
+
+// End of file 

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform2DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData2DLinear.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryTri2D.hh" // USES GeometryTri2D
+#include "pylith/materials/ElasticPlaneStrain.hh" // USES ElasticPlaneStrain
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform2DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform2DLinear::setUp(void)
+{ // setUp
+  TestElasticityImplicitLgDeform::setUp();
+
+  _data = new ElasticityImplicitLgDeformData2DLinear();
+  _gravityField = 0;
+  CPPUNIT_ASSERT(0 != _quadrature);
+  GeometryTri2D geometry;
+  _quadrature->refGeometry(&geometry);
+
+  _material = new materials::ElasticPlaneStrain;
+  CPPUNIT_ASSERT(0 != _material);
+
+  CPPUNIT_ASSERT(0 != _data);
+  CPPUNIT_ASSERT_EQUAL(std::string("ElasticPlaneStrain"),
+		       std::string(_data->matType));
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 2-D linear cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicit2dlinear_hh)
+#define pylith_feassemble_testelasticityimplicit2dlinear_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace feassemble {
+    class TestElasticityImplicitLgDeform2DLinear;
+  } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform2DLinear :
+  public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform2DLinear
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform2DLinear );
+
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testIntegrateResidual );
+  CPPUNIT_TEST( testIntegrateJacobian );
+  CPPUNIT_TEST( testUpdateStateVars );
+  CPPUNIT_TEST( testStableTimeStep );
+
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform2DLinear
+
+#endif // pylith_feassemble_testelasticityimplicit2dlinear_hh
+
+
+// End of file 

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform2DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData2DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryTri2D.hh" // USES GeometryTri2D
+#include "pylith/materials/ElasticPlaneStrain.hh" // USES ElasticPlaneStrain
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform2DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform2DQuadratic::setUp(void)
+{ // setUp
+  TestElasticityImplicitLgDeform::setUp();
+
+  _data = new ElasticityImplicitLgDeformData2DQuadratic();
+  _gravityField = 0;
+  CPPUNIT_ASSERT(0 != _quadrature);
+  GeometryTri2D geometry;
+  _quadrature->refGeometry(&geometry);
+
+  _material = new materials::ElasticPlaneStrain;
+  CPPUNIT_ASSERT(0 != _material);
+
+  CPPUNIT_ASSERT(0 != _data);
+  CPPUNIT_ASSERT_EQUAL(std::string("ElasticPlaneStrain"),
+		       std::string(_data->matType));
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 2-D quadratic cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicit2dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicit2dquadratic_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace feassemble {
+    class TestElasticityImplicitLgDeform2DQuadratic;
+  } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform2DQuadratic :
+  public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform2DQuadratic
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform2DQuadratic );
+
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testIntegrateResidual );
+  CPPUNIT_TEST( testIntegrateJacobian );
+  CPPUNIT_TEST( testUpdateStateVars );
+  CPPUNIT_TEST( testStableTimeStep );
+
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform2DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicit2dquadratic_hh
+
+
+// End of file 

Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -89,15 +89,15 @@
 };
 
 const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsResidual[] = {
-  6.19200000e+10,
- -6.19200000e+10,
+  8.78400000e+10,
+ -8.78400000e+10,
 };
 
 const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsJacobian[] = {
-  6.88000000e+10,
- -6.88000000e+10,
- -6.88000000e+10,
-  6.88000000e+10,
+  9.76000000e+10,
+ -9.76000000e+10,
+ -9.76000000e+10,
+  9.76000000e+10,
 };
 
 pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::ElasticityImplicitLgDeformData1DLinear(void)

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,155 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData1DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_numQuadPts = 2;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_dt =   1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_vertices[] = {
+ -2.50000000e-01,
+  2.00000000e+00,
+  8.75000000e-01,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+  0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_quadPts[] = {
+ -5.77350269e-01,
+  5.77350269e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_quadWts[] = {
+  1.00000000e+00,  1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_basis[] = {
+  4.55341801e-01,
+ -1.22008468e-01,
+  6.66666667e-01,
+ -1.22008468e-01,
+  4.55341801e-01,
+  6.66666667e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_basisDerivRef[] = {
+ -1.07735027e+00,
+ -7.73502692e-02,
+  1.15470054e+00,
+  7.73502692e-02,
+  1.07735027e+00,
+ -1.15470054e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldTIncr[] = {
+  1.20000000e+00,
+  0.00000000e+00,
+  1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldT[] = {
+  1.10000000e+00,
+  1.00000000e-01,
+  1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldTmdt[] = {
+  1.00000000e+00,
+  1.00000000e-01,
+  1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_valsResidual[] = {
+  7.41034403e+11,
+  1.71509070e+12,
+ -2.45612510e+12,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_valsJacobian[] = {
+  5.56003292e+11,
+  7.76230453e+10,
+ -6.33626337e+11,
+  7.76230453e+10,
+  5.30719342e+11,
+ -6.08342387e+11,
+ -6.33626337e+11,
+ -6.08342387e+11,
+  1.24196872e+12,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::ElasticityImplicitLgDeformData1DQuadratic(void)
+{ // constructor
+  spaceDim = _spaceDim;
+  cellDim = _cellDim;
+  numVertices = _numVertices;
+  numCells = _numCells;
+  numBasis = _numBasis;
+  numQuadPts = _numQuadPts;
+  matType = const_cast<char*>(_matType);
+  matDBFilename = const_cast<char*>(_matDBFilename);
+  matId = _matId;
+  matLabel = const_cast<char*>(_matLabel);
+  dt = _dt;
+  gravityVec = const_cast<double*>(_gravityVec);
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<double*>(_quadPts);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  fieldTIncr = const_cast<double*>(_fieldTIncr);
+  fieldT = const_cast<double*>(_fieldT);
+  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  valsResidual = const_cast<double*>(_valsResidual);
+  valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::~ElasticityImplicitLgDeformData1DQuadratic(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,92 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#if !defined(pylith_feassemble_elasticityimplicitlgdeformdata1dquadratic_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata1dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class ElasticityImplicitLgDeformData1DQuadratic;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic : public IntegratorData
+{
+
+public: 
+
+  /// Constructor
+  ElasticityImplicitLgDeformData1DQuadratic(void);
+
+  /// Destructor
+  ~ElasticityImplicitLgDeformData1DQuadratic(void);
+
+private:
+
+  static const int _spaceDim;
+
+  static const int _cellDim;
+
+  static const int _numVertices;
+
+  static const int _numCells;
+
+  static const int _numBasis;
+
+  static const int _numQuadPts;
+
+  static const char* _matType;
+
+  static const char* _matDBFilename;
+
+  static const int _matId;
+
+  static const char* _matLabel;
+
+  static const double _dt;
+
+  static const double _gravityVec[];
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _verticesRef[];
+
+  static const double _quadPts[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDerivRef[];
+
+  static const double _fieldTIncr[];
+
+  static const double _fieldT[];
+
+  static const double _fieldTmdt[];
+
+  static const double _valsResidual[];
+
+  static const double _valsJacobian[];
+
+};
+
+#endif // pylith_feassemble_elasticityimplicitlgdeformdata1dquadratic_hh
+
+// End of file

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,155 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData2DLinear.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_dt =   1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_gravityVec[] = {
+  0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_vertices[] = {
+  2.00000000e-01, -4.00000000e-01,
+  3.00000000e-01,  5.00000000e-01,
+ -1.00000000e+00, -2.00000000e-01,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_quadPts[] = {
+ -3.33333333e-01, -3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_quadWts[] = {
+  5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_basis[] = {
+  3.33333333e-01,  3.33333333e-01,
+  3.33333333e-01,};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01,
+  5.00000000e-01,  0.00000000e+00,
+  0.00000000e+00,  5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldTIncr[] = {
+  1.30000000e+00, -9.00000000e-01,
+  1.40000000e+00,  1.50000000e+00,
+  5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldT[] = {
+  1.60000000e+00, -8.00000000e-01,
+  9.00000000e-01,  7.00000000e-01,
+ -2.00000000e-01, -1.10000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldTmdt[] = {
+  8.00000000e-01,  1.00000000e-01,
+  5.00000000e-01,  3.00000000e-01,
+ -1.00000000e-01, -6.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsResidual[] = {
+ -9.10308020e+11,  2.62469069e+12,
+  2.75564148e+11, -2.72579014e+12,
+  6.34743872e+11,  1.01099452e+11,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsJacobian[] = {
+  4.43599494e+11, -1.48699027e+11,
+ -2.83545181e+11,  8.77736676e+10,
+ -1.60054314e+11,  6.09253592e+10,
+ -1.48699027e+11,  7.63805884e+11,
+  9.16706846e+10, -6.31084845e+11,
+  5.70283422e+10, -1.32721039e+11,
+ -2.83545181e+11,  9.16706846e+10,
+  2.78913924e+11, -2.94466026e+10,
+  4.63125675e+09, -6.22240820e+10,
+  8.77736676e+10, -6.31084845e+11,
+ -2.94466026e+10,  6.53761252e+11,
+ -5.83270649e+10, -2.26764071e+10,
+ -1.60054314e+11,  5.70283422e+10,
+  4.63125675e+09, -5.83270649e+10,
+  1.55423057e+11,  1.29872276e+09,
+  6.09253592e+10, -1.32721039e+11,
+ -6.22240820e+10, -2.26764071e+10,
+  1.29872276e+09,  1.55397446e+11,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::ElasticityImplicitLgDeformData2DLinear(void)
+{ // constructor
+  spaceDim = _spaceDim;
+  cellDim = _cellDim;
+  numVertices = _numVertices;
+  numCells = _numCells;
+  numBasis = _numBasis;
+  numQuadPts = _numQuadPts;
+  matType = const_cast<char*>(_matType);
+  matDBFilename = const_cast<char*>(_matDBFilename);
+  matId = _matId;
+  matLabel = const_cast<char*>(_matLabel);
+  dt = _dt;
+  gravityVec = const_cast<double*>(_gravityVec);
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<double*>(_quadPts);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  fieldTIncr = const_cast<double*>(_fieldTIncr);
+  fieldT = const_cast<double*>(_fieldT);
+  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  valsResidual = const_cast<double*>(_valsResidual);
+  valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::~ElasticityImplicitLgDeformData2DLinear(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,92 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#if !defined(pylith_feassemble_elasticityimplicitlgdeformdata2dlinear_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata2dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class ElasticityImplicitLgDeformData2DLinear;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData2DLinear : public IntegratorData
+{
+
+public: 
+
+  /// Constructor
+  ElasticityImplicitLgDeformData2DLinear(void);
+
+  /// Destructor
+  ~ElasticityImplicitLgDeformData2DLinear(void);
+
+private:
+
+  static const int _spaceDim;
+
+  static const int _cellDim;
+
+  static const int _numVertices;
+
+  static const int _numCells;
+
+  static const int _numBasis;
+
+  static const int _numQuadPts;
+
+  static const char* _matType;
+
+  static const char* _matDBFilename;
+
+  static const int _matId;
+
+  static const char* _matLabel;
+
+  static const double _dt;
+
+  static const double _gravityVec[];
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _verticesRef[];
+
+  static const double _quadPts[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDerivRef[];
+
+  static const double _fieldTIncr[];
+
+  static const double _fieldT[];
+
+  static const double _fieldTmdt[];
+
+  static const double _valsResidual[];
+
+  static const double _valsJacobian[];
+
+};
+
+#endif // pylith_feassemble_elasticityimplicitlgdeformdata2dlinear_hh
+
+// End of file

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,282 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData2DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_numVertices = 6;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_numBasis = 6;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_numQuadPts = 6;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_dt =   1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_gravityVec[] = {
+  0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_vertices[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00,  2.00000000e-01,
+ -1.50000000e+00,  5.00000000e-01,
+ -2.50000000e-01,  3.50000000e-01,
+ -1.25000000e+00, -2.50000000e-01,
+  0.00000000e+00, -4.00000000e-01,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_cells[] = {
+0,1,2,3,4,5,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,
+ -1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00, -1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_quadPts[] = {
+ -7.50000000e-01, -7.50000000e-01,
+  7.50000000e-01, -7.50000000e-01,
+ -7.50000000e-01,  7.50000000e-01,
+  0.00000000e+00, -7.50000000e-01,
+ -7.50000000e-01,  0.00000000e+00,
+  2.50000000e-01,  2.50000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_quadWts[] = {
+  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,  3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_basis[] = {
+  3.75000000e-01, -9.37500000e-02,
+ -9.37500000e-02,  6.25000000e-02,
+  3.75000000e-01,  3.75000000e-01,
+  0.00000000e+00,  6.56250000e-01,
+ -9.37500000e-02,  4.37500000e-01,
+ -0.00000000e+00, -0.00000000e+00,
+  0.00000000e+00, -9.37500000e-02,
+  6.56250000e-01,  4.37500000e-01,
+ -0.00000000e+00, -0.00000000e+00,
+ -9.37500000e-02,  0.00000000e+00,
+ -9.37500000e-02,  2.50000000e-01,
+  1.87500000e-01,  7.50000000e-01,
+ -9.37500000e-02, -9.37500000e-02,
+  0.00000000e+00,  2.50000000e-01,
+  7.50000000e-01,  1.87500000e-01,
+  3.75000000e-01,  1.56250000e-01,
+  1.56250000e-01,  1.56250000e+00,
+ -6.25000000e-01, -6.25000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_basisDerivRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ -2.50000000e-01,  0.00000000e+00,
+  0.00000000e+00, -2.50000000e-01,
+  2.50000000e-01,  2.50000000e-01,
+ -2.50000000e-01,  1.25000000e+00,
+  1.25000000e+00, -2.50000000e-01,
+  5.00000000e-01,  5.00000000e-01,
+  1.25000000e+00,  0.00000000e+00,
+  0.00000000e+00, -2.50000000e-01,
+  2.50000000e-01,  1.75000000e+00,
+ -2.50000000e-01, -2.50000000e-01,
+ -1.75000000e+00, -1.75000000e+00,
+  5.00000000e-01,  5.00000000e-01,
+ -2.50000000e-01,  0.00000000e+00,
+  0.00000000e+00,  1.25000000e+00,
+  1.75000000e+00,  2.50000000e-01,
+ -1.75000000e+00, -1.75000000e+00,
+ -2.50000000e-01, -2.50000000e-01,
+ -2.50000000e-01, -2.50000000e-01,
+  5.00000000e-01,  0.00000000e+00,
+  0.00000000e+00, -2.50000000e-01,
+  2.50000000e-01,  1.00000000e+00,
+ -2.50000000e-01,  5.00000000e-01,
+ -2.50000000e-01, -1.00000000e+00,
+ -2.50000000e-01, -2.50000000e-01,
+ -2.50000000e-01,  0.00000000e+00,
+  0.00000000e+00,  5.00000000e-01,
+  1.00000000e+00,  2.50000000e-01,
+ -1.00000000e+00, -2.50000000e-01,
+  5.00000000e-01, -2.50000000e-01,
+  1.00000000e+00,  1.00000000e+00,
+  7.50000000e-01,  0.00000000e+00,
+  0.00000000e+00,  7.50000000e-01,
+  1.25000000e+00,  1.25000000e+00,
+ -1.25000000e+00, -1.75000000e+00,
+ -1.75000000e+00, -1.25000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldTIncr[] = {
+ -4.00000000e-01, -6.00000000e-01,
+  7.00000000e-01,  8.00000000e-01,
+  0.00000000e+00,  2.00000000e-01,
+ -5.00000000e-01, -4.00000000e-01,
+  3.00000000e-01,  9.00000000e-01,
+ -3.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldT[] = {
+ -3.00000000e-01, -4.00000000e-01,
+  5.00000000e-01,  6.00000000e-01,
+  0.00000000e+00,  1.00000000e-01,
+ -2.00000000e-01, -3.00000000e-01,
+  2.00000000e-01,  3.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldTmdt[] = {
+ -2.00000000e-01, -3.00000000e-01,
+  3.00000000e-01,  4.00000000e-01,
+  0.00000000e+00, -1.00000000e-01,
+ -3.00000000e-01, -2.00000000e-01,
+  1.00000000e-01,  4.00000000e-01,
+ -2.00000000e-01, -6.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsResidual[] = {
+  3.39737351e+12,  5.19317954e+12,
+ -1.80774474e+12, -2.22000685e+12,
+  2.65665681e+12,  3.51432165e+12,
+  4.77718113e+12,  3.87082081e+12,
+ -7.52685354e+12, -1.20475569e+13,
+ -1.49661316e+12,  1.68924177e+12,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsJacobian[] = {
+  1.21091900e+12,  5.56624427e+11,
+  5.95878737e+10,  2.82688919e+10,
+  6.89616587e+11,  3.46233237e+11,
+  9.22245444e+11,  3.73904122e+11,
+ -1.91462842e+12, -9.41768992e+11,
+ -9.67740481e+11, -3.63261686e+11,
+  5.56624427e+11,  1.75937634e+12,
+  2.55818801e+10,  1.13588035e+11,
+  3.45077232e+11,  7.71442168e+11,
+  3.77747140e+11,  6.23361467e+11,
+ -9.44649933e+11, -2.62213755e+12,
+ -3.60380746e+11, -6.45630459e+11,
+  5.95878737e+10,  2.55818801e+10,
+  5.73354183e+11,  2.59713039e+11,
+ -8.46433708e+09, -2.59165131e+10,
+ -4.03504796e+11, -1.36798725e+11,
+  8.32134883e+10,  6.73297341e+10,
+ -3.04186412e+11, -1.89909415e+11,
+  2.82688919e+10,  1.13588035e+11,
+  2.59713039e+11,  5.80155308e+11,
+ -2.66709077e+10, -3.33303021e+10,
+ -1.27273335e+11, -1.82757062e+11,
+  6.53971169e+10,  1.67214691e+11,
+ -1.99434806e+11, -6.44870669e+11,
+  6.89616587e+11,  3.45077232e+11,
+ -8.46433708e+09, -2.66709077e+10,
+  9.46393649e+11,  4.11776807e+11,
+  4.22061375e+11,  3.08031050e+11,
+ -1.66893291e+12, -8.05938575e+11,
+ -3.80674362e+11, -2.32275605e+11,
+  3.46233237e+11,  7.71442168e+11,
+ -2.59165131e+10, -3.33303021e+10,
+  4.11776807e+11,  9.71896809e+11,
+  3.13343794e+11,  2.71248445e+11,
+ -8.11251320e+11, -1.81414784e+12,
+ -2.34186006e+11, -1.67109284e+11,
+  9.22245444e+11,  3.77747140e+11,
+ -4.03504796e+11, -1.27273335e+11,
+  4.22061375e+11,  3.13343794e+11,
+  2.67767840e+12,  8.66541719e+11,
+ -1.76517544e+12, -9.28979272e+11,
+ -1.85330498e+12, -5.01380046e+11,
+  3.73904122e+11,  6.23361467e+11,
+ -1.36798725e+11, -1.82757062e+11,
+  3.08031050e+11,  2.71248445e+11,
+  8.66541719e+11,  2.75987489e+12,
+ -9.20742130e+11, -1.59282386e+12,
+ -4.90936036e+11, -1.87890388e+12,
+ -1.91462842e+12, -9.44649933e+11,
+  8.32134883e+10,  6.53971169e+10,
+ -1.66893291e+12, -8.11251320e+11,
+ -1.76517544e+12, -9.20742130e+11,
+  4.09293769e+12,  2.04726998e+12,
+  1.17258560e+12,  5.63976291e+11,
+ -9.41768992e+11, -2.62213755e+12,
+  6.73297341e+10,  1.67214691e+11,
+ -8.05938575e+11, -1.81414784e+12,
+ -9.28979272e+11, -1.59282386e+12,
+  2.04726998e+12,  5.59980472e+12,
+  5.62087130e+11,  2.62089836e+11,
+ -9.67740481e+11, -3.60380746e+11,
+ -3.04186412e+11, -1.99434806e+11,
+ -3.80674362e+11, -2.34186006e+11,
+ -1.85330498e+12, -4.90936036e+11,
+  1.17258560e+12,  5.62087130e+11,
+  2.33332064e+12,  7.22850462e+11,
+ -3.63261686e+11, -6.45630459e+11,
+ -1.89909415e+11, -6.44870669e+11,
+ -2.32275605e+11, -1.67109284e+11,
+ -5.01380046e+11, -1.87890388e+12,
+  5.63976291e+11,  2.62089836e+11,
+  7.22850462e+11,  3.07442446e+12,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::ElasticityImplicitLgDeformData2DQuadratic(void)
+{ // constructor
+  spaceDim = _spaceDim;
+  cellDim = _cellDim;
+  numVertices = _numVertices;
+  numCells = _numCells;
+  numBasis = _numBasis;
+  numQuadPts = _numQuadPts;
+  matType = const_cast<char*>(_matType);
+  matDBFilename = const_cast<char*>(_matDBFilename);
+  matId = _matId;
+  matLabel = const_cast<char*>(_matLabel);
+  dt = _dt;
+  gravityVec = const_cast<double*>(_gravityVec);
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
+  quadPts = const_cast<double*>(_quadPts);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
+  fieldTIncr = const_cast<double*>(_fieldTIncr);
+  fieldT = const_cast<double*>(_fieldT);
+  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  valsResidual = const_cast<double*>(_valsResidual);
+  valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::~ElasticityImplicitLgDeformData2DQuadratic(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh	                        (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh	2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,92 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#if !defined(pylith_feassemble_elasticityimplicitlgdeformdata2dquadratic_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata2dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class ElasticityImplicitLgDeformData2DQuadratic;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic : public IntegratorData
+{
+
+public: 
+
+  /// Constructor
+  ElasticityImplicitLgDeformData2DQuadratic(void);
+
+  /// Destructor
+  ~ElasticityImplicitLgDeformData2DQuadratic(void);
+
+private:
+
+  static const int _spaceDim;
+
+  static const int _cellDim;
+
+  static const int _numVertices;
+
+  static const int _numCells;
+
+  static const int _numBasis;
+
+  static const int _numQuadPts;
+
+  static const char* _matType;
+
+  static const char* _matDBFilename;
+
+  static const int _matId;
+
+  static const char* _matLabel;
+
+  static const double _dt;
+
+  static const double _gravityVec[];
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _verticesRef[];
+
+  static const double _quadPts[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDerivRef[];
+
+  static const double _fieldTIncr[];
+
+  static const double _fieldT[];
+
+  static const double _fieldTmdt[];
+
+  static const double _valsResidual[];
+
+  static const double _valsJacobian[];
+
+};
+
+#endif // pylith_feassemble_elasticityimplicitlgdeformdata2dquadratic_hh
+
+// End of file

Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py	2009-11-18 23:05:45 UTC (rev 16000)
@@ -67,16 +67,14 @@
       for iQuad in xrange(self.numQuadPts):
         wt = self.quadWts[iQuad] * jacobianDet[iQuad]
         BL0 = self._calculateBasisDerivMatLinear0(basisDeriv, iQuad)
-        cellK[:] += wt * numpy.dot(numpy.dot(BL0.transpose(), D), BL0)
         BL1 = self._calculateBasisDerivMatLinear1(basisDeriv, iQuad, fieldTpdt)
-        cellK[:] += wt * numpy.dot(numpy.dot(BL1.transpose(), D), BL1)
+        BL = BL0 + BL1
+        cellK[:] += wt * numpy.dot(numpy.dot(BL.transpose(), D), BL)
+        print "Kl",wt * numpy.dot(numpy.dot(BL.transpose(), D), BL)
         BNL = self._calculateBasisDerivMatNonlinear(basisDeriv, iQuad)
-        strain = numpy.dot(BL0+BL1, fieldTpdt)
+        strain = self._calculateStrain(basisDeriv, iQuad, fieldTpdt)
         S = self._calculateStress(strain, D)
-        print "BL0",BL0
-        print "BL1",BL1
-        print "D",D
-        print "BNL",BNL
+        print "strain",strain
         print "S",S
         cellK[:] += wt * numpy.dot(numpy.dot(BNL.transpose(), S), BNL)
         print "K",cellK
@@ -227,28 +225,75 @@
     return B
 
 
+  def _calculateStrain(self, basisDeriv, iQuad, disp):
+    """
+    Calculte Green-Lagrange strain.
+    """
+    if 3 == self.spaceDim:
+      strain = numpy.zeros( (1,6), dtype=numpy.float64)
+
+    elif 2 == self.spaceDim:
+      strain = numpy.zeros( (1,3), dtype=numpy.float64)
+      l11 = 0.0
+      l12 = 0.0
+      l21 = 0.0
+      l22 = 0.0
+      for kBasis in xrange(self.numBasis):
+        l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim  ]
+        l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim  ]
+        l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+        l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+      strain[0, 0] = 0.5*(l11*l11 + l21*l21)
+      strain[0, 1] = 0.5*(l12*l12 + l22*l22)
+      strain[0, 2] = 0.5*(l11*l12 + l21*l22)
+      for iBasis in xrange(self.numBasis):
+        strain[0, 0] += \
+            basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim  ]
+        strain[0, 1] += \
+            basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+1]
+        strain[0, 2] += \
+            0.5*(basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+1] +
+                 basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim  ])
+
+    elif 1 == self.spaceDim:
+      strain = numpy.zeros( (1,1), dtype=numpy.float64)
+      l11 = 0.0
+      for kBasis in xrange(self.numBasis):
+        l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis]
+      strain[0, 0] = 0.5*l11*l11
+      for iBasis in xrange(self.numBasis):
+        strain[0, 0] += basisDeriv[iQuad, iBasis, 0]*disp[iBasis]
+    else:
+      raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+      
+    return strain
+
+
   def _calculateStress(self, strain, D):
     """
     Calculte 2nd Priola-Kirchoff stress matrix.
     """
     S = numpy.zeros( (self.spaceDim*self.spaceDim,
                       self.spaceDim*self.spaceDim), dtype=numpy.float64)
-    Svec = numpy.dot(D, strain)
+    Svec = numpy.dot(D, strain.transpose())
     if 3 == self.spaceDim:
-      Smat = numpy.array([[Svec[0], Svec[3], Svec[5]],
-                          [Svec[3], Svec[1], Svec[4]],
-                          [Svec[5], Svec[4], Svec[2]]], dtype=numpy.float64)
+      Smat = numpy.array([[Svec[0,0], Svec[3,0], Svec[5,0]],
+                          [Svec[3,0], Svec[1,0], Svec[4,0]],
+                          [Svec[5,0], Svec[4,0], Svec[2,0]]], 
+                         dtype=numpy.float64)
       S[0:3,0:3] = Smat[:]
       S[3:6,3:6] = Smat[:]
       S[6:9,6:9] = Smat[:]
     elif 2 == self.spaceDim:
-      Smat = numpy.array([[Svec[0], Svec[2]],
-                          [Svec[2], Svec[1]]], dtype=numpy.float64)
+      Smat = numpy.array([[Svec[0,0], Svec[2,0]],
+                          [Svec[2,0], Svec[1,0]]], dtype=numpy.float64)
       S[0:2,0:2] = Smat[:]
       S[2:4,2:4] = Smat[:]
     elif 1 == self.spaceDim:
       Smat = numpy.array([[Svec[0]]], dtype=numpy.float64)
       S[0:1,0:1] = Smat[:]
+    else:
+      raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
     return S
 
 

Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/Mesh1DLinear.py
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/Mesh1DLinear.py	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/Mesh1DLinear.py	2009-11-18 23:05:45 UTC (rev 16000)
@@ -44,7 +44,7 @@
     self.gravityVec = numpy.array( [-1.0e8], dtype=numpy.float64)
     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.verticesRef = numpy.array( [[-1.0], [+1.0]], dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/generate.sh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/generate.sh	2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/generate.sh	2009-11-18 23:05:45 UTC (rev 16000)
@@ -429,6 +429,7 @@
 
   # 3-D ----------------------------------------------------------------
 
+if (( 0 )); then
   python IntegratorElasticityLgDeform.py \
     --formulation=ElasticityImplicit \
     --data.namespace=pylith,feassemble \
@@ -470,6 +471,7 @@
     --material=ElasticIsotropic3D \
     --solution=Solution3DQuadratic
 fi
+fi
 
 fi
 



More information about the CIG-COMMITS mailing list