[cig-commits] r6547 - in short/3D/PyLith/trunk: libsrc/feassemble libsrc/materials libsrc/utils unittests/libtests/feassemble unittests/libtests/feassemble/data unittests/libtests/meshio

brad at geodynamics.org brad at geodynamics.org
Wed Apr 11 17:47:06 PDT 2007


Author: brad
Date: 2007-04-11 17:47:05 -0700 (Wed, 11 Apr 2007)
New Revision: 6547

Modified:
   short/3D/PyLith/trunk/libsrc/feassemble/ExplicitElasticity.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Integrator.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh
   short/3D/PyLith/trunk/libsrc/materials/Material.cc
   short/3D/PyLith/trunk/libsrc/utils/array.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
   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/IntegratorDataInertia1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DQuadratic.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DQuadratic.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DOne.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DThree.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DTwo.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia3DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din2DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din2DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din3DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/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
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc
Log:
Switched to using C++ STL containers for quadrature data. Would have liked to have used boost multi_array containers but tests indicated significantly longer access time sfor multi_array containers.

Modified: short/3D/PyLith/trunk/libsrc/feassemble/ExplicitElasticity.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ExplicitElasticity.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ExplicitElasticity.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -88,14 +88,31 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double* quadWts = _quadrature->quadWts();
-  const int numBasis = _quadrature->numCorners();
+  const double_array& quadWts = _quadrature->quadWts();
+  assert(quadWts.size() == numQuadPts);
+  const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
   const int cellDim = _quadrature->cellDim();
 
   // Allocate vector for cell values (if necessary)
   _initCellVector();
 
+  // Allocate vector for total strain
+  int tensorSize = 0;
+  if (1 == cellDim)
+    tensorSize = 1;
+  else if (2 == cellDim)
+    tensorSize = 3;
+  else if (3 == cellDim)
+    tensorSize = 6;
+  else
+    throw std::logic_error("Tensor size not implemented for given cellDim.");
+  std::vector<double_array> totalStrain(numQuadPts);
+  for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+    totalStrain[iQuad].resize(tensorSize);
+    totalStrain[iQuad] = 0.0;
+  } // for
+
   for (Mesh::label_sequence::iterator cellIter=cells->begin();
        cellIter != cellsEnd;
        ++cellIter) {
@@ -115,9 +132,9 @@
       mesh->restrict(dispTmdt, *cellIter);
 
     // Get cell geometry information that depends on cell
-    const double* basis = _quadrature->basis();
-    const double* basisDeriv = _quadrature->basisDeriv();
-    const double* jacobianDet = _quadrature->jacobianDet();
+    const double_array& basis = _quadrature->basis();
+    const double_array& basisDeriv = _quadrature->basisDeriv();
+    const double_array& jacobianDet = _quadrature->jacobianDet();
 
     // Compute action for cell
 
@@ -127,16 +144,14 @@
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
       const double wt = 
 	quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad][0] / dt2;
-      for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
-        const int iBlock = iBasis * spaceDim;
-        const double valI = wt*basis[iQ+iBasis];
+      for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+        const double valI = wt*basis[iQuad*numBasis+iBasis];
         for (int jBasis=0; jBasis < numBasis; ++jBasis) {
-          const int jBlock = jBasis * spaceDim;
-          const double valIJ = valI * basis[iQ+jBasis];
+          const double valIJ = valI * basis[iQuad*numBasis+jBasis];
           for (int iDim=0; iDim < spaceDim; ++iDim)
-            _cellVector[iBlock+iDim] += 
-	      valIJ * (2.0 * dispTCell[jBlock+iDim] - 
-		       dispTmdtCell[jBlock+iDim]);
+            _cellVector[iBasis*spaceDim+iDim] += 
+	      valIJ * (2.0 * dispTCell[jBasis*spaceDim+iDim] - 
+		       dispTmdtCell[jBasis*spaceDim+iDim]);
         } // for
       } // for
     } // for
@@ -157,15 +172,10 @@
 
     // Compute action for elastic terms
     if (1 == cellDim) {
-      // Compute total strains
-      const int tensorSize = 1;
-      std::vector<double_array> totalStrain(numQuadPts);
-      for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-	totalStrain[iQuad].resize(tensorSize);
-	totalStrain[iQuad] *= 0.0;
-	for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis)
-	  totalStrain[iQuad][0] += basisDeriv[iQ+iBasis] * dispTCell[iBasis];
-      } // for
+      for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
+	for (int iBasis=0; iBasis < numBasis; ++iBasis)
+	  totalStrain[iQuad][0] += 
+	    basisDeriv[iQuad*numBasis+iBasis] * dispTCell[iBasis];
       const std::vector<double_array>& stress = 
 	_material->calcStress(totalStrain);
 
@@ -173,9 +183,9 @@
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
 	const double wt = quadWts[iQuad] * jacobianDet[iQuad];
 	const double s11 = stress[iQuad][0];
-	for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
+	for (int iBasis=0; iBasis < numBasis; ++iBasis) {
 	  const int iBlock = iBasis * spaceDim;
-	  const double N1 = wt*basisDeriv[iQ+iBasis*cellDim  ];
+	  const double N1 = wt*basisDeriv[iQuad*numBasis+iBasis*cellDim  ];
 	  _cellVector[iBlock  ] -= N1*s11;
 	} // for
       } // for
@@ -185,11 +195,7 @@
 
     } else if (2 == cellDim) {
       // Compute total strains
-      const int tensorSize = 3;
-      std::vector<double_array> totalStrain(numQuadPts);
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-	totalStrain[iQuad].resize(tensorSize);
-	totalStrain[iQuad] *= 0.0;
 	for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
 	  totalStrain[iQuad][0] += 
 	    basisDeriv[iQ+iBasis  ] * dispTCell[iBasis  ];
@@ -202,7 +208,7 @@
       } // for
       const std::vector<double_array>& stress = 
 	_material->calcStress(totalStrain);
-
+      
       // Compute elastic action
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
 	const double wt = quadWts[iQuad] * jacobianDet[iQuad];
@@ -220,14 +226,10 @@
       err = PetscLogFlops(numQuadPts*(1+numBasis*(8+2+9)));
       if (err)
 	throw std::runtime_error("Logging PETSc flops failed.");
-
+      
     } else if (3 == cellDim) {
       // Compute total strains
-      const int tensorSize = 6;
-      std::vector<double_array> totalStrain(numQuadPts);
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-	totalStrain[iQuad].resize(tensorSize);
-	totalStrain[iQuad] *= 0.0;
 	for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
 	  totalStrain[iQuad][0] += 
 	    basisDeriv[iQ+iBasis  ] * dispTCell[iBasis  ];
@@ -307,8 +309,8 @@
 
   // Get cell geometry information that doesn't depend on cell
   const int numQuadPts = _quadrature->numQuadPts();
-  const double* quadWts = _quadrature->quadWts();
-  const int numBasis = _quadrature->numCorners();
+  const double_array& quadWts = _quadrature->quadWts();
+  const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
 
   // Allocate vector for cell values (if necessary)
@@ -327,8 +329,8 @@
     _resetCellMatrix();
 
     // Get cell geometry information that depends on cell
-    const double* basis = _quadrature->basis();
-    const double* jacobianDet = _quadrature->jacobianDet();
+    const double_array& basis = _quadrature->basis();
+    const double_array& jacobianDet = _quadrature->jacobianDet();
 
     // Get material physical properties at quadrature points for this cell
     const std::vector<double_array>& density = _material->calcDensity();

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Integrator.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Integrator.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Integrator.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -66,7 +66,7 @@
 pylith::feassemble::Integrator::_initCellVector(void)
 { // _initCellVector
   assert(0 != _quadrature);
-  const int size = _quadrature->spaceDim() * _quadrature->numCorners();
+  const int size = _quadrature->spaceDim() * _quadrature->numBasis();
   if (0 == _cellVector)
     _cellVector = (size > 0) ? new real_section_type::value_type[size] : 0;
   for (int i=0; i < size; ++i)
@@ -79,7 +79,7 @@
 pylith::feassemble::Integrator::_resetCellVector(void)
 { // _resetCellVector
   assert(0 != _quadrature);
-  const int size = _quadrature->spaceDim() * _quadrature->numCorners();
+  const int size = _quadrature->spaceDim() * _quadrature->numBasis();
   for (int i=0; i < size; ++i)
     _cellVector[i] = 0.0;
 } // _resetCellVector
@@ -91,8 +91,8 @@
 { // _initCellMatrix
   assert(0 != _quadrature);
   const int size =
-    _quadrature->spaceDim() * _quadrature->numCorners() *
-    _quadrature->spaceDim() * _quadrature->numCorners();
+    _quadrature->spaceDim() * _quadrature->numBasis() *
+    _quadrature->spaceDim() * _quadrature->numBasis();
   if (0 == _cellMatrix)
     _cellMatrix = (size > 0) ? new real_section_type::value_type[size] : 0;
   for (int i=0; i < size; ++i)
@@ -106,8 +106,8 @@
 { // _resetCellMatrix
   assert(0 != _quadrature);
   const int size =
-    _quadrature->spaceDim() * _quadrature->numCorners() *
-    _quadrature->spaceDim() * _quadrature->numCorners();
+    _quadrature->spaceDim() * _quadrature->numBasis() *
+    _quadrature->spaceDim() * _quadrature->numBasis();
   for (int i=0; i < size; ++i)
     _cellMatrix[i] = 0.0;
 } // _resetCellMatrix

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,16 +23,8 @@
 // Constructor
 pylith::feassemble::Quadrature::Quadrature(void) :
   _minJacobian(0),
-  _basis(0),
-  _basisDeriv(0),
-  _quadPtsRef(0),
-  _quadPts(0),
-  _quadWts(0),
-  _jacobian(0),
-  _jacobianInv(0),
-  _jacobianDet(0),
   _cellDim(0),
-  _numCorners(0),
+  _numBasis(0),
   _numQuadPts(0),
   _spaceDim(0)
 { // constructor
@@ -42,80 +34,25 @@
 // Destructor
 pylith::feassemble::Quadrature::~Quadrature(void)
 { // destructor
-  delete[] _basis; _basis = 0;
-  delete[] _basisDeriv; _basisDeriv = 0;
-  delete[] _quadPtsRef; _quadPtsRef = 0;
-  delete[] _quadPts; _quadPts = 0;
-  delete[] _quadWts; _quadWts = 0;
-  delete[] _jacobian; _jacobian = 0;
-  delete[] _jacobianInv; _jacobianInv = 0;
-  delete[] _jacobianDet; _jacobianDet = 0;
 } // destructor
   
 // ----------------------------------------------------------------------
 // Copy constructor
 pylith::feassemble::Quadrature::Quadrature(const Quadrature& q) :
   _minJacobian(q._minJacobian),
-  _basis(0),
-  _basisDeriv(0),
-  _quadPtsRef(0),
-  _quadPts(0),
-  _quadWts(0),
-  _jacobian(0),
-  _jacobianInv(0),
-  _jacobianDet(0),
+  _basis(q._basis),
+  _basisDeriv(q._basisDeriv),
+  _quadPtsRef(q._quadPtsRef),
+  _quadPts(q._quadPts),
+  _quadWts(q._quadWts),
+  _jacobian(q._jacobian),
+  _jacobianInv(q._jacobianInv),
+  _jacobianDet(q._jacobianDet),
   _cellDim(q._cellDim),
-  _numCorners(q._numCorners),
+  _numBasis(q._numBasis),
   _numQuadPts(q._numQuadPts),
   _spaceDim(q._spaceDim)
 { // copy constructor
-  if (0 != q._basis) {
-    const int size = _numCorners * _numQuadPts;
-    _basis = (size > 0) ? new double[size] : 0;
-    memcpy(_basis, q._basis, size*sizeof(double));
-  } // if
-
-  if (0 != q._basisDeriv) {
-    const int size = _numCorners * _numQuadPts * _cellDim;
-    _basisDeriv = (size > 0) ? new double[size] : 0;
-    memcpy(_basisDeriv, q._basisDeriv, size*sizeof(double));
-  } // if
-
-  if (0 != q._quadPtsRef) {
-    const int size = _numQuadPts * _cellDim;
-    _quadPtsRef = (size > 0) ? new double[size] : 0;
-    memcpy(_quadPtsRef, q._quadPtsRef, size*sizeof(double));
-  } // if
-
-  if (0 != q._quadPts) {
-    const int size = _numQuadPts*_spaceDim;
-    _quadPts = (size > 0) ? new double[size] : 0;
-    memcpy(_quadPts, q._quadPts, size*sizeof(double));
-  } // if
-
-  if (0 != q._quadWts) {
-    const int size = _numQuadPts;
-    _quadWts = (size > 0) ? new double[size] : 0;
-    memcpy(_quadWts, q._quadWts, size*sizeof(double));
-  } // if
-  
-  if (0 != q._jacobian) {
-    const int size = _numQuadPts*_cellDim*_spaceDim;
-    _jacobian = (size > 0) ? new double[size] : 0;
-    memcpy(_jacobian, q._jacobian, size*sizeof(double));
-  } // if
-
-  if (0 != q._jacobianInv) {
-    const int size = _numQuadPts*_cellDim*_spaceDim;
-    _jacobianInv = (size > 0) ? new double[size] : 0;
-    memcpy(_jacobianInv, q._jacobianInv, size*sizeof(double));
-  } // if
-
-  if (0 != q._jacobianDet) {
-    const int size = _numQuadPts;
-    _jacobianDet = (size > 0) ? new double[size] : 0;
-    memcpy(_jacobianDet, q._jacobianDet, size*sizeof(double));
-  } // if
 } // copy constructor
 
 // ----------------------------------------------------------------------
@@ -127,7 +64,7 @@
 					   const double* quadPtsRef,
 					   const double* quadWts,
 					   const int cellDim,
-					   const int numCorners,
+					   const int numBasis,
 					   const int numQuadPts,
 					   const int spaceDim)
 { // initialize
@@ -136,7 +73,7 @@
       0 == quadPtsRef ||
       0 == quadWts ||
       cellDim < 1 || cellDim > 3 ||
-      numCorners < 1 ||
+      numBasis < 1 ||
       numQuadPts < 1 ||
       spaceDim < 1 || spaceDim > 3) {
     std::ostringstream msg;
@@ -149,49 +86,49 @@
 	<< "  quadrature points pointer: " << quadPtsRef << "\n"
 	<< "  quadrature weights pointer: " << quadWts << "\n"
 	<< "  space dimension: " << spaceDim << "\n"
-	<< "  # vertices per cell: " << numCorners << "\n"
+	<< "  # vertices per cell: " << numBasis << "\n"
 	<< "  # quadrature points: " << numQuadPts << "\n"
 	<< "  dimension of coordinate space: " << spaceDim << "\n";
     throw std::runtime_error(msg.str());
   } // if
 
-  int size = numCorners * numQuadPts;
-  delete[] _basis; _basis = (size > 0) ? new double[size] : 0;
+  int size = numBasis * numQuadPts;
+  _basis.resize(size);
   for (int i=0; i < size; ++i)
     _basis[i] = basis[i];
 
-  size = numCorners * numQuadPts * cellDim;
-  delete[] _basisDeriv; _basisDeriv = (size > 0) ? new double[size] : 0;
+  size = numBasis * numQuadPts * cellDim;
+  _basisDeriv.resize(size);
   for (int i=0; i < size; ++i)
     _basisDeriv[i] = basisDeriv[i];
 
   size = numQuadPts * cellDim;
-  delete[] _quadPtsRef; _quadPtsRef = (size > 0) ? new double[size] : 0;
+  _quadPtsRef.resize(size);
   for (int i=0; i < size; ++i)
     _quadPtsRef[i] = quadPtsRef[i];
 
   size = numQuadPts;
-  delete[] _quadWts; _quadWts = (size > 0) ? new double[size] : 0;
+  _quadWts.resize(size);
   for (int i=0; i < size; ++i)
     _quadWts[i] = quadWts[i];
 
   _cellDim = cellDim;
-  _numCorners = numCorners;
+  _numBasis = numBasis;
   _numQuadPts = numQuadPts;
   _spaceDim = spaceDim;
 
   // Allocate for Jacobian and its inverse
   size = numQuadPts*cellDim*spaceDim;
-  delete[] _jacobian; _jacobian = (size > 0) ? new double[size] : 0;
-  delete[] _jacobianInv; _jacobianInv = (size > 0) ? new double[size] : 0;
+  _jacobian.resize(size);
+  _jacobianInv.resize(size);
 
   // Allocate for Jacobian determinant
   size = numQuadPts;
-  delete[] _jacobianDet; _jacobianDet = (size > 0) ? new double[size] : 0;
+  _jacobianDet.resize(size);
 
   // Allocate for quad pts
   size = numQuadPts*spaceDim;
-  delete[] _quadPts; _quadPts = (size > 0) ? new double[size] : 0;
+  _quadPts.resize(size);
 } // initialize
 
 // ----------------------------------------------------------------------
@@ -199,22 +136,10 @@
 void
 pylith::feassemble::Quadrature::_resetGeometry(void)
 { // _resetGeometry
-  // Zero out Jacobian and its inverse
-  int size = _numQuadPts*_cellDim*_spaceDim;
-  for (int i=0; i < size; ++i)
-    _jacobian[i] = 0.0;
-  for (int i=0; i < size; ++i)
-    _jacobianInv[i] = 0.0;
-
-  // Zero out Jacobian determinant
-  size = _numQuadPts;
-  for (int i=0; i < size; ++i)
-    _jacobianDet[i] = 0.0;
-
-  // Zero out quad pts
-  size = _numQuadPts*_spaceDim;
-  for (int i=0; i < size; ++i)
-    _quadPts[i] = 0.0;
+  _jacobian = 0.0;
+  _jacobianInv = 0.0;
+  _jacobianDet = 0.0;
+  _quadPts = 0.0;
 } // _resetGeometry
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -31,8 +31,10 @@
 #if !defined(pylith_feassemble_quadrature_hh)
 #define pylith_feassemble_quadrature_hh
 
-#include <Mesh.hh>
+#include <petscmesh.h>
 
+#include "pylith/utils/array.hh" // HASA double_array
+
 namespace pylith {
   namespace feassemble {
     class Quadrature;
@@ -46,7 +48,7 @@
 // PUBLIC TYPEDEFS //////////////////////////////////////////////////////
 public :
 
-  typedef ALE::Mesh               Mesh;
+  typedef ALE::Mesh Mesh;
   typedef Mesh::real_section_type real_section_type;
 
 // PUBLIC METHODS ///////////////////////////////////////////////////////
@@ -70,16 +72,16 @@
    *   N0Qp0, N1Qp0, ...
    *   N0Qp1, N1Qp1, ...
    *   ...
-   *   size = numQuadPts * numCorners
-   *   index = iQuadPt*numCorners + iBasis
+   *   size = numQuadPts * numBasis
+   *   index = iQuadPt*numBasis + iBasis
    *
    * @param basisDeriv Array of basis function derivaties evaluated 
    *   at quadrature pts
    *   N0xQp0, N0yQp0, N0zQp0, N1xQp0, N1yQp0, N1zQp0, ... 
    *   N0xQp1, N0yQp1, N0zQp1, N1xQp1, N1yQp1, N1zQp1, ...
    *   ...
-   *   size = numCorners * numQuadPts * cellDim
-   *   index = iQuadPt*numCorners*cellDim + iBasis*cellDim + iDim
+   *   size = numBasis * numQuadPts * cellDim
+   *   index = iQuadPt*numBasis*cellDim + iBasis*cellDim + iDim
    *
    * @param quadPts Array of coordinates of quadrature points in 
    *   reference cell
@@ -93,7 +95,7 @@
    *   index = iQuadPt
    *
    * @param cellDim Number of dimensions in reference cell
-   * @param numCorners Number of vertices in a cell
+   * @param numBasis Number of vertices in a cell
    * @param numQuadPts Number of quadrature points
    * @param spaceDim Number of dimensions in coordinates of cell vertices
    */
@@ -102,7 +104,7 @@
 		  const double* quadPtsRef,
 		  const double* quadWts,
 		  const int cellDim,
-		  const int numCorners,
+		  const int numBasis,
 		  const int numQuadPts,
 		  const int spaceDim);
 
@@ -122,38 +124,38 @@
    *
    * @returns Array of basis fns evaluated at quadrature points
    */
-  const double* basis(void) const;
+  const double_array& basis(void) const;
 
   /** Get derivatives of basis fns evaluated at quadrature points.
    *
    * @returns Array of derivatives of basis fns evaluated at
    * quadrature points
    */
-  const double* basisDeriv(void) const;
+  const double_array& basisDeriv(void) const;
 
   /** Get coordinates of quadrature points in cell (NOT reference cell).
    *
    * @returns Array of coordinates of quadrature points in cell
    */
-  const double* quadPts(void) const;
+  const double_array& quadPts(void) const;
 
   /** Get weights of quadrature points.
    *
    * @returns Weights of quadrature points
    */
-  const double* quadWts(void) const;
+  const double_array& quadWts(void) const;
 
   /** Get Jacobian inverses evaluated at quadrature points.
    *
    * @returns Array of Jacobian inverses evaluated at quadrature points.
    */
-  const double* jacobianInv(void) const;
+  const double_array& jacobianInv(void) const;
 
   /** Get determinants of Jacobian evaluated at quadrature points.
    *
    * @returns Array of determinants of Jacobian evaluated at quadrature pts
    */
-  const double* jacobianDet(void) const;
+  const double_array& jacobianDet(void) const;
 
   /** Get number of dimensions in reference cell.
    *
@@ -161,11 +163,11 @@
    */
   int cellDim(void) const;
 
-  /** Get number of vertices in cell.
+  /** Get number of basis functions for cell.
    *
-   * @returns Number of vertices in cell
+   * @returns Number of basis functions for cell
    */
-  int numCorners(void) const;
+  int numBasis(void) const;
 
   /** Get number of quadrature points.
    *
@@ -186,7 +188,7 @@
    */
   virtual 
   void computeGeometry(const ALE::Obj<Mesh>& mesh,
-               const ALE::Obj<real_section_type>& coordinates,
+		       const ALE::Obj<real_section_type>& coordinates,
 		       const Mesh::point_type& cell) = 0;
 
 // PROTECTED METHODS ////////////////////////////////////////////////////
@@ -219,20 +221,20 @@
    * N0Qp0, N1Qp0, ...
    * N0Qp1, N1Qp1, ...
    *
-   * size = numQuadPts * numCorners
-   * index = iQuadPt*numCorners + iBasis
+   * size = numQuadPts * numBasis
+   * index = iQuadPt*numBasis + iBasis
    */
-  double* _basis;
+  double_array _basis;
 
   /** Array of basis function derivatives evaluated at the quadrature points.
    *
    * N0xQp0, N0yQp0, N0zQp0, N1xQp0, N1yQp0, N1zQp0, ... 
    * N0xQp1, N0yQp1, N0zQp1, N1xQp1, N1yQp1, N1zQp1, ...
    *
-   * size = numQuadPts * numCorners * cellDim
-   * index = iQuadPt*numCorners*cellDim + iBasis*cellDim + iDim
+   * size = numQuadPts * numBasis * cellDim
+   * index = iQuadPt*numBasis*cellDim + iBasis*cellDim + iDim
    */
-  double* _basisDeriv;
+  double_array _basisDeriv;
 
   /** Array of coordinates of quadrature points in reference cell.
    *
@@ -244,7 +246,7 @@
    * size = numQuadPts * cellDim
    * index = iQuadPts*cellDim + iDim
    */
-  double* _quadPtsRef;
+  double_array _quadPtsRef;
 
   /** Array of coordinates of quadrature points in cell (NOT reference cell).
    *
@@ -254,7 +256,7 @@
    * size = numQuadPts * spaceDim
    * index = iQuadPts*spaceDim + iDim
    */
-  double* _quadPts;
+  double_array _quadPts;
 
   /** Array of weights of quadrature points.
    *
@@ -262,7 +264,7 @@
    * size = numQuadPts
    * index = iQuadPt
    */
-  double* _quadWts;
+  double_array _quadWts;
 
   /** Array of Jacobian evaluated at quadrature points.
    *
@@ -273,7 +275,7 @@
    * size = numQuadPts*cellDim*spaceDim
    * index = iQuadPt*cellDim*spaceDim + iRow*spaceDim + iCol
    */
-  double* _jacobian;
+  double_array _jacobian;
 
   /** Array of Jacobian inverses evaluated at quadrature points.
    *
@@ -284,7 +286,7 @@
    * size = numQuadPts*spaceDim*cellDim
    * index = iQuadPt*spaceDim*cellDim + iRow*cellDim + iCol
    */
-  double* _jacobianInv;
+  double_array _jacobianInv;
 
   /** Array of determinant of Jacobian evaluated at quadrature points.
    *
@@ -293,10 +295,10 @@
    * size = numQuadPts
    * index = iQuadPt
    */
-  double* _jacobianDet;
+  double_array _jacobianDet;
 
   int _cellDim; ///< Number of dimensions in reference cell
-  int _numCorners; ///< Number of vertices in cell
+  int _numBasis; ///< Number of basis functions for cell
   int _numQuadPts; ///< Number of quadrature points
   int _spaceDim; ///< Number of dimensions in coordinates of cell vertices
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -30,42 +30,42 @@
 
 // Get basis fns evaluated at quadrature points.
 inline
-const double*
+const pylith::double_array&
 pylith::feassemble::Quadrature::basis(void) const {
   return _basis;
 }
 
 // Get derivatives of basis fns evaluated at quadrature points.
 inline
-const double*
+const pylith::double_array&
 pylith::feassemble::Quadrature::basisDeriv(void) const {
   return _basisDeriv;
 }
 
 // Get coordinates of quadrature points in cell (NOT reference cell).
 inline
-const double*
+const pylith::double_array&
 pylith::feassemble::Quadrature::quadPts(void) const {
   return _quadPts;
 }
 
 // Get weights of quadrature points.
 inline
-const double*
+const pylith::double_array&
 pylith::feassemble::Quadrature::quadWts(void) const {
   return _quadWts;
 }
 
 // Get Jacobian inverses evaluated at quadrature points.
 inline
-const double*
+const pylith::double_array&
 pylith::feassemble::Quadrature::jacobianInv(void) const {
   return _jacobianInv;
 }
 
 // Get determinants of Jacobian evaluated at quadrature points.
 inline
-const double*
+const pylith::double_array&
 pylith::feassemble::Quadrature::jacobianDet(void) const {
   return _jacobianDet;
 }
@@ -77,11 +77,11 @@
   return _cellDim;
 }
 
-// Get number of vertices in cell.
+// Get number of basis functions for cell.
 inline
 int
-pylith::feassemble::Quadrature::numCorners(void) const {
-  return _numCorners;
+pylith::feassemble::Quadrature::numBasis(void) const {
+  return _numBasis;
 }
 
 // Get number of quadrature points.

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -14,6 +14,8 @@
 
 #include "Quadrature1D.hh" // implementation of class methods
 
+#include "pylith/utils/array.hh" // USES double_array
+
 #include <assert.h> // USES assert()
 
 // ----------------------------------------------------------------------
@@ -39,52 +41,46 @@
 // Compute geometric quantities for a cell.
 void
 pylith::feassemble::Quadrature1D::computeGeometry(
-		       const ALE::Obj<Mesh>& mesh,
-		       const ALE::Obj<real_section_type>& coordinates,
-		       const Mesh::point_type& cell)
+			      const ALE::Obj<Mesh>& mesh,
+			      const ALE::Obj<real_section_type>& coordinates,
+			      const Mesh::point_type& cell)
 { // computeGeometry
   assert(1 == _cellDim);
   assert(1 == _spaceDim);
-  assert(0 != _basisDeriv);
-  assert(0 != _quadPtsRef);
-  assert(0 != _quadPts);
-  assert(0 != _quadWts);
-  assert(0 != _jacobian);
-  assert(0 != _jacobianInv);
 
   _resetGeometry();
-
+  
   // Get coordinates of cell's vertices
   const real_section_type::value_type* vertCoords = 
     mesh->restrict(coordinates, cell);
-  //assert(1 == coordinates.GetFiberDimensionByDepth(patch, 
-  //*vertices->begin(), 0));
-
+  //assert(1 == coordinates->GetFiberDimension(0));
+  
   // Loop over quadrature points
   for (int iQuadPt=0; iQuadPt < _numQuadPts; ++iQuadPt) {
-
+    
     // Compute coordinates of quadrature point in cell
     // x = sum[i=0,n-1] (Ni * xi)
-    for (int iVertex=0; iVertex < _numCorners; ++iVertex)
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis)
       _quadPts[iQuadPt] += 
-	_basis[iQuadPt*_numCorners+iVertex]*vertCoords[iVertex];
+	_basis[iQuadPt*_numBasis+iBasis]*vertCoords[iBasis];
 
     // Compute Jacobian at quadrature point
     // J = dx/dp = sum[i=0,n-1] (dNi/dp * xi)
-    for (int iVertex=0; iVertex < _numCorners; ++iVertex)
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis)
       _jacobian[iQuadPt] += 
-	_basisDeriv[iQuadPt*_numCorners+iVertex] * vertCoords[iVertex];
+	_basisDeriv[iQuadPt*_numBasis+iBasis] * vertCoords[iBasis];
 
     // Compute determinant of Jacobian at quadrature point
     // |J| = j00
     const double det = _jacobian[iQuadPt];
     _checkJacobianDet(det);
     _jacobianDet[iQuadPt] = _jacobian[iQuadPt];
-
+    
     // Compute inverse of Jacobian at quadrature point
     // Jinv = 1/j00
     _jacobianInv[iQuadPt] = 1.0/_jacobianDet[iQuadPt];
   } // for
 } // computeGeometry
 
+
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
   Quadrature* clone(void) const;
 
   void computeGeometry(const ALE::Obj<Mesh>& mesh,
-               const ALE::Obj<real_section_type>& coordinates,
+		       const ALE::Obj<real_section_type>& coordinates,
 		       const Mesh::point_type& cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,12 +45,6 @@
 { // computeGeometry
   assert(1 == _cellDim);
   assert(2 == _spaceDim);
-  assert(0 != _basisDeriv);
-  assert(0 != _quadPtsRef);
-  assert(0 != _quadPts);
-  assert(0 != _quadWts);
-  assert(0 != _jacobian);
-  assert(0 != _jacobianInv);
 
   _resetGeometry();
 
@@ -66,44 +60,41 @@
     // Compute coordinates of quadrature point in cell
     // x = sum[i=0,n-1] (Ni * xi)
     // y = sum[i=0,n-1] (Ni * yi)
-    for (int iVertex=0, iB=iQuadPt*_numCorners;
-	 iVertex < _numCorners;
-	 ++iVertex) {
-      const double basis = _basis[iB+iVertex];
-      for (int iDim=0, iQ=iQuadPt*_spaceDim, iV=iVertex*_spaceDim;
-	   iDim < _spaceDim;
-	   ++iDim)
-	_quadPts[iQ+iDim] +=  basis * vertCoords[iV+iDim];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+      const double basis = _basis[iQuadPt*_numBasis+iBasis];
+      for (int iDim=0; iDim < _spaceDim; ++iDim)
+	_quadPts[iQuadPt*_spaceDim+iDim] +=
+	  basis * vertCoords[iBasis*_spaceDim+iDim];
     } // for
     
     // Compute Jacobian at quadrature point
     // J = [dx/dp dy/dp]
     // dx/dp = sum[i=0,n-1] (dNi/dp * xi)
     // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
-    for (int iVertex=0, iB=iQuadPt*_numCorners;
-	 iVertex < _numCorners;
-	 ++iVertex) {
-      const double deriv = _basisDeriv[iB+iVertex];
-      for (int iDim=0, iJ=iQuadPt*_spaceDim, iV=iVertex*_spaceDim;
-	   iDim < _spaceDim;
-	   ++iDim)
-	_jacobian[iJ+iDim] += deriv * vertCoords[iV+iDim];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+      const double deriv = _basisDeriv[iQuadPt*_numBasis+iBasis];
+      for (int iDim=0; iDim < _spaceDim; ++iDim)
+	_jacobian[iQuadPt*_spaceDim+iDim] += 
+	  deriv * vertCoords[iBasis*_spaceDim+iDim];
     } // for
 
     // Compute determinant of Jacobian at quadrature point
     // |J| = sqrt(J transpose(J))
     double det = 0.0;
-    for (int iDim=0, iJ=iQuadPt*_spaceDim; iDim < _spaceDim; ++iDim)
-      det += _jacobian[iJ+iDim]*_jacobian[iJ+iDim];
+    for (int iDim=0; iDim < _spaceDim; ++iDim)
+      det += _jacobian[iQuadPt*_spaceDim+iDim] * 
+	_jacobian[iQuadPt*_spaceDim+iDim];
     det = sqrt(det);
     _checkJacobianDet(det);
     _jacobianDet[iQuadPt] = det;
 
     // Compute inverse of Jacobian at quadrature point
     // Jinv = 1.0/[J]
-    for (int iDim=0, iJ=iQuadPt*_spaceDim; iDim < _spaceDim; ++iDim)
-      _jacobianInv[iJ+iDim] = 1.0/_jacobian[iJ+iDim];
+    for (int iDim=0; iDim < _spaceDim; ++iDim)
+      _jacobianInv[iQuadPt*_spaceDim+iDim] = 
+	1.0 / _jacobian[iQuadPt*_spaceDim+iDim];
   } // for
 } // computeGeometry
 
+
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -50,7 +50,7 @@
    * @param cell Finite-element cell
    */
   void computeGeometry(const ALE::Obj<Mesh>& mesh,
-               const ALE::Obj<real_section_type>& coordinates,
+		       const ALE::Obj<real_section_type>& coordinates,
 		       const Mesh::point_type& cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,12 +45,6 @@
 { // computeGeometry
   assert(1 == _cellDim);
   assert(3 == _spaceDim);
-  assert(0 != _basisDeriv);
-  assert(0 != _quadPtsRef);
-  assert(0 != _quadPts);
-  assert(0 != _quadWts);
-  assert(0 != _jacobian);
-  assert(0 != _jacobianInv);
 
   _resetGeometry();
 
@@ -67,14 +61,11 @@
     // x = sum[i=0,n-1] (Ni * xi)
     // y = sum[i=0,n-1] (Ni * yi)
     // z = sum[i=0,n-1] (Ni * zi)
-    for (int iVertex=0, iB=iQuadPt*_numCorners;
-	 iVertex < _numCorners;
-	 ++iVertex) {
-      const double basis = _basis[iB+iVertex];
-      for (int iDim=0, iQ=iQuadPt*_spaceDim, iV=iVertex*_spaceDim;
-	   iDim < _spaceDim;
-	   ++iDim)
-	_quadPts[iQ+iDim] +=  basis * vertCoords[iV+iDim];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+      const double basis = _basis[iQuadPt*_numBasis+iBasis];
+      for (int iDim=0; iDim < _spaceDim; ++iDim)
+	_quadPts[iQuadPt*_spaceDim+iDim] += 
+	  basis * vertCoords[iBasis*_spaceDim+iDim];
     } // for
     
     // Compute Jacobian at quadrature point
@@ -82,30 +73,30 @@
     // dx/dp = sum[i=0,n-1] (dNi/dp * xi)
     // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
     // dz/dp = sum[i=0,n-1] (dNi/dp * zi)
-    for (int iVertex=0, iB=iQuadPt*_numCorners;
-	 iVertex < _numCorners;
-	 ++iVertex) {
-      const double deriv = _basisDeriv[iB+iVertex];
-      for (int iDim=0, iJ=iQuadPt*_spaceDim, iV=iVertex*_spaceDim;
-	   iDim < _spaceDim;
-	   ++iDim)
-	_jacobian[iJ+iDim] += deriv * vertCoords[iV+iDim];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+      const double deriv = _basisDeriv[iQuadPt*_numBasis+iBasis];
+      for (int iDim=0; iDim < _spaceDim; ++iDim)
+	_jacobian[iQuadPt*_spaceDim+iDim] += 
+	  deriv * vertCoords[iBasis*_spaceDim+iDim];
     } // for
 
     // Compute determinant of Jacobian at quadrature point
     // |J| = sqrt(J transpose(J))
     double det = 0.0;
-    for (int iDim=0, iJ=iQuadPt*_spaceDim; iDim < _spaceDim; ++iDim)
-      det += _jacobian[iJ+iDim]*_jacobian[iJ+iDim];
+    for (int iDim=0; iDim < _spaceDim; ++iDim)
+      det += _jacobian[iQuadPt*_spaceDim+iDim] * 
+	_jacobian[iQuadPt*_spaceDim+iDim];
     det = sqrt(det);
     _checkJacobianDet(det);
     _jacobianDet[iQuadPt] = det;
 
     // Compute inverse of Jacobian at quadrature point
     // Jinv = 1.0/[J]
-    for (int iDim=0, iJ=iQuadPt*_spaceDim; iDim < _spaceDim; ++iDim)
-      _jacobianInv[iJ+iDim] = 1.0/_jacobian[iJ+iDim];
+    for (int iDim=0; iDim < _spaceDim; ++iDim)
+      _jacobianInv[iQuadPt*_spaceDim+iDim] = 
+	1.0 / _jacobian[iQuadPt*_spaceDim+iDim];
   } // for
 } // computeGeometry
 
+
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -50,7 +50,7 @@
    * @param cell Finite-element cell
    */
   void computeGeometry(const ALE::Obj<Mesh>& mesh,
-               const ALE::Obj<real_section_type>& coordinates,
+		       const ALE::Obj<real_section_type>& coordinates,
 		       const Mesh::point_type& cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,12 +45,6 @@
 { // computeGeometry
   assert(2 == _cellDim);
   assert(2 == _spaceDim);
-  assert(0 != _basisDeriv);
-  assert(0 != _quadPtsRef);
-  assert(0 != _quadPts);
-  assert(0 != _quadWts);
-  assert(0 != _jacobian);
-  assert(0 != _jacobianInv);
 
   _resetGeometry();
 
@@ -66,14 +60,11 @@
     // Compute coordinates of quadrature point in cell
     // x = sum[i=0,n-1] (Ni * xi)
     // y = sum[i=0,n-1] (Ni * yi)
-    for (int iVertex=0, iB=iQuadPt*_numCorners;
-	 iVertex < _numCorners;
-	 ++iVertex) {
-      const double basis = _basis[iB+iVertex];
-      for (int iDim=0, iQ=iQuadPt*_spaceDim, iV=iVertex*_spaceDim;
-	   iDim < _spaceDim;
-	   ++iDim)
-	_quadPts[iQ+iDim] +=  basis * vertCoords[iV+iDim];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+      const double basis = _basis[iQuadPt*_numBasis+iBasis];
+      for (int iDim=0; iDim < _spaceDim; ++iDim)
+	_quadPts[iQuadPt*_spaceDim+iDim] += 
+	  basis * vertCoords[iBasis*_spaceDim+iDim];
     } // for
     
     // Compute Jacobian at quadrature point
@@ -83,16 +74,13 @@
     // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
     // dx/dq = sum[i=0,n-1] (dNi/dq * xi)
     // dy/dq = sum[i=0,n-1] (dNi/dq * yi)
-    for (int iVertex=0; iVertex < _numCorners; ++iVertex)
-      for (int iRow=0, 
-	     iB=iQuadPt*_numCorners*_spaceDim+iVertex*_cellDim;
-	   iRow < _cellDim;
-	   ++iRow) {
-	const double deriv = _basisDeriv[iB+iRow];
-	for (int iCol=0, iJ=iQuadPt*_cellDim*_spaceDim + iRow*_spaceDim;
-	     iCol < _spaceDim;
-	     ++iCol)
-	  _jacobian[iJ+iCol] += deriv * vertCoords[iVertex*_spaceDim+iCol];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis)
+      for (int iRow=0; iRow < _cellDim; ++iRow) {
+	const double deriv = 
+	  _basisDeriv[iQuadPt*_numBasis*_spaceDim+iBasis*_cellDim+iRow];
+	for (int iCol=0; iCol < _spaceDim; ++iCol)
+	  _jacobian[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
+	    deriv * vertCoords[iBasis*_spaceDim+iCol];
       } // for
   
     // Compute determinant of Jacobian at quadrature point
@@ -117,4 +105,5 @@
   } // for
 } // computeGeometry
 
+
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -50,7 +50,7 @@
    * @param cell Finite-element cell
    */
   void computeGeometry(const ALE::Obj<Mesh>& mesh,
-               const ALE::Obj<real_section_type>& coordinates,
+		       const ALE::Obj<real_section_type>& coordinates,
 		       const Mesh::point_type& cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -48,12 +48,6 @@
 { // computeGeometry
   assert(2 == _cellDim);
   assert(3 == _spaceDim);
-  assert(0 != _basisDeriv);
-  assert(0 != _quadPtsRef);
-  assert(0 != _quadPts);
-  assert(0 != _quadWts);
-  assert(0 != _jacobian);
-  assert(0 != _jacobianInv);
 
   _resetGeometry();
 
@@ -70,14 +64,11 @@
     // x = sum[i=0,n-1] (Ni * xi)
     // y = sum[i=0,n-1] (Ni * yi)
     // z = sum[i=0,n-1] (Ni * zi)
-    for (int iVertex=0, iB=iQuadPt*_numCorners;
-	 iVertex < _numCorners;
-	 ++iVertex) {
-      const double basis = _basis[iB+iVertex];
-      for (int iDim=0, iQ=iQuadPt*_spaceDim, iV=iVertex*_spaceDim;
-	   iDim < _spaceDim;
-	   ++iDim)
-	_quadPts[iQ+iDim] +=  basis * vertCoords[iV+iDim];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+      const double basis = _basis[iQuadPt*_numBasis+iBasis];
+      for (int iDim=0; iDim < _spaceDim; ++iDim)
+	_quadPts[iQuadPt*_spaceDim+iDim] += 
+	  basis * vertCoords[iBasis*_spaceDim+iDim];
     } // for
     
     // Compute Jacobian at quadrature point
@@ -89,18 +80,15 @@
     // dx/dq = sum[i=0,n-1] (dNi/dq * xi)
     // dy/dq = sum[i=0,n-1] (dNi/dq * yi)
     // dz/dq = sum[i=0,n-1] (dNi/dq * zi)
-    for (int iVertex=0; iVertex < _numCorners; ++iVertex)
-      for (int iRow=0, 
-	     iB=iQuadPt*_numCorners*_cellDim+iVertex*_cellDim;
-	   iRow < _cellDim;
-	   ++iRow) {
-      const double deriv = _basisDeriv[iB+iRow];
-      for (int iCol=0, iJ=iQuadPt*_cellDim*_spaceDim + iRow*_spaceDim;
-	     iCol < _spaceDim;
-	     ++iCol)
-	_jacobian[iJ+iCol] += deriv * vertCoords[iVertex*+_spaceDim+iCol];
-    } // for
-
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis)
+      for (int iRow=0; iRow < _cellDim; ++iRow) {
+	const double deriv = 
+	  _basisDeriv[iQuadPt*_numBasis*_cellDim+iBasis*_cellDim+iRow];
+	for (int iCol=0; iCol < _spaceDim; ++iCol)
+	  _jacobian[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
+	    deriv * vertCoords[iBasis*+_spaceDim+iCol];
+      } // for
+    
     // Compute determinant of Jacobian at quadrature point
     // |J| = sqrt(J transpose(J))
     const int iJ = iQuadPt*_cellDim*_spaceDim;
@@ -149,7 +137,7 @@
 	// Jinv21 = 1/d12 J01
 	_jacobianInv[iJ+4] = -_jacobian[i11] / d12; // Jinv20
 	_jacobianInv[iJ+5] = _jacobian[i01] / d12; // Jinv21
-
+	
       } else if (fabs(d02) > _minJacobian) {
 	// Jinv20 = 1/d02 -J10
 	// Jinv21 = 1/d02 J00
@@ -193,4 +181,5 @@
   } // for
 } // computeGeometry
 
+
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -50,7 +50,7 @@
    * @param cell Finite-element cell
    */
   void computeGeometry(const ALE::Obj<Mesh>& mesh,
-               const ALE::Obj<real_section_type>& coordinates,
+		       const ALE::Obj<real_section_type>& coordinates,
 		       const Mesh::point_type& cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,12 +45,6 @@
 { // computeGeometry
   assert(3 == _cellDim);
   assert(3 == _spaceDim);
-  assert(0 != _basisDeriv);
-  assert(0 != _quadPtsRef);
-  assert(0 != _quadPts);
-  assert(0 != _quadWts);
-  assert(0 != _jacobian);
-  assert(0 != _jacobianInv);
 
   _resetGeometry();
 
@@ -67,14 +61,11 @@
     // x = sum[i=0,n-1] (Ni * xi)
     // y = sum[i=0,n-1] (Ni * yi)
     // z = sum[i=0,n-1] (Ni * zi)
-    for (int iVertex=0, iB=iQuadPt*_numCorners;
-	 iVertex < _numCorners;
-	 ++iVertex) {
-      const double basis = _basis[iB+iVertex];
-      for (int iDim=0, iQ=iQuadPt*_spaceDim, iV=iVertex*_spaceDim;
-	   iDim < _spaceDim;
-	   ++iDim)
-	_quadPts[iQ+iDim] +=  basis * vertCoords[iV+iDim];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+      const double basis = _basis[iQuadPt*_numBasis+iBasis];
+      for (int iDim=0; iDim < _spaceDim; ++iDim)
+	_quadPts[iQuadPt*_spaceDim+iDim] += 
+	  basis * vertCoords[iBasis*_spaceDim+iDim];
     } // for
     
     // Compute Jacobian at quadrature point
@@ -90,16 +81,13 @@
     // dx/dr = sum[i=0,n-1] (dNi/dr * xi)
     // dy/dr = sum[i=0,n-1] (dNi/dr * yi)
     // dz/dr = sum[i=0,n-1] (dNi/dr * zi)
-    for (int iVertex=0; iVertex < _numCorners; ++iVertex)
-      for (int iRow=0, 
-	     iB=iQuadPt*_numCorners*_spaceDim+iVertex*_cellDim;
-	   iRow < _cellDim;
-	   ++iRow) {
-	const double deriv = _basisDeriv[iB+iRow];
-	for (int iCol=0, iJ=iQuadPt*_cellDim*_spaceDim + iRow*_spaceDim;
-	     iCol < _spaceDim;
-	     ++iCol)
-	  _jacobian[iJ+iCol] += deriv * vertCoords[iVertex*_spaceDim+iCol];
+    for (int iBasis=0; iBasis < _numBasis; ++iBasis)
+      for (int iRow=0; iRow < _cellDim; ++iRow) {
+	const double deriv = 
+	  _basisDeriv[iQuadPt*_numBasis*_spaceDim+iBasis*_cellDim+iRow];
+	for (int iCol=0; iCol < _spaceDim; ++iCol)
+	  _jacobian[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] += 
+	    deriv * vertCoords[iBasis*_spaceDim+iCol];
       } // for
 
     // Compute determinant of Jacobian at quadrature point
@@ -125,7 +113,7 @@
 		      _jacobian[i11]*_jacobian[i20]);
     _checkJacobianDet(det);
     _jacobianDet[iQuadPt] = det;
-
+    
     // Compute inverse of Jacobian at quadrature point
     _jacobianInv[i00] = (_jacobian[i11]*_jacobian[i22] -
 			 _jacobian[i12]*_jacobian[i21]) / det;
@@ -148,4 +136,5 @@
   } // for
 } // computeGeometry
 
+
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -50,7 +50,7 @@
    * @param cell Finite-element cell
    */
   void computeGeometry(const ALE::Obj<Mesh>& mesh,
-               const ALE::Obj<real_section_type>& coordinates,
+		       const ALE::Obj<real_section_type>& coordinates,
 		       const Mesh::point_type& cell);
 
 // PROTECTED METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -119,7 +119,7 @@
     // Compute geometry information for current cell
     quadrature->computeGeometry(mesh, coordinates, *cellIter);
 
-    const double* quadPts = quadrature->quadPts();
+    const double_array& quadPts = quadrature->quadPts();
     const int spaceDim = quadrature->spaceDim();
 
     // Loop over quadrature points in cell and query database

Modified: short/3D/PyLith/trunk/libsrc/utils/array.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/array.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/libsrc/utils/array.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -22,6 +22,8 @@
 #if !defined(pylith_utils_array_hh)
 #define pylith_utils_array_hh
 
+#include "arrayfwd.hh"
+
 #include <vector>
 #include <valarray>
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -26,59 +26,59 @@
 pylith::feassemble::TestQuadrature::testClone(void)
 { // testClone
   // Semi-random values manually set to check cloning
-  const double minJacobian = 1.0;
-  const int cellDim = 1;
-  const int numCorners = 2;
-  const int numQuadPts = 1;
-  const int spaceDim = 1;
-  const double basis[] = { 0.2, 0.4 };
-  const double basisDeriv[] = { 0.8, 1.6 };
-  const double quadPtsRef[] = { 3.2 };
-  const double quadWts[] = { 6.4 };
-  const double quadPts[] = { 12.8 };
-  const double jacobian[] = { 2.56 };
-  const double jacobianInv[] = { 5.12 };
-  const double jacobianDet[] = { 10.24 };
+  const double minJacobianE = 1.0;
+  const int cellDimE = 1;
+  const int numBasisE = 2;
+  const int numQuadPtsE = 1;
+  const int spaceDimE = 1;
+  const double basisE[] = { 0.2, 0.4 };
+  const double basisDerivE[] = { 0.8, 1.6 };
+  const double quadPtsRefE[] = { 3.2 };
+  const double quadWtsE[] = { 6.4 };
+  const double quadPtsE[] = { 12.8 };
+  const double jacobianE[] = { 2.56 };
+  const double jacobianInvE[] = { 5.12 };
+  const double jacobianDetE[] = { 10.24 };
 
   // Set values
   Quadrature1D qOrig;
-  qOrig._minJacobian = minJacobian;
-  qOrig._cellDim = cellDim;
-  qOrig._numCorners = numCorners;
-  qOrig._numQuadPts = numQuadPts;
-  qOrig._spaceDim = spaceDim;
+  qOrig._minJacobian = minJacobianE;
+  qOrig._cellDim = cellDimE;
+  qOrig._numBasis = numBasisE;
+  qOrig._numQuadPts = numQuadPtsE;
+  qOrig._spaceDim = spaceDimE;
 
-  int size = 2;
-  qOrig._basis = (size > 0) ? new double[size] : 0;
-  memcpy(qOrig._basis, basis, size*sizeof(double));
+  size_t size = 2;
+  qOrig._basis.resize(size);
+  memcpy(&qOrig._basis[0], basisE, size*sizeof(double));
   
   size = 2;
-  qOrig._basisDeriv = (size > 0) ? new double[size] : 0;
-  memcpy(qOrig._basisDeriv, basisDeriv, size*sizeof(double));
+  qOrig._basisDeriv.resize(size);
+  memcpy(&qOrig._basisDeriv[0], basisDerivE, size*sizeof(double));
 
   size = 1;
-  qOrig._quadPtsRef = (size > 0) ? new double[size] : 0;
-  memcpy(qOrig._quadPtsRef, quadPtsRef, size*sizeof(double));
+  qOrig._quadPtsRef.resize(size);
+  memcpy(&qOrig._quadPtsRef[0], quadPtsRefE, size*sizeof(double));
 
   size = 1;
-  qOrig._quadWts = (size > 0) ? new double[size] : 0;
-  memcpy(qOrig._quadWts, quadWts, size*sizeof(double));
+  qOrig._quadWts.resize(size);
+  memcpy(&qOrig._quadWts[0], quadWtsE, size*sizeof(double));
 
   size = 1;
-  qOrig._quadPts = (size > 0) ? new double[size] : 0;
-  memcpy(qOrig._quadPts, quadPts, size*sizeof(double));
+  qOrig._quadPts.resize(size);
+  memcpy(&qOrig._quadPts[0], quadPtsE, size*sizeof(double));
 
   size = 1;
-  qOrig._jacobian = (size > 0) ? new double[size] : 0;
-  memcpy(qOrig._jacobian, jacobian, size*sizeof(double));
+  qOrig._jacobian.resize(size);
+  memcpy(&qOrig._jacobian[0], jacobianE, size*sizeof(double));
 
   size = 1;
-  qOrig._jacobianInv = (size > 0) ? new double[size] : 0;
-  memcpy(qOrig._jacobianInv, jacobianInv, size*sizeof(double));
+  qOrig._jacobianInv.resize(size);
+  memcpy(&qOrig._jacobianInv[0], jacobianInvE, size*sizeof(double));
 
   size = 1;
-  qOrig._jacobianDet = (size > 0) ? new double[size] : 0;
-  memcpy(qOrig._jacobianDet, jacobianDet, size*sizeof(double));
+  qOrig._jacobianDet.resize(size);
+  memcpy(&qOrig._jacobianDet[0], jacobianDetE, size*sizeof(double));
 
   // Clone
   const Quadrature* qCopy = qOrig.clone();
@@ -86,46 +86,59 @@
   // Check clone
   CPPUNIT_ASSERT(0 != qCopy);
 
-  CPPUNIT_ASSERT_EQUAL(minJacobian, qCopy->_minJacobian);
-  CPPUNIT_ASSERT_EQUAL(cellDim, qCopy->cellDim());
-  CPPUNIT_ASSERT_EQUAL(numCorners, qCopy->numCorners());
-  CPPUNIT_ASSERT_EQUAL(numQuadPts, qCopy->numQuadPts());
-  CPPUNIT_ASSERT_EQUAL(spaceDim, qCopy->spaceDim());
+  CPPUNIT_ASSERT_EQUAL(minJacobianE, qCopy->_minJacobian);
+  CPPUNIT_ASSERT_EQUAL(cellDimE, qCopy->cellDim());
+  CPPUNIT_ASSERT_EQUAL(numBasisE, qCopy->numBasis());
+  CPPUNIT_ASSERT_EQUAL(numQuadPtsE, qCopy->numQuadPts());
+  CPPUNIT_ASSERT_EQUAL(spaceDimE, qCopy->spaceDim());
 
-  CPPUNIT_ASSERT(0 != qCopy->basis());
-  size = numCorners * numQuadPts;
+  const double_array& basis = qCopy->basis();
+  size = numBasisE * numQuadPtsE;
+  CPPUNIT_ASSERT_EQUAL(size, basis.size());
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(basis[i], qCopy->basis()[i]);
+    CPPUNIT_ASSERT_EQUAL(basisE[i], basis[i]);
 
-  CPPUNIT_ASSERT(0 != qCopy->basisDeriv());
-  size = numCorners * numQuadPts * spaceDim;
+  const double_array& basisDeriv = qCopy->basisDeriv();
+  size = numBasisE * numQuadPtsE * spaceDimE;
+  CPPUNIT_ASSERT_EQUAL(size, basisDeriv.size());
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(basisDeriv[i], qCopy->basisDeriv()[i]);
+    CPPUNIT_ASSERT_EQUAL(basisDerivE[i], basisDeriv[i]);
 
-  CPPUNIT_ASSERT(0 != qCopy->_quadPtsRef);
-  size = numQuadPts * cellDim;
+  const double_array& quadPtsRef = qCopy->_quadPtsRef;
+  size = numQuadPtsE * cellDimE;
+  CPPUNIT_ASSERT_EQUAL(size, quadPtsRef.size());
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(quadPtsRef[i], qCopy->_quadPtsRef[i]);
+    CPPUNIT_ASSERT_EQUAL(quadPtsRefE[i], quadPtsRef[i]);
 
-  CPPUNIT_ASSERT(0 != qCopy->quadWts());
-  size = numQuadPts;
+  const double_array& quadWts = qCopy->quadWts();
+  size = numQuadPtsE;
+  CPPUNIT_ASSERT_EQUAL(size, quadWts.size());
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(quadWts[i], qCopy->quadWts()[i]);
+    CPPUNIT_ASSERT_EQUAL(quadWtsE[i], quadWts[i]);
 
+  const double_array& quadPts = qCopy->quadPts();
   size = 1;
+  CPPUNIT_ASSERT_EQUAL(size, quadPts.size());
+  for (int i=0; i < size; ++i)
+    CPPUNIT_ASSERT_EQUAL(quadPtsE[i], quadPts[i]);
 
-  CPPUNIT_ASSERT(0 != qCopy->quadPts());
+  const double_array& jacobian = qCopy->_jacobian;
+  size = 1;
+  CPPUNIT_ASSERT_EQUAL(size, jacobian.size());
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(quadPts[i], qCopy->quadPts()[i]);
-  CPPUNIT_ASSERT(0 != qCopy->_jacobian);
+    CPPUNIT_ASSERT_EQUAL(jacobianE[i], jacobian[i]);
+
+  const double_array& jacobianInv = qCopy->jacobianInv();
+  size = 1;
+  CPPUNIT_ASSERT_EQUAL(size, jacobianInv.size());
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(jacobian[i], qCopy->_jacobian[i]);
-  CPPUNIT_ASSERT(0 != qCopy->jacobianInv());
+    CPPUNIT_ASSERT_EQUAL(jacobianInvE[i], jacobianInvE[i]);
+
+  const double_array& jacobianDet = qCopy->jacobianDet();
+  size = 1;
+  CPPUNIT_ASSERT_EQUAL(size, jacobianDet.size());
   for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(jacobianInv[i], qCopy->jacobianInv()[i]);
-  CPPUNIT_ASSERT(0 != qCopy->jacobianDet());
-  for (int i=0; i < size; ++i)
-    CPPUNIT_ASSERT_EQUAL(jacobianDet[i], qCopy->jacobianDet()[i]);
+    CPPUNIT_ASSERT_EQUAL(jacobianDetE[i], jacobianDet[i]);
 
   delete qCopy; qCopy = 0;
 } // testCopy
@@ -148,7 +161,7 @@
 { // initialize
   
   const int cellDim = 1;
-  const int numCorners = 2;
+  const int numBasis = 2;
   const int numQuadPts = 1;
   const int spaceDim = 1;
   const double basis[] = { 0.5, 0.5 };
@@ -159,18 +172,18 @@
 
   Quadrature1D q;
   q.initialize(basis, basisDeriv, quadPtsRef, quadWts,
-	       cellDim, numCorners, numQuadPts, spaceDim);
+	       cellDim, numBasis, numQuadPts, spaceDim);
   
   CPPUNIT_ASSERT_EQUAL(cellDim, q._cellDim);
-  CPPUNIT_ASSERT_EQUAL(numCorners, q._numCorners);
+  CPPUNIT_ASSERT_EQUAL(numBasis, q._numBasis);
   CPPUNIT_ASSERT_EQUAL(numQuadPts, q._numQuadPts);
   CPPUNIT_ASSERT_EQUAL(spaceDim, q._spaceDim);
 
-  int size = numCorners * numQuadPts;
+  size_t size = numBasis * numQuadPts;
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(basis[i], q._basis[i]);
 
-  size = numCorners * numQuadPts * spaceDim;
+  size = numBasis * numQuadPts * spaceDim;
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_EQUAL(basisDeriv[i], q._basisDeriv[i]);
 
@@ -183,10 +196,17 @@
     CPPUNIT_ASSERT_EQUAL(quadWts[i], q._quadWts[i]);
 
   // Make sure Jacobian stuff has been allocated
-  CPPUNIT_ASSERT(0 != q._jacobian);
-  CPPUNIT_ASSERT(0 != q._jacobianInv);
-  CPPUNIT_ASSERT(0 != q._jacobianDet);
-  CPPUNIT_ASSERT(0 != q._quadPts);
+  size = numQuadPts*cellDim*spaceDim;
+  CPPUNIT_ASSERT_EQUAL(size, q._jacobian.size());
+  
+  size = numQuadPts*spaceDim*cellDim;
+  CPPUNIT_ASSERT_EQUAL(size, q._jacobianInv.size());
+  
+  size = numQuadPts;
+  CPPUNIT_ASSERT_EQUAL(size, q._jacobianDet.size());
+  
+  size = numQuadPts*spaceDim;
+  CPPUNIT_ASSERT_EQUAL(size, q._quadPts.size());
 } // initialize
 
 // ----------------------------------------------------------------------
@@ -197,7 +217,7 @@
 					    const QuadratureData& data) const
 { // testComputeGeometry
   const int cellDim = data.cellDim;
-  const int numCorners = data.numCorners;
+  const int numBasis = data.numBasis;
   const int numQuadPts = data.numQuadPts;
   const int spaceDim = data.spaceDim;
   const double* basis = data.basis;
@@ -216,20 +236,9 @@
 
   const double minJacobian = 1.0e-06;
 
-  CPPUNIT_ASSERT(0 != basis);
-  CPPUNIT_ASSERT(0 != basisDeriv);
-  CPPUNIT_ASSERT(0 != quadPtsRef);
-  CPPUNIT_ASSERT(0 != quadWts);
-  CPPUNIT_ASSERT(0 != vertCoords);
-  CPPUNIT_ASSERT(0 != cells);
-  CPPUNIT_ASSERT(0 != quadPts);
-  CPPUNIT_ASSERT(0 != jacobian);
-  CPPUNIT_ASSERT(0 != jacobianInv);
-  CPPUNIT_ASSERT(0 != jacobianDet);
-
   pQuad->minJacobian(minJacobian);
   pQuad->initialize(basis, basisDeriv, quadPtsRef, quadWts,
-		    cellDim, numCorners, numQuadPts, spaceDim);
+		    cellDim, numBasis, numQuadPts, spaceDim);
 
   // Create mesh with test cell
   typedef ALE::Mesh Mesh;
@@ -239,7 +248,7 @@
 
   const bool interpolate = false;
   ALE::SieveBuilder<Mesh>::buildTopology(sieve, cellDim, numCells,
-		     (int*) cells, numVertices, interpolate, numCorners);
+		     (int*) cells, numVertices, interpolate, numBasis);
   mesh->setSieve(sieve);
   mesh->stratify();
   ALE::SieveBuilder<Mesh>::buildCoordinates(mesh, spaceDim, vertCoords);
@@ -255,23 +264,19 @@
 
   const double tolerance = 1.0e-06;
   int size = numQuadPts * spaceDim;
-  CPPUNIT_ASSERT(0 != pQuad->_quadPts);
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(quadPts[i], pQuad->_quadPts[i], tolerance);
 
   size = numQuadPts * cellDim * spaceDim;
-  CPPUNIT_ASSERT(0 != pQuad->_jacobian);
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobian[i], pQuad->_jacobian[i], tolerance);
 
   size = numQuadPts * spaceDim * cellDim;
-  CPPUNIT_ASSERT(0 != pQuad->_jacobianInv);
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianInv[i], pQuad->_jacobianInv[i], 
 				 tolerance);
 
   size = numQuadPts;
-  CPPUNIT_ASSERT(0 != pQuad->_jacobianDet);
   for (int i=0; i < size; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianDet[i], pQuad->_jacobianDet[i], 
 				 tolerance);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -59,7 +59,7 @@
     self.spaceDim = None
     self.numCells = None
     self.cellDim = None
-    self.numCorners = None
+    self.numBasis = None
     self.numQuadPts = None
     self.fiberDim = None
 
@@ -106,7 +106,7 @@
     q = self.quadrature
     q.calculateBasis()
     self.spaceDim = q.spaceDim
-    self.numCorners = q.numCorners
+    self.numBasis = q.numBasis
     self.cellDim = q.cellDim
     self.numQuadPts = q.numQuadPts
     self.basis = q.basis
@@ -142,8 +142,8 @@
                         format="%d")
     self.data.addScalar(vtype="int", name="_cellDim", value=self.cellDim,
                         format="%d")
-    self.data.addScalar(vtype="int", name="_numCorners", value=
-                        self.numCorners,
+    self.data.addScalar(vtype="int", name="_numBasis", value=
+                        self.numBasis,
                         format="%d")
     self.data.addScalar(vtype="int", name="_numQuadPts",
                         value=self.numQuadPts,

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -19,7 +19,7 @@
   spaceDim(0),
   numCells(0),
   cellDim(0),
-  numCorners(0),
+  numBasis(0),
   numQuadPts(0),
   fiberDim(0),
   vertices(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -38,7 +38,7 @@
   int spaceDim; ///< Number of dimensions in vertex coordinates
   int numCells; ///< Number of cells
   int cellDim; ///< Number of dimensions associated with cell
-  int numCorners; ///< Number of vertices in cell
+  int numBasis; ///< Number of vertices in cell
   int numQuadPts; ///< Number of quadrature points
   int fiberDim; ///< Number of values per vertex in field
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DLinear.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DLinear.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::IntegratorDataInertia1DLinear::_cellDim = 1;
 
-const int pylith::feassemble::IntegratorDataInertia1DLinear::_numCorners = 2;
+const int pylith::feassemble::IntegratorDataInertia1DLinear::_numBasis = 2;
 
 const int pylith::feassemble::IntegratorDataInertia1DLinear::_numQuadPts = 1;
 
@@ -84,7 +84,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   fiberDim = _fiberDim;
   vertices = const_cast<double*>(_vertices);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DLinear.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DLinear.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DQuadratic.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DQuadratic.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::IntegratorDataInertia1DQuadratic::_cellDim = 1;
 
-const int pylith::feassemble::IntegratorDataInertia1DQuadratic::_numCorners = 3;
+const int pylith::feassemble::IntegratorDataInertia1DQuadratic::_numBasis = 3;
 
 const int pylith::feassemble::IntegratorDataInertia1DQuadratic::_numQuadPts = 2;
 
@@ -83,7 +83,7 @@
   2.50000000e-01,
  -1.25000000e-01,
   2.50000000e-01,
-  1.00000000e+00,
+  1.00000000e-00,
   2.50000000e-01,
  -1.25000000e-01,
   2.50000000e-01,
@@ -102,7 +102,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   fiberDim = _fiberDim;
   vertices = const_cast<double*>(_vertices);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DQuadratic.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia1DQuadratic.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_cellDim = 2;
 
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_numCorners = 3;
+const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_numBasis = 3;
 
 const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_numQuadPts = 1;
 
@@ -111,7 +111,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   fiberDim = _fiberDim;
   vertices = const_cast<double*>(_vertices);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_cellDim = 2;
 
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_numCorners = 3;
+const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_numBasis = 3;
 
 const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_numQuadPts = 1;
 
@@ -136,7 +136,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   fiberDim = _fiberDim;
   vertices = const_cast<double*>(_vertices);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_cellDim = 2;
 
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_numCorners = 3;
+const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_numBasis = 3;
 
 const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_numQuadPts = 1;
 
@@ -167,7 +167,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   fiberDim = _fiberDim;
   vertices = const_cast<double*>(_vertices);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DLinear.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DLinear.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::IntegratorDataInertia3DLinear::_cellDim = 3;
 
-const int pylith::feassemble::IntegratorDataInertia3DLinear::_numCorners = 4;
+const int pylith::feassemble::IntegratorDataInertia3DLinear::_numBasis = 4;
 
 const int pylith::feassemble::IntegratorDataInertia3DLinear::_numQuadPts = 1;
 
@@ -137,7 +137,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   fiberDim = _fiberDim;
   vertices = const_cast<double*>(_vertices);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DLinear.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DLinear.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DQuadratic.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DQuadratic.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::IntegratorDataInertia3DQuadratic::_cellDim = 3;
 
-const int pylith::feassemble::IntegratorDataInertia3DQuadratic::_numCorners = 10;
+const int pylith::feassemble::IntegratorDataInertia3DQuadratic::_numBasis = 10;
 
 const int pylith::feassemble::IntegratorDataInertia3DQuadratic::_numQuadPts = 4;
 
@@ -464,7 +464,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   fiberDim = _fiberDim;
   vertices = const_cast<double*>(_vertices);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DQuadratic.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia3DQuadratic.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -62,12 +62,12 @@
     self.valsLumped = numpy.zeros( (self.fiberDim*self.numVertices,),
                                    dtype=numpy.float64)
 
-    n = numpy.zeros( (self.fiberDim, self.fiberDim*self.numCorners),
+    n = numpy.zeros( (self.fiberDim, self.fiberDim*self.numBasis),
                      dtype=numpy.float64)
     
     for cell in self.cells:
-      cellMatrix = numpy.zeros( (self.fiberDim*self.numCorners,
-                                 self.fiberDim*self.numCorners),
+      cellMatrix = numpy.zeros( (self.fiberDim*self.numBasis,
+                                 self.fiberDim*self.numBasis),
                                 dtype=numpy.float64)
 
       vertices = self.vertices[cell, :]
@@ -76,7 +76,7 @@
       density = 1.0
       for iQuad in xrange(self.numQuadPts):
         n *= 0.0
-        for iBasis in xrange(self.numCorners):
+        for iBasis in xrange(self.numBasis):
           for iDim in xrange(self.fiberDim):
             n[iDim, iBasis*self.fiberDim+iDim] = self.basis[iQuad, iBasis]
 
@@ -97,8 +97,8 @@
     (nrows, ncols) = matrix.shape
     lumped = numpy.zeros( (ncols), dtype=numpy.float64)
     
-    for iVertex in xrange(self.numCorners):
-      i = numpy.asarray(range(self.numCorners))
+    for iVertex in xrange(self.numBasis):
+      i = numpy.asarray(range(self.numBasis))
       for iDim in xrange(self.fiberDim):
         iR = iVertex * self.fiberDim + iDim
         indices = self.fiberDim * i + iDim

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DQuadratic.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DQuadratic.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -46,7 +46,7 @@
     
     self.vertices = numpy.array( [[-0.25], [0.875], [2.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     self.fieldIn = numpy.array( [[1.2], [1.5], [-0.8]], dtype=numpy.float64)
     return
   

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DOne.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DOne.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DOne.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -49,7 +49,7 @@
                                   [ 3.0,  0.5,  0.0],
                                   [-1.0,  2.0,  4.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     self.fieldIn = numpy.array( [[1.2], [0.1], [-0.3],
                                  [0.5], [-0.3], [1.2],
                                  [1.1], [0.5], [0.8]], dtype=numpy.float64)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DThree.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DThree.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DThree.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -51,7 +51,7 @@
                                   [-3.4, -0.5,  3.6]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2],
-                               [2, 3, 0]], dtype=numpy.Int32)
+                               [2, 3, 0]], dtype=numpy.int32)
     self.fieldIn = numpy.array( [[ 1.2], [ 0.1], [-0.3],
                                  [ 0.2], [-0.8], [ 1.2],
                                  [ 1.3], [-0.2], [ 1.7],

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DTwo.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DTwo.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DTwo.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -52,7 +52,7 @@
                                   [ 5.5,  3.0,  0.5]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2],
-                               [3, 4, 1]], dtype=numpy.Int32)
+                               [3, 4, 1]], dtype=numpy.int32)
     self.fieldIn = numpy.array( [[ 1.2], [ 0.1], [-0.3],
                                  [ 0.2], [-0.8], [ 1.2],
                                  [-0.9], [-0.7], [ 0.5],

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia3DLinear.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia3DLinear.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -48,7 +48,7 @@
                                   [ 2.0, -0.5, -0.4],
                                   [ 1.0, -0.1, -0.3],
                                   [-0.2,  0.5,  2.0]], dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2, 3]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2, 3]], dtype=numpy.int32)
     self.fieldIn = numpy.array( [[ 1.2], [ 0.1], [-0.3],
                                  [ 0.2], [-0.8], [ 1.2],
                                  [ 1.3], [-0.2], [ 1.7],

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia3DQuadratic.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia3DQuadratic.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -56,7 +56,7 @@
                                   [ 1.1, -0.8,  0.7]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]],
-                              dtype=numpy.Int32)
+                              dtype=numpy.int32)
     self.fieldIn = numpy.array( [[1.2], [1.5], [0.3],
                                  [0.8], [0.9], [1.4],
                                  [0.7], [0.2], [0.8],

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -53,13 +53,13 @@
     self.spaceDim = 1
     self.numCells = 1
     self.cellDim = 1
-    self.numCorners = 2
+    self.numBasis = 2
     self.numQuadPts = 1
     
     self.quadPtsRef = numpy.array( [[0.0]], dtype=numpy.float64)
     self.quadWts = numpy.array([2.0], dtype=numpy.float64)
     self.vertices = numpy.array( [[-0.25], [2.0]], dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
     return
   
 
@@ -70,21 +70,21 @@
     Calculate basis functions and their derivatives at quadrature points.
     """
 
-    self.basis = numpy.zeros( (self.numQuadPts, self.numCorners),
+    self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
                               dtype=numpy.float64)
     self.basisDeriv = numpy.zeros( (self.numQuadPts,
-                                    self.numCorners, self.cellDim),
+                                    self.numBasis, self.cellDim),
                                    dtype=numpy.float64)
 
     iQuad = 0
     for q in self.quadPtsRef:
       # Basis functions at quadrature points
       basis = numpy.array([N0(q), N1(q)], dtype=numpy.float64)
-      self.basis[iQuad,:] = basis.reshape( (self.numCorners,) )
+      self.basis[iQuad,:] = basis.reshape( (self.numBasis,) )
 
       # Derivatives of basis functions at quadrature points
       deriv = numpy.array([[N0p(q)], [N1p(q)]], dtype=numpy.float64)      
-      self.basisDeriv[iQuad,:] = deriv.reshape((self.numCorners, self.cellDim))
+      self.basisDeriv[iQuad,:] = deriv.reshape((self.numBasis, self.cellDim))
 
       iQuad += 1
     return

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DQuadratic.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DQuadratic.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -59,7 +59,7 @@
     self.spaceDim = 1
     self.numCells = 1
     self.cellDim = 1
-    self.numCorners = 3
+    self.numBasis = 3
     self.numQuadPts = 2
     
     self.quadPtsRef = numpy.array( [[-1.0/3**0.5],
@@ -68,7 +68,7 @@
     self.quadWts = numpy.array([1.0, 1.0], dtype=numpy.float64)
     self.vertices = numpy.array( [[-0.25], [0.875], [2.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     
     return
 
@@ -80,22 +80,22 @@
     Calculate basis functions and their derivatives at quadrature points.
     """
 
-    self.basis = numpy.zeros( (self.numQuadPts, self.numCorners),
+    self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
                               dtype=numpy.float64)
     self.basisDeriv = numpy.zeros( (self.numQuadPts,
-                                    self.numCorners, self.cellDim),
+                                    self.numBasis, self.cellDim),
                                    dtype=numpy.float64)
 
     iQuad = 0
     for q in self.quadPtsRef:
       # Basis functions at quadrature points
       basis = numpy.array([N0(q), N1(q), N2(q)], dtype=numpy.float64)
-      self.basis[iQuad] = basis.reshape( (self.numCorners,) )
+      self.basis[iQuad] = basis.reshape( (self.numBasis,) )
 
       # Derivatives of basis functions at quadrature points
       deriv = numpy.array([[N0p(q)], [N1p(q)], [N2p(q)]],
                           dtype=numpy.float64)      
-      self.basisDeriv[iQuad] = deriv.reshape((self.numCorners, self.cellDim))
+      self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
 
       iQuad += 1
     return

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din2DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din2DLinear.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din2DLinear.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,12 +40,12 @@
     self.spaceDim = 2
     self.numCells = 1
     self.cellDim = 1
-    self.numCorners = 2
+    self.numBasis = 2
     self.numQuadPts = 1
     
     self.vertices = numpy.array( [[-0.2, -0.5], [0.7, 0.3]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din2DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din2DQuadratic.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din2DQuadratic.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,12 +40,12 @@
     self.spaceDim = 2
     self.numCells = 1
     self.cellDim = 1
-    self.numCorners = 3
+    self.numBasis = 3
     self.numQuadPts = 2
     
     self.vertices = numpy.array( [[-0.2, -0.5], [0.3, -0.2], [0.7, 0.3]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     
     return
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din3DLinear.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din3DLinear.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,13 +40,13 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 1
-    self.numCorners = 2
+    self.numBasis = 2
     self.numQuadPts = 1
     
     self.vertices = numpy.array( [[1.0, -1.5, -2.0],
                                   [-0.5, 2.0,  3.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din3DQuadratic.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1Din3DQuadratic.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,14 +40,14 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 1
-    self.numCorners = 3
+    self.numBasis = 3
     self.numQuadPts = 2
     
     self.vertices = numpy.array( [[1.0, -1.5, -2.0],
                                   [0.3, 0.3, 0.8],
                                   [-0.5, 2.0, 3.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     
     return
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -68,7 +68,7 @@
     self.spaceDim = 2
     self.numCells = 1
     self.cellDim = 2
-    self.numCorners = 3
+    self.numBasis = 3
     self.numQuadPts = 1
     
     self.quadPtsRef = numpy.array( [[1.0/3.0, 1.0/3.0]], dtype=numpy.float64)
@@ -76,7 +76,7 @@
     self.vertices = numpy.array( [[0.2, -0.4],
                                   [0.3, 0.5],
                                   [-1.0, -0.2]], dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     return
   
 
@@ -85,23 +85,23 @@
     Calculate basis functions and their derivatives at quadrature points.
     """
 
-    self.basis = numpy.zeros( (self.numQuadPts, self.numCorners),
+    self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
                               dtype=numpy.float64)
     self.basisDeriv = numpy.zeros( (self.numQuadPts,
-                                    self.numCorners, self.cellDim),
+                                    self.numBasis, self.cellDim),
                                    dtype=numpy.float64)
 
     iQuad = 0
     for q in self.quadPtsRef:
       # Basis functions at quadrature points
       basis = numpy.array([N0(q), N1(q), N2(q)], dtype=numpy.float64)
-      self.basis[iQuad] = basis.reshape( (self.numCorners,) )
+      self.basis[iQuad] = basis.reshape( (self.numBasis,) )
 
       # Derivatives of basis functions at quadrature points
       deriv = numpy.array([[N0p(q), N0q(q)],
                            [N1p(q), N1q(q)],
                            [N2p(q), N2q(q)]], dtype=numpy.float64)      
-      self.basisDeriv[iQuad] = deriv.reshape((self.numCorners, self.cellDim))
+      self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
 
       iQuad += 1
     return

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -95,7 +95,7 @@
     self.spaceDim = 2
     self.numCells = 1
     self.cellDim = 2
-    self.numCorners = 6
+    self.numBasis = 6
     self.numQuadPts = 3
     
     self.quadPtsRef = numpy.array( [[2.0/3.0, 1.0/6.0],
@@ -111,7 +111,7 @@
                                   [+0.25, +0.35],
                                   [-1.25, -0.25]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.int32)
     
     return
 
@@ -121,10 +121,10 @@
     Calculate basis functions and their derivatives at quadrature points.
     """
 
-    self.basis = numpy.zeros( (self.numQuadPts, self.numCorners),
+    self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
                               dtype=numpy.float64)
     self.basisDeriv = numpy.zeros( (self.numQuadPts,
-                                    self.numCorners, self.cellDim),
+                                    self.numBasis, self.cellDim),
                                    dtype=numpy.float64)
 
     iQuad = 0
@@ -132,7 +132,7 @@
       # Basis functions at quadrature points
       basis = numpy.array([N0(q), N1(q), N2(q), N3(q), N4(q), N5(q)],
                           dtype=numpy.float64)
-      self.basis[iQuad] = basis.reshape( (self.numCorners,) )
+      self.basis[iQuad] = basis.reshape( (self.numBasis,) )
 
       # Derivatives of basis functions at quadrature points
       deriv = numpy.array([[N0p(q), N0q(q)],
@@ -142,7 +142,7 @@
                            [N4p(q), N4q(q)],
                            [N5p(q), N5q(q)]],
                           dtype=numpy.float64)      
-      self.basisDeriv[iQuad] = deriv.reshape((self.numCorners, self.cellDim))
+      self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
 
       iQuad += 1
     return

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXY.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,14 +40,14 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 2
-    self.numCorners = 3
+    self.numBasis = 3
     self.numQuadPts = 1
     
     self.vertices = numpy.array( [[ 0.0,  0.0,  0.0],
                                   [ 1.0,  0.0,  0.0],
                                   [ 0.0,  1.0,  0.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXYZ.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,14 +40,14 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 2
-    self.numCorners = 3
+    self.numBasis = 3
     self.numQuadPts = 1
     
     self.vertices = numpy.array( [[ 0.5, -2.0, -0.5],
                                   [ 3.0,  0.5,  0.0],
                                   [-1.0,  2.0,  4.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearXZ.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,14 +40,14 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 2
-    self.numCorners = 3
+    self.numBasis = 3
     self.numQuadPts = 1
     
     self.vertices = numpy.array( [[ 0.0,  0.0,  0.0],
                                   [-1.0,  0.0,  0.0],
                                   [ 0.0,  0.0,  1.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DLinearYZ.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,14 +40,14 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 2
-    self.numCorners = 3
+    self.numBasis = 3
     self.numQuadPts = 1
     
     self.vertices = numpy.array( [[ 0.0,  0.0,  0.0],
                                   [ 0.0,  1.0,  0.0],
                                   [ 0.0,  0.0,  1.0]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.int32)
     return
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2Din3DQuadratic.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -40,7 +40,7 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 2
-    self.numCorners = 6
+    self.numBasis = 6
     self.numQuadPts = 3
     
     self.vertices = numpy.array( [[ 2.0, -0.5, -0.5],
@@ -50,7 +50,7 @@
                                   [ 0.1,  1.4,  0.9],
                                   [ 0.8, -0.3,  0.7]],
                                  dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.int32)
     
     return
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -89,7 +89,7 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 3
-    self.numCorners = 4
+    self.numBasis = 4
     self.numQuadPts = 1
     
     self.quadPtsRef = numpy.array( [[1.0/4.0, 1.0/4.0, 1.0/4.0]],
@@ -99,7 +99,7 @@
                                   [ 2.0, -0.5, -0.4],
                                   [ 1.0, -0.1, -0.3],
                                   [-0.2,  0.5,  2.0]], dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2, 3]], dtype=numpy.Int32)
+    self.cells = numpy.array( [[0, 1, 2, 3]], dtype=numpy.int32)
     return
   
 
@@ -108,17 +108,17 @@
     Calculate basis functions and their derivatives at quadrature points.
     """
 
-    self.basis = numpy.zeros( (self.numQuadPts, self.numCorners),
+    self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
                               dtype=numpy.float64)
     self.basisDeriv = numpy.zeros( (self.numQuadPts,
-                                    self.numCorners, self.cellDim),
+                                    self.numBasis, self.cellDim),
                                    dtype=numpy.float64)
 
     iQuad = 0
     for q in self.quadPtsRef:
       # Basis functions at quadrature points
       basis = numpy.array([N0(q), N1(q), N2(q), N3(q)], dtype=numpy.float64)
-      self.basis[iQuad] = basis.reshape( (self.numCorners,) )
+      self.basis[iQuad] = basis.reshape( (self.numBasis,) )
 
       # Derivatives of basis functions at quadrature points
       deriv = numpy.array([[N0p(q), N0q(q), N0r(q)],
@@ -126,7 +126,7 @@
                            [N2p(q), N2q(q), N2r(q)],
                            [N3p(q), N3q(q), N3r(q)]],
                           dtype=numpy.float64)      
-      self.basisDeriv[iQuad] = deriv.reshape((self.numCorners, self.cellDim))
+      self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
 
       iQuad += 1
     return

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -161,7 +161,7 @@
     self.spaceDim = 3
     self.numCells = 1
     self.cellDim = 3
-    self.numCorners = 10
+    self.numBasis = 10
     self.numQuadPts = 4
 
     # These are just approximate points used to test the quadrature routine
@@ -185,7 +185,7 @@
                                   [ 1.1, -0.8,  0.7]],
                                  dtype=numpy.float64)
     self.cells = numpy.array( [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]],
-                              dtype=numpy.Int32)
+                              dtype=numpy.int32)
     
     return
 
@@ -195,10 +195,10 @@
     Calculate basis functions and their derivatives at quadrature points.
     """
 
-    self.basis = numpy.zeros( (self.numQuadPts, self.numCorners),
+    self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
                               dtype=numpy.float64)
     self.basisDeriv = numpy.zeros( (self.numQuadPts,
-                                    self.numCorners, self.cellDim),
+                                    self.numBasis, self.cellDim),
                                    dtype=numpy.float64)
 
     iQuad = 0
@@ -207,7 +207,7 @@
       basis = numpy.array([N0(q), N1(q), N2(q), N3(q), N4(q),
                            N5(q), N6(q), N7(q), N8(q), N9(q)],
                           dtype=numpy.float64)
-      self.basis[iQuad] = basis.reshape( (self.numCorners,) )
+      self.basis[iQuad] = basis.reshape( (self.numBasis,) )
 
       # Derivatives of basis functions at quadrature points
       deriv = numpy.array([[N0p(q), N0q(q), N0r(q)],
@@ -221,7 +221,7 @@
                            [N8p(q), N8q(q), N8r(q)],
                            [N9p(q), N9q(q), N9r(q)]],
                           dtype=numpy.float64)      
-      self.basisDeriv[iQuad] = deriv.reshape((self.numCorners, self.cellDim))
+      self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
 
       iQuad += 1
     return

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -64,7 +64,7 @@
 
     # Reference cell information
     self.cellDim = None
-    self.numCorners = None
+    self.numBasis = None
     self.numQuadPts = None
     self.quadPtsRef = None
     self.quadWts = None
@@ -133,8 +133,8 @@
                         format="%d")
     self.data.addScalar(vtype="int", name="_cellDim", value=self.cellDim,
                         format="%d")
-    self.data.addScalar(vtype="int", name="_numCorners", value=
-                        self.numCorners,
+    self.data.addScalar(vtype="int", name="_numBasis", value=
+                        self.numBasis,
                         format="%d")
     self.data.addScalar(vtype="int", name="_numQuadPts",
                         value=self.numQuadPts,

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -19,7 +19,7 @@
   spaceDim(0),
   numCells(0),
   cellDim(0),
-  numCorners(0),
+  numBasis(0),
   numQuadPts(0),
   vertices(0),
   cells(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -38,7 +38,7 @@
   int spaceDim; ///< Number of dimensions in vertex coordinates
   int numCells; ///< Number of cells (=1)
   int cellDim; ///< Number of dimensions associated with cell
-  int numCorners; ///< Number of vertices in cell
+  int numBasis; ///< Number of vertices in cell
   int numQuadPts; ///< Number of quadrature points
 
   double* vertices; ///< Pointer to coordinates of vertices

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData1DLinear::_cellDim = 1;
 
-const int pylith::feassemble::QuadratureData1DLinear::_numCorners = 2;
+const int pylith::feassemble::QuadratureData1DLinear::_numBasis = 2;
 
 const int pylith::feassemble::QuadratureData1DLinear::_numQuadPts = 1;
 
@@ -76,7 +76,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData1DQuadratic::_cellDim = 1;
 
-const int pylith::feassemble::QuadratureData1DQuadratic::_numCorners = 3;
+const int pylith::feassemble::QuadratureData1DQuadratic::_numBasis = 3;
 
 const int pylith::feassemble::QuadratureData1DQuadratic::_numQuadPts = 2;
 
@@ -89,7 +89,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData1Din2DLinear::_cellDim = 1;
 
-const int pylith::feassemble::QuadratureData1Din2DLinear::_numCorners = 2;
+const int pylith::feassemble::QuadratureData1Din2DLinear::_numBasis = 2;
 
 const int pylith::feassemble::QuadratureData1Din2DLinear::_numQuadPts = 1;
 
@@ -77,7 +77,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData1Din2DQuadratic::_cellDim = 1;
 
-const int pylith::feassemble::QuadratureData1Din2DQuadratic::_numCorners = 3;
+const int pylith::feassemble::QuadratureData1Din2DQuadratic::_numBasis = 3;
 
 const int pylith::feassemble::QuadratureData1Din2DQuadratic::_numQuadPts = 2;
 
@@ -91,7 +91,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData1Din3DLinear::_cellDim = 1;
 
-const int pylith::feassemble::QuadratureData1Din3DLinear::_numCorners = 2;
+const int pylith::feassemble::QuadratureData1Din3DLinear::_numBasis = 2;
 
 const int pylith::feassemble::QuadratureData1Din3DLinear::_numQuadPts = 1;
 
@@ -78,7 +78,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData1Din3DQuadratic::_cellDim = 1;
 
-const int pylith::feassemble::QuadratureData1Din3DQuadratic::_numCorners = 3;
+const int pylith::feassemble::QuadratureData1Din3DQuadratic::_numBasis = 3;
 
 const int pylith::feassemble::QuadratureData1Din3DQuadratic::_numQuadPts = 2;
 
@@ -93,7 +93,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData2DLinear::_cellDim = 2;
 
-const int pylith::feassemble::QuadratureData2DLinear::_numCorners = 3;
+const int pylith::feassemble::QuadratureData2DLinear::_numBasis = 3;
 
 const int pylith::feassemble::QuadratureData2DLinear::_numQuadPts = 1;
 
@@ -79,7 +79,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData2DQuadratic::_cellDim = 2;
 
-const int pylith::feassemble::QuadratureData2DQuadratic::_numCorners = 6;
+const int pylith::feassemble::QuadratureData2DQuadratic::_numBasis = 6;
 
 const int pylith::feassemble::QuadratureData2DQuadratic::_numQuadPts = 3;
 
@@ -117,7 +117,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXY::_cellDim = 2;
 
-const int pylith::feassemble::QuadratureData2Din3DLinearXY::_numCorners = 3;
+const int pylith::feassemble::QuadratureData2Din3DLinearXY::_numBasis = 3;
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXY::_numQuadPts = 1;
 
@@ -80,7 +80,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_cellDim = 2;
 
-const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_numCorners = 3;
+const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_numBasis = 3;
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXYZ::_numQuadPts = 1;
 
@@ -80,7 +80,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_cellDim = 2;
 
-const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_numCorners = 3;
+const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_numBasis = 3;
 
 const int pylith::feassemble::QuadratureData2Din3DLinearXZ::_numQuadPts = 1;
 
@@ -69,7 +69,7 @@
 };
 
 const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianInv[] = {
- -1.00000000e+00,  0.00000000e+00,
+ -1.00000000e+00, -0.00000000e+00,
   0.00000000e+00,  0.00000000e+00,
   0.00000000e+00,  1.00000000e+00,
 };
@@ -80,7 +80,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_cellDim = 2;
 
-const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_numCorners = 3;
+const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_numBasis = 3;
 
 const int pylith::feassemble::QuadratureData2Din3DLinearYZ::_numQuadPts = 1;
 
@@ -80,7 +80,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData2Din3DQuadratic::_cellDim = 2;
 
-const int pylith::feassemble::QuadratureData2Din3DQuadratic::_numCorners = 6;
+const int pylith::feassemble::QuadratureData2Din3DQuadratic::_numBasis = 6;
 
 const int pylith::feassemble::QuadratureData2Din3DQuadratic::_numQuadPts = 3;
 
@@ -120,7 +120,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData3DLinear::_cellDim = 3;
 
-const int pylith::feassemble::QuadratureData3DLinear::_numCorners = 4;
+const int pylith::feassemble::QuadratureData3DLinear::_numBasis = 4;
 
 const int pylith::feassemble::QuadratureData3DLinear::_numQuadPts = 1;
 
@@ -83,7 +83,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -23,7 +23,7 @@
 
 const int pylith::feassemble::QuadratureData3DQuadratic::_cellDim = 3;
 
-const int pylith::feassemble::QuadratureData3DQuadratic::_numCorners = 10;
+const int pylith::feassemble::QuadratureData3DQuadratic::_numBasis = 10;
 
 const int pylith::feassemble::QuadratureData3DQuadratic::_numQuadPts = 4;
 
@@ -161,7 +161,7 @@
   spaceDim = _spaceDim;
   numCells = _numCells;
   cellDim = _cellDim;
-  numCorners = _numCorners;
+  numBasis = _numBasis;
   numQuadPts = _numQuadPts;
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh	2007-04-12 00:47:05 UTC (rev 6547)
@@ -45,7 +45,7 @@
 
   static const int _cellDim;
 
-  static const int _numCorners;
+  static const int _numBasis;
 
   static const int _numQuadPts;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py	2007-04-12 00:47:05 UTC (rev 6547)
@@ -50,7 +50,7 @@
       jacobianDet[iQuad] = det
 
       if 1 == quadrature.cellDim:
-        jacobianInv[iQuad] = 1.0 / j
+        jacobianInv[iQuad] = 1.0 / j.transpose()
       elif 2 == quadrature.cellDim:
         minJacobian = 1.0e-06
         jj01 = j[:,[0,1]]

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc	2007-04-11 20:20:07 UTC (rev 6546)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc	2007-04-12 00:47:05 UTC (rev 6547)
@@ -26,7 +26,7 @@
   typedef Mesh::label_type label_type;
 
   // buildTopology() requires zero based index
-  assert(true == data.useIndexZero);
+  CPPUNIT_ASSERT(true == data.useIndexZero);
 
   const int cellDim = data.cellDim;
   const int numCorners = data.numCorners;



More information about the cig-commits mailing list