[cig-commits] r7238 - in short/3D/PyLith/trunk: . libsrc/feassemble pylith/problems unittests/libtests/feassemble unittests/libtests/feassemble/data

brad at geodynamics.org brad at geodynamics.org
Thu Jun 14 11:22:45 PDT 2007


Author: brad
Date: 2007-06-14 11:22:44 -0700 (Thu, 14 Jun 2007)
New Revision: 7238

Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc
   short/3D/PyLith/trunk/pylith/problems/Implicit.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/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/IntegratorElasticity.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/feutils.py
Log:
Updated feassemble C++ unit tests to account for differences between derivatives of shape functions with respect to the cell's local coordinates and the derivatives with respect to the global coordinates.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/TODO	2007-06-14 18:22:44 UTC (rev 7238)
@@ -4,9 +4,6 @@
 
 Create unit tests for Quadrature::basisDeriv().
 
-Add unit test for verifying cell orientation doesn't affect
-contribution to Jacobian operator.
-
 FaultCohesiveKin::integrateJacobian()
   Need to prevent multiple contributions of orientation information for
   each vertex, because we want to use ADD_VALUES in updateOperator().

Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -107,8 +107,6 @@
     fields->getReal("dispTBctpdt");
   assert(!dispTBctpdt.isNull());
 
-  dispTBctpdt->view("DISP T BC t+dt"); // TEMPORARY
-
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
   const double_array& quadWts = _quadrature->quadWts();

Modified: short/3D/PyLith/trunk/pylith/problems/Implicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Implicit.py	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/pylith/problems/Implicit.py	2007-06-14 18:22:44 UTC (rev 7238)
@@ -96,7 +96,6 @@
 
     dispTBctpdt = self.fields.getReal("dispTBctpdt")
     import pylith.topology.topology as bindings
-    bindings.sectionView(dispTBctpdt, "dispTBctpdt")
     
     self.jacobian = mesh.createMatrix(self.fields.getReal("dispTBctpdt"))
 
@@ -218,17 +217,9 @@
       integrator.integrateResidual(residual, t, self.fields)
     import pylith.utils.petsc as petsc
     petsc.mat_assemble(self.jacobian)
-    print "Jacobian matrix"
-    petsc.mat_view(self.jacobian)
 
     self._info.log("Solving equations.")
-    print "BEFORE SOLVE"
-    bindings.sectionView(solnField, "dispTBctpdt")
-    bindings.sectionView(residual, "residual")
-    bindings.sectionView(dispIncr, "dispIncr")
     self.solver.solve(dispIncr, self.jacobian, residual)
-    print "AFTER SOLVE"
-    bindings.sectionView(dispIncr, "dispIncr")
 
     import pylith.topology.topology as bindings
     bindings.addRealSections(solnField, solnField, dispIncr)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -280,7 +280,7 @@
 
   // Setup quadrature
   _quadrature->initialize(_data->verticesRef, 
-			  _data->basis, _data->basisDeriv, _data->quadPts,
+			  _data->basis, _data->basisDerivRef, _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-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicit.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -281,7 +281,7 @@
 
   // Setup quadrature
   _quadrature->initialize(_data->verticesRef,
-			  _data->basis, _data->basisDeriv, _data->quadPts,
+			  _data->basis, _data->basisDerivRef, _data->quadPts,
 			  _data->quadWts, _data->cellDim, _data->numBasis,
 			  _data->numQuadPts, _data->spaceDim);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -114,11 +114,11 @@
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(basisE[i], basis[i]);
 
-  const double_array& basisDeriv = qCopy->basisDeriv();
+  const double_array& basisDerivRef = qCopy->_basisDerivRef;
   size = numBasisE * numQuadPtsE * spaceDimE;
-  CPPUNIT_ASSERT_EQUAL(size, basisDeriv.size());
+  CPPUNIT_ASSERT_EQUAL(size, basisDerivRef.size());
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(basisDerivE[i], basisDeriv[i]);
+    CPPUNIT_ASSERT_EQUAL(basisDerivE[i], basisDerivRef[i]);
 
   const double_array& quadPtsRef = qCopy->_quadPtsRef;
   size = numQuadPtsE * cellDimE;
@@ -202,13 +202,13 @@
   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 basisDerivRef[] = { -0.5, 0.5 };
   const double quadPtsRef[] = { 0.0 };
   const double quadWts[] = { 2.0 };
   const double minJacobian = 1.0;
 
   Quadrature1D q;
-  q.initialize(vertices, basis, basisDeriv, quadPtsRef, quadWts,
+  q.initialize(vertices, basis, basisDerivRef, quadPtsRef, quadWts,
 	       cellDim, numBasis, numQuadPts, spaceDim);
   
   CPPUNIT_ASSERT_EQUAL(cellDim, q._cellDim);
@@ -226,7 +226,7 @@
 
   size = numBasis * numQuadPts * spaceDim;
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(basisDeriv[i], q._basisDerivRef[i]);
+    CPPUNIT_ASSERT_EQUAL(basisDerivRef[i], q._basisDerivRef[i]);
 
   size = numQuadPts * cellDim;
   for (int i=0; i < size; ++i)
@@ -262,7 +262,7 @@
   const int spaceDim = data.spaceDim;
   const double* verticesRef = data.verticesRef;
   const double* basis = data.basis;
-  const double* basisDeriv = data.basisDeriv;
+  const double* basisDerivRef = data.basisDerivRef;
   const double* quadPtsRef = data.quadPtsRef;
   const double* quadWts = data.quadWts;
 
@@ -278,7 +278,7 @@
   const double minJacobian = 1.0e-06;
 
   pQuad->minJacobian(minJacobian);
-  pQuad->initialize(verticesRef, basis, basisDeriv, quadPtsRef, quadWts,
+  pQuad->initialize(verticesRef, basis, basisDerivRef, 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-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -64,7 +64,7 @@
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DLinear::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
@@ -85,8 +85,8 @@
 };
 
 const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsResidual[] = {
-  2.02500000e+10,
- -2.02500000e+10,
+  1.60000000e+10,
+ -1.60000000e+10,
 };
 
 const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsJacobian[] = {
@@ -115,7 +115,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
   4.55341801e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
   1.15470054e+00,
  -7.73502692e-02,
@@ -99,9 +99,9 @@
 };
 
 const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsResidual[] = {
- -1.41749375e+11,
-  3.24002500e+11,
- -1.82249375e+11,
+ -1.11999375e+11,
+  2.56002500e+11,
+ -1.43999375e+11,
 };
 
 const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsJacobian[] = {
@@ -135,7 +135,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -65,7 +65,7 @@
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityExplicitData2DLinear::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityExplicitData2DLinear::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,
@@ -90,9 +90,9 @@
 };
 
 const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsResidual[] = {
- -4.20746944e+10, -2.88779028e+10,
-  3.96003056e+10,  2.47209722e+09,
-  2.47530556e+09,  2.63970972e+10,
+ -6.32656035e+10,  1.22513006e+11,
+ -1.32542399e+10, -1.10498357e+11,
+  7.65207601e+10, -1.20233573e+10,
 };
 
 const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsJacobian[] = {
@@ -135,7 +135,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -81,7 +81,7 @@
   1.11111111e-01,  4.44444444e-01,
 };
 
-const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_basisDerivRef[] = {
   3.33333333e-01,  3.33333333e-01,
   1.66666667e+00,  0.00000000e+00,
   0.00000000e+00, -3.33333333e-01,
@@ -130,12 +130,12 @@
 };
 
 const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsResidual[] = {
- -2.15070691e+10,  4.58302555e+09,
- -1.24763329e+11, -3.03758597e+10,
- -2.17573798e+10, -9.72849436e+10,
-  2.25394811e+11,  3.72087616e+11,
- -3.39305499e+11, -4.12213687e+11,
-  2.81950760e+11,  1.63211865e+11,
+  8.94394715e+08,  8.85261110e+09,
+ -2.12714501e+10,  9.02616504e+09,
+  2.84000005e+08, -3.31752565e+10,
+  2.76103121e+09,  6.57610682e+10,
+ -5.08876156e+09, -8.47107565e+10,
+  2.24330805e+10,  3.42541857e+10,
 };
 
 const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsJacobian[] = {
@@ -232,7 +232,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -67,7 +67,7 @@
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitData3DLinear::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityExplicitData3DLinear::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -96,10 +96,10 @@
 };
 
 const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsResidual[] = {
- -4.51909072e+10,  1.85615044e+10,  1.04907478e+10,
-  2.74390928e+10,  8.07050438e+09,  9.68374781e+09,
-  8.07109281e+09, -2.09814956e+10, -5.64925219e+09,
-  9.68509281e+09, -5.64849563e+09, -1.45262522e+10,
+ -3.17161475e+09,  3.76142900e+10,  1.81833517e+09,
+ -1.69858191e+09,  6.63279672e+10,  1.45939393e+10,
+  3.16565291e+09, -1.08396398e+11, -2.23578730e+10,
+  1.70891499e+09,  4.45615803e+09,  5.94458982e+09,
 };
 
 const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsJacobian[] = {
@@ -172,7 +172,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -94,7 +94,7 @@
   2.50000000e-01,  2.77777778e-02,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_basisDerivRef[] = {
  -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
  -6.66666667e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -6.66666667e-01,  0.00000000e+00,
@@ -177,16 +177,16 @@
 };
 
 const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsResidual[] = {
-  1.37303139e+12,  3.59478514e+11,  2.01772066e+12,
- -1.31068344e+11, -1.24490591e+11,  7.74704496e+09,
- -3.68695119e+11, -2.72245362e+12, -1.48103804e+11,
-  5.48007226e+11,  3.15715495e+11,  2.06777127e+12,
- -1.21553554e+12, -2.00599538e+12, -3.41366551e+12,
- -1.41823397e+11,  2.78298871e+12, -2.96590241e+11,
- -6.77814032e+12, -6.14553903e+12, -4.48612861e+12,
-  4.50987749e+11,  1.95705297e+12,  3.90071124e+11,
-  9.75436695e+11,  4.73813145e+12,  2.71900074e+11,
-  5.28776613e+12,  8.45145678e+11,  3.58929700e+12,
+  8.00450011e+10, -9.00472985e+09,  1.61541766e+11,
+ -3.54088543e+10, -6.47782824e+10,  2.41769691e+10,
+ -1.55663344e+11, -4.18485549e+11,  2.08248421e+11,
+ -9.98985902e+09, -4.26541080e+10,  3.19516877e+11,
+ -5.76612056e+10, -2.26094787e+11, -1.40838144e+11,
+  1.37516193e+11,  4.40486089e+11, -1.93421106e+11,
+ -8.06475029e+11, -3.08666160e+11, -1.91097837e+11,
+  8.66282546e+10,  4.68394314e+11, -2.59144518e+11,
+  1.66627489e+11,  6.19155802e+11, -4.59691032e+11,
+  5.94347823e+11, -4.58318391e+11,  5.30727623e+11,
 };
 
 const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsJacobian[] = {
@@ -511,7 +511,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -64,7 +64,7 @@
   5.00000000e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DLinear::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityImplicitData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
@@ -85,15 +85,15 @@
 };
 
 const double pylith::feassemble::ElasticityImplicitData1DLinear::_valsResidual[] = {
-  2.53125000e+10,
- -2.53125000e+10,
+  2.00000000e+10,
+ -2.00000000e+10,
 };
 
 const double pylith::feassemble::ElasticityImplicitData1DLinear::_valsJacobian[] = {
-  5.06250000e+10,
- -5.06250000e+10,
- -5.06250000e+10,
-  5.06250000e+10,
+  4.00000000e+10,
+ -4.00000000e+10,
+ -4.00000000e+10,
+  4.00000000e+10,
 };
 
 pylith::feassemble::ElasticityImplicitData1DLinear::ElasticityImplicitData1DLinear(void)
@@ -115,7 +115,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
   4.55341801e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
   1.15470054e+00,
  -7.73502692e-02,
@@ -99,21 +99,21 @@
 };
 
 const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_valsResidual[] = {
- -1.70437500e+11,
-  3.91500000e+11,
- -2.21062500e+11,
+ -1.34666667e+11,
+  3.09333333e+11,
+ -1.74666667e+11,
 };
 
 const double pylith::feassemble::ElasticityImplicitData1DQuadratic::_valsJacobian[] = {
-  1.18125000e+11,
- -1.35000000e+11,
-  1.68750000e+10,
- -1.35000000e+11,
-  2.70000000e+11,
- -1.35000000e+11,
-  1.68750000e+10,
- -1.35000000e+11,
-  1.18125000e+11,
+  9.33333333e+10,
+ -1.06666667e+11,
+  1.33333333e+10,
+ -1.06666667e+11,
+  2.13333333e+11,
+ -1.06666667e+11,
+  1.33333333e+10,
+ -1.06666667e+11,
+  9.33333333e+10,
 };
 
 pylith::feassemble::ElasticityImplicitData1DQuadratic::ElasticityImplicitData1DQuadratic(void)
@@ -135,7 +135,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -65,7 +65,7 @@
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::ElasticityImplicitData2DLinear::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityImplicitData2DLinear::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,
@@ -90,30 +90,30 @@
 };
 
 const double pylith::feassemble::ElasticityImplicitData2DLinear::_valsResidual[] = {
-  1.81500000e+10,  1.48500000e+10,
- -4.95000000e+09, -1.32000000e+10,
- -1.32000000e+10, -1.65000000e+09,
+ -4.40727273e+10,  1.63800000e+11,
+ -1.81636364e+10, -1.54200000e+11,
+  6.22363636e+10, -9.60000000e+09,
 };
 
 const double pylith::feassemble::ElasticityImplicitData2DLinear::_valsJacobian[] = {
-  5.77500000e+10,  2.47500000e+10,
- -4.95000000e+10, -8.25000000e+09,
- -8.25000000e+09, -1.65000000e+10,
-  2.47500000e+10,  5.77500000e+10,
- -1.65000000e+10, -8.25000000e+09,
- -8.25000000e+09, -4.95000000e+10,
- -4.95000000e+10, -1.65000000e+10,
-  4.95000000e+10,  0.00000000e+00,
-  0.00000000e+00,  1.65000000e+10,
- -8.25000000e+09, -8.25000000e+09,
-  0.00000000e+00,  8.25000000e+09,
-  8.25000000e+09,  0.00000000e+00,
- -8.25000000e+09, -8.25000000e+09,
-  0.00000000e+00,  8.25000000e+09,
-  8.25000000e+09,  0.00000000e+00,
- -1.65000000e+10, -4.95000000e+10,
-  1.65000000e+10,  0.00000000e+00,
-  0.00000000e+00,  4.95000000e+10,
+  3.15681818e+10, -1.86136364e+10,
+ -4.90909091e+09,  9.68181818e+09,
+ -2.66590909e+10,  8.93181818e+09,
+ -1.86136364e+10,  7.24772727e+10,
+  2.18181818e+09, -6.28636364e+10,
+  1.64318182e+10, -9.61363636e+09,
+ -4.90909091e+09,  2.18181818e+09,
+  1.14545455e+10,  4.90909091e+09,
+ -6.54545455e+09, -7.09090909e+09,
+  9.68181818e+09, -6.28636364e+10,
+  4.90909091e+09,  5.91818182e+10,
+ -1.45909091e+10,  3.68181818e+09,
+ -2.66590909e+10,  1.64318182e+10,
+ -6.54545455e+09, -1.45909091e+10,
+  3.32045455e+10, -1.84090909e+09,
+  8.93181818e+09, -9.61363636e+09,
+ -7.09090909e+09,  3.68181818e+09,
+ -1.84090909e+09,  5.93181818e+09,
 };
 
 pylith::feassemble::ElasticityImplicitData2DLinear::ElasticityImplicitData2DLinear(void)
@@ -135,7 +135,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -81,7 +81,7 @@
   1.11111111e-01,  4.44444444e-01,
 };
 
-const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_basisDerivRef[] = {
   3.33333333e-01,  3.33333333e-01,
   1.66666667e+00,  0.00000000e+00,
   0.00000000e+00, -3.33333333e-01,
@@ -130,87 +130,87 @@
 };
 
 const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_valsResidual[] = {
- -1.48468519e+11, -1.75705556e+11,
- -2.40611111e+11, -4.21759259e+10,
- -1.05142593e+11, -3.85807407e+11,
-  5.56192593e+11,  7.79718519e+11,
- -7.80303704e+11, -9.67622222e+11,
-  7.18333333e+11,  7.91592593e+11,
+ -4.04084094e+09, -4.29933897e+10,
+ -4.13127930e+10,  2.79255564e+10,
+  8.98193790e+08, -1.29686671e+11,
+  2.07693369e+10,  1.58734365e+11,
+ -2.29487522e+10, -2.12565853e+11,
+  4.66348554e+10,  1.98585991e+11,
 };
 
 const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_valsJacobian[] = {
-  2.09351852e+11,  8.97222222e+10,
-  5.18888889e+10,  8.64814815e+09,
-  1.23703704e+10,  2.47407407e+10,
- -2.31092593e+11, -3.80740741e+10,
-  2.06481481e+10,  3.00000000e+09,
- -6.31666667e+10, -8.80370370e+10,
-  8.97222222e+10,  2.09351852e+11,
-  1.72962963e+10,  8.64814815e+09,
-  1.23703704e+10,  7.42222222e+10,
- -7.68703704e+10, -3.71111111e+10,
-  6.72222222e+09,  2.03703704e+09,
- -4.92407407e+10, -2.57148148e+11,
-  5.18888889e+10,  1.72962963e+10,
-  1.58111111e+11,  0.00000000e+00,
-  0.00000000e+00, -2.29629630e+10,
- -2.10000000e+11, -6.51481481e+10,
- -3.15555556e+10,  6.51481481e+10,
-  3.15555556e+10,  5.66666667e+09,
-  8.64814815e+09,  8.64814815e+09,
-  0.00000000e+00,  2.63518519e+10,
- -1.14814815e+10,  0.00000000e+00,
- -3.25740741e+10, -3.50000000e+10,
-  3.25740741e+10, -5.25925926e+09,
-  2.83333333e+09,  5.25925926e+09,
-  1.23703704e+10,  1.23703704e+10,
-  0.00000000e+00, -1.14814815e+10,
-  4.12407407e+10,  0.00000000e+00,
- -5.90740741e+09, -8.88888889e+08,
-  5.90740741e+09,  5.86296296e+10,
- -5.36111111e+10, -5.86296296e+10,
-  2.47407407e+10,  7.42222222e+10,
- -2.29629630e+10,  0.00000000e+00,
-  0.00000000e+00,  2.47444444e+11,
- -1.77777778e+09, -3.54444444e+10,
-  1.17259259e+11,  3.54444444e+10,
- -1.17259259e+11, -3.21666667e+11,
- -2.31092593e+11, -7.68703704e+10,
- -2.10000000e+11, -3.25740741e+10,
- -5.90740741e+09, -1.77777778e+09,
-  5.12629630e+11,  9.70000000e+10,
- -6.06296296e+10, -1.09296296e+11,
- -5.00000000e+09,  1.23518519e+11,
- -3.80740741e+10, -3.71111111e+10,
- -6.51481481e+10, -3.50000000e+10,
- -8.88888889e+08, -3.54444444e+10,
-  9.70000000e+10,  5.01333333e+11,
- -1.21592593e+11, -4.26000000e+11,
-  1.28703704e+11,  3.22222222e+10,
-  2.06481481e+10,  6.72222222e+09,
- -3.15555556e+10,  3.25740741e+10,
-  5.90740741e+09,  1.17259259e+11,
- -6.06296296e+10, -1.21592593e+11,
-  7.22407407e+11,  1.33888889e+11,
- -6.56777778e+11, -1.68851852e+11,
-  3.00000000e+09,  2.03703704e+09,
-  6.51481481e+10, -5.25925926e+09,
-  5.86296296e+10,  3.54444444e+10,
- -1.09296296e+11, -4.26000000e+11,
-  1.33888889e+11,  5.36296296e+11,
- -1.51370370e+11, -1.42518519e+11,
- -6.31666667e+10, -4.92407407e+10,
-  3.15555556e+10,  2.83333333e+09,
- -5.36111111e+10, -1.17259259e+11,
- -5.00000000e+09,  1.28703704e+11,
- -6.56777778e+11, -1.51370370e+11,
-  7.47000000e+11,  1.86333333e+11,
- -8.80370370e+10, -2.57148148e+11,
-  5.66666667e+09,  5.25925926e+09,
- -5.86296296e+10, -3.21666667e+11,
-  1.23518519e+11,  3.22222222e+10,
- -1.68851852e+11, -1.42518519e+11,
-  1.86333333e+11,  6.83851852e+11,
+  1.92724753e+10,  1.13862332e+10,
+  4.42819754e+09,  2.19495425e+09,
+  2.80230421e+09,  3.73249461e+08,
+ -1.92262756e+10, -8.64560662e+09,
+ -4.36542846e+09, -2.08992316e+09,
+ -2.91127292e+09, -3.21890717e+09,
+  1.13862332e+10,  7.19847471e+10,
+  4.69495425e+09, -1.54251684e+09,
+ -2.12675054e+09,  2.75320212e+10,
+ -1.86456066e+10, -8.12569923e+08,
+ -2.08992316e+09, -6.25120411e+09,
+  6.78109283e+09, -9.09104775e+10,
+  4.42819754e+09,  4.69495425e+09,
+  5.38342257e+10, -1.02511036e+10,
+  1.09718676e+10, -6.50919571e+09,
+ -1.30974352e+09, -2.10712128e+10,
+ -5.55692740e+10,  2.85686411e+10,
+ -1.23552734e+10,  4.56791677e+09,
+  2.19495425e+09, -1.54251684e+09,
+ -1.02511036e+10,  1.72387553e+10,
+ -4.00919571e+09,  5.80929253e+09,
+ -1.10712128e+10,  2.74018801e+10,
+  1.85686411e+10, -4.36343981e+10,
+  4.56791677e+09, -5.27301294e+09,
+  2.80230421e+09, -2.12675054e+09,
+  1.09718676e+10, -4.00919571e+09,
+  2.66480946e+10, -1.60701978e+10,
+ -2.19813953e+09, -5.62260428e+07,
+ -2.26517201e+10,  1.04034074e+10,
+ -1.55724068e+10,  1.18589627e+10,
+  3.73249461e+08,  2.75320212e+10,
+ -6.50919571e+09,  5.80929253e+09,
+ -1.60701978e+10,  8.90068119e+10,
+ -5.62260428e+07, -1.36007171e+10,
+  2.04034074e+10,  1.08657906e+10,
+  1.85896275e+09, -1.19613199e+11,
+ -1.92262756e+10, -1.86456066e+10,
+ -1.30974352e+09, -1.10712128e+10,
+ -2.19813953e+09, -5.62260428e+07,
+  7.51332944e+10, -1.31964480e+10,
+ -9.80844073e+09,  1.73687559e+10,
+ -4.25906950e+10,  2.56007375e+10,
+ -8.64560662e+09, -8.12569923e+08,
+ -2.10712128e+10,  2.74018801e+10,
+ -5.62260428e+07, -1.36007171e+10,
+ -1.31964480e+10,  1.19528505e+11,
+  1.73687559e+10, -1.34841265e+11,
+  2.56007375e+10,  2.32416756e+09,
+ -4.36542846e+09, -2.08992316e+09,
+ -5.55692740e+10,  1.85686411e+10,
+ -2.26517201e+10,  2.04034074e+10,
+ -9.80844073e+09,  1.73687559e+10,
+  1.00479896e+11, -2.19113697e+10,
+ -8.08503301e+09, -3.23395114e+10,
+ -2.08992316e+09, -6.25120411e+09,
+  2.85686411e+10, -4.36343981e+10,
+  1.04034074e+10,  1.08657906e+10,
+  1.73687559e+10, -1.34841265e+11,
+ -2.19113697e+10,  1.82672151e+11,
+ -3.23395114e+10, -8.81107383e+09,
+ -2.91127292e+09,  6.78109283e+09,
+ -1.23552734e+10,  4.56791677e+09,
+ -1.55724068e+10,  1.85896275e+09,
+ -4.25906950e+10,  2.56007375e+10,
+ -8.08503301e+09, -3.23395114e+10,
+  8.15146812e+10, -6.46919843e+09,
+ -3.21890717e+09, -9.09104775e+10,
+  4.56791677e+09, -5.27301294e+09,
+  1.18589627e+10, -1.19613199e+11,
+  2.56007375e+10,  2.32416756e+09,
+ -3.23395114e+10, -8.81107383e+09,
+ -6.46919843e+09,  2.22283596e+11,
 };
 
 pylith::feassemble::ElasticityImplicitData2DQuadratic::ElasticityImplicitData2DQuadratic(void)
@@ -232,7 +232,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -67,7 +67,7 @@
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitData3DLinear::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityImplicitData3DLinear::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
@@ -96,61 +96,61 @@
 };
 
 const double pylith::feassemble::ElasticityImplicitData3DLinear::_valsResidual[] = {
- -3.30870000e+10,  1.12980000e+10,  2.42100000e+09,
-  1.93680000e+10,  5.64900000e+09,  8.07000000e+09,
-  5.64900000e+09, -1.29120000e+10, -4.03500000e+09,
-  8.07000000e+09, -4.03500000e+09, -6.45600000e+09,
+ -7.70693928e+08,  3.56969021e+10,  2.39826518e+09,
+  9.38355019e+09,  5.66238848e+10,  2.52838755e+10,
+ -1.24875155e+10, -9.54987299e+10, -3.89812887e+10,
+  3.87465923e+09,  3.17794300e+09,  1.12991481e+10,
 };
 
 const double pylith::feassemble::ElasticityImplicitData3DLinear::_valsJacobian[] = {
-  6.45600000e+10,  2.42100000e+10,  2.42100000e+10,
- -4.84200000e+10, -8.07000000e+09, -8.07000000e+09,
- -8.07000000e+09, -1.61400000e+10,  0.00000000e+00,
- -8.07000000e+09,  0.00000000e+00, -1.61400000e+10,
-  2.42100000e+10,  6.45600000e+10,  2.42100000e+10,
- -1.61400000e+10, -8.07000000e+09,  0.00000000e+00,
- -8.07000000e+09, -4.84200000e+10, -8.07000000e+09,
-  0.00000000e+00, -8.07000000e+09, -1.61400000e+10,
-  2.42100000e+10,  2.42100000e+10,  6.45600000e+10,
- -1.61400000e+10,  0.00000000e+00, -8.07000000e+09,
-  0.00000000e+00, -1.61400000e+10, -8.07000000e+09,
- -8.07000000e+09, -8.07000000e+09, -4.84200000e+10,
- -4.84200000e+10, -1.61400000e+10, -1.61400000e+10,
-  4.84200000e+10,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.61400000e+10,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.61400000e+10,
- -8.07000000e+09, -8.07000000e+09,  0.00000000e+00,
-  0.00000000e+00,  8.07000000e+09,  0.00000000e+00,
-  8.07000000e+09,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
- -8.07000000e+09,  0.00000000e+00, -8.07000000e+09,
-  0.00000000e+00,  0.00000000e+00,  8.07000000e+09,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  8.07000000e+09,  0.00000000e+00,  0.00000000e+00,
- -8.07000000e+09, -8.07000000e+09,  0.00000000e+00,
-  0.00000000e+00,  8.07000000e+09,  0.00000000e+00,
-  8.07000000e+09,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
- -1.61400000e+10, -4.84200000e+10, -1.61400000e+10,
-  1.61400000e+10,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  4.84200000e+10,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.61400000e+10,
-  0.00000000e+00, -8.07000000e+09, -8.07000000e+09,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  8.07000000e+09,
-  0.00000000e+00,  8.07000000e+09,  0.00000000e+00,
- -8.07000000e+09,  0.00000000e+00, -8.07000000e+09,
-  0.00000000e+00,  0.00000000e+00,  8.07000000e+09,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  8.07000000e+09,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00, -8.07000000e+09, -8.07000000e+09,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  8.07000000e+09,
-  0.00000000e+00,  8.07000000e+09,  0.00000000e+00,
- -1.61400000e+10, -1.61400000e+10, -4.84200000e+10,
-  1.61400000e+10,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.61400000e+10,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  4.84200000e+10,
+  7.12856258e+09,  4.35594796e+09, -2.39776952e+08,
+ -1.37871747e+09,  1.62314126e+09, -2.45631970e+09,
+ -6.44021066e+09, -6.42843866e+09,  4.69330855e+09,
+  6.90365551e+08,  4.49349442e+08, -1.99721190e+09,
+  4.35594796e+09,  2.26675960e+10, -6.07806691e+08,
+ -4.12685874e+09,  3.62653346e+10, -7.02881041e+09,
+ -4.28438662e+08, -6.26112144e+10,  1.27342007e+10,
+  1.99349442e+08,  3.67828377e+09, -5.09758364e+09,
+ -2.39776952e+08, -6.07806691e+08,  4.32032218e+09,
+ -9.56319703e+08, -4.02881041e+09,  6.03531599e+09,
+  2.19330855e+09,  7.23420074e+09, -1.17763321e+10,
+ -9.97211896e+08, -2.59758364e+09,  1.42069393e+09,
+ -1.37871747e+09, -4.12685874e+09, -9.56319703e+08,
+  3.12511617e+10, -1.67181691e+10,  8.97072491e+09,
+ -3.32634758e+10,  2.19307621e+10, -1.25604089e+10,
+  3.39103160e+09, -1.08573420e+09,  4.54600372e+09,
+  1.62314126e+09,  3.62653346e+10, -4.02881041e+09,
+ -1.67181691e+10,  6.92530204e+10, -1.69753717e+10,
+  1.56807621e+10, -1.13835037e+11,  3.01143123e+10,
+ -5.85734201e+08,  8.31668216e+09, -9.11013011e+09,
+ -2.45631970e+09, -7.02881041e+09,  6.03531599e+09,
+  8.97072491e+09, -1.69753717e+10,  3.17077138e+10,
+ -8.81040892e+09,  2.93643123e+10, -5.25594796e+10,
+  2.29600372e+09, -5.36013011e+09,  1.48164498e+10,
+ -6.44021066e+09, -4.28438662e+08,  2.19330855e+09,
+ -3.32634758e+10,  1.56807621e+10, -8.81040892e+09,
+  4.56229864e+10, -1.58968401e+10,  9.20074349e+09,
+ -5.91929988e+09,  6.44516729e+08, -2.58364312e+09,
+ -6.42843866e+09, -6.26112144e+10,  7.23420074e+09,
+  2.19307621e+10, -1.13835037e+11,  2.93643123e+10,
+ -1.58968401e+10,  1.90753098e+11, -5.20260223e+10,
+  3.94516729e+08, -1.43068463e+10,  1.54275093e+10,
+  4.69330855e+09,  1.27342007e+10, -1.17763321e+10,
+ -1.25604089e+10,  3.01143123e+10, -5.25594796e+10,
+  9.20074349e+09, -5.20260223e+10,  9.11232962e+10,
+ -1.33364312e+09,  9.17750929e+09, -2.67874845e+10,
+  6.90365551e+08,  1.99349442e+08, -9.97211896e+08,
+  3.39103160e+09, -5.85734201e+08,  2.29600372e+09,
+ -5.91929988e+09,  3.94516729e+08, -1.33364312e+09,
+  1.83790273e+09, -8.13197026e+06,  3.48513011e+07,
+  4.49349442e+08,  3.67828377e+09, -2.59758364e+09,
+ -1.08573420e+09,  8.31668216e+09, -5.36013011e+09,
+  6.44516729e+08, -1.43068463e+10,  9.17750929e+09,
+ -8.13197026e+06,  2.31188042e+09, -1.21979554e+09,
+ -1.99721190e+09, -5.09758364e+09,  1.42069393e+09,
+  4.54600372e+09, -9.11013011e+09,  1.48164498e+10,
+ -2.58364312e+09,  1.54275093e+10, -2.67874845e+10,
+  3.48513011e+07, -1.21979554e+09,  1.05503408e+10,
 };
 
 pylith::feassemble::ElasticityImplicitData3DLinear::ElasticityImplicitData3DLinear(void)
@@ -172,7 +172,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -94,7 +94,7 @@
   2.50000000e-01,  2.77777778e-02,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_basisDerivRef[] = {
  -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
  -6.66666667e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -6.66666667e-01,  0.00000000e+00,
@@ -177,319 +177,319 @@
 };
 
 const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_valsResidual[] = {
- -2.82689704e+11, -1.77165531e+11,  4.81077062e+11,
- -1.89584198e+11, -2.62414988e+11, -2.05662222e+10,
- -2.64410790e+11, -2.99364405e+12, -1.43747136e+11,
-  4.64419852e+11,  9.60363704e+10,  1.15315605e+12,
-  8.39069593e+11, -1.89835947e+12, -3.19266342e+12,
-  7.92577481e+11,  3.50778306e+12,  1.54368667e+12,
- -4.45565456e+12, -5.73392127e+12, -1.56481211e+12,
- -4.92241198e+11,  2.04747312e+12,  1.67797247e+11,
-  5.70022407e+11,  4.69695932e+12, -1.55162542e+12,
-  3.01849111e+12,  7.17253432e+11,  3.12769728e+12,
+ -7.86265156e+10, -6.50453174e+09,  9.66313773e+10,
+ -1.66117754e+10, -1.00795779e+11,  2.53173672e+10,
+ -1.53180823e+11, -4.94876361e+11,  3.47626004e+11,
+  8.32634822e+09, -6.82511215e+10,  3.63126117e+11,
+  8.82738604e+10, -2.77446201e+11, -9.32014365e+10,
+  2.31344042e+11,  4.99241249e+11, -1.16153668e+11,
+ -6.35712433e+11, -3.27240946e+11, -8.95734051e+10,
+  6.25497326e+10,  6.16264999e+11, -3.42992649e+11,
+  1.54879392e+11,  6.99521034e+11, -6.94797606e+11,
+  3.38758171e+11, -5.39912342e+11,  5.04017899e+11,
 };
 
 const double pylith::feassemble::ElasticityImplicitData3DQuadratic::_valsJacobian[] = {
-  1.41147259e+12,  5.29302222e+11,  5.29302222e+11,
-  3.09597037e+11,  5.15995062e+10,  5.15995062e+10,
-  5.22760494e+10,  1.04552099e+11,  0.00000000e+00,
-  7.25585185e+10,  0.00000000e+00,  1.45117037e+11,
- -1.46768938e+12, -3.27521481e+11, -3.27521481e+11,
- -5.81653580e+11, -5.07840741e+11, -1.51261481e+11,
- -7.43913333e+11, -2.12108889e+11, -5.68688148e+11,
-  3.52266914e+11,  1.49908395e+11,  5.04204938e+10,
-  1.21123457e+11,  1.41405926e+11,  1.00840988e+11,
-  4.73961728e+11,  7.07029630e+10,  1.70190864e+11,
-  5.29302222e+11,  1.41147259e+12,  5.29302222e+11,
-  1.03199012e+11,  5.15995062e+10,  0.00000000e+00,
-  5.22760494e+10,  3.13656296e+11,  5.22760494e+10,
-  0.00000000e+00,  7.25585185e+10,  1.45117037e+11,
- -5.05811111e+11, -5.76241235e+11, -1.49231852e+11,
- -3.29551111e+11, -1.47310173e+12, -3.29551111e+11,
- -2.12108889e+11, -7.43913333e+11, -5.68688148e+11,
-  1.50584938e+11,  3.48884198e+11,  4.97439506e+10,
-  7.07029630e+10,  4.74638272e+11,  1.71543951e+11,
-  1.41405926e+11,  1.20446914e+11,  9.94879012e+10,
-  5.29302222e+11,  5.29302222e+11,  1.41147259e+12,
-  1.03199012e+11,  0.00000000e+00,  5.15995062e+10,
-  0.00000000e+00,  1.04552099e+11,  5.22760494e+10,
-  7.25585185e+10,  7.25585185e+10,  4.35351111e+11,
- -5.05811111e+11, -1.49231852e+11, -5.76241235e+11,
- -1.51261481e+11, -5.07840741e+11, -5.81653580e+11,
- -3.90398519e+11, -3.90398519e+11, -1.63536148e+12,
-  1.00840988e+11,  9.94879012e+10,  1.00164444e+11,
-  5.04204938e+10,  1.91826420e+11,  3.73225926e+11,
-  1.91149877e+11,  4.97439506e+10,  3.69166667e+11,
-  3.09597037e+11,  1.03199012e+11,  1.03199012e+11,
-  9.52269630e+11,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00, -8.68296296e+10,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00, -1.27394568e+11,
- -1.26186667e+12, -2.94550617e+11, -2.94550617e+11,
-  3.29106667e+11, -1.63693827e+10,  1.09702222e+11,
-  4.50801481e+11,  1.50267160e+11,  2.41955556e+10,
- -3.29106667e+11,  2.94550617e+11,  0.00000000e+00,
-  0.00000000e+00, -1.50267160e+11, -1.09702222e+11,
- -4.50801481e+11,  0.00000000e+00,  2.94550617e+11,
-  5.15995062e+10,  5.15995062e+10,  0.00000000e+00,
-  0.00000000e+00,  1.58711605e+11,  0.00000000e+00,
- -4.34148148e+10,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
- -1.47275309e+11, -2.10311111e+11,  0.00000000e+00,
- -8.18469136e+09,  5.48511111e+10,  0.00000000e+00,
-  7.51335802e+10,  7.51335802e+10,  0.00000000e+00,
-  1.47275309e+11, -5.48511111e+10,  0.00000000e+00,
- -7.51335802e+10,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00, -7.51335802e+10,  0.00000000e+00,
-  5.15995062e+10,  0.00000000e+00,  5.15995062e+10,
-  0.00000000e+00,  0.00000000e+00,  1.58711605e+11,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
- -6.36972840e+10,  0.00000000e+00,  0.00000000e+00,
- -1.47275309e+11,  0.00000000e+00, -2.10311111e+11,
-  5.48511111e+10,  0.00000000e+00,  5.48511111e+10,
-  1.20977778e+10,  0.00000000e+00,  7.51335802e+10,
-  0.00000000e+00,  0.00000000e+00, -5.48511111e+10,
- -5.48511111e+10,  0.00000000e+00,  0.00000000e+00,
-  1.47275309e+11,  0.00000000e+00, -7.51335802e+10,
-  5.22760494e+10,  5.22760494e+10,  0.00000000e+00,
-  0.00000000e+00, -4.34148148e+10,  0.00000000e+00,
-  1.60064691e+11,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  5.38362963e+10, -8.86123457e+09,  0.00000000e+00,
- -2.12340741e+11, -1.49643210e+11,  0.00000000e+00,
-  7.47953086e+10,  7.47953086e+10,  0.00000000e+00,
- -5.38362963e+10,  1.49643210e+11,  0.00000000e+00,
- -7.47953086e+10,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00, -7.47953086e+10,  0.00000000e+00,
-  1.04552099e+11,  3.13656296e+11,  1.04552099e+11,
- -8.68296296e+10,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  9.60388148e+11,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00, -1.28747654e+11,
- -1.77224691e+10,  3.23017778e+11,  1.07672593e+11,
- -2.99286420e+11, -1.27404444e+12, -2.99286420e+11,
-  1.49590617e+11,  4.48771852e+11,  2.41955556e+10,
-  2.99286420e+11, -3.23017778e+11,  0.00000000e+00,
-  0.00000000e+00, -4.48771852e+11,  2.99286420e+11,
- -1.49590617e+11,  0.00000000e+00, -1.07672593e+11,
-  0.00000000e+00,  5.22760494e+10,  5.22760494e+10,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.60064691e+11,
-  0.00000000e+00, -6.43738272e+10,  0.00000000e+00,
-  0.00000000e+00,  5.38362963e+10,  5.38362963e+10,
-  0.00000000e+00, -1.49643210e+11, -2.12340741e+11,
-  0.00000000e+00,  1.20977778e+10,  7.47953086e+10,
-  0.00000000e+00,  0.00000000e+00, -5.38362963e+10,
-  0.00000000e+00,  1.49643210e+11, -7.47953086e+10,
-  0.00000000e+00, -5.38362963e+10,  0.00000000e+00,
-  7.25585185e+10,  0.00000000e+00,  7.25585185e+10,
-  0.00000000e+00,  0.00000000e+00, -6.36972840e+10,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  2.00629630e+11,  0.00000000e+00,  0.00000000e+00,
-  4.36950617e+10,  0.00000000e+00, -8.86123457e+09,
-  4.43716049e+10,  0.00000000e+00,  4.43716049e+10,
- -2.73188148e+11,  0.00000000e+00, -2.20631852e+11,
-  0.00000000e+00,  0.00000000e+00, -4.43716049e+10,
- -4.43716049e+10,  0.00000000e+00,  0.00000000e+00,
- -4.36950617e+10,  0.00000000e+00,  2.20631852e+11,
-  0.00000000e+00,  7.25585185e+10,  7.25585185e+10,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00, -6.43738272e+10,
-  0.00000000e+00,  2.00629630e+11,  0.00000000e+00,
-  0.00000000e+00,  4.36950617e+10,  4.36950617e+10,
-  0.00000000e+00,  4.43716049e+10, -8.18469136e+09,
-  0.00000000e+00, -2.73188148e+11, -2.20631852e+11,
-  0.00000000e+00,  0.00000000e+00, -4.36950617e+10,
-  0.00000000e+00, -4.43716049e+10,  2.20631852e+11,
-  0.00000000e+00, -4.36950617e+10,  0.00000000e+00,
-  1.45117037e+11,  1.45117037e+11,  4.35351111e+11,
- -1.27394568e+11,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00, -1.28747654e+11,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.20377778e+12,
- -1.77224691e+10,  8.73901235e+10,  2.62170370e+11,
-  8.87432099e+10, -1.63693827e+10,  2.66229630e+11,
- -4.41263704e+11, -4.41263704e+11, -1.63912889e+12,
- -8.87432099e+10, -8.73901235e+10,  0.00000000e+00,
-  0.00000000e+00,  4.41263704e+11, -2.66229630e+11,
-  4.41263704e+11,  0.00000000e+00, -2.62170370e+11,
- -1.46768938e+12, -5.05811111e+11, -5.05811111e+11,
- -1.26186667e+12, -1.47275309e+11, -1.47275309e+11,
-  5.38362963e+10, -1.77224691e+10,  0.00000000e+00,
-  4.36950617e+10,  0.00000000e+00, -1.77224691e+10,
-  3.16268617e+12,  5.91057778e+11,  5.91057778e+11,
-  3.45213580e+10,  5.38987037e+11,  5.63361728e+10,
-  5.48038272e+10,  6.64774074e+10,  5.49128272e+11,
- -2.39725309e+11, -4.59235926e+11, -6.51974074e+10,
- -1.40536049e+11,  8.86123457e+09,  8.86123457e+09,
- -2.39725309e+11, -7.53386420e+10, -4.69377160e+11,
- -3.27521481e+11, -5.76241235e+11, -1.49231852e+11,
- -2.94550617e+11, -2.10311111e+11,  0.00000000e+00,
- -8.86123457e+09,  3.23017778e+11,  5.38362963e+10,
-  0.00000000e+00,  4.36950617e+10,  8.73901235e+10,
-  5.91057778e+11,  2.30250778e+12,  7.98927037e+11,
-  3.67289630e+11,  3.62127160e+10,  1.26302469e+11,
-  1.46246667e+11,  4.53650123e+11,  8.74364198e+10,
- -3.27414074e+11, -1.59342346e+12, -2.66309012e+11,
-  4.43061728e+09, -5.17229259e+11, -2.05733457e+11,
- -1.50677284e+11, -2.61878395e+11, -5.32618025e+11,
- -3.27521481e+11, -1.49231852e+11, -5.76241235e+11,
- -2.94550617e+11,  0.00000000e+00, -2.10311111e+11,
-  0.00000000e+00,  1.07672593e+11,  5.38362963e+10,
- -8.86123457e+09,  4.36950617e+10,  2.62170370e+11,
-  5.91057778e+11,  7.98927037e+11,  2.30250778e+12,
-  1.25964198e+11,  5.70127160e+10,  3.82661481e+11,
-  3.87572099e+11,  1.56726173e+11,  1.07201358e+11,
- -1.30394815e+11, -5.32618025e+11, -2.61878395e+11,
-  4.43061728e+09, -2.15874691e+11, -4.66523086e+11,
- -3.47696543e+11, -2.66309012e+11, -1.59342346e+12,
- -5.81653580e+11, -3.29551111e+11, -1.51261481e+11,
-  3.29106667e+11, -8.18469136e+09,  5.48511111e+10,
- -2.12340741e+11, -2.99286420e+11,  0.00000000e+00,
-  4.43716049e+10,  0.00000000e+00,  8.87432099e+10,
-  3.45213580e+10,  3.67289630e+11,  1.25964198e+11,
-  2.32889296e+12,  6.00191111e+11,  8.09075185e+11,
-  4.56018025e+11,  1.47261481e+11,  8.77746914e+10,
- -1.61405802e+12, -3.30458519e+11, -2.69691728e+11,
- -2.65599383e+11, -1.51353827e+11, -5.39383457e+11,
- -5.19258889e+11,  4.09234568e+09, -2.06071728e+11,
- -5.07840741e+11, -1.47310173e+12, -5.07840741e+11,
- -1.63693827e+10,  5.48511111e+10,  0.00000000e+00,
- -1.49643210e+11, -1.27404444e+12, -1.49643210e+11,
-  0.00000000e+00,  4.43716049e+10, -1.63693827e+10,
-  5.38987037e+11,  3.62127160e+10,  5.70127160e+10,
-  6.00191111e+11,  3.18568864e+12,  6.00191111e+11,
-  6.74922222e+10,  5.71717284e+10,  5.49466543e+11,
- -4.65324815e+11, -2.45137654e+11, -6.51974074e+10,
- -7.56769136e+10, -2.45137654e+11, -4.75804321e+11,
-  8.18469136e+09, -1.40874321e+11,  8.18469136e+09,
- -1.51261481e+11, -3.29551111e+11, -5.81653580e+11,
-  1.09702222e+11,  0.00000000e+00,  5.48511111e+10,
-  0.00000000e+00, -2.99286420e+11, -2.12340741e+11,
-  4.43716049e+10, -8.18469136e+09,  2.66229630e+11,
-  5.63361728e+10,  1.26302469e+11,  3.82661481e+11,
-  8.09075185e+11,  6.00191111e+11,  2.32889296e+12,
-  1.57402716e+11,  3.88248642e+11,  1.07877901e+11,
- -5.39383457e+11, -1.30394815e+11, -2.65599383e+11,
- -2.69691728e+11, -3.51417531e+11, -1.61405802e+12,
- -2.16551235e+11,  4.09234568e+09, -4.66861358e+11,
- -7.43913333e+11, -2.12108889e+11, -3.90398519e+11,
-  4.50801481e+11,  7.51335802e+10,  1.20977778e+10,
-  7.47953086e+10,  1.49590617e+11,  0.00000000e+00,
- -2.73188148e+11,  0.00000000e+00, -4.41263704e+11,
-  5.48038272e+10,  1.46246667e+11,  3.87572099e+11,
-  4.56018025e+11,  6.74922222e+10,  1.57402716e+11,
-  3.11990926e+12,  1.11331222e+12,  8.74004444e+11,
- -5.29400123e+11, -2.26354198e+11, -6.04888889e+09,
- -3.77152963e+11, -7.42208148e+11, -1.51353827e+11,
- -2.23267333e+12, -3.71104074e+11, -4.42012099e+11,
- -2.12108889e+11, -7.43913333e+11, -3.90398519e+11,
-  1.50267160e+11,  7.51335802e+10,  0.00000000e+00,
-  7.47953086e+10,  4.48771852e+11,  1.20977778e+10,
-  0.00000000e+00, -2.73188148e+11, -4.41263704e+11,
-  6.64774074e+10,  4.53650123e+11,  1.56726173e+11,
-  1.47261481e+11,  5.71717284e+10,  3.88248642e+11,
-  1.11331222e+12,  3.11990926e+12,  8.74004444e+11,
- -2.26692469e+11, -5.27708765e+11, -6.04888889e+09,
- -3.71104074e+11, -2.23267333e+12, -4.42688642e+11,
- -7.42208148e+11, -3.77152963e+11, -1.50677284e+11,
- -5.68688148e+11, -5.68688148e+11, -1.63536148e+12,
-  2.41955556e+10,  0.00000000e+00,  7.51335802e+10,
-  0.00000000e+00,  2.41955556e+10,  7.47953086e+10,
- -2.20631852e+11, -2.20631852e+11, -1.63912889e+12,
-  5.49128272e+11,  8.74364198e+10,  1.07201358e+11,
-  8.77746914e+10,  5.49466543e+11,  1.07877901e+11,
-  8.74004444e+11,  8.74004444e+11,  3.87529259e+12,
- -1.20977778e+10, -1.20977778e+10, -1.51015556e+11,
- -7.56769136e+10, -6.58346543e+11, -4.07397407e+11,
- -6.58008272e+11, -7.53386420e+10, -4.07397407e+11,
-  3.52266914e+11,  1.50584938e+11,  1.00840988e+11,
- -3.29106667e+11,  1.47275309e+11,  0.00000000e+00,
- -5.38362963e+10,  2.99286420e+11,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00, -8.87432099e+10,
- -2.39725309e+11, -3.27414074e+11, -1.30394815e+11,
- -1.61405802e+12, -4.65324815e+11, -5.39383457e+11,
- -5.29400123e+11, -2.26692469e+11, -1.20977778e+10,
-  1.88445938e+12,  1.95592222e+11,  0.00000000e+00,
-  7.53386420e+10,  1.51353827e+11,  5.39383457e+11,
-  4.54061481e+11,  7.53386420e+10,  1.30394815e+11,
-  1.49908395e+11,  3.48884198e+11,  9.94879012e+10,
-  2.94550617e+11, -5.48511111e+10,  0.00000000e+00,
-  1.49643210e+11, -3.23017778e+11,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00, -8.73901235e+10,
- -4.59235926e+11, -1.59342346e+12, -5.32618025e+11,
- -3.30458519e+11, -2.45137654e+11, -1.30394815e+11,
- -2.26354198e+11, -5.27708765e+11, -1.20977778e+10,
-  1.95592222e+11,  1.86754580e+12,  0.00000000e+00,
-  7.56769136e+10,  4.52031852e+11,  1.30394815e+11,
-  1.50677284e+11,  7.56769136e+10,  5.32618025e+11,
-  5.04204938e+10,  4.97439506e+10,  1.00164444e+11,
-  0.00000000e+00,  0.00000000e+00, -5.48511111e+10,
-  0.00000000e+00,  0.00000000e+00, -5.38362963e+10,
- -4.43716049e+10, -4.36950617e+10,  0.00000000e+00,
- -6.51974074e+10, -2.66309012e+11, -2.61878395e+11,
- -2.69691728e+11, -6.51974074e+10, -2.65599383e+11,
- -6.04888889e+09, -6.04888889e+09, -1.51015556e+11,
-  0.00000000e+00,  0.00000000e+00,  5.36000741e+11,
-  2.69691728e+11,  6.51974074e+10,  7.53386420e+10,
-  6.51974074e+10,  2.66309012e+11,  7.56769136e+10,
-  1.21123457e+11,  7.07029630e+10,  5.04204938e+10,
-  0.00000000e+00, -7.51335802e+10, -5.48511111e+10,
- -7.47953086e+10,  0.00000000e+00,  0.00000000e+00,
- -4.43716049e+10,  0.00000000e+00,  0.00000000e+00,
- -1.40536049e+11,  4.43061728e+09,  4.43061728e+09,
- -2.65599383e+11, -7.56769136e+10, -2.69691728e+11,
- -3.77152963e+11, -3.71104074e+11, -7.56769136e+10,
-  7.53386420e+10,  7.56769136e+10,  2.69691728e+11,
-  6.40795802e+11,  0.00000000e+00,  0.00000000e+00,
-  6.51974074e+10,  3.71104074e+11,  7.56769136e+10,
-  1.41405926e+11,  4.74638272e+11,  1.91826420e+11,
- -1.50267160e+11,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00, -4.48771852e+11,  1.49643210e+11,
-  0.00000000e+00, -4.43716049e+10,  4.41263704e+11,
-  8.86123457e+09, -5.17229259e+11, -2.15874691e+11,
- -1.51353827e+11, -2.45137654e+11, -3.51417531e+11,
- -7.42208148e+11, -2.23267333e+12, -6.58346543e+11,
-  1.51353827e+11,  4.52031852e+11,  6.51974074e+10,
-  0.00000000e+00,  2.49631617e+12,  2.27030741e+11,
-  7.42208148e+11,  6.51974074e+10,  1.50677284e+11,
-  1.00840988e+11,  1.71543951e+11,  3.73225926e+11,
- -1.09702222e+11,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  2.99286420e+11, -7.47953086e+10,
-  0.00000000e+00,  2.20631852e+11, -2.66229630e+11,
-  8.86123457e+09, -2.05733457e+11, -4.66523086e+11,
- -5.39383457e+11, -4.75804321e+11, -1.61405802e+12,
- -1.51353827e+11, -4.42688642e+11, -4.07397407e+11,
-  5.39383457e+11,  1.30394815e+11,  7.53386420e+10,
-  0.00000000e+00,  2.27030741e+11,  1.98925444e+12,
-  1.51353827e+11,  7.53386420e+10,  3.91184444e+11,
-  4.73961728e+11,  1.41405926e+11,  1.91149877e+11,
- -4.50801481e+11,  0.00000000e+00,  1.47275309e+11,
-  0.00000000e+00, -1.49590617e+11,  0.00000000e+00,
- -4.36950617e+10,  0.00000000e+00,  4.41263704e+11,
- -2.39725309e+11, -1.50677284e+11, -3.47696543e+11,
- -5.19258889e+11,  8.18469136e+09, -2.16551235e+11,
- -2.23267333e+12, -7.42208148e+11, -6.58008272e+11,
-  4.54061481e+11,  1.50677284e+11,  6.51974074e+10,
-  6.51974074e+10,  7.42208148e+11,  1.51353827e+11,
-  2.49293346e+12,  0.00000000e+00,  2.26015926e+11,
-  7.07029630e+10,  1.20446914e+11,  4.97439506e+10,
-  0.00000000e+00, -7.51335802e+10,  0.00000000e+00,
- -7.47953086e+10,  0.00000000e+00, -5.38362963e+10,
-  0.00000000e+00, -4.36950617e+10,  0.00000000e+00,
- -7.53386420e+10, -2.61878395e+11, -2.66309012e+11,
-  4.09234568e+09, -1.40874321e+11,  4.09234568e+09,
- -3.71104074e+11, -3.77152963e+11, -7.53386420e+10,
-  7.53386420e+10,  7.56769136e+10,  2.66309012e+11,
-  3.71104074e+11,  6.51974074e+10,  7.53386420e+10,
-  0.00000000e+00,  6.37413086e+11,  0.00000000e+00,
-  1.70190864e+11,  9.94879012e+10,  3.69166667e+11,
-  2.94550617e+11,  0.00000000e+00, -7.51335802e+10,
-  0.00000000e+00, -1.07672593e+11,  0.00000000e+00,
-  2.20631852e+11,  0.00000000e+00, -2.62170370e+11,
- -4.69377160e+11, -5.32618025e+11, -1.59342346e+12,
- -2.06071728e+11,  8.18469136e+09, -4.66861358e+11,
- -4.42012099e+11, -1.50677284e+11, -4.07397407e+11,
-  1.30394815e+11,  5.32618025e+11,  7.56769136e+10,
-  7.56769136e+10,  1.50677284e+11,  3.91184444e+11,
-  2.26015926e+11,  0.00000000e+00,  1.96895815e+12,
+  1.64587725e+11,  9.84163932e+09,  4.44360094e+10,
+  4.31136969e+10, -9.67377317e+09,  9.68730846e+09,
+  1.72433393e+10,  1.68395158e+10, -1.37427697e+10,
+ -2.76740098e+09, -3.75545131e+09,  2.10529583e+10,
+ -1.92074818e+11,  2.83889103e+10, -4.11542992e+10,
+ -7.33195554e+10, -6.04669733e+10,  3.13088959e+10,
+ -3.79452598e+10,  6.83256899e+09, -6.75012498e+10,
+  4.32409462e+10,  1.05899903e+10, -7.12250802e+09,
+ -7.32183538e+09,  1.35625469e+10,  5.29603146e+08,
+  4.52431626e+10, -1.21589738e+10,  2.25060515e+10,
+  9.84163932e+09,  3.74110321e+10,  5.45366987e+09,
+ -3.78488428e+09,  5.08119747e+09, -2.53520789e+09,
+  9.28396020e+09,  4.62369779e+09,  2.86086181e+09,
+ -2.08878464e+09,  2.90757333e+09,  2.26767442e+09,
+  8.61113251e+09, -3.11009516e+10,  6.61532462e+09,
+ -3.41336399e+10, -1.80693031e+10, -1.56487044e+10,
+  2.77013431e+08, -2.29618143e+10, -4.07780027e+09,
+  8.70110143e+09,  1.11175517e+10, -7.34453128e+08,
+  6.22921354e+09,  1.16588860e+10,  3.09128144e+09,
+ -2.93675159e+09, -6.67869453e+08,  2.70735351e+09,
+  4.44360094e+10,  5.45366987e+09,  7.74890906e+10,
+  1.13539751e+10, -5.97965233e+09,  1.60535378e+10,
+ -3.85388086e+09,  8.86086181e+09, -2.40454954e+10,
+  9.49740277e+09, -2.87881134e+08,  3.13514179e+10,
+ -4.77098547e+10,  1.79486579e+10, -6.96316741e+10,
+  4.30889593e+09, -3.36487044e+10,  5.58752110e+10,
+ -3.39456943e+10,  2.58886639e+09, -1.20057080e+11,
+  1.98860309e+09,  2.82110243e+09, -7.90011998e+09,
+ -1.35928574e+09,  5.53572589e+09,  7.44113765e+09,
+  1.52838293e+10, -3.29264649e+09,  3.34239741e+10,
+  4.31136969e+10, -3.78488428e+09,  1.13539751e+10,
+  1.42767964e+11, -4.34832278e+10,  2.15301897e+10,
+ -5.43347808e+09, -1.42227223e+10,  1.55895434e+10,
+  5.22011338e+09,  3.68879538e+09, -2.04595732e+10,
+ -1.63110784e+11,  2.07249856e+10, -3.39736363e+10,
+  3.93560332e+10, -1.56465667e+10,  2.41542882e+10,
+  6.68142494e+10,  1.75610693e+09, -7.48896515e+09,
+ -5.33337677e+10,  6.40011381e+10, -5.74254265e+10,
+  8.24390755e+09, -1.55083612e+10, -1.20603962e+09,
+ -8.36379340e+10,  2.47473635e+09,  4.79256444e+10,
+ -9.67377317e+09,  5.08119747e+09, -5.97965233e+09,
+ -4.34832278e+10,  8.23753811e+10, -1.44200455e+10,
+ -5.00050007e+09,  3.20162597e+10, -1.38752685e+10,
+  3.55462049e+08, -1.00466279e+10,  1.34585702e+10,
+  3.73916523e+10, -3.39906977e+10,  1.76114051e+10,
+ -1.18687890e+10,  3.41593741e+10, -1.54798356e+10,
+ -8.91055973e+09, -4.51310595e+09,  8.38583869e+09,
+  3.42233603e+10, -1.41382125e+11,  4.95083091e+10,
+ -8.61947236e+09,  2.25958013e+10,  2.10512559e+08,
+  1.55858475e+10,  1.37045424e+10, -3.94198336e+10,
+  9.68730846e+09, -2.53520789e+09,  1.60535378e+10,
+  2.15301897e+10, -1.44200455e+10,  4.58794614e+10,
+  6.47843228e+09, -1.15419352e+10,  2.21170686e+10,
+ -9.68179544e+09,  7.68079238e+09, -1.48994108e+10,
+ -3.05291919e+10,  9.38918285e+09, -5.26894578e+10,
+  1.48209548e+10, -1.09242801e+10,  3.20598211e+10,
+  3.99923744e+08,  5.83028314e+09, -3.81491876e+09,
+ -3.06476488e+10,  4.09527536e+10, -8.33096254e+10,
+  2.38404821e+08, -1.78948744e+09, -4.53249037e+09,
+  1.77034222e+10, -2.26420559e+10,  4.31360142e+10,
+  1.72433393e+10,  9.28396020e+09, -3.85388086e+09,
+ -5.43347808e+09, -5.00050007e+09,  6.47843228e+09,
+  7.16359466e+10,  2.59889613e+10, -2.72686901e+10,
+  1.65440527e+10,  3.16312861e+09, -8.65825157e+09,
+ -6.52797899e+08,  1.85457182e+09, -5.63350106e+08,
+ -6.89736250e+10, -3.22042140e+10,  1.74017376e+10,
+  1.40671395e+10,  1.19621355e+10, -1.22855569e+10,
+  1.51826692e+10,  7.07040096e+09, -1.39583273e+10,
+ -7.74138196e+10, -1.62253654e+10,  3.77047625e+10,
+  1.78005733e+10, -5.89307895e+09,  5.00312450e+09,
+  1.68395158e+10,  4.62369779e+09,  8.86086181e+09,
+ -1.42227223e+10,  3.20162597e+10, -1.15419352e+10,
+  2.59889613e+10,  1.80686439e+11, -7.74605257e+10,
+  4.82979528e+09,  1.79598853e+10, -2.06060780e+10,
+ -3.43170670e+07,  4.44565836e+10, -3.46608469e+09,
+ -5.23153251e+10, -9.12139712e+10,  4.30892780e+09,
+  2.21843577e+10,  3.26826875e+10, -1.58640573e+10,
+  3.37370676e+10, -1.55953018e+11,  6.25890730e+10,
+ -2.27809210e+10, -1.34125295e+11,  9.06491951e+10,
+ -1.42264123e+10,  6.88667317e+10, -3.74693768e+10,
+ -1.37427697e+10,  2.86086181e+09, -2.40454954e+10,
+  1.55895434e+10, -1.38752685e+10,  2.21170686e+10,
+ -2.72686901e+10, -7.74605257e+10,  1.88543480e+11,
+ -7.88047379e+09, -1.22727446e+10,  6.36519849e+10,
+ -3.41127883e+08, -1.15771958e+10, -2.78601808e+09,
+  4.75128487e+10,  2.23089278e+10,  1.90153362e+10,
+ -2.01744457e+10, -1.37529462e+10,  3.23406830e+10,
+ -4.07361051e+10,  6.80335174e+10, -1.26385136e+11,
+  3.43714292e+10,  6.72047507e+10, -2.58048902e+11,
+  1.26697912e+10, -3.14693768e+10,  8.55969985e+10,
+ -2.76740098e+09, -2.08878464e+09,  9.49740277e+09,
+  5.22011338e+09,  3.55462049e+08, -9.68179544e+09,
+  1.65440527e+10,  4.82979528e+09, -7.88047379e+09,
+  4.33158550e+10,  3.21234686e+09, -1.76782633e+10,
+ -1.47958880e+09, -3.89776204e+09, -1.86657290e+09,
+  1.79397167e+09,  1.65305987e+09, -1.16943436e+09,
+ -2.56311069e+09,  4.73379414e+09, -2.09181973e+10,
+  3.14502449e+10,  5.14358097e+09, -1.42013065e+10,
+ -5.62211955e+10, -1.10328159e+10,  2.35686692e+10,
+ -3.52929416e+10, -2.90867657e+09,  4.03299716e+10,
+ -3.75545131e+09,  2.90757333e+09, -2.87881134e+08,
+  3.68879538e+09, -1.00466279e+10,  7.68079238e+09,
+  3.16312861e+09,  1.79598853e+10, -1.22727446e+10,
+  3.21234686e+09,  4.39124124e+10, -1.87394346e+10,
+ -2.45331760e+09, -1.23711093e+10,  6.63934952e+09,
+ -1.23582902e+09,  2.48793486e+10, -1.51348107e+10,
+  8.17823858e+09, -1.88437554e+10,  4.75168196e+09,
+  6.58802541e+09,  2.82864270e+10, -1.30242825e+10,
+ -7.58837146e+09, -7.21985379e+10,  4.70625956e+10,
+ -9.79756546e+09, -4.48561615e+09, -6.67526587e+09,
+  2.10529583e+10,  2.26767442e+09,  3.13514179e+10,
+ -2.04595732e+10,  1.34585702e+10, -1.48994108e+10,
+ -8.65825157e+09, -2.06060780e+10,  6.36519849e+10,
+ -1.76782633e+10, -1.87394346e+10,  2.17621308e+11,
+ -2.53323957e+09,  1.51949051e+10,  4.16713128e+09,
+  8.60834341e+09, -1.96903663e+10,  8.41013823e+10,
+ -5.44737529e+10, -5.02609582e+09, -1.44647291e+11,
+ -2.33124176e+10, -1.70242825e+10,  5.40965949e+10,
+  2.37908914e+10,  7.36181511e+10, -2.54016802e+11,
+  7.36633049e+10, -2.34530436e+10, -4.14263159e+10,
+ -1.92074818e+11,  8.61113251e+09, -4.77098547e+10,
+ -1.63110784e+11,  3.73916523e+10, -3.05291919e+10,
+ -6.52797899e+08, -3.43170670e+07, -3.41127883e+08,
+ -1.47958880e+09, -2.45331760e+09, -2.53323957e+09,
+  3.53483013e+11, -5.12535904e+10,  6.65092647e+10,
+  1.02041521e+10,  6.79670426e+10, -5.54293711e+10,
+ -3.05391652e+10, -1.37080077e+09,  7.40312483e+10,
+ -1.19371939e+10, -7.41825181e+10,  5.62333076e+10,
+ -2.96048615e+09,  1.57919013e+09,  1.16536228e+09,
+  3.90676692e+10,  1.37455264e+10, -6.13963978e+10,
+  2.83889103e+10, -3.11009516e+10,  1.79486579e+10,
+  2.07249856e+10, -3.39906977e+10,  9.38918285e+09,
+  1.85457182e+09,  4.44565836e+10, -1.15771958e+10,
+ -3.89776204e+09, -1.23711093e+10,  1.51949051e+10,
+ -5.12535904e+10,  1.96588810e+11, -9.80288892e+09,
+  3.40225982e+10, -1.77359245e+11,  7.23366995e+10,
+  2.21847548e+10,  6.06520314e+10, -6.27037313e+10,
+ -5.28491848e+10, -5.60183528e+10,  7.24945231e+09,
+  1.57919013e+09, -4.05453065e+10, -4.63771111e+09,
+ -7.54473600e+08,  4.96882379e+10, -3.33973705e+10,
+ -4.11542992e+10,  6.61532462e+09, -6.96316741e+10,
+ -3.39736363e+10,  1.76114051e+10, -5.26894578e+10,
+ -5.63350106e+08, -3.46608469e+09, -2.78601808e+09,
+ -1.86657290e+09,  6.63934952e+09,  4.16713128e+09,
+  6.65092647e+10, -9.80288892e+09,  1.35994046e+11,
+ -2.19849267e+10,  5.08366995e+10, -6.56295612e+10,
+  3.63090261e+10, -3.40370646e+10,  6.88617703e+10,
+  2.23999743e+10, -2.36394366e+10,  9.03395269e+10,
+  1.16536228e+09, -4.63771111e+09, -5.77577532e+09,
+ -2.68408422e+10, -6.11959277e+09, -1.02849988e+11,
+ -7.33195554e+10, -3.41336399e+10,  4.30889593e+09,
+  3.93560332e+10, -1.18687890e+10,  1.48209548e+10,
+ -6.89736250e+10, -5.23153251e+10,  4.75128487e+10,
+  1.79397167e+09, -1.23582902e+09,  8.60834341e+09,
+  1.02041521e+10,  3.40225982e+10, -2.19849267e+10,
+  3.12159136e+11,  2.92248145e+10,  5.60209313e+10,
+ -7.12403900e+09, -1.47307540e+10,  3.47829963e+10,
+ -2.00593645e+11,  2.76861351e+10, -4.22801960e+10,
+  5.14586591e+10,  3.95580486e+09, -6.91804987e+10,
+ -6.49610880e+10,  1.93949844e+10, -3.26093490e+10,
+ -6.04669733e+10, -1.80693031e+10, -3.36487044e+10,
+ -1.56465667e+10,  3.41593741e+10, -1.09242801e+10,
+ -3.22042140e+10, -9.12139712e+10,  2.23089278e+10,
+  1.65305987e+09,  2.48793486e+10, -1.96903663e+10,
+  6.79670426e+10, -1.77359245e+11,  5.08366995e+10,
+  2.92248145e+10,  3.58326610e+11, -1.16726238e+11,
+ -3.40085318e+10, -1.12164051e+11,  1.04718662e+11,
+  1.89639128e+10,  2.35692392e+10, -1.69355813e+10,
+  5.12247153e+09,  3.59820192e+10, -2.07313406e+10,
+  1.93949844e+10, -7.81100215e+10,  4.07922215e+10,
+  3.13088959e+10, -1.56487044e+10,  5.58752110e+10,
+  2.41542882e+10, -1.54798356e+10,  3.20598211e+10,
+  1.74017376e+10,  4.30892780e+09,  1.90153362e+10,
+ -1.16943436e+09, -1.51348107e+10,  8.41013823e+10,
+ -5.54293711e+10,  7.23366995e+10, -6.56295612e+10,
+  5.60209313e+10, -1.16726238e+11,  4.18312117e+11,
+  5.47274407e+10,  7.42186615e+10, -2.67327985e+11,
+ -7.06690849e+10, -7.32447015e+09,  4.62951788e+09,
+ -2.37360543e+10, -2.13424517e+10, -1.30151249e+11,
+ -3.26093490e+10,  4.07922215e+10, -1.50884590e+11,
+ -3.79452598e+10,  2.77013431e+08, -3.39456943e+10,
+  6.68142494e+10, -8.91055973e+09,  3.99923744e+08,
+  1.40671395e+10,  2.21843577e+10, -2.01744457e+10,
+ -2.56311069e+09,  8.17823858e+09, -5.44737529e+10,
+ -3.05391652e+10,  2.21847548e+10,  3.63090261e+10,
+ -7.12403900e+09, -3.40085318e+10,  5.47274407e+10,
+  3.86375132e+11,  5.02292341e+10, -3.06673830e+09,
+ -9.83165906e+10, -1.75914346e+10,  2.59536009e+10,
+ -1.91748363e+10, -9.32197943e+10,  5.77923363e+10,
+ -2.71593519e+11,  5.06767217e+10, -6.35216965e+10,
+  6.83256899e+09, -2.29618143e+10,  2.58886639e+09,
+  1.75610693e+09, -4.51310595e+09,  5.83028314e+09,
+  1.19621355e+10,  3.26826875e+10, -1.37529462e+10,
+  4.73379414e+09, -1.88437554e+10, -5.02609582e+09,
+ -1.37080077e+09,  6.06520314e+10, -3.40370646e+10,
+ -1.47307540e+10, -1.12164051e+11,  7.42186615e+10,
+  5.02292341e+10,  1.48564361e+11, -2.74420686e+10,
+ -1.75914346e+10, -3.81913183e+10,  1.19072739e+10,
+ -4.78864609e+10, -6.23542125e+10,  3.36268953e+09,
+  6.06561062e+09,  1.71291766e+10, -1.76495993e+10,
+ -6.75012498e+10, -4.07780027e+09, -1.20057080e+11,
+ -7.48896515e+09,  8.38583869e+09, -3.81491876e+09,
+ -1.22855569e+10, -1.58640573e+10,  3.23406830e+10,
+ -2.09181973e+10,  4.75168196e+09, -1.44647291e+11,
+  7.40312483e+10, -6.27037313e+10,  6.88617703e+10,
+  3.47829963e+10,  1.04718662e+11, -2.67327985e+11,
+ -3.06673830e+09, -2.74420686e+10,  3.89321192e+11,
+  2.59536009e+10,  1.19072739e+10, -4.75512737e+10,
+  2.49590029e+10, -1.37484216e+10,  8.43609178e+10,
+ -4.84661410e+10, -5.92737708e+09,  8.51398448e+09,
+  4.32409462e+10,  8.70110143e+09,  1.98860309e+09,
+ -5.33337677e+10,  3.42233603e+10, -3.06476488e+10,
+  1.51826692e+10,  3.37370676e+10, -4.07361051e+10,
+  3.14502449e+10,  6.58802541e+09, -2.33124176e+10,
+ -1.19371939e+10, -5.28491848e+10,  2.23999743e+10,
+ -2.00593645e+11,  1.89639128e+10, -7.06690849e+10,
+ -9.83165906e+10, -1.75914346e+10,  2.59536009e+10,
+  3.60589444e+11, -1.00112592e+10, -1.35534859e+10,
+ -5.00245072e+10,  9.32958569e+09,  7.64197916e+10,
+ -3.62575999e+10, -3.10911747e+10,  5.21567726e+10,
+  1.05899903e+10,  1.11175517e+10,  2.82110243e+09,
+  6.40011381e+10, -1.41382125e+11,  4.09527536e+10,
+  7.07040096e+09, -1.55953018e+11,  6.80335174e+10,
+  5.14358097e+09,  2.82864270e+10, -1.70242825e+10,
+ -7.41825181e+10, -5.60183528e+10, -2.36394366e+10,
+  2.76861351e+10,  2.35692392e+10, -7.32447015e+09,
+ -1.75914346e+10, -3.81913183e+10,  1.19072739e+10,
+ -1.00112592e+10,  4.51201237e+11, -1.63563227e+11,
+  1.24406968e+10,  5.24733623e+10, -4.94543585e+10,
+ -2.51467303e+10, -1.75103003e+11,  1.37291127e+11,
+ -7.12250802e+09, -7.34453128e+08, -7.90011998e+09,
+ -5.74254265e+10,  4.95083091e+10, -8.33096254e+10,
+ -1.39583273e+10,  6.25890730e+10, -1.26385136e+11,
+ -1.42013065e+10, -1.30242825e+10,  5.40965949e+10,
+  5.62333076e+10,  7.24945231e+09,  9.03395269e+10,
+ -4.22801960e+10, -1.69355813e+10,  4.62951788e+09,
+  2.59536009e+10,  1.19072739e+10, -4.75512737e+10,
+ -1.35534859e+10, -1.63563227e+11,  4.08232344e+11,
+  3.41420138e+10, -3.81210252e+10,  6.86665515e+10,
+  3.22123281e+10,  1.01124461e+11, -3.60818380e+11,
+ -7.32183538e+09,  6.22921354e+09, -1.35928574e+09,
+  8.24390755e+09, -8.61947236e+09,  2.38404821e+08,
+ -7.74138196e+10, -2.27809210e+10,  3.43714292e+10,
+ -5.62211955e+10, -7.58837146e+09,  2.37908914e+10,
+ -2.96048615e+09,  1.57919013e+09,  1.16536228e+09,
+  5.14586591e+10,  5.12247153e+09, -2.37360543e+10,
+ -1.91748363e+10, -4.78864609e+10,  2.49590029e+10,
+ -5.00245072e+10,  1.24406968e+10,  3.41420138e+10,
+  1.54619326e+11,  2.14981019e+10, -5.77090025e+10,
+ -1.20521220e+09,  4.00055518e+10, -3.58627619e+10,
+  1.35625469e+10,  1.16588860e+10,  5.53572589e+09,
+ -1.55083612e+10,  2.25958013e+10, -1.78948744e+09,
+ -1.62253654e+10, -1.34125295e+11,  6.72047507e+10,
+ -1.10328159e+10, -7.21985379e+10,  7.36181511e+10,
+  1.57919013e+09, -4.05453065e+10, -4.63771111e+09,
+  3.95580486e+09,  3.59820192e+10, -2.13424517e+10,
+ -9.32197943e+10, -6.23542125e+10, -1.37484216e+10,
+  9.32958569e+09,  5.24733623e+10, -3.81210252e+10,
+  2.14981019e+10,  3.50744424e+11, -1.23781855e+11,
+  8.60611074e+10, -1.64231141e+11,  5.70623242e+10,
+  5.29603146e+08,  3.09128144e+09,  7.44113765e+09,
+ -1.20603962e+09,  2.10512559e+08, -4.53249037e+09,
+  3.77047625e+10,  9.06491951e+10, -2.58048902e+11,
+  2.35686692e+10,  4.70625956e+10, -2.54016802e+11,
+  1.16536228e+09, -4.63771111e+09, -5.77577532e+09,
+ -6.91804987e+10, -2.07313406e+10, -1.30151249e+11,
+  5.77923363e+10,  3.36268953e+09,  8.43609178e+10,
+  7.64197916e+10, -4.94543585e+10,  6.86665515e+10,
+ -5.77090025e+10, -1.23781855e+11,  5.36960708e+11,
+ -6.90849841e+10,  5.42289908e+10, -4.49040962e+10,
+  4.52431626e+10, -2.93675159e+09,  1.52838293e+10,
+ -8.36379340e+10,  1.55858475e+10,  1.77034222e+10,
+  1.78005733e+10, -1.42264123e+10,  1.26697912e+10,
+ -3.52929416e+10, -9.79756546e+09,  7.36633049e+10,
+  3.90676692e+10, -7.54473600e+08, -2.68408422e+10,
+ -6.49610880e+10,  1.93949844e+10, -3.26093490e+10,
+ -2.71593519e+11,  6.06561062e+09, -4.84661410e+10,
+ -3.62575999e+10, -2.51467303e+10,  3.22123281e+10,
+ -1.20521220e+09,  8.60611074e+10, -6.90849841e+10,
+  3.90836890e+11, -7.42456166e+10,  2.54686407e+10,
+ -1.21589738e+10, -6.67869453e+08, -3.29264649e+09,
+  2.47473635e+09,  1.37045424e+10, -2.26420559e+10,
+ -5.89307895e+09,  6.88667317e+10, -3.14693768e+10,
+ -2.90867657e+09, -4.48561615e+09, -2.34530436e+10,
+  1.37455264e+10,  4.96882379e+10, -6.11959277e+09,
+  1.93949844e+10, -7.81100215e+10,  4.07922215e+10,
+  5.06767217e+10,  1.71291766e+10, -5.92737708e+09,
+ -3.10911747e+10, -1.75103003e+11,  1.01124461e+11,
+  4.00055518e+10, -1.64231141e+11,  5.42289908e+10,
+ -7.42456166e+10,  2.73208963e+11, -1.03241580e+11,
+  2.25060515e+10,  2.70735351e+09,  3.34239741e+10,
+  4.79256444e+10, -3.94198336e+10,  4.31360142e+10,
+  5.00312450e+09, -3.74693768e+10,  8.55969985e+10,
+  4.03299716e+10, -6.67526587e+09, -4.14263159e+10,
+ -6.13963978e+10, -3.33973705e+10, -1.02849988e+11,
+ -3.26093490e+10,  4.07922215e+10, -1.50884590e+11,
+ -6.35216965e+10, -1.76495993e+10,  8.51398448e+09,
+  5.21567726e+10,  1.37291127e+11, -3.60818380e+11,
+ -3.58627619e+10,  5.70623242e+10, -4.49040962e+10,
+  2.54686407e+10, -1.03241580e+11,  5.30212399e+11,
 };
 
 pylith::feassemble::ElasticityImplicitData3DQuadratic::ElasticityImplicitData3DQuadratic(void)
@@ -511,7 +511,7 @@
   quadPts = const_cast<double*>(_quadPts);
   quadWts = const_cast<double*>(_quadWts);
   basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   fieldTpdt = const_cast<double*>(_fieldTpdt);
   fieldT = const_cast<double*>(_fieldT);
   fieldTmdt = const_cast<double*>(_fieldTmdt);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -71,7 +71,7 @@
 
   static const double _basis[];
 
-  static const double _basisDeriv[];
+  static const double _basisDerivRef[];
 
   static const double _fieldTpdt[];
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py	2007-06-14 18:22:44 UTC (rev 7238)
@@ -86,7 +86,7 @@
     self.quadPts = None
     self.quadWts = None
     self.basis = None
-    self.basisDeriv = None
+    self.basisDerivRef = None
 
     # Material information
     self.matType = None
@@ -151,7 +151,7 @@
     self.numQuadPts = self.quadrature.numQuadPts
     self.quadPts = self.quadrature.quadPtsRef
     self.quadWts = self.quadrature.quadWts
-    (self.basis, self.basisDeriv) = self.quadrature.calculateBasis()
+    (self.basis, self.basisDerivRef) = self.quadrature.calculateBasis()
 
     # Material information
     self.matType = self.material.type
@@ -215,8 +215,8 @@
                        format="%16.8e", ncols=self.numQuadPts)
     self.data.addArray(vtype="double", name="_basis", values=self.basis,
                        format="%16.8e", ncols=self.cellDim)
-    self.data.addArray(vtype="double", name="_basisDeriv",
-                       values=self.basisDeriv,
+    self.data.addArray(vtype="double", name="_basisDerivRef",
+                       values=self.basisDerivRef,
                        format="%16.8e", ncols=self.cellDim)
 
     # Material information

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -27,7 +27,7 @@
   quadPts(0),
   quadWts(0),
   basis(0),
-  basisDeriv(0),
+  basisDerivRef(0),
   matType(0),
   matDBFilename(0),
   matId(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -52,7 +52,7 @@
   double* quadPts; ///< Coordinates of quad pts in ref cell
   double* quadWts; ///< Weights of quadrature points
   double* basis; ///< Basis fns at quadrature points
-  double* basisDeriv; ///< Derivatives of basis fns at quad pts
+  double* basisDerivRef; ///< Derivatives of basis fns at quad pts
   //@}
 
   /// @name Material information

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py	2007-06-14 18:22:44 UTC (rev 7238)
@@ -65,11 +65,11 @@
                             self.spaceDim*self.numBasis),
                            dtype=numpy.float64)
       vertices = self.vertices[cell, :]
-      (jacobian, jacobianInv, jacobianDet) = \
+      (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
                  feutils.calculateJacobian(self.quadrature, vertices)
       for iQuad in xrange(self.numQuadPts):
         wt = self.quadWts[iQuad] * jacobianDet[iQuad]
-        B = self._calculateBasisDerivMat(iQuad)
+        B = self._calculateBasisDerivMat(basisDeriv, iQuad)
         cellK[:] += wt * numpy.dot(numpy.dot(B.transpose(), D), B)
       feutils.assembleMat(K, cellK, cell, self.spaceDim)
     return K
@@ -89,7 +89,7 @@
                             self.spaceDim*self.numBasis),
                            dtype=numpy.float64)
       vertices = self.vertices[cell, :]
-      (jacobian, jacobianInv, jacobianDet) = \
+      (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
                  feutils.calculateJacobian(self.quadrature, vertices)
       for iQuad in xrange(self.numQuadPts):
         wt = self.quadWts[iQuad] * jacobianDet[iQuad]
@@ -165,7 +165,7 @@
     return N
 
 
-  def _calculateBasisDerivMat(self, iQuad):
+  def _calculateBasisDerivMat(self, basisDeriv, iQuad):
     """
     Calculate matrix of derivatives of basis functions.
     """
@@ -173,28 +173,28 @@
       B = numpy.zeros( (6, self.spaceDim*self.numBasis),
                        dtype=numpy.float64)
       for iBasis in xrange(self.numBasis):
-        B[0, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 0]
-        B[1, iBasis*self.spaceDim+1] = self.basisDeriv[iQuad, iBasis, 1]
-        B[2, iBasis*self.spaceDim+2] = self.basisDeriv[iQuad, iBasis, 2]
-        B[3, iBasis*self.spaceDim+0] = 0.5*self.basisDeriv[iQuad, iBasis, 1]
-        B[3, iBasis*self.spaceDim+1] = 0.5*self.basisDeriv[iQuad, iBasis, 0]
-        B[4, iBasis*self.spaceDim+1] = 0.5*self.basisDeriv[iQuad, iBasis, 2]
-        B[4, iBasis*self.spaceDim+2] = 0.5*self.basisDeriv[iQuad, iBasis, 1]
-        B[5, iBasis*self.spaceDim+0] = 0.5*self.basisDeriv[iQuad, iBasis, 2]
-        B[5, iBasis*self.spaceDim+2] = 0.5*self.basisDeriv[iQuad, iBasis, 0]
+        B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+        B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
+        B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]
+        B[3, iBasis*self.spaceDim+0] = 0.5*basisDeriv[iQuad, iBasis, 1]
+        B[3, iBasis*self.spaceDim+1] = 0.5*basisDeriv[iQuad, iBasis, 0]
+        B[4, iBasis*self.spaceDim+1] = 0.5*basisDeriv[iQuad, iBasis, 2]
+        B[4, iBasis*self.spaceDim+2] = 0.5*basisDeriv[iQuad, iBasis, 1]
+        B[5, iBasis*self.spaceDim+0] = 0.5*basisDeriv[iQuad, iBasis, 2]
+        B[5, iBasis*self.spaceDim+2] = 0.5*basisDeriv[iQuad, iBasis, 0]
     elif 2 == self.spaceDim:
       B = numpy.zeros( (3, self.spaceDim*self.numBasis),
                        dtype=numpy.float64)
       for iBasis in xrange(self.numBasis):
-        B[0, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 0]
-        B[1, iBasis*self.spaceDim+1] = self.basisDeriv[iQuad, iBasis, 1]
-        B[2, iBasis*self.spaceDim+0] = 0.5*self.basisDeriv[iQuad, iBasis, 1]
-        B[2, iBasis*self.spaceDim+1] = 0.5*self.basisDeriv[iQuad, iBasis, 0]
+        B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+        B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
+        B[2, iBasis*self.spaceDim+0] = 0.5*basisDeriv[iQuad, iBasis, 1]
+        B[2, iBasis*self.spaceDim+1] = 0.5*basisDeriv[iQuad, iBasis, 0]
     elif 1 == self.spaceDim:
       B = numpy.zeros( (1, self.spaceDim*self.numBasis),
                        dtype=numpy.float64)
       for iBasis in xrange(self.numBasis):
-        B[0, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 0]
+        B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
     else:
       raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
     return B

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2007-06-14 18:22:44 UTC (rev 7238)
@@ -78,6 +78,7 @@
     self.quadPtsRef = None
     self.quadWts = None
     self.basis = None
+    self.basisDerivRef = None
     self.basisDeriv = None
 
     # Computed quadrature information
@@ -94,11 +95,11 @@
     """
     self._collectData()
 
-    (self.basis, self.basisDeriv) = self.quadrature.calculateBasis()
+    (self.basis, self.basisDerivRef) = self.quadrature.calculateBasis()
     self.quadPts = numpy.dot(self.basis, self.vertices)
 
     import feutils
-    (self.jacobian, self.jacobianInv, self.jacobianDet) = \
+    (self.jacobian, self.jacobianInv, self.jacobianDet, self.basisDeriv) = \
                     feutils.calculateJacobian(self.quadrature, self.vertices)
 
     self._initData()
@@ -177,9 +178,12 @@
     self.data.addArray(vtype="double", name="_basis",
                        values=self.basis,
                        format="%16.8e", ncols=self.cellDim)
+    self.data.addArray(vtype="double", name="_basisDerivRef",
+                       values=self.basisDerivRef,
+                       format="%16.8e", ncols=self.cellDim)
     self.data.addArray(vtype="double", name="_basisDeriv",
                        values=self.basisDeriv,
-                       format="%16.8e", ncols=self.cellDim)
+                       format="%16.8e", ncols=self.spaceDim)
     self.data.addArray(vtype="double", name="_jacobian",
                        values=self.jacobian,
                        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-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -28,6 +28,7 @@
   quadWts(0),
   quadPts(0),
   basis(0),
+  basisDerivRef(0),
   basisDeriv(0),
   jacobian(0),
   jacobianDet(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -50,7 +50,8 @@
   double* quadPts; ///< Coordinates of quad pts in cell
 
   double* basis; ///< Basis fns at quadrature points
-  double* basisDeriv; ///< Derivatices of basis fns at quad pts
+  double* basisDerivRef; ///< Derivatices of basis fns at quad pts (cell)
+  double* basisDeriv; ///< Derivatices of basis fns at quad pts (global)
   double* jacobian; ///< Jacobian at quadrature points
   double* jacobianDet; ///< Determinant of quadrature points
   double* jacobianInv; ///< Inverse of Jacobian at quadruature points

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -58,11 +58,16 @@
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1DLinear::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
+const double pylith::feassemble::QuadratureData1DLinear::_basisDeriv[] = {
+ -4.44444444e-01,
+  4.44444444e-01,
+};
+
 const double pylith::feassemble::QuadratureData1DLinear::_jacobian[] = {
   1.12500000e+00,
 };
@@ -90,6 +95,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -66,7 +66,7 @@
   4.55341801e-01,
 };
 
-const double pylith::feassemble::QuadratureData1DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
   1.15470054e+00,
  -7.73502692e-02,
@@ -75,6 +75,15 @@
   1.07735027e+00,
 };
 
+const double pylith::feassemble::QuadratureData1DQuadratic::_basisDeriv[] = {
+ -9.57644684e-01,
+  1.02640048e+00,
+ -6.87557948e-02,
+  6.87557948e-02,
+ -1.02640048e+00,
+  9.57644684e-01,
+};
+
 const double pylith::feassemble::QuadratureData1DQuadratic::_jacobian[] = {
   1.12500000e+00,
   1.12500000e+00,
@@ -104,6 +113,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -58,11 +58,16 @@
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DLinear::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1Din2DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
+const double pylith::feassemble::QuadratureData1Din2DLinear::_basisDeriv[] = {
+ -1.11111111e+00, -1.25000000e+00,
+  1.11111111e+00,  1.25000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobian[] = {
   4.50000000e-01,
   4.00000000e-01,
@@ -91,6 +96,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -66,7 +66,7 @@
   4.55341801e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
   1.15470054e+00,
  -7.73502692e-02,
@@ -75,6 +75,15 @@
   1.07735027e+00,
 };
 
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDeriv[] = {
+ -2.12187502e+00, -3.78642137e+00,
+  2.27421879e+00,  4.05827420e+00,
+ -1.52343772e-01, -2.71852823e-01,
+  1.97188825e-01,  1.50057736e-01,
+ -2.94367486e+00, -2.24009238e+00,
+  2.74648603e+00,  2.09003464e+00,
+};
+
 const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobian[] = {
   5.07735027e-01,
   2.84529946e-01,
@@ -106,6 +115,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -58,11 +58,16 @@
   5.00000000e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DLinear::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1Din3DLinear::_basisDerivRef[] = {
  -5.00000000e-01,
   5.00000000e-01,
 };
 
+const double pylith::feassemble::QuadratureData1Din3DLinear::_basisDeriv[] = {
+  6.66666667e-01, -2.85714286e-01, -2.00000000e-01,
+ -6.66666667e-01,  2.85714286e-01,  2.00000000e-01,
+};
+
 const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobian[] = {
  -7.50000000e-01,
   1.75000000e+00,
@@ -92,6 +97,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -66,7 +66,7 @@
   4.55341801e-01,
 };
 
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDerivRef[] = {
  -1.07735027e+00,
   1.15470054e+00,
  -7.73502692e-02,
@@ -75,6 +75,15 @@
   1.07735027e+00,
 };
 
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDeriv[] = {
+  1.55626864e+00, -5.95966916e-01, -3.78494387e-01,
+ -1.66800370e+00,  6.38755416e-01,  4.05669061e-01,
+  1.11735061e-01, -4.27884994e-02, -2.71746743e-02,
+ -9.57619351e-02,  4.57081311e-02,  3.59168992e-02,
+  1.42955363e+00, -6.82340270e-01, -5.36174771e-01,
+ -1.33379169e+00,  6.36632139e-01,  5.00257872e-01,
+};
+
 const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobian[] = {
  -6.92264973e-01,
   1.80773503e+00,
@@ -108,6 +117,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -59,12 +59,18 @@
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2DLinear::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2DLinear::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,
 };
 
+const double pylith::feassemble::QuadratureData2DLinear::_basisDeriv[] = {
+  6.36363636e-01, -1.18181818e+00,
+  1.81818182e-01,  1.09090909e+00,
+ -8.18181818e-01,  9.09090909e-02,
+};
+
 const double pylith::feassemble::QuadratureData2DLinear::_jacobian[] = {
   1.00000000e-01, -1.20000000e+00,
   9.00000000e-01,  2.00000000e-01,
@@ -94,6 +100,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -77,7 +77,7 @@
   1.11111111e-01,  4.44444444e-01,
 };
 
-const double pylith::feassemble::QuadratureData2DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2DQuadratic::_basisDerivRef[] = {
   3.33333333e-01,  3.33333333e-01,
   1.66666667e+00,  0.00000000e+00,
   0.00000000e+00, -3.33333333e-01,
@@ -98,6 +98,27 @@
  -6.66666667e-01,  2.00000000e+00,
 };
 
+const double pylith::feassemble::QuadratureData2DQuadratic::_basisDeriv[] = {
+  4.23452769e-02,  1.46579805e-01,
+  9.93485342e-01, -4.07166124e-01,
+  1.56351792e-01, -2.28013029e-01,
+  5.86319218e-02, -1.33550489e+00,
+ -8.53420195e-01,  1.66123779e+00,
+ -3.97394137e-01,  1.62866450e-01,
+  2.55905512e-02,  2.06692913e-01,
+ -9.64566929e-02, -9.84251969e-03,
+ -3.54330709e-01,  9.84251969e-01,
+  1.41732283e-01, -3.93700787e-01,
+  6.29921260e-01,  4.72440945e-01,
+ -3.46456693e-01, -1.25984252e+00,
+ -3.52112676e-01, -1.05633803e+00,
+ -1.38028169e-01, -1.40845070e-02,
+  6.76056338e-02, -1.97183099e-01,
+  9.63380282e-01, -3.09859155e-01,
+  1.40845070e-01,  4.22535211e-01,
+ -6.81690141e-01,  1.15492958e+00,
+};
+
 const double pylith::feassemble::QuadratureData2DQuadratic::_jacobian[] = {
   2.33333333e+00,  8.33333333e-01,
   1.60000000e+00,  2.03333333e+00,
@@ -135,6 +156,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -59,12 +59,18 @@
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDeriv[] = {
+  1.00000000e+00, -0.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobian[] = {
  -1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,
@@ -95,6 +101,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -59,12 +59,18 @@
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDeriv[] = {
+  1.00000000e+00, -0.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobian[] = {
  -1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,
@@ -95,6 +101,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -59,12 +59,18 @@
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDeriv[] = {
+  1.00000000e+00, -0.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobian[] = {
  -1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,
@@ -95,6 +101,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -59,12 +59,18 @@
   3.33333333e-01,  3.33333333e-01,
   3.33333333e-01,};
 
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDeriv[] = {
+ -0.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+  0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
+  0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobian[] = {
   0.00000000e+00,  0.00000000e+00,
   1.00000000e+00,  0.00000000e+00,
@@ -95,6 +101,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -77,7 +77,7 @@
   1.11111111e-01,  4.44444444e-01,
 };
 
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDerivRef[] = {
   3.33333333e-01,  3.33333333e-01,
   1.66666667e+00,  0.00000000e+00,
   0.00000000e+00, -3.33333333e-01,
@@ -98,6 +98,27 @@
  -6.66666667e-01,  2.00000000e+00,
 };
 
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDeriv[] = {
+ -1.35593220e-01,  3.38983051e-02,  1.29554656e-01,
+  7.76836158e-02,  5.01412429e-01, -7.42240216e-02,
+  1.51129944e-01,  6.63841808e-02, -1.44399460e-01,
+  1.11581921e+00, -7.06214689e-02, -1.06612686e+00,
+ -1.17796610e+00, -3.30508475e-01,  1.12550607e+00,
+ -3.10734463e-02, -2.00564972e-01,  2.96896086e-02,
+ -1.18644068e-01,  5.08474576e-02,  1.10671937e-01,
+ -2.40112994e-02, -1.08757062e-01,  2.23978920e-02,
+ -7.13276836e-01, -2.89548023e-01,  6.65349144e-01,
+  2.85310734e-01,  1.15819209e-01, -2.66139657e-01,
+ -9.32203390e-02,  7.54237288e-01,  8.69565217e-02,
+  6.63841808e-01, -5.22598870e-01, -6.19235837e-01,
+  6.69642857e-01, -2.23214286e-01, -6.38297872e-01,
+ -1.63690476e-02, -1.05654762e-01,  1.56028369e-02,
+  1.50297619e-01,  6.10119048e-02, -1.43262411e-01,
+  3.98809524e-01,  7.55952381e-01, -3.80141844e-01,
+ -2.67857143e-01,  8.92857143e-02,  2.55319149e-01,
+ -9.34523810e-01, -5.77380952e-01,  8.90780142e-01,
+};
+
 const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobian[] = {
  -1.56666667e+00, -2.36666667e+00,
   3.56666667e+00,  3.66666667e-01,
@@ -138,6 +159,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -61,13 +61,20 @@
   2.50000000e-01,  2.50000000e-01,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::QuadratureData3DLinear::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData3DLinear::_basisDerivRef[] = {
  -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
   1.00000000e+00,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,  1.00000000e+00,
 };
 
+const double pylith::feassemble::QuadratureData3DLinear::_basisDeriv[] = {
+ -2.66418835e-01, -6.75340768e-01,  3.71747212e-02,
+  6.04089219e-01, -1.14312268e+00,  6.13382900e-01,
+ -3.40768278e-01,  1.92688971e+00, -1.11524164e+00,
+  3.09789343e-03, -1.08426270e-01,  4.64684015e-01,
+};
+
 const double pylith::feassemble::QuadratureData3DLinear::_jacobian[] = {
   2.50000000e+00,  1.50000000e+00,  3.00000000e-01,
   5.00000000e-01,  9.00000000e-01,  1.50000000e+00,
@@ -99,6 +106,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc	2007-06-14 18:22:44 UTC (rev 7238)
@@ -91,7 +91,7 @@
   2.50000000e-01,  2.77777778e-02,  2.50000000e-01,
   2.50000000e-01,};
 
-const double pylith::feassemble::QuadratureData3DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData3DQuadratic::_basisDerivRef[] = {
  -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
  -6.66666667e-01,  0.00000000e+00,  0.00000000e+00,
   0.00000000e+00, -6.66666667e-01,  0.00000000e+00,
@@ -134,6 +134,49 @@
   3.00000000e+00,  0.00000000e+00,  3.33333333e-01,
 };
 
+const double pylith::feassemble::QuadratureData3DQuadratic::_basisDeriv[] = {
+ -7.83094857e-01, -7.65459276e-02, -4.62652592e-01,
+ -2.47606897e-01,  1.64265226e-01, -8.55930225e-02,
+ -6.64148489e-02, -2.55653392e-01,  2.19506704e-01,
+  5.29901274e-02,  6.58728570e-02, -2.88131212e-01,
+  9.83715229e-01, -7.51951171e-01,  3.08059836e-01,
+  1.68351011e-01,  1.13768261e+00, -1.06488893e+00,
+ -3.68971383e-01, -3.09185511e-01,  1.21948169e+00,
+  1.57010873e-01,  4.56940831e-02, -6.69568408e-02,
+  6.71236075e-03,  9.48902675e-02,  3.43122540e-02,
+  9.73083850e-02, -1.15069041e-01,  1.86862117e-01,
+  2.20279652e-01,  4.92234076e-02,  1.18597035e-01,
+  7.44087308e-01, -5.14786633e-01,  2.53716269e-01,
+ -4.39774867e-02, -3.21422968e-01,  3.01272749e-01,
+  7.17269376e-02,  1.00604016e-01, -3.35297694e-01,
+ -8.67243881e-01, -3.07303106e-01, -4.91400612e-01,
+ -8.81510825e-02,  1.36099780e-01, -2.09934892e-01,
+ -1.46003295e-01, -7.49137120e-02,  1.08350329e-01,
+  3.21913241e-01,  1.36060559e+00, -1.31344132e+00,
+ -1.38747254e-02,  1.10409476e-01,  1.70124725e-02,
+ -1.98756668e-01, -5.38515846e-01,  1.55112567e+00,
+  2.52578517e-01,  5.82464152e-02,  1.36375951e-01,
+ -2.40484161e-01,  1.39907502e-01, -8.77082648e-02,
+  3.26402461e-01,  7.87777928e-01, -8.46556495e-01,
+  9.67064652e-02,  6.44387252e-02, -3.30853184e-01,
+ -6.04717766e-03, -9.90769588e-02, -2.43338429e-02,
+ -1.08220291e+00, -1.30812547e-01, -7.54784527e-01,
+ -1.74642491e-01, -6.13425702e-02,  9.72386168e-02,
+  1.13657914e+00, -4.98287439e-01,  2.53594442e-01,
+ -3.80778683e-01, -1.58677942e-01,  1.34774658e+00,
+  7.18888480e-02, -1.02173114e-01,  2.09280725e-01,
+  2.39188235e-01,  5.77458352e-02,  1.05625026e-01,
+ -2.44104247e-01,  1.35017241e-01, -5.27952031e-02,
+ -3.35465913e-02, -2.33891405e-01,  2.19662665e-01,
+ -1.15387811e-01, -1.23384986e-01,  8.17477463e-01,
+  2.45800618e-03, -9.63815380e-02, -2.64149114e-02,
+ -1.02820822e-01,  8.80727847e-02, -1.62643845e-01,
+ -1.09557836e+00, -2.80420423e-01, -3.39066373e-01,
+  1.38825419e-01,  4.94370820e-02, -8.34337308e-02,
+  1.31728359e-01,  1.03194716e+00, -8.52235747e-01,
+  1.07923781e+00, -6.28141747e-01,  3.73824658e-01,
+};
+
 const double pylith::feassemble::QuadratureData3DQuadratic::_jacobian[] = {
   2.36666667e+00,  1.66666667e+00,  5.66666667e-01,
  -3.00000000e-01,  3.03333333e+00,  2.40000000e+00,
@@ -183,6 +226,7 @@
   quadWts = const_cast<double*>(_quadWts);
   quadPts = const_cast<double*>(_quadPts);
   basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
   basisDeriv = const_cast<double*>(_basisDeriv);
   jacobian = const_cast<double*>(_jacobian);
   jacobianDet = const_cast<double*>(_jacobianDet);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh	2007-06-14 18:22:44 UTC (rev 7238)
@@ -63,6 +63,8 @@
 
   static const double _basis[];
 
+  static const double _basisDerivRef[];
+
   static const double _basisDeriv[];
 
   static const double _jacobian[];

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py	2007-06-14 17:57:03 UTC (rev 7237)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py	2007-06-14 18:22:44 UTC (rev 7238)
@@ -26,25 +26,29 @@
   @param quadrature Quadrature information
   @param vertices Coordinates of cell's vertices
   """
-  jacobian = numpy.zeros( (quadrature.numQuadPts,
-                           quadrature.spaceDim, quadrature.cellDim),
+  (basis, basisDerivRef) = quadrature.calculateBasis()
+
+  numQuadPts = quadrature.numQuadPts
+  cellDim = quadrature.cellDim
+  spaceDim = quadrature.spaceDim
+  numBasis = quadrature.numBasis
+  jacobian = numpy.zeros( (numQuadPts, spaceDim, cellDim),
                           dtype=numpy.float64)
-  jacobianInv = numpy.zeros( (quadrature.numQuadPts,
-                              quadrature.cellDim, quadrature.spaceDim),
+  jacobianInv = numpy.zeros( (numQuadPts, cellDim, spaceDim),
                              dtype=numpy.float64)
-  jacobianDet = numpy.zeros( (quadrature.numQuadPts,), dtype=numpy.float64)
+  jacobianDet = numpy.zeros( (numQuadPts,), dtype=numpy.float64)
+  basisDeriv = numpy.zeros( (numQuadPts, numBasis, spaceDim),
+                            dtype=numpy.float64)
 
-  (basis, basisDeriv) = quadrature.calculateBasis()
-    
   iQuad = 0
   for q in quadrature.quadPtsRef:
     # Jacobian at quadrature points
-    deriv = basisDeriv[iQuad]
+    deriv = basisDerivRef[iQuad]
     j = numpy.dot(vertices.transpose(), deriv)
     jacobian[iQuad] = j
 
     # Determinant of Jacobian and Jacobian inverse at quadrature points
-    if quadrature.spaceDim == quadrature.cellDim:
+    if spaceDim == cellDim:
       jacobianDet[iQuad] = numpy.linalg.det(j)
       jacobianInv[iQuad] = numpy.linalg.inv(j)
     else:
@@ -97,8 +101,16 @@
           raise ValueError("Could not find inverse of Jacobian.")
       else:
         raise ValueError("Could not find inverse of Jacobian.")
+
+    # Compute derivatives of basis functions with respect to global
+    # coordinates using derivatives of basis functions with respect
+    # to local cell coordinates and inverse of Jacobian matrix
+    for iBasis in xrange(numBasis):
+      matBasis = numpy.array(basisDerivRef[iQuad,iBasis], dtype=numpy.float64)
+      jInv = jacobianInv[iQuad]
+      basisDeriv[iQuad,iBasis,:] = numpy.dot(matBasis, jInv)
     iQuad += 1
-  return (jacobian, jacobianInv, jacobianDet)
+  return (jacobian, jacobianInv, jacobianDet, basisDeriv)
     
 
 # ----------------------------------------------------------------------



More information about the cig-commits mailing list