[cig-commits] r7081 - in short/3D/PyLith/trunk: . libsrc/feassemble modulesrc/feassemble pylith/feassemble/quadrature unittests/libtests/feassemble unittests/libtests/feassemble/data unittests/libtests/materials unittests/pytests/feassemble

brad at geodynamics.org brad at geodynamics.org
Wed Jun 6 14:20:05 PDT 2007


Author: brad
Date: 2007-06-06 14:20:03 -0700 (Wed, 06 Jun 2007)
New Revision: 7081

Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc
   short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src
   short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din2DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din2DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din3DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXY.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXYZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearYZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh3DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh
   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
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
   short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.hh
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.icc
   short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.py
   short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.pyxe.src
Log:
Added coordinates of vertices in reference cell (dual basis) to C++ Quadrature object. Updated C++ and Python unit tests accordingly.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/TODO	2007-06-06 21:20:03 UTC (rev 7081)
@@ -19,14 +19,6 @@
        (1) axial compression
        (2) shear
 
-2. Add dualBasis to Quadrature.
-   a. Python
-     Quadrature()
-   b. C++
-     Quadrature
-   c. C++ unit tests
-   d. Python unit tests
-
 3. Implement faults for kinematic source
    a. Creation of cohesive cells
      i. Add tests for interpolated meshes.

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -40,6 +40,7 @@
 // Copy constructor
 pylith::feassemble::Quadrature::Quadrature(const Quadrature& q) :
   _minJacobian(q._minJacobian),
+  _vertices(q._vertices),
   _quadPtsRef(q._quadPtsRef),
   _quadPts(q._quadPts),
   _quadWts(q._quadWts),
@@ -59,7 +60,8 @@
 // Set basis functions and their derivatives and coordinates and
 //   weights of the quadrature points.
 void
-pylith::feassemble::Quadrature::initialize(const double* basis,
+pylith::feassemble::Quadrature::initialize(const double* vertices,
+					   const double* basis,
 					   const double* basisDeriv,
 					   const double* quadPtsRef,
 					   const double* quadWts,
@@ -68,7 +70,8 @@
 					   const int numQuadPts,
 					   const int spaceDim)
 { // initialize
-  if (0 == basis ||
+  if (0 == vertices ||
+      0 == basis ||
       0 == basisDeriv ||
       0 == quadPtsRef ||
       0 == quadWts ||
@@ -81,8 +84,9 @@
 	<< "their derivatives, and coordinates and weights of quadrature\n"
 	<< "points must all be specified.\n"
 	<< "Values:\n"
-	<< "  basis pointer (quad pts): " << basis << "\n"
-	<< "  basis derivatites pointer (quad pts): " << basisDeriv << "\n"
+	<< "  vertices pointer: " << vertices << "\n"
+	<< "  basis pointer: " << basis << "\n"
+	<< "  basis derivatites pointer: " << basisDeriv << "\n"
 	<< "  quadrature points pointer: " << quadPtsRef << "\n"
 	<< "  quadrature weights pointer: " << quadWts << "\n"
 	<< "  space dimension: " << spaceDim << "\n"
@@ -92,7 +96,12 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  int size = numBasis * numQuadPts;
+  int size = numBasis * cellDim;
+  _vertices.resize(size);
+  for (int i=0; i < size; ++i)
+    _vertices[i] = vertices[i];
+
+  size = numBasis * numQuadPts;
   _basis.resize(size);
   for (int i=0; i < size; ++i)
     _basis[i] = basis[i];

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -58,9 +58,17 @@
   virtual
   Quadrature* clone(void) const = 0;
 
-  /** Set basis functions and their derivatives, and coordinates and
-   *  weights of the quadrature points.
+  /** Set vertices (dual basis), basis functions and their
+   *  derivatives, and coordinates and weights of the quadrature
+   *  points.
    *
+   * @param vertices Array of coordinates of vertices (dual basis).
+   *   v0x, v0y, v0z
+   *   v1x, v1y, v1z
+   *   ...
+   *   size = numBasis * cellDim
+   *   index = iBasis*cellDim + iDim
+   *
    * @param basis Array of basis functions evaluated at quadrature pts
    *   N0Qp0, N1Qp0, ...
    *   N0Qp1, N1Qp1, ...
@@ -92,7 +100,8 @@
    * @param numQuadPts Number of quadrature points
    * @param spaceDim Number of dimensions in coordinates of cell vertices
    */
-  void initialize(const double* basis,
+  void initialize(const double* vertices,
+		  const double* basis,
 		  const double* basisDeriv,
 		  const double* quadPtsRef,
 		  const double* quadWts,
@@ -113,6 +122,12 @@
    */
   double minJacobian(void);
 
+  /** Get coordinates of vertices in reference cell (dual basis).
+   *
+   * @returns Array of coordinates of vertices in reference cell
+   */
+  const double_array& vertices(void) const;
+
   /** Get coordinates of quadrature points in cell (NOT reference cell).
    *
    * @returns Array of coordinates of quadrature points in cell
@@ -216,6 +231,18 @@
 
   double _minJacobian; ///< Minium allowable Jacobian determinant
   
+  /** Array of coordinates of vertices in reference cell (dual basis).
+   *
+   * Reference coordinates: (p,q,r)
+   *
+   * v0p, v0q, v0r
+   * v1p, v1q, v1r
+   *
+   * size = numBasis * cellDim
+   * index = iBasis*cellDim + iDim
+   */
+  double_array _vertices;
+
   /** Array of coordinates of quadrature points in reference cell.
    *
    * Reference coordinates: (p,q,r)

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -28,6 +28,13 @@
   _minJacobian = min;
 }
 
+// Get coordinates of vertices in reference cell (dual basis).
+inline
+const pylith::double_array&
+pylith::feassemble::Quadrature::vertices(void) const {
+  return _vertices;
+}
+
 // Get coordinates of quadrature points in cell (NOT reference cell).
 inline
 const pylith::double_array&

Modified: short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src	2007-06-06 21:20:03 UTC (rev 7081)
@@ -105,6 +105,7 @@
 
 
   def initialize(self,
+                 vertices, 
                  basis, basisDeriv,
                  quadPts, quadWts,
                  cellDim, numBasis, numQuadPts, spaceDim):
@@ -112,6 +113,7 @@
     Set basis functions and their derivatives, and coordinates and
     weights of quadrature points.
 
+    @param vertices Vertices in reference cell (dual basis).
     @param basis Basis functions evaluated at the quadrature points
     @param basisDeriv Basis function derivatives evaluated at quad pts
     @param quadPts Coordinates of quadrature points in reference cell
@@ -122,9 +124,10 @@
     @param spaceDim Number of dimensions associated with cell vertices
     """
     # create shim for method 'initialize'
-    #embed{ void Quadrature_initialize(void* objVptr, double* basis, double* basisDeriv, double* quadPts, double* quadWts, int cellDim, int numBasis, int numQuadPts, int spaceDim)
+    #embed{ void Quadrature_initialize(void* objVptr, double* vertices, double* basis, double* basisDeriv, double* quadPts, double* quadWts, int cellDim, int numBasis, int numQuadPts, int spaceDim)
     try {
       ((pylith::feassemble::Quadrature*) objVptr)->initialize(
+                                         vertices,
                                          basis, basisDeriv,
                                          quadPts, quadWts,
                                          cellDim, numBasis,
@@ -142,6 +145,17 @@
 
     numVertices = numBasis
 
+    # vertices
+    vertices = spatialdata.utils.simplearray.objAsSimpleArray(vertices)
+    if not vertices.isCompatible(nd=2, simpletype="double",
+                              contiguous=True, notswapped=True):
+      raise TypeError, \
+            "Argument 'vertices' must be a contiguous, 2-D array " \
+            "of type double."
+    if numBasis != vertices.shape[0] or cellDim != vertices.shape[1]:
+      raise TypeError, \
+            "Shape of argument 'vertices' must be (numBasis, cellDim)."
+
     # basis
     basis = spatialdata.utils.simplearray.objAsSimpleArray(basis)
     if not basis.isCompatible(nd=2, simpletype="double",
@@ -189,16 +203,19 @@
       raise TypeError, \
             "Shape of argument 'quadWts' must be (numQuadPts)."
 
+    cdef double* verticesCpp
     cdef double* basisCpp
     cdef double* basisDerivCpp
     cdef double* quadPtsCpp
     cdef double* quadWtsCpp
+    verticesCpp = <double*> PyCObject_AsVoidPtr(vertices.data)
     basisCpp = <double*> PyCObject_AsVoidPtr(basis.data)
     basisDerivCpp = <double*> PyCObject_AsVoidPtr(basisDeriv.data)
     quadPtsCpp = <double*> PyCObject_AsVoidPtr(quadPts.data)
     quadWtsCpp = <double*> PyCObject_AsVoidPtr(quadWts.data)
 
     Quadrature_initialize(self.thisptr,
+                          verticesCpp,
                           basisCpp, basisDerivCpp,
                           quadPtsCpp, quadWtsCpp,
                           cellDim, numBasis,

Modified: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -87,7 +87,8 @@
 
 
     self._info.log("Initializing C++ quadrature.")
-    self.cppHandle.initialize(c.basis, c.basisDeriv,
+    self.cppHandle.initialize(c.vertices,
+                              c.basis, c.basisDeriv,
                               c.quadPts, c.quadWts,
                               c.cellDim, c.numCorners, c.numQuadPts,
                               self.spaceDim)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -256,7 +256,8 @@
   (*mesh)->getFactory()->clear(); // clear numberings
 
   // Setup quadrature
-  _quadrature->initialize(_data->basis, _data->basisDeriv, _data->quadPts,
+  _quadrature->initialize(_data->verticesRef, 
+			  _data->basis, _data->basisDeriv, _data->quadPts,
 			  _data->quadWts, _data->cellDim, _data->numBasis,
 			  _data->numQuadPts, _data->spaceDim);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -257,7 +257,8 @@
   (*mesh)->getFactory()->clear(); // clear numberings
 
   // Setup quadrature
-  _quadrature->initialize(_data->basis, _data->basisDeriv, _data->quadPts,
+  _quadrature->initialize(_data->verticesRef,
+			  _data->basis, _data->basisDeriv, _data->quadPts,
 			  _data->quadWts, _data->cellDim, _data->numBasis,
 			  _data->numQuadPts, _data->spaceDim);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,26 +63,17 @@
 void
 pylith::feassemble::TestIntegrator::testInitCellVector(void)
 { // testInitCellVector
-  ElasticityExplicit integrator;
-
-  const int cellDim = 1;
-  const int numBasis = 2;
-  const int numQuadPts = 1;
-  const int spaceDim = 1;
-  const double basis[] = { 0.5, 0.5 };
-  const double basisDeriv[] = { -0.5, 0.5 };
-  const double quadPtsRef[] = { 0.0 };
-  const double quadWts[] = { 2.0 };
-  const double minJacobian = 1.0;
-
   Quadrature1D quadrature;
-  quadrature.initialize(basis, basisDeriv, quadPtsRef, quadWts,
-			cellDim, numBasis, numQuadPts, spaceDim);
+  _initQuadrature(&quadrature);
+
+  ElasticityExplicit integrator;
   integrator.quadrature(&quadrature);
+
   integrator._initCellVector();
   
   CPPUNIT_ASSERT(0 != integrator._cellVector);
-  const int size = spaceDim * numBasis;
+  const int size = 
+    quadrature.spaceDim() * quadrature.numBasis();
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(0.0, integrator._cellVector[i]);
 } // testInitCellVector
@@ -92,26 +83,17 @@
 void
 pylith::feassemble::TestIntegrator::testResetCellVector(void)
 { // testResetCellVector
-  ElasticityExplicit integrator;
-
-  const int cellDim = 1;
-  const int numBasis = 2;
-  const int numQuadPts = 1;
-  const int spaceDim = 1;
-  const double basis[] = { 0.5, 0.5 };
-  const double basisDeriv[] = { -0.5, 0.5 };
-  const double quadPtsRef[] = { 0.0 };
-  const double quadWts[] = { 2.0 };
-  const double minJacobian = 1.0;
-
   Quadrature1D quadrature;
-  quadrature.initialize(basis, basisDeriv, quadPtsRef, quadWts,
-			cellDim, numBasis, numQuadPts, spaceDim);
+  _initQuadrature(&quadrature);
+
+  ElasticityExplicit integrator;
   integrator.quadrature(&quadrature);
+
   integrator._initCellVector();
   
   CPPUNIT_ASSERT(0 != integrator._cellVector);
-  const int size = spaceDim * numBasis;
+  const int size = 
+    quadrature.spaceDim() * quadrature.numBasis();
   for (int i=0; i < size; ++i)
     integrator._cellVector[i] = 1.4+2*i;
   integrator._resetCellVector();
@@ -124,26 +106,18 @@
 void
 pylith::feassemble::TestIntegrator::testInitCellMatrix(void)
 { // testInitCellMatrix
-  ElasticityExplicit integrator;
-
-  const int cellDim = 1;
-  const int numBasis = 2;
-  const int numQuadPts = 1;
-  const int spaceDim = 1;
-  const double basis[] = { 0.5, 0.5 };
-  const double basisDeriv[] = { -0.5, 0.5 };
-  const double quadPtsRef[] = { 0.0 };
-  const double quadWts[] = { 2.0 };
-  const double minJacobian = 1.0;
-
   Quadrature1D quadrature;
-  quadrature.initialize(basis, basisDeriv, quadPtsRef, quadWts,
-			cellDim, numBasis, numQuadPts, spaceDim);
+  _initQuadrature(&quadrature);
+
+  ElasticityExplicit integrator;
   integrator.quadrature(&quadrature);
+
   integrator._initCellMatrix();
   
   CPPUNIT_ASSERT(0 != integrator._cellMatrix);
-  const int size = spaceDim * numBasis * spaceDim * numBasis;
+  const int size = 
+    quadrature.spaceDim() * quadrature.numBasis() *
+    quadrature.spaceDim() * quadrature.numBasis();
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(0.0, integrator._cellMatrix[i]);
 } // testInitCellMatrix
@@ -153,26 +127,18 @@
 void
 pylith::feassemble::TestIntegrator::testResetCellMatrix(void)
 { // testResetCellMatrix
-  ElasticityExplicit integrator;
-
-  const int cellDim = 1;
-  const int numBasis = 2;
-  const int numQuadPts = 1;
-  const int spaceDim = 1;
-  const double basis[] = { 0.5, 0.5 };
-  const double basisDeriv[] = { -0.5, 0.5 };
-  const double quadPtsRef[] = { 0.0 };
-  const double quadWts[] = { 2.0 };
-  const double minJacobian = 1.0;
-
   Quadrature1D quadrature;
-  quadrature.initialize(basis, basisDeriv, quadPtsRef, quadWts,
-			cellDim, numBasis, numQuadPts, spaceDim);
+  _initQuadrature(&quadrature);
+
+  ElasticityExplicit integrator;
   integrator.quadrature(&quadrature);
+
   integrator._initCellMatrix();
   
   CPPUNIT_ASSERT(0 != integrator._cellMatrix);
-  const int size = spaceDim * numBasis * spaceDim * numBasis;
+  const int size = 
+    quadrature.spaceDim() * quadrature.numBasis() *
+    quadrature.spaceDim() * quadrature.numBasis();
   for (int i=0; i < size; ++i)
     integrator._cellMatrix[i] = 1.23 + 1.2*i;
   integrator._resetCellMatrix();
@@ -180,220 +146,27 @@
     CPPUNIT_ASSERT_EQUAL(0.0, integrator._cellMatrix[i]);
 } // testResetCellMatrix
 
-
-#if 0
 // ----------------------------------------------------------------------
-namespace pylith {
-  namespace feassemble {
-    class _TestIntegrator;
-  } // feassemble
-} // pylith
-
-/// Helper class for TestIntegrator
-class pylith::feassemble::_TestIntegrator {
-
-public :
-  /** Setup mesh.
-   *
-   * @param data Integrator data
-   */
-  static 
-  ALE::Obj<ALE::Mesh>
-  _setupMesh(const IntegratorData& data);
-}; // _TestIntegrator
-
-
-// ----------------------------------------------------------------------
-// Test integrateAction()
+// Set quadrature information.
 void
-pylith::feassemble::TestIntegrator::_testIntegrateAction(Integrator* integrator,
-					   const IntegratorData& data) const
-{ // _testIntegrateAction
-  CPPUNIT_ASSERT(false);
+pylith::feassemble::TestIntegrator::_initQuadrature(Quadrature1D* quadrature)
+{ // _initQuadrature
+  CPPUNIT_ASSERT(0 != quadrature);
 
-  ALE::Obj<Mesh> mesh = _TestIntegrator::_setupMesh(data);
+  const int cellDim = 1;
+  const int numBasis = 2;
+  const int numQuadPts = 1;
+  const int spaceDim = 1;
+  const double vertices[] = { -1.0, 1.0 };
+  const double basis[] = { 0.5, 0.5 };
+  const double basisDeriv[] = { -0.5, 0.5 };
+  const double quadPtsRef[] = { 0.0 };
+  const double quadWts[] = { 2.0 };
+  const double minJacobian = 1.0;
 
-  // Fiber dimension (number of values in field per vertex) for fields
-  const int fiberDim = data.fiberDim;
+  quadrature->initialize(vertices, basis, basisDeriv, quadPtsRef, quadWts,
+			 cellDim, numBasis, numQuadPts, spaceDim);
+} // _initQuadrature
 
-  // Setup input field for action
-  const ALE::Obj<real_section_type>& fieldIn =
-    mesh->getRealSection("fieldIn");
-  fieldIn->setName("fieldIn");
-  fieldIn->setFiberDimension(mesh->depthStratum(0), fiberDim);
-  mesh->allocate(fieldIn);
-  int iVertex = 0;
-  const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
-  const Mesh::label_sequence::iterator verticesEnd = vertices->end();
-  for (Mesh::label_sequence::iterator vIter=vertices->begin();
-       vIter != verticesEnd;
-       ++vIter, ++iVertex)
-    fieldIn->updatePoint(*vIter, &data.fieldIn[iVertex*fiberDim]);
 
-  // Setup field for action result
-  const ALE::Obj<real_section_type>& fieldOut =
-    mesh->getRealSection("fieldOut");
-  fieldOut->setName("fieldOut");
-  fieldOut->setFiberDimension(mesh->depthStratum(0), fiberDim);
-  mesh->allocate(fieldOut);
-
-  // Integrate action
-  const ALE::Obj<real_section_type>& coordinates = 
-    mesh->getRealSection("coordinates");
-  integrator->integrateAction(fieldOut, fieldIn, coordinates);
-  //fieldOut->view("field out");
-  
-  // Check values in output field
-  iVertex = 0;
-  const double tolerance = 1.0e-06;
-  for (Mesh::label_sequence::iterator vIter=vertices->begin();
-       vIter != verticesEnd;
-       ++vIter, ++iVertex) {
-    const real_section_type::value_type* vals = 
-      fieldOut->restrictPoint(*vIter);
-    const double* valsE = &data.valsAction[iVertex*fiberDim];
-    const int dim = fieldOut->getFiberDimension(*vIter);
-    CPPUNIT_ASSERT_EQUAL(fiberDim, dim);
-    for (int iDim=0; iDim < fiberDim; ++iDim)
-      CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[iDim]/valsE[iDim], tolerance);
-  } // for
-} // _testIntegrateAction
-
-// ----------------------------------------------------------------------
-// Test integrate()
-void
-pylith::feassemble::TestIntegrator::_testIntegrate(Integrator* integrator,
-					  const IntegratorData& data) const
-{ // _testIntegrate
-  CPPUNIT_ASSERT(false);
-
-  journal::debug_t debug("TestIntegrator");
-
-  try {
-    ALE::Obj<Mesh> mesh = _TestIntegrator::_setupMesh(data);
-
-    // Fiber dimension (number of values in field per vertex) for fields
-    const int fiberDim = data.fiberDim;
-
-    // Setup input field for action
-    const ALE::Obj<real_section_type>& fieldIn =
-      mesh->getRealSection("fieldIn");
-    fieldIn->setName("fieldIn");
-    fieldIn->setFiberDimension(mesh->depthStratum(0), fiberDim);
-    mesh->allocate(fieldIn);
-    int iVertex = 0;
-    const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
-    const Mesh::label_sequence::iterator verticesEnd = vertices->end();
-    for (topology_type::label_sequence::iterator vIter=vertices->begin();
-	 vIter != verticesEnd;
-	 ++vIter, ++iVertex)
-      fieldIn->updatePoint(*vIter, &data.fieldIn[iVertex*fiberDim]);
-    
-    // Integrate
-    PetscMat mat;
-    const ALE::Obj<real_section_type>& coordinates = 
-      mesh->getRealSection("coordinates");
-    integrator->integrate(&mat, fieldIn, coordinates);
-
-    MatAssemblyBegin(mat, MAT_FINAL_ASSEMBLY);
-    MatAssemblyEnd(mat, MAT_FINAL_ASSEMBLY);
-    
-    // Check matrix size
-    int nRows = 0;
-    int nCols = 0;
-    MatGetSize(mat, &nRows, &nCols);
-    debug
-      << journal::at(__HERE__)
-      << "# rows: " << nRows
-      << ", # cols: " << nCols
-      << journal::endl;
-    const int nRowsE = data.numVertices * data.fiberDim;
-    const int nColsE = data.numVertices * data.fiberDim;
-    CPPUNIT_ASSERT_EQUAL(nRowsE, nRows);
-    CPPUNIT_ASSERT_EQUAL(nColsE, nCols);
-
-    // Create dense matrix
-    PetscMat matDense;
-    PetscMat matSparseSeq;
-    MatConvert(mat, MATSEQAIJ, MAT_INITIAL_MATRIX, &matSparseSeq);
-    MatConvert(matSparseSeq, MATSEQDENSE, MAT_INITIAL_MATRIX, &matDense);
-    MatDestroy(matSparseSeq);
-    
-    // Get values associated with dense matrix
-    double* vals = 0;
-    int* rows = 0;
-    int* cols = 0;
-    const int size = nRows*nCols;
-    if (size > 0) {
-      vals = new double[size];
-      rows = new int[nRows];
-      for (int iRow=0; iRow < nRows; ++iRow)
-	rows[iRow] = iRow;
-      cols = new int[nCols];
-      for (int iCol=0; iCol < nCols; ++iCol)
-	cols[iCol] = iCol;
-    } // if
-    MatGetValues(matDense, nRows, rows, nCols, cols, vals);
-    delete[] rows; rows = 0;
-    delete[] cols; cols = 0;
-
-    // Check values from dense matrix
-    const double tolerance = 1.0e-06;
-    for (int iRow=0; iRow < nRows; ++iRow)
-      for (int iCol=0; iCol < nCols; ++iCol) {
-	const int index = iRow * nCols + iCol;
-	debug
-	  << journal::at(__HERE__)
-	  << "index: " << index
-	  << ", valsE: " << data.valsMatrix[index]
-	  << ", vals: " << vals[index]
-	  << journal::endl;
-	if (fabs(data.valsMatrix[index]) > tolerance)
-	  CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[index]/data.valsMatrix[index],
-				       tolerance);
-	else
-	  CPPUNIT_ASSERT_DOUBLES_EQUAL(data.valsMatrix[index], vals[index],
-				       tolerance);
-      } // for
-    delete[] vals; vals = 0;
-    MatDestroy(matDense);
-  } catch (std::exception& err) {
-    std::cerr << err.what() << std::endl;
-    throw;
-  } catch (ALE::Exception& err) {
-    std::cerr << err << std::endl;
-    throw;
-  } // try/catch
-} // _testIntegrate
-
-// ----------------------------------------------------------------------
-// Setup mesh.
-ALE::Obj<ALE::Mesh>
-pylith::feassemble::_TestIntegrator::_setupMesh(const IntegratorData& data)
-{ // _setupMesh
-  const int cellDim = data.cellDim;
-  const int numCorners = data.numCorners;
-  const int spaceDim = data.spaceDim;
-  const int numVertices = data.numVertices;
-  const int numCells = data.numCells;
-  const double* vertCoords = data.vertices;
-  const int* cells = data.cells;
-  CPPUNIT_ASSERT(0 != vertCoords);
-  CPPUNIT_ASSERT(0 != cells);
-
-  ALE::Obj<Mesh> mesh = new Mesh(PETSC_COMM_WORLD, cellDim);
-  ALE::Obj<sieve_type> sieve = new sieve_type(mesh->comm());
-
-  const bool interpolate = false;
-  ALE::SieveBuilder<Mesh>::buildTopology(sieve, cellDim, numCells,
-	       const_cast<int*>(cells), numVertices, interpolate, numCorners);
-  mesh->setSieve(sieve);
-  mesh->stratify();
-  ALE::SieveBuilder<Mesh>::buildCoordinates(mesh, spaceDim, vertCoords);
-
-  return mesh;
-} // _setupMesh
-#endif
-
-
 // End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -26,9 +26,9 @@
 /// Namespace for pylith package
 namespace pylith {
   namespace feassemble {
-    class Integrator;
     class TestIntegrator;
-    class IntegratorData;
+
+    class Quadrature1D; // USES Quadrature1D
   } // feassemble
 } // pylith
 
@@ -69,6 +69,15 @@
   /// Test _resetCellMatrix()
   void testResetCellMatrix(void);
 
+  // PRIVATE METHODS ////////////////////////////////////////////////////
+private :
+
+  /** Initialize 1-D quadrature object.
+   *
+   * @param quadrature Quadrature object
+   */
+  void _initQuadrature(Quadrature1D* quadrature);
+
 }; // class TestIntegrator
 
 #endif // pylith_feassemble_testintegrator_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -31,6 +31,7 @@
   const int numBasisE = 2;
   const int numQuadPtsE = 1;
   const int spaceDimE = 1;
+  const double verticesE[] = { 0.12, 0.42 };
   const double basisE[] = { 0.2, 0.4 };
   const double basisDerivE[] = { 0.8, 1.6 };
   const double quadPtsRefE[] = { 3.2 };
@@ -49,6 +50,10 @@
   qOrig._spaceDim = spaceDimE;
 
   size_t size = 2;
+  qOrig._vertices.resize(size);
+  memcpy(&qOrig._vertices[0], verticesE, size*sizeof(double));
+  
+  size = 2;
   qOrig._basis.resize(size);
   memcpy(&qOrig._basis[0], basisE, size*sizeof(double));
   
@@ -92,6 +97,12 @@
   CPPUNIT_ASSERT_EQUAL(numQuadPtsE, qCopy->numQuadPts());
   CPPUNIT_ASSERT_EQUAL(spaceDimE, qCopy->spaceDim());
 
+  const double_array& vertices = qCopy->vertices();
+  size = numBasisE * cellDimE;
+  CPPUNIT_ASSERT_EQUAL(size, vertices.size());
+  for (int i=0; i < size; ++i)
+    CPPUNIT_ASSERT_EQUAL(verticesE[i], vertices[i]);
+
   const double_array& basis = qCopy->basis();
   size = numBasisE * numQuadPtsE;
   CPPUNIT_ASSERT_EQUAL(size, basis.size());
@@ -164,6 +175,7 @@
   const int numBasis = 2;
   const int numQuadPts = 1;
   const int spaceDim = 1;
+  const double vertices[] = { -1.0, 1.0 };
   const double basis[] = { 0.5, 0.5 };
   const double basisDeriv[] = { -0.5, 0.5 };
   const double quadPtsRef[] = { 0.0 };
@@ -171,7 +183,7 @@
   const double minJacobian = 1.0;
 
   Quadrature1D q;
-  q.initialize(basis, basisDeriv, quadPtsRef, quadWts,
+  q.initialize(vertices, basis, basisDeriv, quadPtsRef, quadWts,
 	       cellDim, numBasis, numQuadPts, spaceDim);
   
   CPPUNIT_ASSERT_EQUAL(cellDim, q._cellDim);
@@ -179,8 +191,12 @@
   CPPUNIT_ASSERT_EQUAL(numQuadPts, q._numQuadPts);
   CPPUNIT_ASSERT_EQUAL(spaceDim, q._spaceDim);
 
-  size_t size = numBasis * numQuadPts;
+  size_t size = numBasis * cellDim;
   for (int i=0; i < size; ++i)
+    CPPUNIT_ASSERT_EQUAL(vertices[i], q._vertices[i]);
+
+  size = numBasis * numQuadPts;
+  for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(basis[i], q._basis[i]);
 
   size = numBasis * numQuadPts * spaceDim;
@@ -219,6 +235,7 @@
   const int numBasis = data.numBasis;
   const int numQuadPts = data.numQuadPts;
   const int spaceDim = data.spaceDim;
+  const double* verticesRef = data.verticesRef;
   const double* basis = data.basis;
   const double* basisDeriv = data.basisDeriv;
   const double* quadPtsRef = data.quadPtsRef;
@@ -236,7 +253,7 @@
   const double minJacobian = 1.0e-06;
 
   pQuad->minJacobian(minJacobian);
-  pQuad->initialize(basis, basisDeriv, quadPtsRef, quadWts,
+  pQuad->initialize(verticesRef, basis, basisDeriv, quadPtsRef, quadWts,
 		    cellDim, numBasis, numQuadPts, spaceDim);
 
   // Create mesh with test cell

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -46,6 +46,11 @@
 0,1,
 };
 
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityExplicitData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
@@ -106,6 +111,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -47,6 +47,12 @@
 0,1,2,
 };
 
+const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+  0.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
@@ -125,6 +131,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -47,6 +47,12 @@
 0,1,2,
 };
 
+const double pylith::feassemble::ElasticityExplicitData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityExplicitData2DLinear::_quadPts[] = {
   3.33333333e-01,  3.33333333e-01,
 };
@@ -66,7 +72,7 @@
 };
 
 const double pylith::feassemble::ElasticityExplicitData2DLinear::_fieldTpdt[] = {
-  1.90000000e+00, -9.00000000e-01,
+  1.30000000e+00, -9.00000000e-01,
   1.40000000e+00,  1.50000000e+00,
   5.00000000e-01, -9.00000000e-01,
 };
@@ -84,9 +90,9 @@
 };
 
 const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsResidual[] = {
- -4.20756111e+10, -2.88779028e+10,
-  3.95993889e+10,  2.47209722e+09,
-  2.47438889e+09,  2.63970972e+10,
+ -4.20746944e+10, -2.88779028e+10,
+  3.96003056e+10,  2.47209722e+09,
+  2.47530556e+09,  2.63970972e+10,
 };
 
 const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsJacobian[] = {
@@ -125,6 +131,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -50,6 +50,15 @@
 0,1,2,3,4,5,
 };
 
+const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_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::ElasticityExplicitData2DQuadratic::_quadPts[] = {
   6.66666667e-01,  1.66666667e-01,
   1.66666667e-01,  6.66666667e-01,
@@ -219,6 +228,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -48,6 +48,13 @@
 0,1,2,3,
 };
 
+const double pylith::feassemble::ElasticityExplicitData3DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityExplicitData3DLinear::_quadPts[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
 };
@@ -161,6 +168,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -54,6 +54,19 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
+const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
+ -1.00000000e+00,  0.00000000e+00, -1.00000000e+00,
+  0.00000000e+00,  0.00000000e+00, -1.00000000e+00,
+  0.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,
+ -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_quadPts[] = {
   8.33333333e-02,  8.33333333e-02,  8.33333333e-02,
   7.50000000e-01,  8.33333333e-02,  8.33333333e-02,
@@ -494,6 +507,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -46,6 +46,11 @@
 0,1,
 };
 
+const double pylith::feassemble::ElasticityImplicitData1DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityImplicitData1DLinear::_quadPts[] = {
   0.00000000e+00,
 };
@@ -106,6 +111,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -47,6 +47,12 @@
 0,1,2,
 };
 
+const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+  0.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_quadPts[] = {
  -5.77350269e-01,
   5.77350269e-01,
@@ -125,6 +131,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -47,6 +47,12 @@
 0,1,2,
 };
 
+const double pylith::feassemble::ElasticityImplicitData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityImplicitData2DLinear::_quadPts[] = {
   3.33333333e-01,  3.33333333e-01,
 };
@@ -125,6 +131,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -50,6 +50,15 @@
 0,1,2,3,4,5,
 };
 
+const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_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::ElasticityImplicitData2DQuadratic::_quadPts[] = {
   6.66666667e-01,  1.66666667e-01,
   1.66666667e-01,  6.66666667e-01,
@@ -219,6 +228,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -48,6 +48,13 @@
 0,1,2,3,
 };
 
+const double pylith::feassemble::ElasticityImplicitData3DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityImplicitData3DLinear::_quadPts[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
 };
@@ -161,6 +168,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -54,6 +54,19 @@
 0,1,2,3,4,5,6,7,8,9,
 };
 
+const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
+ -1.00000000e+00,  0.00000000e+00, -1.00000000e+00,
+  0.00000000e+00,  0.00000000e+00, -1.00000000e+00,
+  0.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,
+ -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+};
+
 const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_quadPts[] = {
   8.33333333e-02,  8.33333333e-02,  8.33333333e-02,
   7.50000000e-01,  8.33333333e-02,  8.33333333e-02,
@@ -494,6 +507,7 @@
   dt = _dt;
   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);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -63,6 +63,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPts[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -78,6 +78,7 @@
     self.numCells = None
     self.vertices = None
     self.cells = None
+    self.verticesRef = None
 
     # This quadrature information is set by quadrature.calculateBasis()
     self.numBasis = None
@@ -143,6 +144,7 @@
     self.numCells = self.mesh.numCells
     self.vertices = self.mesh.vertices
     self.cells = self.mesh.cells
+    self.verticesRef = self.mesh.verticesRef
 
     # Quadrature information
     self.numBasis = self.quadrature.numBasis
@@ -199,6 +201,8 @@
                        format="%16.8e", ncols=self.spaceDim)
     self.data.addArray(vtype="int", name="_cells", values=self.cells,
                        format="%d", ncols=self.numBasis)    
+    self.data.addArray(vtype="double", name="_verticesRef", values=self.verticesRef,
+                       format="%16.8e", ncols=self.cellDim)
 
     # Quadrature information
     self.data.addScalar(vtype="int", name="_numBasis", value=self.numBasis,

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -21,6 +21,7 @@
   numCells(0),
   vertices(0),
   cells(0),
+  verticesRef(0),
   numBasis(0),
   numQuadPts(0),
   quadPts(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -42,6 +42,7 @@
   int numCells; ///< Number of cells
   double* vertices; ///< Coordinates of vertices
   int* cells; ///< Indices of vertices in cells
+  double* verticesRef; ///< Coordinates of vertices in ref cell (dual basis)
   //@}
 
   /// @name Quadrature information

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -43,6 +43,7 @@
     self.numCells = 1    
     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)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DQuadratic.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DQuadratic.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -44,6 +44,8 @@
     self.vertices = numpy.array( [[-0.25], [0.875], [2.0]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
+    self.verticesRef = numpy.array([[-1.0], [1.0], [0.0]],
+                                   dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din2DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din2DLinear.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din2DLinear.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -44,6 +44,7 @@
     self.vertices = numpy.array( [[-0.2, -0.5], [0.7, 0.3]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
+    self.verticesRef = numpy.array([ [-1.0], [1.0] ], dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din2DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din2DQuadratic.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din2DQuadratic.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -44,6 +44,7 @@
     self.vertices = numpy.array( [[-0.2, -0.5], [0.3, -0.2], [0.7, 0.3]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
+    self.verticesRef = numpy.array([[-1.0], [1.0], [0.0]], dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din3DLinear.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din3DLinear.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -45,6 +45,7 @@
                                   [-0.5, 2.0,  3.0]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0], [1.0]], dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din3DQuadratic.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1Din3DQuadratic.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -46,6 +46,7 @@
                                   [-0.5, 2.0, 3.0]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
+    self.verticesRef = numpy.array([[-1.0], [1.0], [0.0]], dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2DLinear.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2DLinear.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -45,6 +45,10 @@
                                   [0.3, 0.5],
                                   [-1.0, -0.2]], dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0],
+                                     [+1.0, -1.0],
+                                     [-1.0, +1.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2DQuadratic.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2DQuadratic.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -49,6 +49,13 @@
                                   [-1.25, -0.25]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0],
+                                     [+1.0, -1.0],
+                                     [-1.0, +1.0],
+                                     [ 0.0,  0.0],
+                                     [-1.0,  0.0],
+                                     [ 0.0, -1.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXY.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXY.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXY.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -46,6 +46,10 @@
                                   [ 0.0,  0.0,  1.0]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0],
+                                     [+1.0, -1.0],
+                                     [-1.0, +1.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXYZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXYZ.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXYZ.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -46,6 +46,10 @@
                                   [ 0.0,  0.0,  1.0]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0],
+                                     [+1.0, -1.0],
+                                     [-1.0, +1.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXZ.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearXZ.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -46,6 +46,10 @@
                                   [ 0.0,  0.0,  1.0]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0],
+                                     [+1.0, -1.0],
+                                     [-1.0, +1.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearYZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearYZ.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DLinearYZ.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -46,6 +46,10 @@
                                   [ 0.0,  0.0,  1.0]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0],
+                                     [+1.0, -1.0],
+                                     [-1.0, +1.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DQuadratic.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh2Din3DQuadratic.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -49,6 +49,13 @@
                                   [ 0.8, -0.3,  0.7]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0],
+                                     [+1.0, -1.0],
+                                     [-1.0, +1.0],
+                                     [ 0.0,  0.0],
+                                     [-1.0,  0.0],
+                                     [ 0.0, -1.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh3DLinear.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh3DLinear.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -46,6 +46,11 @@
                                   [ 1.0, -0.1, -0.3],
                                   [-0.2,  0.5,  2.0]], dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2, 3]], dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0, -1.0],
+                                     [+1.0, -1.0, -1.0],
+                                     [-1.0, +1.0, -1.0],
+                                     [-1.0, -1.0, +1.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh3DQuadratic.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh3DQuadratic.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -54,6 +54,17 @@
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]],
                               dtype=numpy.int32)
+    self.verticesRef = numpy.array( [[-1.0, -1.0, -1.0],
+                                     [+1.0, -1.0, -1.0],
+                                     [-1.0, +1.0, -1.0],
+                                     [-1.0, -1.0, +1.0],
+                                     [-1.0,  0.0, -1.0],
+                                     [ 0.0,  0.0, -1.0],
+                                     [ 0.0, -1.0, -1.0],
+                                     [-1.0, -1.0,  0.0],
+                                     [ 0.0, -1.0,  0.0],
+                                     [-1.0,  0.0,  0.0]],
+                                    dtype=numpy.float64)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -74,6 +74,7 @@
     # Reference cell information
     self.numBasis = None
     self.numQuadPts = None
+    self.verticesRef = None
     self.quadPtsRef = None
     self.quadWts = None
     self.basis = None
@@ -129,6 +130,7 @@
     self.numCells = self.mesh.numCells
     self.vertices = self.mesh.vertices
     self.cells = self.mesh.cells
+    self.verticesRef = self.mesh.verticesRef
 
     # Quadrature information
     self.numBasis = self.quadrature.numBasis
@@ -160,6 +162,9 @@
     self.data.addArray(vtype="int", name="_cells", values=self.cells,
                        format="%8d", ncols=self.numVertices)
     
+    self.data.addArray(vtype="double", name="_verticesRef",
+                       values=self.verticesRef,
+                       format="%16.8e", ncols=self.cellDim)
     self.data.addArray(vtype="double", name="_quadPtsRef",
                        values=self.quadPtsRef,
                        format="%16.8e", ncols=self.cellDim)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -23,6 +23,7 @@
   numQuadPts(0),
   vertices(0),
   cells(0),
+  verticesRef(0),
   quadPtsRef(0),
   quadWts(0),
   quadPts(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -44,6 +44,7 @@
   double* vertices; ///< Pointer to coordinates of vertices
   int* cells; ///< Pointer to indices of vertices in cells
 
+  double* verticesRef; ///< Coordinates of vertices in ref cell
   double* quadPtsRef; ///< Coordinates of quad pts in ref cell
   double* quadWts; ///< Weights of quadrature points
   double* quadPts; ///< Coordinates of quad pts in cell

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -36,6 +36,11 @@
        0,       1,
 };
 
+const double pylith::feassemble::QuadratureData1DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData1DLinear::_quadPtsRef[] = {
   0.00000000e+00,
 };
@@ -80,6 +85,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -37,6 +37,12 @@
        0,       1,       2,
 };
 
+const double pylith::feassemble::QuadratureData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+  0.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData1DQuadratic::_quadPtsRef[] = {
  -5.77350269e-01,
   5.77350269e-01,
@@ -93,6 +99,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -36,6 +36,11 @@
        0,       1,
 };
 
+const double pylith::feassemble::QuadratureData1Din2DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData1Din2DLinear::_quadPtsRef[] = {
   0.00000000e+00,
 };
@@ -81,6 +86,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -37,6 +37,12 @@
        0,       1,       2,
 };
 
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+  0.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData1Din2DQuadratic::_quadPtsRef[] = {
  -5.77350269e-01,
   5.77350269e-01,
@@ -95,6 +101,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -36,6 +36,11 @@
        0,       1,
 };
 
+const double pylith::feassemble::QuadratureData1Din3DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData1Din3DLinear::_quadPtsRef[] = {
   0.00000000e+00,
 };
@@ -82,6 +87,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -37,6 +37,12 @@
        0,       1,       2,
 };
 
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+  1.00000000e+00,
+  0.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData1Din3DQuadratic::_quadPtsRef[] = {
  -5.77350269e-01,
   5.77350269e-01,
@@ -97,6 +103,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -37,6 +37,12 @@
        0,       1,       2,
 };
 
+const double pylith::feassemble::QuadratureData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2DLinear::_quadPtsRef[] = {
   3.33333333e-01,  3.33333333e-01,
 };
@@ -83,6 +89,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -40,6 +40,15 @@
        0,       1,       2,       3,       4,       5,
 };
 
+const double pylith::feassemble::QuadratureData2DQuadratic::_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::QuadratureData2DQuadratic::_quadPtsRef[] = {
   6.66666667e-01,  1.66666667e-01,
   1.66666667e-01,  6.66666667e-01,
@@ -121,6 +130,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -37,6 +37,12 @@
        0,       1,       2,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPtsRef[] = {
   3.33333333e-01,  3.33333333e-01,
 };
@@ -84,6 +90,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -37,6 +37,12 @@
        0,       1,       2,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPtsRef[] = {
   3.33333333e-01,  3.33333333e-01,
 };
@@ -84,6 +90,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -37,6 +37,12 @@
        0,       1,       2,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPtsRef[] = {
   3.33333333e-01,  3.33333333e-01,
 };
@@ -84,6 +90,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -37,6 +37,12 @@
        0,       1,       2,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPtsRef[] = {
   3.33333333e-01,  3.33333333e-01,
 };
@@ -84,6 +90,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -40,6 +40,15 @@
        0,       1,       2,       3,       4,       5,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_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::QuadratureData2Din3DQuadratic::_quadPtsRef[] = {
   6.66666667e-01,  1.66666667e-01,
   1.66666667e-01,  6.66666667e-01,
@@ -124,6 +133,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -38,6 +38,13 @@
        0,       1,       2,       3,
 };
 
+const double pylith::feassemble::QuadratureData3DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData3DLinear::_quadPtsRef[] = {
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
 };
@@ -87,6 +94,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -44,6 +44,19 @@
        0,       1,       2,       3,       4,       5,       6,       7,       8,       9,
 };
 
+const double pylith::feassemble::QuadratureData3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+  1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,  1.00000000e+00,
+ -1.00000000e+00,  0.00000000e+00, -1.00000000e+00,
+  0.00000000e+00,  0.00000000e+00, -1.00000000e+00,
+  0.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,
+ -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData3DQuadratic::_quadPtsRef[] = {
   8.33333333e-02,  8.33333333e-02,  8.33333333e-02,
   7.50000000e-01,  8.33333333e-02,  8.33333333e-02,
@@ -130,7 +143,7 @@
   6.33333333e-01,  1.26666667e+00,  2.96666667e+00,
   2.36666667e+00,  1.40000000e+00,  5.66666667e-01,
  -3.00000000e-01,  3.03333333e+00,  2.66666667e+00,
-  6.33333333e-01,  1.00000000e+00,  2.70000000e+00,
+  6.33333333e-01,  1.00000000e-00,  2.70000000e+00,
   2.63333333e+00,  1.66666667e+00,  8.33333333e-01,
  -3.33333333e-02,  3.30000000e+00,  2.66666667e+00,
   3.66666667e-01,  7.33333333e-01,  2.96666667e+00,
@@ -165,6 +178,7 @@
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
+  verticesRef = const_cast<double*>(_verticesRef);
   quadPtsRef = const_cast<double*>(_quadPtsRef);
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -53,6 +53,8 @@
 
   static const int _cells[];
 
+  static const double _verticesRef[];
+
   static const double _quadPtsRef[];
 
   static const double _quadWts[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -11,7 +11,7 @@
 #
 
 if (( $# != 1 )); then
-  echo "usage: generate.sh quadrature|integrator|all"
+  echo "usage: generate.sh quadrature|explicit|implicit|all"
   exit 1
 fi
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -150,11 +150,12 @@
   const int numCorners = 3;
   const int numQuadPts = 2;
   const int spaceDim = 1;
+  const double verticesRef[] = { -1.0, 1.0, 0.0 };
   const double basis[] = { 0.455, 0.667, -0.122, -0.122, 0.667, 0.455 };
   const double basisDeriv[] = { -1.077, 1.155, -0.077, 0.077, -1.155, 1.077 };
   const double quadPtsRef[] = { -0.577350269, 0.577350269 };
   const double quadWts[] = { 1.0, 1.0  };
-  quadrature.initialize(basis, basisDeriv, quadPtsRef, quadWts,
+  quadrature.initialize(verticesRef, basis, basisDeriv, quadPtsRef, quadWts,
 			cellDim, numCorners, numQuadPts, spaceDim);
 
   spatialdata::spatialdb::SimpleDB db;

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.hh	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.hh	2007-06-06 21:20:03 UTC (rev 7081)
@@ -61,6 +61,12 @@
    */
   static int spaceDim(const Quadrature& q);
 
+  /** Get vertices in reference cell.
+   *
+   * @returns Array of coordinates of vertices in reference cell.
+   */
+  static const double* vertices(const Quadrature& q);
+
   /** Get basis functions evaluated at quadrature points.
    *
    * @returns Array of basis functions evaluated at quadrature points

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.icc
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.icc	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.icc	2007-06-06 21:20:03 UTC (rev 7081)
@@ -42,6 +42,13 @@
   return q._spaceDim;
 }
 
+// Get coordinates of vertices in reference cell.
+inline
+const double*
+pylith::feassemble::TestQuadrature::vertices(const Quadrature& q) {
+  return &q._vertices[0];
+}
+
 // Get basis functions evaluated at quadrature points.
 inline
 const double*

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.py	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.py	2007-06-06 21:20:03 UTC (rev 7081)
@@ -70,8 +70,10 @@
     cell.shape = "line"
     cell.degree = 2
     cell.order = 2
-    quadPtsE = numpy.array( [(-1.0/3**0.5,),
-                             (+1.0/3**0.5,)],
+
+    verticesE = numpy.array([ [-1.0], [1.0], [0.0] ])
+    quadPtsE = numpy.array( [[-1.0/3**0.5],
+                             [+1.0/3**0.5]],
                             dtype=numpy.float64 )
     quadWtsE = numpy.array( [1.0, 1.0], dtype=numpy.float64 )
 
@@ -95,6 +97,9 @@
     from pylith.utils.testarray import test_double
     import pylith.feassemble.testfeassemble as testmodule
 
+    vertices = testmodule.vertices(quadrature.cppHandle)
+    test_double(self, verticesE, vertices)
+
     basis = testmodule.basis(quadrature.cppHandle)
     test_double(self, basisE, basis)
 

Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.pyxe.src	2007-06-06 19:51:08 UTC (rev 7080)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.pyxe.src	2007-06-06 21:20:03 UTC (rev 7081)
@@ -71,6 +71,18 @@
 return vals;
 #}embed
 
+# create shim for TestQuadrature::vertices
+#embed{ double* TestQuadrature_vertices(void* obj)
+const pylith::feassemble::Quadrature* q =
+  (pylith::feassemble::Quadrature*) obj;
+const int size = TestQuadrature_numBasis(obj) *
+                 TestQuadrature_cellDim(obj);
+double* vals = (size > 0) ? new double[size] : 0;
+const double* vertices = pylith::feassemble::TestQuadrature::vertices(*q);
+memcpy(vals, vertices, size*sizeof(double));
+return vals;
+#}embed
+
 # create shim for TestQuadrature::basisDeriv
 #embed{ double* TestQuadrature_basisDeriv(void* obj)
 const pylith::feassemble::Quadrature* q =
@@ -108,6 +120,30 @@
 #}embed
 
 # ----------------------------------------------------------------------
+def vertices(qhandle):
+  """
+  Call TestQuadrature::vertices().
+  """
+  if not qhandle.name == "pylith_feassemble_Quadrature":
+    raise TypeError, \
+          "Argument 'quadrature' must be extension type 'Quadrature'."
+
+  cdef void* qptr
+  qptr = ptrFromHandle(qhandle)
+
+  cdef int numBasis
+  cdef int cellDim
+  numBasis = TestQuadrature_numBasis(qptr)
+  cellDim = TestQuadrature_cellDim(qptr)
+
+  cdef double* values
+  values = TestQuadrature_vertices(qptr)
+  dims = [numBasis, cellDim]
+  valuesObj = PyCObject_FromVoidPtr(values, NULL)
+  return spatialdata.utils.simplearray.SimpleCppArray(valuesObj, dims, "double")
+  
+
+# ----------------------------------------------------------------------
 def basis(qhandle):
   """
   Call TestQuadrature::basis().



More information about the cig-commits mailing list