[cig-commits] r4674 - in short/3D/PyLith/trunk: libsrc/feassemble unittests/libtests/feassemble unittests/libtests/feassemble/data

brad at geodynamics.org brad at geodynamics.org
Sat Sep 30 13:28:53 PDT 2006


Author: brad
Date: 2006-09-30 13:28:50 -0700 (Sat, 30 Sep 2006)
New Revision: 4674

Added:
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
Modified:
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
Log:
Added tests for quadrature 2-D in 3-D. Fixed a few bugs in Quadrature2Din3D.

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc	2006-09-30 20:28:50 UTC (rev 4674)
@@ -14,6 +14,8 @@
 
 #include "Quadrature2Din3D.hh" // implementation of class methods
 
+#include <math.h> // USES fabs()
+
 #include <assert.h> // USES assert()
 #include <stdexcept> // USES internal_error
 
@@ -89,7 +91,7 @@
     // dz/dq = sum[i=0,n-1] (dNi/dq * zi)
     for (int iVertex=0; iVertex < _numCorners; ++iVertex)
       for (int iRow=0, 
-	     iB=iQuadPt*_numCorners*_spaceDim+iVertex*_cellDim;
+	     iB=iQuadPt*_numCorners*_cellDim+iVertex*_cellDim;
 	   iRow < _cellDim;
 	   ++iRow) {
       const double deriv = _basisDeriv[iB+iRow];
@@ -125,7 +127,7 @@
     const double det = sqrt(jj00*jj11 - jj01*jj10);
     _checkJacobianDet(det);
     _jacobianDet[iQuadPt] = det;
-
+    
     // Compute inverse of Jacobian at quadrature point
     const double d01 = 
       _jacobian[i00]*_jacobian[i11] - _jacobian[i10]*_jacobian[i01];
@@ -133,21 +135,22 @@
       _jacobian[i01]*_jacobian[i12] - _jacobian[i11]*_jacobian[i02];
     const double d02 = 
       _jacobian[i00]*_jacobian[i12] - _jacobian[i10]*_jacobian[i02];
-    if (d01 > _minJacobian) {
+    if (fabs(d01) > _minJacobian) {
       // Jinv00 = 1/d01 * J11
+      // Jinv01 = 1/d01 * -J01
       // Jinv10 = 1/d01 * -J10
-      // Jinv01 = 1/d01 * -J01
       // Jinv11 = 1/d01 * J00
       _jacobianInv[iJ+0] = _jacobian[i11] / d01; // Jinv00
-      _jacobianInv[iJ+1] = -_jacobian[i10] / d01; // Jinv10
-      _jacobianInv[iJ+2] = -_jacobian[i01] / d01; // Jinv01
+      _jacobianInv[iJ+1] = -_jacobian[i01] / d01; // Jinv01
+      _jacobianInv[iJ+2] = -_jacobian[i10] / d01; // Jinv10
       _jacobianInv[iJ+3] = _jacobian[i00] / d01; // Jinv11
-      if (d12 > _minJacobian) {
+      if (fabs(d12) > _minJacobian) {
 	// Jinv20 = 1/d12 -J11
 	// Jinv21 = 1/d12 J01
 	_jacobianInv[iJ+4] = -_jacobian[i11] / d12; // Jinv20
 	_jacobianInv[iJ+5] = _jacobian[i01] / d12; // Jinv21
-      } else if (d02 > _minJacobian) {
+
+      } else if (fabs(d02) > _minJacobian) {
 	// Jinv20 = 1/d02 -J10
 	// Jinv21 = 1/d02 J00
 	_jacobianInv[iJ+4] = -_jacobian[i10] / d02; // Jinv20
@@ -156,7 +159,7 @@
 	_jacobianInv[iJ+4] = 0.0; // Jinv20
 	_jacobianInv[iJ+5] = 0.0; // Jinv21
       } // if/else
-    } else if (d02 > _minJacobian) {
+    } else if (fabs(d02) > _minJacobian) {
       // Jinv00 = 1/d02 * J12
       // Jinv01 = 1/d02 * -J02
       // Jinv20 = 1/d02 * -J10
@@ -165,7 +168,7 @@
       _jacobianInv[iJ+1] = -_jacobian[i02] / d02; // Jinv01
       _jacobianInv[iJ+4] = -_jacobian[i10] / d02; // Jinv20
       _jacobianInv[iJ+5] = _jacobian[i00] / d02; // Jinv21
-      if (d12 > _minJacobian) {
+      if (fabs(d12) > _minJacobian) {
 	// Jinv10 = 1/d12 J12
 	// Jinv11 = 1/d12 -J02
 	_jacobianInv[iJ+2] = -_jacobian[i12] / d12; // Jinv10
@@ -174,7 +177,7 @@
 	_jacobianInv[iJ+2] = 0.0; // Jinv10
 	_jacobianInv[iJ+3] = 0.0; // Jinv11
       } // if/else
-    } else if (d12 > _minJacobian) {
+    } else if (fabs(d12) > _minJacobian) {
       _jacobianInv[iJ+0] = 0.0; // Jinv00
       _jacobianInv[iJ+1] = 0.0; // Jinv01
       // Jinv10 = 1/d12 J12

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am	2006-09-30 20:28:50 UTC (rev 4674)
@@ -22,6 +22,7 @@
 	TestQuadrature1D.cc \
 	TestQuadrature1Din2D.cc \
 	TestQuadrature2D.cc \
+	TestQuadrature2Din3D.cc \
 	test_feassemble.cc \
 	data/QuadratureData.cc \
 	data/QuadratureData1DLinear.cc \
@@ -31,13 +32,20 @@
 	data/QuadratureData1Din3DLinear.cc \
 	data/QuadratureData1Din3DQuadratic.cc \
 	data/QuadratureData2DLinear.cc \
-	data/QuadratureData2DQuadratic.cc
+	data/QuadratureData2DQuadratic.cc \
+	data/QuadratureData2Din3DLinearXYZ.cc \
+	data/QuadratureData2Din3DLinearXY.cc \
+	data/QuadratureData2Din3DLinearYZ.cc \
+	data/QuadratureData2Din3DLinearXZ.cc \
+	data/QuadratureData2Din3DQuadratic.cc
 
 noinst_HEADERS = \
 	TestQuadrature.hh \
 	TestQuadrature1D.hh \
 	TestQuadrature1Din2D.hh \
+	TestQuadrature1Din3D.hh \
 	TestQuadrature2D.hh \
+	TestQuadrature2Din3D.hh \
 	data/QuadratureData.hh \
 	data/QuadratureData1DLinear.hh \
 	data/QuadratureData1DQuadratic.hh \
@@ -46,7 +54,12 @@
 	data/QuadratureData1Din3DLinear.hh \
 	data/QuadratureData1Din3DQuadratic.hh \
 	data/QuadratureData2DLinear.hh \
-	data/QuadratureData2DQuadratic.hh 
+	data/QuadratureData2DQuadratic.hh \
+	data/QuadratureData2Din3DLinearXYZ.hh \
+	data/QuadratureData2Din3DLinearXY.hh \
+	data/QuadratureData2Din3DLinearYZ.hh \
+	data/QuadratureData2Din3DLinearXZ.hh \
+	data/QuadratureData2Din3DQuadratic.hh
 
 testfeassemble_LDFLAGS = $(PETSC_LIB)
 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.cc	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.cc	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,91 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestQuadrature2Din3D.hh" // Implementation of class methods
+
+#include "pylith/feassemble/Quadrature2Din3D.hh"
+
+#include "data/QuadratureData2Din3DLinearXYZ.hh"
+#include "data/QuadratureData2Din3DLinearXY.hh"
+#include "data/QuadratureData2Din3DLinearYZ.hh"
+#include "data/QuadratureData2Din3DLinearXZ.hh"
+#include "data/QuadratureData2Din3DQuadratic.hh"
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestQuadrature2Din3D );
+
+// ----------------------------------------------------------------------
+// Test constructor
+void
+pylith::feassemble::TestQuadrature2Din3D::testConstructor(void)
+{ // testConstructor
+  Quadrature2Din3D quadrature;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test computeGeometry() w/linear basis fns
+void
+pylith::feassemble::TestQuadrature2Din3D::testLinearXYZ(void)
+{ // testLinearXYZ
+  Quadrature2Din3D q;
+  QuadratureData2Din3DLinearXYZ data;
+
+  _testComputeGeometry(&q, data);
+} // testLinearXYZ
+
+// ----------------------------------------------------------------------
+// Test computeGeometry() w/linear basis fns
+void
+pylith::feassemble::TestQuadrature2Din3D::testLinearXY(void)
+{ // testLinearXY
+  Quadrature2Din3D q;
+  QuadratureData2Din3DLinearXY data;
+
+  _testComputeGeometry(&q, data);
+} // testLinearXY
+
+// ----------------------------------------------------------------------
+// Test computeGeometry() w/linear basis fns
+void
+pylith::feassemble::TestQuadrature2Din3D::testLinearYZ(void)
+{ // testLinearYZ
+  Quadrature2Din3D q;
+  QuadratureData2Din3DLinearYZ data;
+
+  _testComputeGeometry(&q, data);
+} // testLinearYZ
+
+// ----------------------------------------------------------------------
+// Test computeGeometry() w/linear basis fns
+void
+pylith::feassemble::TestQuadrature2Din3D::testLinearXZ(void)
+{ // testLinearXZ
+  Quadrature2Din3D q;
+  QuadratureData2Din3DLinearXZ data;
+
+  _testComputeGeometry(&q, data);
+} // testLinearXZ
+
+// ----------------------------------------------------------------------
+// Test computeGeometry() w/quadratic basis fns
+void
+pylith::feassemble::TestQuadrature2Din3D::testQuadratic(void)
+{ // testQuadratic
+  Quadrature2Din3D q;
+  QuadratureData2Din3DQuadratic data;
+
+  _testComputeGeometry(&q, data);
+} // testQuadratic
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.hh	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.hh	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestQuadrature2Din3D.hh
+ *
+ * @brief C++ TestQuadrature2Din3D object
+ *
+ * C++ unit testing for Quadrature2Din3D.
+ */
+
+#if !defined(pylith_feassemble_testquadrature2din3d_hh)
+#define pylith_feassemble_testquadrature2din3d_hh
+
+#include "TestQuadrature.hh"
+
+/// Namespace for spatialdata package
+namespace pylith {
+  namespace feassemble {
+    class TestQuadrature2Din3D;
+  } // feassemble
+} // pylith
+
+/// C++ unit testing for Quadrature2Din3D
+class pylith::feassemble::TestQuadrature2Din3D : public TestQuadrature
+{ // class TestQuadrature2D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestQuadrature2Din3D );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testLinearXYZ );
+  CPPUNIT_TEST( testLinearXY );
+  CPPUNIT_TEST( testLinearYZ );
+  CPPUNIT_TEST( testLinearXZ );
+  CPPUNIT_TEST( testQuadratic );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Test constructor
+  void testConstructor(void);
+
+  /// Test initialize() & computeGeometry() w/linear basis fns
+  void testLinearXYZ(void);
+
+  /// Test initialize() & computeGeometry() w/linear basis fns
+  void testLinearXY(void);
+
+  /// Test initialize() & computeGeometry() w/linear basis fns
+  void testLinearYZ(void);
+
+  /// Test initialize() & computeGeometry() w/linear basis fns
+  void testLinearXZ(void);
+
+  /// Test initialize() & computeGeometry() w/quadratic basis fns
+  void testQuadratic(void);
+
+}; // class TestQuadrature
+
+#endif // pylith_feassemble_testquadrature2din3d_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.cc	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.cc	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestQuadrature3D.hh" // Implementation of class methods
+
+#include "pylith/feassemble/Quadrature3D.hh"
+
+#include "data/QuadratureData3DLinear.hh"
+#include "data/QuadratureData3DQuadratic.hh"
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestQuadrature3D );
+
+// ----------------------------------------------------------------------
+// Test constructor
+void
+pylith::feassemble::TestQuadrature3D::testConstructor(void)
+{ // testConstructor
+  Quadrature3D quadrature;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test computeGeometry() w/linear basis fns
+void
+pylith::feassemble::TestQuadrature3D::testLinear(void)
+{ // testLinear
+  Quadrature3D q;
+  QuadratureData3DLinear data;
+
+  _testComputeGeometry(&q, data);
+} // testLinear
+
+// ----------------------------------------------------------------------
+// Test computeGeometry() w/quadratic basis fns
+void
+pylith::feassemble::TestQuadrature3D::testQuadratic(void)
+{ // testQuadratic
+  Quadrature3D q;
+  QuadratureData3DQuadratic data;
+
+  _testComputeGeometry(&q, data);
+} // testQuadratic
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.hh	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.hh	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestQuadrature3D.hh
+ *
+ * @brief C++ TestQuadrature3D object
+ *
+ * C++ unit testing for Quadrature3D.
+ */
+
+#if !defined(pylith_feassemble_testquadrature3d_hh)
+#define pylith_feassemble_testquadrature3d_hh
+
+#include "TestQuadrature.hh"
+
+/// Namespace for spatialdata package
+namespace pylith {
+  namespace feassemble {
+    class TestQuadrature3D;
+  } // feassemble
+} // pylith
+
+/// C++ unit testing for Quadrature3D
+class pylith::feassemble::TestQuadrature3D : public TestQuadrature
+{ // class TestQuadrature3D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestQuadrature3D );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testLinear );
+  CPPUNIT_TEST( testQuadratic );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Test constructor
+  void testConstructor(void);
+
+  /// Test initialize() & computeGeometry() w/linear basis fns
+  void testLinear(void);
+
+  /// Test initialize() & computeGeometry() w/quadratic basis fns
+  void testQuadratic(void);
+
+}; // class TestQuadrature
+
+#endif // pylith_feassemble_testquadrature3d_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ Quadrature2Din3D object w/linear basis functions.
+
+from Quadrature2DLinear import *
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# Quadrature2Din3DLinearXY class
+class Quadrature2Din3DLinearXY(Quadrature2DLinear):
+  """
+  Python application for generating C++ data files for testing C++
+  Quadrature2Din3D object w/linear basis functions.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="quadrature2din3dlinear"):
+    """
+    Constructor.
+    """
+    Quadrature2DLinear.__init__(self, name)
+    
+    self.numVertices = 3
+    self.spaceDim = 3
+    self.numCells = 1
+    self.cellDim = 2
+    self.numCorners = 3
+    self.numQuadPts = 1
+    
+    self.vertices = numpy.array( [[ 0.0,  0.0,  0.0],
+                                  [ 1.0,  0.0,  0.0],
+                                  [ 0.0,  1.0,  0.0]],
+                                 dtype=numpy.Float64)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    return
+  
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = Quadrature2Din3DLinearXY()
+  app.run()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ Quadrature2Din3D object w/linear basis functions.
+
+from Quadrature2DLinear import *
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# Quadrature2Din3DLinearXYZ class
+class Quadrature2Din3DLinearXYZ(Quadrature2DLinear):
+  """
+  Python application for generating C++ data files for testing C++
+  Quadrature2Din3D object w/linear basis functions.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="quadrature2din3dlinear"):
+    """
+    Constructor.
+    """
+    Quadrature2DLinear.__init__(self, name)
+    
+    self.numVertices = 3
+    self.spaceDim = 3
+    self.numCells = 1
+    self.cellDim = 2
+    self.numCorners = 3
+    self.numQuadPts = 1
+    
+    self.vertices = numpy.array( [[ 0.5, -2.0, -0.5],
+                                  [ 3.0,  0.5,  0.0],
+                                  [-1.0,  2.0,  4.0]],
+                                 dtype=numpy.Float64)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    return
+  
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = Quadrature2Din3DLinearXYZ()
+  app.run()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ Quadrature2Din3D object w/linear basis functions.
+
+from Quadrature2DLinear import *
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# Quadrature2Din3DLinearXZ class
+class Quadrature2Din3DLinearXZ(Quadrature2DLinear):
+  """
+  Python application for generating C++ data files for testing C++
+  Quadrature2Din3D object w/linear basis functions.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="quadrature2din3dlinear"):
+    """
+    Constructor.
+    """
+    Quadrature2DLinear.__init__(self, name)
+    
+    self.numVertices = 3
+    self.spaceDim = 3
+    self.numCells = 1
+    self.cellDim = 2
+    self.numCorners = 3
+    self.numQuadPts = 1
+    
+    self.vertices = numpy.array( [[ 0.0,  0.0,  0.0],
+                                  [-1.0,  0.0,  0.0],
+                                  [ 0.0,  0.0,  1.0]],
+                                 dtype=numpy.Float64)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    return
+  
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = Quadrature2Din3DLinearXZ()
+  app.run()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ Quadrature2Din3D object w/linear basis functions.
+
+from Quadrature2DLinear import *
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# Quadrature2Din3DLinearYZ class
+class Quadrature2Din3DLinearYZ(Quadrature2DLinear):
+  """
+  Python application for generating C++ data files for testing C++
+  Quadrature2Din3D object w/linear basis functions.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="quadrature2din3dlinear"):
+    """
+    Constructor.
+    """
+    Quadrature2DLinear.__init__(self, name)
+    
+    self.numVertices = 3
+    self.spaceDim = 3
+    self.numCells = 1
+    self.cellDim = 2
+    self.numCorners = 3
+    self.numQuadPts = 1
+    
+    self.vertices = numpy.array( [[ 0.0,  0.0,  0.0],
+                                  [ 0.0,  1.0,  0.0],
+                                  [ 0.0,  0.0,  1.0]],
+                                 dtype=numpy.Float64)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    return
+  
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = Quadrature2Din3DLinearYZ()
+  app.run()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ Quadrature2Din3D object w/quadratic basis functions.
+
+from Quadrature2DQuadratic import *
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# Quadrature2Din3DQuadratic class
+class Quadrature2Din3DQuadratic(Quadrature2DQuadratic):
+  """
+  Python application for generating C++ data files for testing C++
+  Quadrature2Din3D object w/quadratic basis functions.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="quadrature2din3dquadratic"):
+    """
+    Constructor.
+    """
+    Quadrature2DQuadratic.__init__(self, name)
+    
+    self.numVertices = 6
+    self.spaceDim = 3
+    self.numCells = 1
+    self.cellDim = 2
+    self.numCorners = 6
+    self.numQuadPts = 3
+    
+    self.vertices = numpy.array( [[ 2.0, -0.5, -0.5],
+                                  [ 0.5,  3.0,  0.0],
+                                  [-0.5,  0.0,  2.0],
+                                  [ 1.3,  1.2, -0.3],
+                                  [ 0.1,  1.4,  0.9],
+                                  [ 0.8, -0.3,  0.7]],
+                                 dtype=numpy.Float64)
+    self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.Int32)
+    
+    return
+
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = Quadrature2Din3DQuadratic()
+  app.run()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Quadrature2DLinear.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ Quadrature2D object w/linear basis functions.
+
+from QuadratureApp import QuadratureApp
+
+import numpy
+
+# ----------------------------------------------------------------------
+def N0(p):
+  return 1.0-p[0]-p[1]
+
+def N0p(p):
+  return -1.0
+
+def N0q(p):
+  return -1.0
+
+def N1(p):
+  return p[0]
+
+def N1p(p):
+  return 1.0
+
+def N1q(p):
+  return 0.0
+
+def N2(p):
+  return p[1]
+
+def N2p(p):
+  return 0.0
+
+def N2q(p):
+  return 1.0
+
+# ----------------------------------------------------------------------
+
+# Quadrature2DLinear class
+class Quadrature2DLinear(QuadratureApp):
+  """
+  Python application for generating C++ data files for testing C++
+  Quadrature2D object w/linear basis functions.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="quadrature1dlinear"):
+    """
+    Constructor.
+    """
+    QuadratureApp.__init__(self, name)
+    
+    self.numVertices = 3
+    self.spaceDim = 2
+    self.numCells = 1
+    self.cellDim = 2
+    self.numCorners = 3
+    self.numQuadPts = 1
+    
+    self.quadPtsRef = numpy.array( [[1.0/3.0, 1.0/3.0]], dtype=numpy.Float64)
+    self.quadWts = numpy.array([0.5], dtype=numpy.Float64)
+    self.vertices = numpy.array( [[0.2, -0.4],
+                                  [0.3, 0.5],
+                                  [-1.0, -0.2]], dtype=numpy.Float64)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    return
+  
+
+  # PRIVATE METHODS ////////////////////////////////////////////////////
+  
+  def _calculateBasis(self):
+    """
+    Calculate basis functions and their derivatives at quadrature points.
+    """
+
+    self.basis = numpy.zeros( (self.numQuadPts, self.numCorners),
+                              dtype=numpy.Float64)
+    self.basisDeriv = numpy.zeros( (self.numQuadPts,
+                                    self.numCorners, self.cellDim),
+                                   dtype=numpy.Float64)
+
+    iQuad = 0
+    for q in self.quadPtsRef:
+      # Basis functions at quadrature points
+      basis = numpy.array([N0(q), N1(q), N2(q)], dtype=numpy.Float64)
+      self.basis[iQuad] = basis.reshape( (self.numCorners,) )
+
+      # Derivatives of basis functions at quadrature points
+      deriv = numpy.array([[N0p(q), N0q(q)],
+                           [N1p(q), N1q(q)],
+                           [N2p(q), N2q(q)]], dtype=numpy.Float64)      
+      self.basisDeriv[iQuad] = deriv.reshape((self.numCorners, self.cellDim))
+
+      iQuad += 1
+    return
+    
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = Quadrature2DLinear()
+  app.run()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,160 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Quadrature2DQuadratic.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ Quadrature2D object w/quadratic basis functions.
+
+from QuadratureApp import QuadratureApp
+
+import numpy
+
+# ----------------------------------------------------------------------
+def N0(p):
+  return (1.0-p[0]-p[1])*(1-2.0*p[0]-2.0*p[1])
+
+def N0p(p):
+  return 4.0*p[0]+4.0*p[1]-3.0
+
+def N0q(p):
+  return 4.0*p[0]+4.0*p[1]-3.0
+
+def N1(p):
+  return p[0]*(2.0*p[0]-1.0)
+
+def N1p(p):
+  return 4.0*p[0]-1.0
+
+def N1q(p):
+  return 0.0
+
+def N2(p):
+  return p[1]*(2.0*p[1]-1.0)
+
+def N2p(p):
+  return 0.0
+
+def N2q(p):
+  return 4.0*p[1]-1.0
+
+def N3(p):
+  return 4.0*p[0]*(1.0-p[0]-p[1])
+
+def N3p(p):
+  return -8.0*p[0]-4.0*p[1]+4.0
+
+def N3q(p):
+  return -4.0*p[0]
+
+def N4(p):
+  return 4.0*p[0]*p[1]
+
+def N4p(p):
+  return 4.0*p[1]
+
+def N4q(p):
+  return 4.0*p[0]
+
+def N5(p):
+  return 4.0*p[1]*(1.0-p[0]-p[1])
+
+def N5p(p):
+  return -4.0*p[1]
+
+def N5q(p):
+  return -8.0*p[1]-4.0*p[0]+4.0
+
+# ----------------------------------------------------------------------
+
+# Quadrature2DQuadratic class
+class Quadrature2DQuadratic(QuadratureApp):
+  """
+  Python application for generating C++ data files for testing C++
+  Quadrature2D object w/quadratic basis functions.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="quadrature2dquadratic"):
+    """
+    Constructor.
+    """
+    QuadratureApp.__init__(self, name)
+    
+    self.numVertices = 6
+    self.spaceDim = 2
+    self.numCells = 1
+    self.cellDim = 2
+    self.numCorners = 6
+    self.numQuadPts = 3
+    
+    self.quadPtsRef = numpy.array( [[2.0/3.0, 1.0/6.0],
+                                    [1.0/6.0, 2.0/3.0],
+                                    [1.0/6.0, 1.0/6.0]],
+                                   dtype=numpy.Float64)
+    self.quadWts = numpy.array([1.0/6.0, 1.0/6.0, 1.0/6.0],
+                               dtype=numpy.Float64)
+    self.vertices = numpy.array( [[-1.0, -1.0],
+                                  [+1.0, +0.2],
+                                  [-1.5, +0.5],
+                                  [+0.0, -0.6],
+                                  [+0.25, +0.35],
+                                  [-1.25, -0.25]],
+                                 dtype=numpy.Float64)
+    self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.Int32)
+    
+    return
+
+
+  # PRIVATE METHODS ////////////////////////////////////////////////////
+  
+  def _calculateBasis(self):
+    """
+    Calculate basis functions and their derivatives at quadrature points.
+    """
+
+    self.basis = numpy.zeros( (self.numQuadPts, self.numCorners),
+                              dtype=numpy.Float64)
+    self.basisDeriv = numpy.zeros( (self.numQuadPts,
+                                    self.numCorners, self.cellDim),
+                                   dtype=numpy.Float64)
+
+    iQuad = 0
+    for q in self.quadPtsRef:
+      # Basis functions at quadrature points
+      basis = numpy.array([N0(q), N1(q), N2(q), N3(q), N4(q), N5(q)],
+                          dtype=numpy.Float64)
+      self.basis[iQuad] = basis.reshape( (self.numCorners,) )
+
+      # Derivatives of basis functions at quadrature points
+      deriv = numpy.array([[N0p(q), N0q(q)],
+                           [N1p(q), N1q(q)],
+                           [N2p(q), N2q(q)],
+                           [N3p(q), N3q(q)],
+                           [N4p(q), N4q(q)],
+                           [N5p(q), N5q(q)]],
+                          dtype=numpy.Float64)      
+      self.basisDeriv[iQuad] = deriv.reshape((self.numCorners, self.cellDim))
+
+      iQuad += 1
+    return
+    
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = Quadrature2DQuadratic()
+  app.run()
+
+
+# End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2006-09-30 20:28:50 UTC (rev 4674)
@@ -130,8 +130,53 @@
         if 1 == self.cellDim:
           self.jacobianInv[iQuad] = 1.0 / jacobian
         elif 2 == self.cellDim:
-          error
-    
+          minJacobian = 1.0e-06
+          jj01 = jacobian[:,[0,1]]
+          jj12 = jacobian[:,[1,2]]
+          jj02 = jacobian[:,[0,2]]
+          det01 = numpy.linalg.det(jj01)
+          det12 = numpy.linalg.det(jj12)
+          det02 = numpy.linalg.det(jj02)
+          if abs(det01) > minJacobian:
+            ij01 = numpy.linalg.inv(jj01)
+            if abs(det12) > minJacobian:
+              ij12 = numpy.linalg.inv(jj12)
+              self.jacobianInv[iQuad] = numpy.array([ [ij01[0,0], ij01[0,1]],
+                                                      [ij01[1,0], ij01[1,1]],
+                                                      [ij12[1,0], ij12[1,1]] ],
+                                                    dtype=numpy.Float64)
+            elif abs(det02) > minJacobian:
+              ij02 = numpy.linalg.inv(jj02)
+              self.jacobianInv[iQuad] = numpy.array([ [ij01[0,0], ij01[0,1]],
+                                                      [ij01[1,0], ij01[1,1]],
+                                                      [ij02[1,0], ij02[1,1]] ],
+                                                    dtype=numpy.Float64)
+            else:
+              self.jacobianInv[iQuad] = numpy.array([ [ij01[0,0], ij01[0,1]],
+                                                      [ij01[1,0], ij01[1,1]],
+                                                      [      0.0,       0.0] ],
+                                                    dtype=numpy.Float64)
+          elif abs(det02) > minJacobian:
+            ij02 = numpy.linalg.inv(jj02)
+            if abs(det12) > minJacobian:
+              ij12 = numpy.linalg.inv(jj12)
+              self.jacobianInv[iQuad] = numpy.array([ [ij02[0,0], ij02[0,1]],
+                                                      [ij12[0,0], ij12[0,1]],
+                                                      [ij02[1,0], ij02[1,1]] ],
+                                                    dtype=numpy.Float64)
+            else:
+              self.jacobianInv[iQuad] = numpy.array([ [ij02[0,0], ij02[0,1]],
+                                                      [      0.0,       0.0],
+                                                      [ij02[1,0], ij02[1,1]] ],
+                                                    dtype=numpy.Float64)
+          elif abs(det12) > minJacobian:
+            ij12 = numpy.linalg.inv(jj12)
+            self.jacobianInv[iQuad] = numpy.array([ [      0.0,       0.0],
+                                                    [ij12[0,0], ij12[0,1]],
+                                                    [ij12[1,0], ij12[1,1]] ],
+                                                  dtype=numpy.Float64)
+          else:
+            raise ValueError("Could not find inverse of Jacobian.")
       iQuad += 1
 
     # Quadrature points in cell

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,101 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dlinear.
+
+#include "QuadratureData2Din3DLinearXY.hh"
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXY::_numVertices = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXY::_spaceDim = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXY::_numCells = 1;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXY::_cellDim = 2;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXY::_numCorners = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXY::_numQuadPts = 1;
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_vertices[] = {
+  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
+};
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXY::_cells[] = {
+       0,       1,       2,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPtsRef[] = {
+  3.33333333e-01,  3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadWts[] = {
+  5.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basis[] = {
+  3.33333333e-01,  3.33333333e-01,
+  3.33333333e-01,};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDeriv[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPts[] = {
+  3.33333333e-01,  3.33333333e-01,  0.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobian[] = {
+  1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianDet[] = {
+  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianInv[] = {
+  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,
+};
+
+pylith::feassemble::QuadratureData2Din3DLinearXY::QuadratureData2Din3DLinearXY(void)
+{ // constructor
+  numVertices = _numVertices;
+  spaceDim = _spaceDim;
+  numCells = _numCells;
+  cellDim = _cellDim;
+  numCorners = _numCorners;
+  numQuadPts = _numQuadPts;
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  quadPtsRef = const_cast<double*>(_quadPtsRef);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDeriv = const_cast<double*>(_basisDeriv);
+  quadPts = const_cast<double*>(_quadPts);
+  jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
+  jacobianInv = const_cast<double*>(_jacobianInv);
+} // constructor
+
+pylith::feassemble::QuadratureData2Din3DLinearXY::~QuadratureData2Din3DLinearXY(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,76 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dlinear.
+
+#if !defined(pylith_feassemble_quadraturedata2din3dlinearxy_hh)
+#define pylith_feassemble_quadraturedata2din3dlinearxy_hh
+
+#include "QuadratureData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class QuadratureData2Din3DLinearXY;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::QuadratureData2Din3DLinearXY : public QuadratureData
+{
+
+public: 
+
+  /// Constructor
+  QuadratureData2Din3DLinearXY(void);
+
+  /// Destructor
+  ~QuadratureData2Din3DLinearXY(void);
+
+private:
+
+  static const int _numVertices;
+
+  static const int _spaceDim;
+
+  static const int _numCells;
+
+  static const int _cellDim;
+
+  static const int _numCorners;
+
+  static const int _numQuadPts;
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _quadPtsRef[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDeriv[];
+
+  static const double _quadPts[];
+
+  static const double _jacobian[];
+
+  static const double _jacobianDet[];
+
+  static const double _jacobianInv[];
+
+};
+
+#endif // pylith_feassemble_quadraturedata2din3dlinearxy_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,101 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dlinear.
+
+#include "QuadratureData2Din3DLinearXYZ.hh"
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_numVertices = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_spaceDim = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_numCells = 1;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_cellDim = 2;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_numCorners = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_numQuadPts = 1;
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_vertices[] = {
+  5.00000000e-01, -2.00000000e+00, -5.00000000e-01,
+  3.00000000e+00,  5.00000000e-01,  0.00000000e+00,
+ -1.00000000e+00,  2.00000000e+00,  4.00000000e+00,
+};
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_cells[] = {
+       0,       1,       2,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPtsRef[] = {
+  3.33333333e-01,  3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadWts[] = {
+  5.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basis[] = {
+  3.33333333e-01,  3.33333333e-01,
+  3.33333333e-01,};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDeriv[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPts[] = {
+  8.33333333e-01,  1.66666667e-01,  1.16666667e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobian[] = {
+  2.50000000e+00,  2.50000000e+00,  5.00000000e-01,
+ -1.50000000e+00,  4.00000000e+00,  4.50000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianDet[] = {
+  2.04603275e+01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianInv[] = {
+  2.90909091e-01, -1.81818182e-01,
+  1.09090909e-01,  1.81818182e-01,
+ -4.32432432e-01,  2.70270270e-01,
+};
+
+pylith::feassemble::QuadratureData2Din3DLinearXYZ::QuadratureData2Din3DLinearXYZ(void)
+{ // constructor
+  numVertices = _numVertices;
+  spaceDim = _spaceDim;
+  numCells = _numCells;
+  cellDim = _cellDim;
+  numCorners = _numCorners;
+  numQuadPts = _numQuadPts;
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  quadPtsRef = const_cast<double*>(_quadPtsRef);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDeriv = const_cast<double*>(_basisDeriv);
+  quadPts = const_cast<double*>(_quadPts);
+  jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
+  jacobianInv = const_cast<double*>(_jacobianInv);
+} // constructor
+
+pylith::feassemble::QuadratureData2Din3DLinearXYZ::~QuadratureData2Din3DLinearXYZ(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,76 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dlinear.
+
+#if !defined(pylith_feassemble_quadraturedata2din3dlinearxyz_hh)
+#define pylith_feassemble_quadraturedata2din3dlinearxyz_hh
+
+#include "QuadratureData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class QuadratureData2Din3DLinearXYZ;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::QuadratureData2Din3DLinearXYZ : public QuadratureData
+{
+
+public: 
+
+  /// Constructor
+  QuadratureData2Din3DLinearXYZ(void);
+
+  /// Destructor
+  ~QuadratureData2Din3DLinearXYZ(void);
+
+private:
+
+  static const int _numVertices;
+
+  static const int _spaceDim;
+
+  static const int _numCells;
+
+  static const int _cellDim;
+
+  static const int _numCorners;
+
+  static const int _numQuadPts;
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _quadPtsRef[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDeriv[];
+
+  static const double _quadPts[];
+
+  static const double _jacobian[];
+
+  static const double _jacobianDet[];
+
+  static const double _jacobianInv[];
+
+};
+
+#endif // pylith_feassemble_quadraturedata2din3dlinearxyz_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,101 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dlinear.
+
+#include "QuadratureData2Din3DLinearXZ.hh"
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_numVertices = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_spaceDim = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_numCells = 1;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_cellDim = 2;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_numCorners = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_numQuadPts = 1;
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_vertices[] = {
+  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+ -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
+};
+
+const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_cells[] = {
+       0,       1,       2,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPtsRef[] = {
+  3.33333333e-01,  3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadWts[] = {
+  5.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basis[] = {
+  3.33333333e-01,  3.33333333e-01,
+  3.33333333e-01,};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDeriv[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPts[] = {
+ -3.33333333e-01,  0.00000000e+00,  3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobian[] = {
+ -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianDet[] = {
+  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianInv[] = {
+ -1.00000000e+00, -0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,
+};
+
+pylith::feassemble::QuadratureData2Din3DLinearXZ::QuadratureData2Din3DLinearXZ(void)
+{ // constructor
+  numVertices = _numVertices;
+  spaceDim = _spaceDim;
+  numCells = _numCells;
+  cellDim = _cellDim;
+  numCorners = _numCorners;
+  numQuadPts = _numQuadPts;
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  quadPtsRef = const_cast<double*>(_quadPtsRef);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDeriv = const_cast<double*>(_basisDeriv);
+  quadPts = const_cast<double*>(_quadPts);
+  jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
+  jacobianInv = const_cast<double*>(_jacobianInv);
+} // constructor
+
+pylith::feassemble::QuadratureData2Din3DLinearXZ::~QuadratureData2Din3DLinearXZ(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,76 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dlinear.
+
+#if !defined(pylith_feassemble_quadraturedata2din3dlinearxz_hh)
+#define pylith_feassemble_quadraturedata2din3dlinearxz_hh
+
+#include "QuadratureData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class QuadratureData2Din3DLinearXZ;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::QuadratureData2Din3DLinearXZ : public QuadratureData
+{
+
+public: 
+
+  /// Constructor
+  QuadratureData2Din3DLinearXZ(void);
+
+  /// Destructor
+  ~QuadratureData2Din3DLinearXZ(void);
+
+private:
+
+  static const int _numVertices;
+
+  static const int _spaceDim;
+
+  static const int _numCells;
+
+  static const int _cellDim;
+
+  static const int _numCorners;
+
+  static const int _numQuadPts;
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _quadPtsRef[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDeriv[];
+
+  static const double _quadPts[];
+
+  static const double _jacobian[];
+
+  static const double _jacobianDet[];
+
+  static const double _jacobianInv[];
+
+};
+
+#endif // pylith_feassemble_quadraturedata2din3dlinearxz_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,101 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dlinear.
+
+#include "QuadratureData2Din3DLinearYZ.hh"
+
+const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_numVertices = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_spaceDim = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_numCells = 1;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_cellDim = 2;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_numCorners = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_numQuadPts = 1;
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_vertices[] = {
+  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
+};
+
+const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_cells[] = {
+       0,       1,       2,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPtsRef[] = {
+  3.33333333e-01,  3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadWts[] = {
+  5.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basis[] = {
+  3.33333333e-01,  3.33333333e-01,
+  3.33333333e-01,};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDeriv[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPts[] = {
+  0.00000000e+00,  3.33333333e-01,  3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobian[] = {
+  0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianDet[] = {
+  1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianInv[] = {
+  0.00000000e+00,  0.00000000e+00,
+  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,
+};
+
+pylith::feassemble::QuadratureData2Din3DLinearYZ::QuadratureData2Din3DLinearYZ(void)
+{ // constructor
+  numVertices = _numVertices;
+  spaceDim = _spaceDim;
+  numCells = _numCells;
+  cellDim = _cellDim;
+  numCorners = _numCorners;
+  numQuadPts = _numQuadPts;
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  quadPtsRef = const_cast<double*>(_quadPtsRef);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDeriv = const_cast<double*>(_basisDeriv);
+  quadPts = const_cast<double*>(_quadPts);
+  jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
+  jacobianInv = const_cast<double*>(_jacobianInv);
+} // constructor
+
+pylith::feassemble::QuadratureData2Din3DLinearYZ::~QuadratureData2Din3DLinearYZ(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,76 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dlinear.
+
+#if !defined(pylith_feassemble_quadraturedata2din3dlinearyz_hh)
+#define pylith_feassemble_quadraturedata2din3dlinearyz_hh
+
+#include "QuadratureData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class QuadratureData2Din3DLinearYZ;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::QuadratureData2Din3DLinearYZ : public QuadratureData
+{
+
+public: 
+
+  /// Constructor
+  QuadratureData2Din3DLinearYZ(void);
+
+  /// Destructor
+  ~QuadratureData2Din3DLinearYZ(void);
+
+private:
+
+  static const int _numVertices;
+
+  static const int _spaceDim;
+
+  static const int _numCells;
+
+  static const int _cellDim;
+
+  static const int _numCorners;
+
+  static const int _numQuadPts;
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _quadPtsRef[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDeriv[];
+
+  static const double _quadPts[];
+
+  static const double _jacobian[];
+
+  static const double _jacobianDet[];
+
+  static const double _jacobianInv[];
+
+};
+
+#endif // pylith_feassemble_quadraturedata2din3dlinearyz_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,141 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dquadratic.
+
+#include "QuadratureData2Din3DQuadratic.hh"
+
+const int pylith::feassemble::QuadratureData2Din3DQuadratic::_numVertices = 6;
+
+const int pylith::feassemble::QuadratureData2Din3DQuadratic::_spaceDim = 3;
+
+const int pylith::feassemble::QuadratureData2Din3DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::QuadratureData2Din3DQuadratic::_cellDim = 2;
+
+const int pylith::feassemble::QuadratureData2Din3DQuadratic::_numCorners = 6;
+
+const int pylith::feassemble::QuadratureData2Din3DQuadratic::_numQuadPts = 3;
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_vertices[] = {
+  2.00000000e+00, -5.00000000e-01, -5.00000000e-01,
+  5.00000000e-01,  3.00000000e+00,  0.00000000e+00,
+ -5.00000000e-01,  0.00000000e+00,  2.00000000e+00,
+  1.30000000e+00,  1.20000000e+00, -3.00000000e-01,
+  1.00000000e-01,  1.40000000e+00,  9.00000000e-01,
+  8.00000000e-01, -3.00000000e-01,  7.00000000e-01,
+};
+
+const int pylith::feassemble::QuadratureData2Din3DQuadratic::_cells[] = {
+       0,       1,       2,       3,       4,       5,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_quadPtsRef[] = {
+  6.66666667e-01,  1.66666667e-01,
+  1.66666667e-01,  6.66666667e-01,
+  1.66666667e-01,  1.66666667e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_quadWts[] = {
+  1.66666667e-01,  1.66666667e-01,  1.66666667e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basis[] = {
+ -1.11111111e-01,  2.22222222e-01,
+ -1.11111111e-01,  4.44444444e-01,
+  4.44444444e-01,  1.11111111e-01,
+ -1.11111111e-01, -1.11111111e-01,
+  2.22222222e-01,  1.11111111e-01,
+  4.44444444e-01,  4.44444444e-01,
+  2.22222222e-01, -1.11111111e-01,
+ -1.11111111e-01,  4.44444444e-01,
+  1.11111111e-01,  4.44444444e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDeriv[] = {
+  3.33333333e-01,  3.33333333e-01,
+  1.66666667e+00,  0.00000000e+00,
+  0.00000000e+00, -3.33333333e-01,
+ -2.00000000e+00, -2.66666667e+00,
+  6.66666667e-01,  2.66666667e+00,
+ -6.66666667e-01,  0.00000000e+00,
+  3.33333333e-01,  3.33333333e-01,
+ -3.33333333e-01,  0.00000000e+00,
+  0.00000000e+00,  1.66666667e+00,
+  0.00000000e+00, -6.66666667e-01,
+  2.66666667e+00,  6.66666667e-01,
+ -2.66666667e+00, -2.00000000e+00,
+ -1.66666667e+00, -1.66666667e+00,
+ -3.33333333e-01,  0.00000000e+00,
+  0.00000000e+00, -3.33333333e-01,
+  2.00000000e+00, -6.66666667e-01,
+  6.66666667e-01,  6.66666667e-01,
+ -6.66666667e-01,  2.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_quadPts[] = {
+  6.55555556e-01,  1.84444444e+00,  1.77777778e-01,
+  1.55555556e-01,  3.44444444e-01,  1.17777778e+00,
+  1.38888889e+00,  1.11111111e-01, -5.55555556e-02,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobian[] = {
+ -1.56666667e+00,  3.56666667e+00,  5.66666667e-01,
+ -2.36666667e+00,  3.66666667e-01,  2.36666667e+00,
+ -1.36666667e+00,  3.36666667e+00,  3.66666667e-01,
+ -2.56666667e+00,  5.66666667e-01,  2.56666667e+00,
+ -1.36666667e+00,  3.36666667e+00,  3.66666667e-01,
+ -2.36666667e+00,  3.66666667e-01,  2.36666667e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianDet[] = {
+  1.16307065e+01,  1.18149623e+01,  1.10776050e+01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianInv[] = {
+  4.66101695e-02, -4.53389831e-01,
+  3.00847458e-01, -1.99152542e-01,
+ -4.45344130e-02,  4.33198381e-01,
+  7.20338983e-02, -4.27966102e-01,
+  3.26271186e-01, -1.73728814e-01,
+ -6.71936759e-02,  3.99209486e-01,
+  4.91071429e-02, -4.50892857e-01,
+  3.16964286e-01, -1.83035714e-01,
+ -4.68085106e-02,  4.29787234e-01,
+};
+
+pylith::feassemble::QuadratureData2Din3DQuadratic::QuadratureData2Din3DQuadratic(void)
+{ // constructor
+  numVertices = _numVertices;
+  spaceDim = _spaceDim;
+  numCells = _numCells;
+  cellDim = _cellDim;
+  numCorners = _numCorners;
+  numQuadPts = _numQuadPts;
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  quadPtsRef = const_cast<double*>(_quadPtsRef);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDeriv = const_cast<double*>(_basisDeriv);
+  quadPts = const_cast<double*>(_quadPts);
+  jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
+  jacobianInv = const_cast<double*>(_jacobianInv);
+} // constructor
+
+pylith::feassemble::QuadratureData2Din3DQuadratic::~QuadratureData2Din3DQuadratic(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2006-09-30 20:28:50 UTC (rev 4674)
@@ -0,0 +1,76 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature2din3dquadratic.
+
+#if !defined(pylith_feassemble_quadraturedata2din3dquadratic_hh)
+#define pylith_feassemble_quadraturedata2din3dquadratic_hh
+
+#include "QuadratureData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class QuadratureData2Din3DQuadratic;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::QuadratureData2Din3DQuadratic : public QuadratureData
+{
+
+public: 
+
+  /// Constructor
+  QuadratureData2Din3DQuadratic(void);
+
+  /// Destructor
+  ~QuadratureData2Din3DQuadratic(void);
+
+private:
+
+  static const int _numVertices;
+
+  static const int _spaceDim;
+
+  static const int _numCells;
+
+  static const int _cellDim;
+
+  static const int _numCorners;
+
+  static const int _numQuadPts;
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _quadPtsRef[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDeriv[];
+
+  static const double _quadPts[];
+
+  static const double _jacobian[];
+
+  static const double _jacobianDet[];
+
+  static const double _jacobianInv[];
+
+};
+
+#endif // pylith_feassemble_quadraturedata2din3dquadratic_hh
+
+// End of file

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh	2006-09-30 02:51:19 UTC (rev 4673)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh	2006-09-30 20:28:50 UTC (rev 4674)
@@ -54,4 +54,29 @@
     --data.object=QuadratureData2DQuadratic \
     --data.parent=QuadratureData
 
+python Quadrature2Din3DLinearXYZ.py \
+    --data.namespace=pylith,feassemble \
+    --data.object=QuadratureData2Din3DLinearXYZ \
+    --data.parent=QuadratureData
+
+python Quadrature2Din3DLinearXY.py \
+    --data.namespace=pylith,feassemble \
+    --data.object=QuadratureData2Din3DLinearXY \
+    --data.parent=QuadratureData
+
+python Quadrature2Din3DLinearYZ.py \
+    --data.namespace=pylith,feassemble \
+    --data.object=QuadratureData2Din3DLinearYZ \
+    --data.parent=QuadratureData
+
+python Quadrature2Din3DLinearXZ.py \
+    --data.namespace=pylith,feassemble \
+    --data.object=QuadratureData2Din3DLinearXZ \
+    --data.parent=QuadratureData
+
+python Quadrature2Din3DQuadratic.py \
+    --data.namespace=pylith,feassemble \
+    --data.object=QuadratureData2Din3DQuadratic \
+    --data.parent=QuadratureData
+
 # End of file 



More information about the cig-commits mailing list