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

brad at geodynamics.org brad at geodynamics.org
Tue May 29 17:37:30 PDT 2007


Author: brad
Date: 2007-05-29 17:37:28 -0700 (Tue, 29 May 2007)
New Revision: 6994

Added:
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/MaterialElasticStrain1D.odb
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.odb
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/MeshData1DLinear.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.odb
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Solution1DLinear.odb
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/elasticstrain1d.spatialdb
Removed:
   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/IntegratorInertia1DLinear.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/Quadrature1DLinear.py
Modified:
   short/3D/PyLith/trunk/configure.ac
   short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc
   short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.hh
   short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc
   short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.hh
   short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh
   short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.icc
   short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
   short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.hh
   short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.icc
   short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.hh
   short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.icc
   short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.hh
   short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.icc
   short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.hh
   short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.icc
   short/3D/PyLith/trunk/libsrc/materials/Material.cc
   short/3D/PyLith/trunk/libsrc/materials/Material.hh
   short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.cc
   short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.hh
   short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.icc
   short/3D/PyLith/trunk/pylith/utils/CppData.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.hh
Log:
More work on C++ unit tests for elasticity integrators. Setup test data. Need to update quadrature data generators. Removed cloning of materials. Pointer is passed to integrator (dangerous but okay if object holding material is persistent).

Modified: short/3D/PyLith/trunk/configure.ac
===================================================================
--- short/3D/PyLith/trunk/configure.ac	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/configure.ac	2007-05-30 00:37:28 UTC (rev 6994)
@@ -225,6 +225,7 @@
 		unittests/libtests/faults/Makefile
 		unittests/libtests/faults/data/Makefile
 		unittests/libtests/feassemble/Makefile
+		unittests/libtests/feassemble/data/Makefile
 		unittests/libtests/materials/Makefile
 		unittests/libtests/materials/data/Makefile
 		unittests/libtests/meshio/Makefile

Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -39,7 +39,7 @@
 // Destructor
 pylith::feassemble::ElasticityExplicit::~ElasticityExplicit(void)
 { // destructor
-  delete _material; _material = 0;
+  _material = 0; // Don't manage memory for material
 } // destructor
   
 // ----------------------------------------------------------------------
@@ -58,10 +58,9 @@
 // ----------------------------------------------------------------------
 // Set material.
 void
-pylith::feassemble::ElasticityExplicit::material(
-				       const materials::ElasticMaterial* m)
+pylith::feassemble::ElasticityExplicit::material(materials::ElasticMaterial* m)
 { // material
-  delete _material; _material = (0 != m) ? m->clone() : 0;
+  _material = m;
 } // material
 
 // ----------------------------------------------------------------------
@@ -429,24 +428,21 @@
     const double_array& basisDeriv = _quadrature->basisDeriv();
   
     // Compute action for elastic terms
-    if (1 == cellDim) {
+    if (1 == cellDim)
       Elasticity::calcTotalStrain1D(&totalStrain, basisDeriv,
 				    dispCell, numBasis);
-      _material->updateState(totalStrain);
-    } else if (2 == cellDim) {
+    else if (2 == cellDim)
       Elasticity::calcTotalStrain2D(&totalStrain, basisDeriv,
 				    dispCell, numBasis);
-      _material->updateState(totalStrain);
-    } else if (3 == cellDim) {
-      // Compute stresses
+    else if (3 == cellDim)
       Elasticity::calcTotalStrain3D(&totalStrain, basisDeriv, 
 				    dispCell, numBasis);
-      _material->updateState(totalStrain);
-    } else {
+    else {
       std::cerr << "Unknown case for cellDim '" << cellDim << "'."
 		<< std::endl;
       assert(0);
-    } // if/else
+    } // else
+    _material->updateState(totalStrain);
   } // for
 } // updateState
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -94,7 +94,7 @@
    *
    * @param m Elastic material.
    */
-  void material(const materials::ElasticMaterial* m);
+  void material(materials::ElasticMaterial* m);
 
   /** Set time step for advancing from time t to time t+dt.
    *

Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -39,7 +39,7 @@
 // Destructor
 pylith::feassemble::ElasticityImplicit::~ElasticityImplicit(void)
 { // destructor
-  delete _material; _material = 0;
+  _material = 0; // Don't manage memory for material
 } // destructor
   
 // ----------------------------------------------------------------------
@@ -58,10 +58,9 @@
 // ----------------------------------------------------------------------
 // Set material.
 void
-pylith::feassemble::ElasticityImplicit::material(
-				       const materials::ElasticMaterial* m)
+pylith::feassemble::ElasticityImplicit::material(materials::ElasticMaterial* m)
 { // material
-  delete _material; _material = (0 != m) ? m->clone() : 0;
+  _material = m;
 } // material
 
 // ----------------------------------------------------------------------
@@ -577,24 +576,21 @@
     const double_array& basisDeriv = _quadrature->basisDeriv();
   
     // Compute action for elastic terms
-    if (1 == cellDim) {
+    if (1 == cellDim)
       Elasticity::calcTotalStrain1D(&totalStrain, basisDeriv,
 				    dispCell, numBasis);
-      _material->updateState(totalStrain);
-    } else if (2 == cellDim) {
+    else if (2 == cellDim)
       Elasticity::calcTotalStrain2D(&totalStrain, basisDeriv,
 				    dispCell, numBasis);
-      _material->updateState(totalStrain);
-    } else if (3 == cellDim) {
-      // Compute stresses
+    else if (3 == cellDim)
       Elasticity::calcTotalStrain3D(&totalStrain, basisDeriv, 
 				    dispCell, numBasis);
-      _material->updateState(totalStrain);
-    } else {
+    else {
       std::cerr << "Unknown case for cellDim '" << cellDim << "'."
 		<< std::endl;
       assert(0);
-    } // if/else
+    } // else
+    _material->updateState(totalStrain);
   } // for
 } // updateState
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -86,7 +86,7 @@
    *
    * @param m Elastic material.
    */
-  void material(const materials::ElasticMaterial* m);
+  void material(materials::ElasticMaterial* m);
 
   /** Set time step for advancing from time t to time t+dt.
    *

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -67,14 +67,6 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::ElasticIsotropic3D::ElasticIsotropic3D(
-						const ElasticIsotropic3D& m) :
-  ElasticMaterial(m)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
 // Get names of values expected to be in database of parameters for
 const char**
 pylith::materials::ElasticIsotropic3D::_dbValues(void) const

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -49,21 +49,9 @@
   /// Destructor
   ~ElasticIsotropic3D(void);
 
-  /** Create a pointer to a copy of this.
-   *
-   * @returns Pointer to copy
-   */
-  ElasticMaterial* clone(void) const;
-
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
-  /** Copy constructor
-   *
-   * @param m Material to copy
-   */
-  ElasticIsotropic3D(const ElasticIsotropic3D& m);
-
   /** Get names of values expected to be in database of parameters for
    *  physical properties.
    *
@@ -153,6 +141,9 @@
 private :
 
   /// Not implemented
+  ElasticIsotropic3D(const ElasticIsotropic3D& m);
+
+  /// Not implemented
   const ElasticIsotropic3D& operator=(const ElasticIsotropic3D& m);
 
 }; // class ElasticIsotropic3D

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.icc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.icc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -14,12 +14,5 @@
 #error "ElasticIsotropic3D.icc can only be included from ElasticIsotropic3D.hh"
 #endif
 
-// Create a pointer to a copy of this.
-inline
-pylith::materials::ElasticMaterial*
-pylith::materials::ElasticIsotropic3D::clone(void) const {
-  return new ElasticIsotropic3D(*this);
-}
 
-
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -36,15 +36,6 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::ElasticMaterial::ElasticMaterial(const ElasticMaterial& m) :
-  Material(m),
-  _numQuadPts(0),
-  _useElasticBehavior(m._useElasticBehavior)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
 // Compute density for cell at quadrature points.
 const std::vector<pylith::double_array>&
 pylith::materials::ElasticMaterial::calcDensity(void)

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -50,13 +50,6 @@
   virtual
   ~ElasticMaterial(void);
 
-  /** Create a pointer to a copy of this.
-   *
-   * @returns Pointer to copy
-   */
-  virtual
-  ElasticMaterial* clone(void) const = 0;
-
   /** Initialize arrays holding cell data.
    *
    * @param cell Finite element cell
@@ -141,12 +134,6 @@
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
-  /** Copy constructor.
-   *
-   * @param m Material to copy
-   */
-  ElasticMaterial(const ElasticMaterial& m);
-
   /** Get number of entries in stress/strain tensors.
    *
    * @returns Size of stress/strain tensors.
@@ -205,6 +192,9 @@
 private :
 
   /// Not implemented
+  ElasticMaterial(const ElasticMaterial& m);
+
+  /// Not implemented
   const ElasticMaterial& operator=(const ElasticMaterial& m);
 
   // PRIVATE METHODS ////////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -67,14 +67,6 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::ElasticPlaneStrain::ElasticPlaneStrain(
-						const ElasticPlaneStrain& m) :
-  ElasticMaterial(m)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
 // Get names of values expected to be in database of parameters for
 const char**
 pylith::materials::ElasticPlaneStrain::_dbValues(void) const

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -49,21 +49,9 @@
   /// Destructor
   ~ElasticPlaneStrain(void);
 
-  /** Create a pointer to a copy of this.
-   *
-   * @returns Pointer to copy
-   */
-  ElasticMaterial* clone(void) const;
-
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
-  /** Copy constructor
-   *
-   * @param m Material to copy
-   */
-  ElasticPlaneStrain(const ElasticPlaneStrain& m);
-
   /** Get names of values expected to be in database of parameters for
    *  physical properties.
    *
@@ -153,6 +141,9 @@
 private :
 
   /// Not implemented
+  ElasticPlaneStrain(const ElasticPlaneStrain& m);
+
+  /// Not implemented
   const ElasticPlaneStrain& operator=(const ElasticPlaneStrain& m);
 
 }; // class ElasticPlaneStrain

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.icc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.icc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -14,12 +14,5 @@
 #error "ElasticPlanestrain.icc can only be included from ElasticPlanestrain.hh"
 #endif
 
-// Create a pointer to a copy of this.
-inline
-pylith::materials::ElasticMaterial*
-pylith::materials::ElasticPlaneStrain::clone(void) const {
-  return new ElasticPlaneStrain(*this);
-}
 
-
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -66,14 +66,6 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::ElasticPlaneStress::ElasticPlaneStress(
-						const ElasticPlaneStress& m) :
-  ElasticMaterial(m)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
 // Get names of values expected to be in database of parameters for
 const char**
 pylith::materials::ElasticPlaneStress::_dbValues(void) const

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -49,21 +49,9 @@
   /// Destructor
   ~ElasticPlaneStress(void);
 
-  /** Create a pointer to a copy of this.
-   *
-   * @returns Pointer to copy
-   */
-  ElasticMaterial* clone(void) const;
-
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
-  /** Copy constructor
-   *
-   * @param m Material to copy
-   */
-  ElasticPlaneStress(const ElasticPlaneStress& m);
-
   /** Get names of values expected to be in database of parameters for
    *  physical properties.
    *
@@ -153,6 +141,9 @@
 private :
 
   /// Not implemented
+  ElasticPlaneStress(const ElasticPlaneStress& m);
+
+  /// Not implemented
   const ElasticPlaneStress& operator=(const ElasticPlaneStress& m);
 
 }; // class ElasticPlaneStress

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.icc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.icc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -14,12 +14,5 @@
 #error "ElasticPlaneStress.icc can only be included from ElasticPlaneStress.hh"
 #endif
 
-// Create a pointer to a copy of this.
-inline
-pylith::materials::ElasticMaterial*
-pylith::materials::ElasticPlaneStress::clone(void) const {
-  return new ElasticPlaneStress(*this);
-}
 
-
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -64,14 +64,6 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::ElasticStrain1D::ElasticStrain1D(
-						const ElasticStrain1D& m) :
-  ElasticMaterial(m)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
 // Get names of values expected to be in database of parameters for
 const char**
 pylith::materials::ElasticStrain1D::_dbValues(void) const

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -48,21 +48,9 @@
   /// Destructor
   ~ElasticStrain1D(void);
 
-  /** Create a pointer to a copy of this.
-   *
-   * @returns Pointer to copy
-   */
-  ElasticMaterial* clone(void) const;
-
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
-  /** Copy constructor
-   *
-   * @param m Material to copy
-   */
-  ElasticStrain1D(const ElasticStrain1D& m);
-
   /** Get names of values expected to be in database of parameters for
    *  physical properties.
    *
@@ -152,6 +140,9 @@
 private :
 
   /// Not implemented
+  ElasticStrain1D(const ElasticStrain1D& m);
+
+  /// Not implemented
   const ElasticStrain1D& operator=(const ElasticStrain1D& m);
 
 }; // class ElasticStrain1D

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.icc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.icc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -14,12 +14,5 @@
 #error "ElasticStrain1D.icc can only be included from ElasticStrain1D.hh"
 #endif
 
-// Create a pointer to a copy of this.
-inline
-pylith::materials::ElasticMaterial*
-pylith::materials::ElasticStrain1D::clone(void) const {
-  return new ElasticStrain1D(*this);
-}
 
-
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -67,14 +67,6 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::ElasticStress1D::ElasticStress1D(
-						const ElasticStress1D& m) :
-  ElasticMaterial(m)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
 // Get names of values expected to be in database of parameters for
 const char**
 pylith::materials::ElasticStress1D::_dbValues(void) const

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -49,21 +49,9 @@
   /// Destructor
   ~ElasticStress1D(void);
 
-  /** Create a pointer to a copy of this.
-   *
-   * @returns Pointer to copy
-   */
-  ElasticMaterial* clone(void) const;
-
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
-  /** Copy constructor
-   *
-   * @param m Material to copy
-   */
-  ElasticStress1D(const ElasticStress1D& m);
-
   /** Get names of values expected to be in database of parameters for
    *  physical properties.
    *
@@ -153,6 +141,9 @@
 private :
 
   /// Not implemented
+  ElasticStress1D(const ElasticStress1D& m);
+
+  /// Not implemented
   const ElasticStress1D& operator=(const ElasticStress1D& m);
 
 }; // class ElasticStress1D

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.icc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.icc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -14,12 +14,5 @@
 #error "ElasticStress1D.icc can only be included from ElasticStress1D.hh"
 #endif
 
-// Create a pointer to a copy of this.
-inline
-pylith::materials::ElasticMaterial*
-pylith::materials::ElasticStress1D::clone(void) const {
-  return new ElasticStress1D(*this);
-}
 
-
 // End of file 

Modified: short/3D/PyLith/trunk/libsrc/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -50,19 +50,6 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::Material::Material(const Material& m) :
-  _dt(m._dt),
-  _parameters(m._parameters),
-  _dimension(m._dimension),
-  _needNewJacobian(m._needNewJacobian),
-  _db(m._db),
-  _id(m._id),
-  _label(m._label)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
 // Get physical property parameters from database.
 void
 pylith::materials::Material::initialize(const ALE::Obj<ALE::Mesh>& mesh,

Modified: short/3D/PyLith/trunk/libsrc/materials/Material.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -136,12 +136,6 @@
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
-  /** Copy constructor.
-   *
-   * @param m Material to copy
-   */
-  Material(const Material& m);
-
   /** Get names of values expected to be in database of parameters for
    *  physical properties.
    *
@@ -187,6 +181,9 @@
 private :
 
   /// Not implemented
+  Material(const Material& m);
+
+  /// Not implemented
   const Material& operator=(const Material& m);
 
   // PROTECTED MEMBERS //////////////////////////////////////////////////

Modified: short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -71,14 +71,6 @@
 } // destructor
 
 // ----------------------------------------------------------------------
-// Copy constructor.
-pylith::materials::MaxwellIsotropic3D::MaxwellIsotropic3D(
-						const MaxwellIsotropic3D& m) :
-  ElasticMaterial(m)
-{ // copy constructor
-} // copy constructor
-
-// ----------------------------------------------------------------------
 // Get names of values expected to be in database of parameters for
 const char**
 pylith::materials::MaxwellIsotropic3D::_dbValues(void) const

Modified: short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -49,21 +49,9 @@
   /// Destructor
   ~ElasticIsotropic3D(void);
 
-  /** Create a pointer to a copy of this.
-   *
-   * @returns Pointer to copy
-   */
-  ElasticMaterial* clone(void) const;
-
   // PROTECTED METHODS //////////////////////////////////////////////////
 protected :
 
-  /** Copy constructor
-   *
-   * @param m Material to copy
-   */
-  ElasticIsotropic3D(const ElasticIsotropic3D& m);
-
   /** Get names of values expected to be in database of parameters for
    *  physical properties.
    *
@@ -153,6 +141,9 @@
 private :
 
   /// Not implemented
+  ElasticIsotropic3D(const ElasticIsotropic3D& m);
+
+  /// Not implemented
   const ElasticIsotropic3D& operator=(const ElasticIsotropic3D& m);
 
 }; // class ElasticIsotropic3D

Modified: short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.icc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.icc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -14,12 +14,5 @@
 #error "ElasticIsotropic3D.icc can only be included from ElasticIsotropic3D.hh"
 #endif
 
-// Create a pointer to a copy of this.
-inline
-pylith::materials::ElasticMaterial*
-pylith::materials::ElasticIsotropic3D::clone(void) const {
-  return new ElasticIsotropic3D(*this);
-}
 
-
 // End of file 

Modified: short/3D/PyLith/trunk/pylith/utils/CppData.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/CppData.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/pylith/utils/CppData.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -273,7 +273,10 @@
 
     for scalar in self.scalars:
       n = scalar['name']
-      fileOut.write("  %s = %s;\n" % (n[1:], n))
+      if "char*" != scalar['type']:
+        fileOut.write("  %s = %s;\n" % (n[1:], n))
+      else:
+        fileOut.write("  %s = const_cast<char*>(%s);\n" % (n[1:], n))
     for array in self.arrays:
       n = array['name']
       fileOut.write("  %s = const_cast<%s*>(%s);\n" % \

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am	2007-05-30 00:37:28 UTC (rev 6994)
@@ -13,6 +13,8 @@
 subpackage = feassemble
 include $(top_srcdir)/subpackage.am
 
+SUBDIRS = data
+
 TESTS = testfeassemble
 
 check_PROGRAMS = testfeassemble
@@ -20,6 +22,7 @@
 # Primary source files
 testfeassemble_SOURCES = \
 	TestElasticityExplicit.cc \
+	TestElasticityExplicit1DLinear.cc \
 	TestIntegrator.cc \
 	TestQuadrature.cc \
 	TestQuadrature1D.cc \
@@ -31,6 +34,7 @@
 
 noinst_HEADERS = \
 	TestElasticityExplicit.hh \
+	TestElasticityExplicit1DLinear.hh \
 	TestIntegrator.hh \
 	TestQuadrature.hh \
 	TestQuadrature1D.hh \
@@ -41,6 +45,8 @@
 
 # Source files associated with testing data
 testfeassemble_SOURCES += \
+	data/IntegratorData.cc \
+	data/ElasticityExplicitData1DLinear.cc \
 	data/QuadratureData.cc \
 	data/QuadratureData1DLinear.cc \
 	data/QuadratureData1DQuadratic.cc \
@@ -59,6 +65,8 @@
 	data/QuadratureData3DQuadratic.cc
 
 noinst_HEADERS += \
+	data/IntegratorData.hh \
+	data/ElasticityExplicitData1DLinear.hh \
 	data/QuadratureData.hh \
 	data/QuadratureData1DLinear.hh \
 	data/QuadratureData1DQuadratic.hh \
@@ -82,7 +90,8 @@
 
 testfeassemble_LDADD = \
 	-lcppunit -ldl \
-	$(top_builddir)/libsrc/libpylith.la
+	$(top_builddir)/libsrc/libpylith.la \
+	-lspatialdata
 
 if ENABLE_CUBIT
   testfeassemble_LDADD += -lnetcdf_c++ -lnetcdf

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -15,10 +15,16 @@
 #include "TestElasticityExplicit.hh" // Implementation of class methods
 
 #include "pylith/feassemble/ElasticityExplicit.hh" // USES ElasticityExplicit
-//#include "data/ElasticityExplicitData.hh" // USES ElasticityExplicitData
+#include "data/IntegratorData.hh" // USES IntegratorData
 
 #include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/topology/FieldsManager.hh" // USES FieldsManager
 
+#include "spatialdata/geocoords/CSCart.hh" // USES CSCart
+#include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
+#include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+
 #include <stdexcept> // TEMPORARY
 
 // ----------------------------------------------------------------------
@@ -90,7 +96,30 @@
 void
 pylith::feassemble::TestElasticityExplicit::testIntegrateResidual(void)
 { // testIntegrateResidual
-  throw std::logic_error("Unit test not implemented.");
+  CPPUNIT_ASSERT(0 != _data);
+
+  ALE::Obj<ALE::Mesh> mesh;
+  ElasticityExplicit integrator;
+  topology::FieldsManager fields(mesh);
+  _initialize(&mesh, &integrator, &fields);
+
+  const ALE::Obj<real_section_type>& residual = fields.getReal("residual");
+  CPPUNIT_ASSERT(!residual.isNull());
+  integrator.integrateResidual(residual, &fields, mesh);
+
+  const double* valsE = _data->valsResidual;
+  const int sizeE = _data->spaceDim * _data->numVertices;
+
+  const double* vals = residual->restrict();
+  const int size = residual->sizeWithBC();
+  CPPUNIT_ASSERT_EQUAL(sizeE, size);
+
+  const double tolerance = 1.0e-06;
+  for (int i=0; i < size; ++i)
+    if (valsE[i] > 1.0)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
+    else
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(valsE[i], vals[i], tolerance);
 } // testIntegrateResidual
 
 // ----------------------------------------------------------------------
@@ -102,98 +131,101 @@
 } // testIntegrateJacobian
 
 
-#if 0
 // ----------------------------------------------------------------------
-// Test integrateLumped()
+// Initialize elasticity integrator.
 void
-pylith::feassemble::TestIntegratorInertia::_testIntegrateLumped(
-					   IntegratorInertia* integrator,
-					   const IntegratorData& data) const
-{ // _testIntegrateLumped
+pylith::feassemble::TestElasticityExplicit::_initialize(
+					 ALE::Obj<ALE::Mesh>* mesh,
+					 ElasticityExplicit* const integrator,
+					 topology::FieldsManager* fields)
+{ // _initialize
+  CPPUNIT_ASSERT(0 != mesh);
+  CPPUNIT_ASSERT(0 != integrator);
+  CPPUNIT_ASSERT(0 != _data);
+  CPPUNIT_ASSERT(0 != _quadrature);
+  CPPUNIT_ASSERT(0 != _material);
 
-  CPPUNIT_ASSERT(false);
+  // Setup mesh
+  spatialdata::geocoords::CSCart cs;
+  cs.setSpaceDim(_data->spaceDim);
+  cs.initialize();
+  *mesh = new ALE::Mesh(PETSC_COMM_WORLD, _data->cellDim);
+  CPPUNIT_ASSERT(!mesh->isNull());
+  ALE::Obj<sieve_type> sieve = new sieve_type((*mesh)->comm());
+  CPPUNIT_ASSERT(!sieve.isNull());
+  const bool interpolate = false;
+  ALE::SieveBuilder<Mesh>::buildTopology(sieve, _data->cellDim, 
+	       _data->numCells, const_cast<int*>(_data->cells), 
+	       _data->numVertices, interpolate, _data->numBasis);
+  (*mesh)->setSieve(sieve);
+  (*mesh)->stratify();
+  ALE::SieveBuilder<Mesh>::buildCoordinates((*mesh), _data->spaceDim,
+					    _data->vertices);
+  const ALE::Obj<Mesh::label_type>& labelMaterials = 
+    (*mesh)->createLabel("material-id");  
+  int i = 0;
+  const ALE::Obj<Mesh::label_sequence>& cells = (*mesh)->heightStratum(0);
+  CPPUNIT_ASSERT(!cells.isNull());
+  for(Mesh::label_sequence::iterator c_iter = cells->begin();
+      c_iter != cells->end();
+      ++c_iter)
+    (*mesh)->setValue(labelMaterials, *c_iter, _data->matId);
 
-  ALE::Obj<ALE::Mesh> mesh = _TestIntegratorInertia::_setupMesh(data);
-  const ALE::Mesh::int_section_type::patch_type patch = 0;
+  // Setup quadrature
+  _quadrature->initialize(_data->basis, _data->basisDeriv, _data->quadPts,
+			  _data->quadWts, _data->cellDim, _data->numBasis,
+			  _data->numQuadPts, _data->spaceDim);
 
-  // Fiber dimension (number of values in field per vertex) for fields
-  const int fiberDim = data.fiberDim;
+  // Setup material
+  spatialdata::spatialdb::SimpleIOAscii iohandler;
+  iohandler.filename(_data->matDBFilename);
+  spatialdata::spatialdb::SimpleDB db;
+  db.ioHandler(&iohandler);
+  
+  _material->id(_data->matId);
+  _material->label(_data->matLabel);
+  _material->timestep(_data->dt);
+  _material->db(&db);
+  _material->initialize(*mesh, &cs, _quadrature);
 
-  // Setup field for action result
-  const ALE::Obj<real_section_type>& fieldOut =
-    mesh->getRealSection("fieldOut");
-  fieldOut->setName("fieldOut");
-  fieldOut->setFiberDimensionByDepth(patch, 0, fiberDim);
-  fieldOut->allocate();
+  integrator->quadrature(_quadrature);
+  integrator->timeStep(_data->dt);
+  integrator->material(_material);
 
-  // Should read density from spatial database
-  const ALE::Obj<real_section_type>& density =
-    mesh->getRealSection("density");
-  density->setName("density");
-  density->setFiberDimensionByDepth(patch, 0, 
-				    integrator->_quadrature->numQuadPts());
-  density->allocate();
-  integrator->setDensity(density);
+  // Setup fields
+  CPPUNIT_ASSERT(0 != fields);
+  fields->addReal("residual");
+  fields->addReal("dispTpdt");
+  fields->addReal("dispT");
+  fields->addReal("dispTmdt");
+  const char* history[] = { "dispTpdt", "dispT", "dispTmdt" };
+  const int historySize = 3;
+  fields->createHistory(history, historySize);
+  
+  const ALE::Obj<real_section_type>& residual = fields->getReal("residual");
+  CPPUNIT_ASSERT(!residual.isNull());
+  residual->setFiberDimension((*mesh)->depthStratum(0), _data->spaceDim);
+  (*mesh)->allocate(residual);
+  residual->zero();
+  fields->copyLayout("residual");
 
-  // Integrate action
-  const ALE::Obj<real_section_type>& coordinates = 
-    mesh->getRealSection("coordinates");
-  integrator->integrateLumped(fieldOut, coordinates);
-  //fieldOut->view("field out");
-  
-  // Check values in output field
-  int iVertex = 0;
-  const ALE::Obj<topology_type::label_sequence>& vertices = 
-    mesh->getTopology()->depthStratum(patch, 0);
-  const topology_type::label_sequence::iterator verticesEnd =
-    vertices->end();
-  const double tolerance = 1.0e-06;
-  for (topology_type::label_sequence::iterator vIter=vertices->begin();
-       vIter != verticesEnd;
-       ++vIter, ++iVertex) {
-    const real_section_type::value_type* vals = 
-      fieldOut->restrict(patch, *vIter);
-    const double* valsE = &data.valsLumped[iVertex*fiberDim];
-    const int dim = fieldOut->getFiberDimension(patch, *vIter);
-    CPPUNIT_ASSERT_EQUAL(fiberDim, dim);
-    for (int iDim=0; iDim < fiberDim; ++iDim)
-      CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[iDim]/valsE[iDim], tolerance);
+  const int fieldSize = _data->spaceDim * _data->numVertices;
+  const ALE::Obj<real_section_type>& dispTpdt = fields->getReal("dispTpdt");
+  const ALE::Obj<real_section_type>& dispT = fields->getReal("dispT");
+  const ALE::Obj<real_section_type>& dispTmdt = fields->getReal("dispTmdt");
+  CPPUNIT_ASSERT(!dispTpdt.isNull());
+  CPPUNIT_ASSERT(!dispT.isNull());
+  CPPUNIT_ASSERT(!dispTmdt.isNull());
+  const int offset = _data->numCells;
+  for (int iVertex=0; iVertex < _data->numVertices; ++iVertex) {
+    dispTpdt->updatePoint(iVertex+offset, 
+			  &_data->fieldTpdt[iVertex*_data->spaceDim]);
+    dispT->updatePoint(iVertex+offset, 
+		       &_data->fieldT[iVertex*_data->spaceDim]);
+    dispTmdt->updatePoint(iVertex+offset, 
+			  &_data->fieldTmdt[iVertex*_data->spaceDim]);
   } // for
-} // _testIntegrateLumped
+} // _initialize
 
 
-// ----------------------------------------------------------------------
-// Setup mesh.
-ALE::Obj<ALE::Mesh>
-pylith::feassemble::_TestIntegratorInertia::_setupMesh(const IntegratorData& data)
-{ // _setupMesh
-  const int cellDim = data.cellDim;
-  const int numCorners = data.numCorners;
-  const int spaceDim = data.spaceDim;
-  const int numVertices = data.numVertices;
-  const int numCells = data.numCells;
-  const double* vertCoords = data.vertices;
-  const int* cells = data.cells;
-  CPPUNIT_ASSERT(0 != vertCoords);
-  CPPUNIT_ASSERT(0 != cells);
-
-  ALE::Obj<ALE::Mesh> mesh = new ALE::Mesh(PETSC_COMM_WORLD, cellDim);
-  ALE::Obj<sieve_type> sieve = new sieve_type(mesh->comm());
-  ALE::Obj<topology_type> topology = new topology_type(mesh->comm());
-
-  const bool interpolate = false;
-  ALE::New::SieveBuilder<sieve_type>::buildTopology(sieve, cellDim, numCells,
-	       const_cast<int*>(cells), numVertices, interpolate, numCorners);
-  sieve->stratify();
-  topology->setPatch(0, sieve);
-  topology->stratify();
-  mesh->setTopology(topology);
-  ALE::New::SieveBuilder<sieve_type>::buildCoordinates(
-		    mesh->getRealSection("coordinates"), spaceDim, vertCoords);
-
-  return mesh;
-} // _setupMesh
-#endif
-
-
 // End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -31,8 +31,17 @@
     class TestElasticityExplicit;
 
     class ElasticityExplicit; // USES ElasticityExplicit
-    class ElasticityExplicitData; // USES ElasticityExplicitData
+    class IntegratorData; // HOLDSA ElasticityExplicitData
+    class Quadrature; // HOLDSA Quadrature
   } // feassemble
+
+  namespace materials {
+    class ElasticMaterial; // HOLDSA ElasticMaterial
+  } // materials
+
+  namespace topology {
+    class FieldsManager; // USES FieldsManager
+  } // topology
 } // pylith
 
 /// C++ unit testing for ElasticityExplicit
@@ -77,18 +86,22 @@
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 
-  ElasticityExplicitData* _data; ///< Data for testing
+  IntegratorData* _data; ///< Data for testing.
+  materials::ElasticMaterial* _material; ///< Elastic material.
+  Quadrature* _quadrature; ///< Quadrature information.
 
   // PRIVATE METHODS ////////////////////////////////////////////////////
 private :
 
-  /** Initialize elasticity integrator..
+  /** Initialize elasticity integrator.
    *
    * @param mesh PETSc mesh to initialize.
    * @param integrator ElasticityIntegrator to initialize.
+   * @param fields Solution fields.
    */
   void _initialize(ALE::Obj<ALE::Mesh>* mesh,
-		   ElasticityExplicit* const integrator) const;
+		   ElasticityExplicit* const integrator,
+		   topology::FieldsManager* const fields);
 
 }; // class TestElasticityExplicit
 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,50 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicit1DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitData1DLinear.hh"
+
+#include "pylith/feassemble/Quadrature1D.hh" // USES Quadrature1D
+#include "pylith/materials/ElasticStrain1D.hh" // USES ElasticStrain1D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicit1DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicit1DLinear::setUp(void)
+{ // setUp
+  _data = new ElasticityExplicitData1DLinear();
+  _quadrature = new Quadrature1D();
+  _material = new materials::ElasticStrain1D;
+
+  CPPUNIT_ASSERT(0 != _data);
+  CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+		       std::string(_data->matType));
+} // setUp
+
+// ----------------------------------------------------------------------
+// Tear down testing data.
+void
+pylith::feassemble::TestElasticityExplicit1DLinear::tearDown(void)
+{ // tearDown
+  delete _data;
+  delete _quadrature;
+  delete _material;
+} // tearDown
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicit object
+ *
+ * C++ unit testing for ElasticityExplicit with 1-D linear cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicit1dlinear_hh)
+#define pylith_feassemble_testelasticityexplicit1dlinear_hh
+
+#include "TestElasticityExplicit.hh" // ISA TestElasticityExplicit
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace feassemble {
+    class TestElasticityExplicit1DLinear;
+  } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicit
+class pylith::feassemble::TestElasticityExplicit1DLinear :
+  public TestElasticityExplicit
+{ // class TestElasticityExplicit1DLinear
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestElasticityExplicit1DLinear );
+
+  CPPUNIT_TEST( testIntegrateResidual );
+  CPPUNIT_TEST( testIntegrateJacobian );
+
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+  /// Tear down testing data.
+  void tearDown(void);
+
+}; // class TestElasticityExplicit1DLinear
+
+#endif // pylith_feassemble_testelasticityexplicit1dlinear_hh
+
+
+// End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -47,9 +47,13 @@
     {r} = (1/dt**2)[M](-{u(t+dt)} + 2 {u(t)} - {u(t-dt)}) -
           [K]{u(t)}
     """
+    K = self._calculateStiffnessMat()
+    M = self._calculateMassMat()
+
+
     dispResult = -self.fieldTpdt + 2.0*self.fieldT - self.fieldTmdt
-    self.valsResidual = 1.0/self.dt**2 * numpy.dot(self.M, dispResult) - \
-                        numpy.dot(self.K, fieldT)
+    self.valsResidual = 1.0/self.dt**2 * numpy.dot(M, dispResult) - \
+                        numpy.dot(K, self.fieldT)
     return
 
 
@@ -59,8 +63,17 @@
 
     [A] = (1/dt**2)[M]
     """
-    self.valsJacobian = 1.0/self.dt**2 * self.M
+    M = self._calculateMassMat()
+
+    self.valsJacobian = 1.0/self.dt**2 * M
     return
 
 
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = ElasticityExplicit()
+  app.run()
+
+
 # End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,124 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticityexplicit.
+
+#include "ElasticityExplicitData1DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitData1DLinear::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitData1DLinear::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitData1DLinear::_numVertices = 2;
+
+const int pylith::feassemble::ElasticityExplicitData1DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitData1DLinear::_numBasis = 2;
+
+const int pylith::feassemble::ElasticityExplicitData1DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitData1DLinear::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityExplicitData1DLinear::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitData1DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitData1DLinear::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_dt =   1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_vertices[] = {
+ -2.50000000e-01,
+  2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitData1DLinear::_cells[] = {
+0,1,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_quadPts[] = {
+  8.75000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_quadWts[] = {
+  2.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_basis[] = {
+  5.00000000e-01,
+  5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_basisDeriv[] = {
+ -5.00000000e-01,
+  5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_fieldTpdt[] = {
+  1.20000000e+00,
+  1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_fieldT[] = {
+  1.20000000e+00,
+  1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_fieldTmdt[] = {
+  1.20000000e+00,
+  1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsResidual[] = {
+ -5.56875000e+10,
+  3.12250226e-09,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsJacobian[] = {
+  1.40625000e+07,
+  1.40625000e+07,
+  1.40625000e+07,
+  1.40625000e+07,
+};
+
+pylith::feassemble::ElasticityExplicitData1DLinear::ElasticityExplicitData1DLinear(void)
+{ // constructor
+  spaceDim = _spaceDim;
+  cellDim = _cellDim;
+  numVertices = _numVertices;
+  numCells = _numCells;
+  numBasis = _numBasis;
+  numQuadPts = _numQuadPts;
+  matType = const_cast<char*>(_matType);
+  matDBFilename = const_cast<char*>(_matDBFilename);
+  matId = _matId;
+  matLabel = const_cast<char*>(_matLabel);
+  dt = _dt;
+  vertices = const_cast<double*>(_vertices);
+  cells = const_cast<int*>(_cells);
+  quadPts = const_cast<double*>(_quadPts);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDeriv = const_cast<double*>(_basisDeriv);
+  fieldTpdt = const_cast<double*>(_fieldTpdt);
+  fieldT = const_cast<double*>(_fieldT);
+  fieldTmdt = const_cast<double*>(_fieldTmdt);
+  valsResidual = const_cast<double*>(_valsResidual);
+  valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::feassemble::ElasticityExplicitData1DLinear::~ElasticityExplicitData1DLinear(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,88 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticityexplicit.
+
+#if !defined(pylith_feassemble_elasticityexplicitdata1dlinear_hh)
+#define pylith_feassemble_elasticityexplicitdata1dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+  namespace feassemble {
+     class ElasticityExplicitData1DLinear;
+  } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitData1DLinear : public IntegratorData
+{
+
+public: 
+
+  /// Constructor
+  ElasticityExplicitData1DLinear(void);
+
+  /// Destructor
+  ~ElasticityExplicitData1DLinear(void);
+
+private:
+
+  static const int _spaceDim;
+
+  static const int _cellDim;
+
+  static const int _numVertices;
+
+  static const int _numCells;
+
+  static const int _numBasis;
+
+  static const int _numQuadPts;
+
+  static const char* _matType;
+
+  static const char* _matDBFilename;
+
+  static const int _matId;
+
+  static const char* _matLabel;
+
+  static const double _dt;
+
+  static const double _vertices[];
+
+  static const int _cells[];
+
+  static const double _quadPts[];
+
+  static const double _quadWts[];
+
+  static const double _basis[];
+
+  static const double _basisDeriv[];
+
+  static const double _fieldTpdt[];
+
+  static const double _fieldT[];
+
+  static const double _fieldTmdt[];
+
+  static const double _valsResidual[];
+
+  static const double _valsJacobian[];
+
+};
+
+#endif // pylith_feassemble_elasticityexplicitdata1dlinear_hh
+
+// End of file

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorApp.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -38,15 +38,31 @@
     ## @li None
     ##
     ## \b Facilities
-    ## @li \b data Data manager.
+    ## @li \b data Manager for output data.
+    ## @li \b mesh Mesh information.
+    ## @li \b quadrature Quadrature information.
+    ## @li \b material Material information.
+    ## @li \b solution Solution information.
 
     import pyre.inventory
 
     from pylith.utils.CppData import CppData
     data = pyre.inventory.facility("data", factory=CppData)
-    data.meta['tip'] = "Data manager."
+    data.meta['tip'] = "Data output manager."
 
+    mesh = pyre.inventory.facility("mesh", family="mesh")
+    mesh.meta['tip'] = "Mesh information."
 
+    quadrature = pyre.inventory.facility("quadrature", family="quadrature")
+    quadrature.meta['tip'] = "Quadrature information."
+
+    material = pyre.inventory.facility("material", family="material")
+    material.meta['tip'] = "Material information."
+
+    solution = pyre.inventory.facility("solution", family="solution")
+    solution.meta['tip'] = "Solution information."
+
+
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
   def __init__(self, name="integratorapp"):
@@ -56,11 +72,14 @@
     Script.__init__(self, name)
 
     # Mesh information
-    self.meshFilename = None
-
-    # Quadrature information
     self.spaceDim = None
     self.cellDim = None
+    self.numVertices = None
+    self.numCells = None
+    self.vertices = None
+    self.cells = None
+
+    # This quadrature information is set by quadrature.calculateBasis()
     self.numBasis = None
     self.numQuadPts = None
     self.quadPts = None
@@ -90,7 +109,7 @@
     """
     Run the application.
     """
-    self._initialize()
+    self._collectData()
     self._calculateResidual()
     self._calculateJacobian()
     self._initData()
@@ -106,24 +125,47 @@
     """
     Script._configure(self)
     self.data = self.inventory.data
+    self.mesh = self.inventory.mesh
+    self.quadrature = self.inventory.quadrature
+    self.material = self.inventory.material
+    self.solution = self.inventory.solution
     return
 
 
-  def _initialize(self):
+  def _collectData(self):
     """
-    Get quadrature information.
+    Collect data we need from data objects.
     """
-    q = self.quadrature
-    q.calculateBasis()
-    self.spaceDim = q.spaceDim
-    self.numBasis = q.numBasis
-    self.cellDim = q.cellDim
-    self.numQuadPts = q.numQuadPts
-    self.basis = q.basis
-    self.basisDeriv = q.basisDeriv
-    self.quadPts = q.quadPtsRef
-    self.quadWts = q.quadWts
+    # Mesh information
+    self.spaceDim = self.mesh.spaceDim
+    self.cellDim = self.mesh.cellDim
+    self.numVertices = self.mesh.numVertices
+    self.numCells = self.mesh.numCells
+    self.vertices = self.mesh.vertices
+    self.cells = self.mesh.cells
 
+    # Quadrature information
+    self.numBasis = self.quadrature.numBasis
+    self.numQuadPts = self.quadrature.numQuadPts
+    self.quadPts = self.quadrature.quadPtsRef
+    self.quadWts = self.quadrature.quadWts
+    (self.basis, self.basisDeriv) = self.quadrature.calculateBasis()
+    self.quadPts = numpy.dot(self.basis, self.vertices)
+
+    # Material information
+    self.matType = self.material.type
+    self.matDBFilename = self.material.dbFilename
+    self.matId = self.material.id
+    self.matLabel = self.material.label
+    self.density = self.material.density
+    self.lameMu = self.material.lameMu
+    self.lameLambda = self.material.lameLambda
+
+    # Solution information
+    self.dt = self.solution.dt
+    self.fieldTpdt = self.solution.fieldTpdt
+    self.fieldT = self.solution.fieldT
+    self.fieldTmdt = self.solution.fieldTmdt
     return
   
 
@@ -132,27 +174,34 @@
     Calculate contribution to residual of operator for integrator.
     """
     raise NotImplementedError("Not implemented in abstract base class.")
+    return
 
 
   def _calculateJacobian(self):
     """
     Calculate contribution to Jacobian matrix of operator for integrator.
     """
-    self.valsAction = numpy.dot(self.valsMatrix, self.fieldIn)[:]
+    raise NotImplementedError("Not implemented in abstract base class.")
     return
     
 
   def _initData(self):
     # Mesh information
-    self.data.addScalar(vtype="char*", name="_meshFilename",
-                        value=self.meshFilename,
-                        format="%s")
-
-    # Quadrature information
     self.data.addScalar(vtype="int", name="_spaceDim", value=self.spaceDim,
                         format="%d")
     self.data.addScalar(vtype="int", name="_cellDim", value=self.cellDim,
                         format="%d")
+    self.data.addScalar(vtype="int", name="_numVertices",
+                        value=self.numVertices,
+                        format="%d")
+    self.data.addScalar(vtype="int", name="_numCells", value=self.numCells,
+                        format="%d")
+    self.data.addArray(vtype="double", name="_vertices", values=self.vertices,
+                       format="%16.8e", ncols=self.spaceDim)
+    self.data.addArray(vtype="int", name="_cells", values=self.cells,
+                       format="%d", ncols=self.numBasis)    
+
+    # Quadrature information
     self.data.addScalar(vtype="int", name="_numBasis", value=self.numBasis,
                         format="%d")
     self.data.addScalar(vtype="int", name="_numQuadPts", value=self.numQuadPts,
@@ -161,7 +210,6 @@
                        format="%16.8e", ncols=self.cellDim)
     self.data.addArray(vtype="double", name="_quadWts", values=self.quadWts,
                        format="%16.8e", ncols=self.numQuadPts)
-    
     self.data.addArray(vtype="double", name="_basis", values=self.basis,
                        format="%16.8e", ncols=self.cellDim)
     self.data.addArray(vtype="double", name="_basisDeriv",
@@ -170,16 +218,16 @@
 
     # Material information
     self.data.addScalar(vtype="char*", name="_matType", value=self.matType,
-                        format="%s")
+                        format='"%s"')
     self.data.addScalar(vtype="char*", name="_matDBFilename",
-                        value=self.matDBFilename, format="%s")
+                        value=self.matDBFilename, format='"%s"')
     self.data.addScalar(vtype="int", name="_matId",
                         value=self.matId, format="%d")
     self.data.addScalar(vtype="char*", name="_matLabel",
-                        value=self.matLabel, format="%s")
+                        value=self.matLabel, format='"%s"')
 
     # Input files
-    self.data.addScalar(vtype="double", name="_dt", values=self.dt,
+    self.data.addScalar(vtype="double", name="_dt", value=self.dt,
                         format="%16.8e")
     self.data.addArray(vtype="double", name="_fieldTpdt",
                        values=self.fieldTpdt,
@@ -198,7 +246,6 @@
     self.data.addArray(vtype="double", name="_valsJacobian",
                        values=self.valsJacobian,
                        format="%16.8e", ncols=self.spaceDim)
-      
     return
 
   

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -15,9 +15,12 @@
 // ----------------------------------------------------------------------
 // Constructor
 pylith::feassemble::IntegratorData::IntegratorData(void) :
-  meshFilename(0),
   spaceDim(0),
   cellDim(0),
+  numVertices(0),
+  numCells(0),
+  vertices(0),
+  cells(0),
   numBasis(0),
   numQuadPts(0),
   quadPts(0),
@@ -27,7 +30,8 @@
   matType(0),
   matDBFilename(0),
   matId(0),
-  matlabel(0),
+  matLabel(0),
+  dt(0),
   fieldTpdt(0),
   fieldT(0),
   fieldTmdt(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorData.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -36,13 +36,16 @@
 
   /// @name Mesh information
   //@{
-  char* meshFilename; ///< Name of mesh file.
+  int spaceDim; ///< Number of dimensions in vertex coordinates
+  int cellDim; ///< Number of dimensions associated with cell
+  int numVertices; ///< Number of vertices
+  int numCells; ///< Number of cells
+  double* vertices; ///< Coordinates of vertices
+  int* cells; ///< Indices of vertices in cells
   //@}
 
   /// @name Quadrature information
   //@{
-  int spaceDim; ///< Number of dimensions in vertex coordinates
-  int cellDim; ///< Number of dimensions associated with cell
   int numBasis; ///< Number of vertices in cell
   int numQuadPts; ///< Number of quadrature points
   double* quadPts; ///< Coordinates of quad pts in ref cell
@@ -53,14 +56,15 @@
 
   /// @name Material information
   //@{
-  double* matType; ///< String corresponding to material type.
-  double* matDBFilename; ///< Filename for database of material properties.
-  double* matId; ///< Material identifier.
-  double* matLabel; ///< Label of material.
+  char* matType; ///< String corresponding to material type.
+  char* matDBFilename; ///< Filename for database of material properties.
+  int matId; ///< Material identifier.
+  char* matLabel; ///< Label of material.
   //@}
 
   /// @name Input fields
   //@{
+  double dt; ///< Time step
   double* fieldTpdt; ///< Input field at time t+dt.
   double* fieldT; ///< Input field at time t.
   double* fieldTmdt; ///< Input field at time t-dt.

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,133 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorinertia2din3done.
-
-#include "IntegratorDataInertia2Din3DOne.hh"
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_numVertices = 3;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_spaceDim = 3;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_numCells = 1;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_cellDim = 2;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_numBasis = 3;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_numQuadPts = 1;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_fiberDim = 3;
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_vertices[] = {
-  5.00000000e-01, -2.00000000e+00, -5.00000000e-01,
-  3.00000000e+00,  5.00000000e-01,  0.00000000e+00,
- -1.00000000e+00,  2.00000000e+00,  4.00000000e+00,
-};
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DOne::_cells[] = {
-       0,       1,       2,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_quadPts[] = {
-  3.33333333e-01,  3.33333333e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_quadWts[] = {
-  5.00000000e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_basis[] = {
-  3.33333333e-01,  3.33333333e-01,
-  3.33333333e-01,};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_basisDeriv[] = {
- -1.00000000e+00, -1.00000000e+00,
-  1.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.00000000e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_fieldIn[] = {
-  1.20000000e+00,  1.00000000e-01, -3.00000000e-01,
-  5.00000000e-01, -3.00000000e-01,  1.20000000e+00,
-  1.10000000e+00,  5.00000000e-01,  8.00000000e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_valsAction[] = {
-  3.18271761e+00,  3.41005458e-01,  1.93236426e+00,
-  3.18271761e+00,  3.41005458e-01,  1.93236426e+00,
-  3.18271761e+00,  3.41005458e-01,  1.93236426e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_valsMatrix[] = {
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DOne::_valsLumped[] = {
-  3.41005458e+00,  3.41005458e+00,  3.41005458e+00,
-  3.41005458e+00,  3.41005458e+00,  3.41005458e+00,
-  3.41005458e+00,  3.41005458e+00,  3.41005458e+00,
-};
-
-pylith::feassemble::IntegratorDataInertia2Din3DOne::IntegratorDataInertia2Din3DOne(void)
-{ // constructor
-  numVertices = _numVertices;
-  spaceDim = _spaceDim;
-  numCells = _numCells;
-  cellDim = _cellDim;
-  numBasis = _numBasis;
-  numQuadPts = _numQuadPts;
-  fiberDim = _fiberDim;
-  vertices = const_cast<double*>(_vertices);
-  cells = const_cast<int*>(_cells);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  fieldIn = const_cast<double*>(_fieldIn);
-  valsAction = const_cast<double*>(_valsAction);
-  valsMatrix = const_cast<double*>(_valsMatrix);
-  valsLumped = const_cast<double*>(_valsLumped);
-} // constructor
-
-pylith::feassemble::IntegratorDataInertia2Din3DOne::~IntegratorDataInertia2Din3DOne(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DOne.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,78 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorinertia2din3done.
-
-#if !defined(pylith_feassemble_integratordatainertia2din3done_hh)
-#define pylith_feassemble_integratordatainertia2din3done_hh
-
-#include "IntegratorData.hh"
-
-namespace pylith {
-  namespace feassemble {
-     class IntegratorDataInertia2Din3DOne;
-  } // pylith
-} // feassemble
-
-class pylith::feassemble::IntegratorDataInertia2Din3DOne : public IntegratorData
-{
-
-public: 
-
-  /// Constructor
-  IntegratorDataInertia2Din3DOne(void);
-
-  /// Destructor
-  ~IntegratorDataInertia2Din3DOne(void);
-
-private:
-
-  static const int _numVertices;
-
-  static const int _spaceDim;
-
-  static const int _numCells;
-
-  static const int _cellDim;
-
-  static const int _numBasis;
-
-  static const int _numQuadPts;
-
-  static const int _fiberDim;
-
-  static const double _vertices[];
-
-  static const int _cells[];
-
-  static const double _quadPts[];
-
-  static const double _quadWts[];
-
-  static const double _basis[];
-
-  static const double _basisDeriv[];
-
-  static const double _fieldIn[];
-
-  static const double _valsAction[];
-
-  static const double _valsMatrix[];
-
-  static const double _valsLumped[];
-
-};
-
-#endif // pylith_feassemble_integratordatainertia2din3done_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,158 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorinertia2din3dthree.
-
-#include "IntegratorDataInertia2Din3DThree.hh"
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_numVertices = 4;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_spaceDim = 3;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_numCells = 2;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_cellDim = 2;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_numBasis = 3;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_numQuadPts = 1;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_fiberDim = 3;
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_vertices[] = {
-  6.00000000e-01, -2.00000000e+00, -4.00000000e-01,
-  3.00000000e+00,  5.00000000e-01,  0.00000000e+00,
- -1.00000000e+00,  2.00000000e+00,  4.00000000e+00,
- -3.40000000e+00, -5.00000000e-01,  3.60000000e+00,
-};
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DThree::_cells[] = {
-       0,       1,       2,       2,
-       3,       0,};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_quadPts[] = {
-  3.33333333e-01,  3.33333333e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_quadWts[] = {
-  5.00000000e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_basis[] = {
-  3.33333333e-01,  3.33333333e-01,
-  3.33333333e-01,};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_basisDeriv[] = {
- -1.00000000e+00, -1.00000000e+00,
-  1.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.00000000e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_fieldIn[] = {
-  1.20000000e+00,  1.00000000e-01, -3.00000000e-01,
-  2.00000000e-01, -8.00000000e-01,  1.20000000e+00,
-  1.30000000e+00, -2.00000000e-01,  1.70000000e+00,
-  1.10000000e+00,  1.40000000e+00,  9.00000000e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_valsAction[] = {
-  6.98914158e+00,  4.43755021e-01,  5.43599901e+00,
-  2.99534639e+00, -9.98448797e-01,  2.88440764e+00,
-  6.98914158e+00,  4.43755021e-01,  5.43599901e+00,
-  3.99379519e+00,  1.44220382e+00,  2.55159137e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_valsMatrix[] = {
-  2.21877510e+00,  0.00000000e+00,  0.00000000e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  2.21877510e+00,  0.00000000e+00,  0.00000000e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  2.21877510e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  2.21877510e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  2.21877510e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  0.00000000e+00,  0.00000000e+00,  2.21877510e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  2.21877510e+00,  0.00000000e+00,  0.00000000e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  2.21877510e+00,  0.00000000e+00,  0.00000000e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  2.21877510e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  2.21877510e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  2.21877510e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  0.00000000e+00,  0.00000000e+00,  2.21877510e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  1.10938755e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  1.10938755e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-  0.00000000e+00,  0.00000000e+00,  1.10938755e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DThree::_valsLumped[] = {
-  6.65632531e+00,  6.65632531e+00,  6.65632531e+00,
-  3.32816266e+00,  3.32816266e+00,  3.32816266e+00,
-  6.65632531e+00,  6.65632531e+00,  6.65632531e+00,
-  3.32816266e+00,  3.32816266e+00,  3.32816266e+00,
-};
-
-pylith::feassemble::IntegratorDataInertia2Din3DThree::IntegratorDataInertia2Din3DThree(void)
-{ // constructor
-  numVertices = _numVertices;
-  spaceDim = _spaceDim;
-  numCells = _numCells;
-  cellDim = _cellDim;
-  numBasis = _numBasis;
-  numQuadPts = _numQuadPts;
-  fiberDim = _fiberDim;
-  vertices = const_cast<double*>(_vertices);
-  cells = const_cast<int*>(_cells);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  fieldIn = const_cast<double*>(_fieldIn);
-  valsAction = const_cast<double*>(_valsAction);
-  valsMatrix = const_cast<double*>(_valsMatrix);
-  valsLumped = const_cast<double*>(_valsLumped);
-} // constructor
-
-pylith::feassemble::IntegratorDataInertia2Din3DThree::~IntegratorDataInertia2Din3DThree(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DThree.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,78 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorinertia2din3dthree.
-
-#if !defined(pylith_feassemble_integratordatainertia2din3dthree_hh)
-#define pylith_feassemble_integratordatainertia2din3dthree_hh
-
-#include "IntegratorData.hh"
-
-namespace pylith {
-  namespace feassemble {
-     class IntegratorDataInertia2Din3DThree;
-  } // pylith
-} // feassemble
-
-class pylith::feassemble::IntegratorDataInertia2Din3DThree : public IntegratorData
-{
-
-public: 
-
-  /// Constructor
-  IntegratorDataInertia2Din3DThree(void);
-
-  /// Destructor
-  ~IntegratorDataInertia2Din3DThree(void);
-
-private:
-
-  static const int _numVertices;
-
-  static const int _spaceDim;
-
-  static const int _numCells;
-
-  static const int _cellDim;
-
-  static const int _numBasis;
-
-  static const int _numQuadPts;
-
-  static const int _fiberDim;
-
-  static const double _vertices[];
-
-  static const int _cells[];
-
-  static const double _quadPts[];
-
-  static const double _quadWts[];
-
-  static const double _basis[];
-
-  static const double _basisDeriv[];
-
-  static const double _fieldIn[];
-
-  static const double _valsAction[];
-
-  static const double _valsMatrix[];
-
-  static const double _valsLumped[];
-
-};
-
-#endif // pylith_feassemble_integratordatainertia2din3dthree_hh
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,189 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorinertia2din3dtwo.
-
-#include "IntegratorDataInertia2Din3DTwo.hh"
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_numVertices = 5;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_spaceDim = 3;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_numCells = 2;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_cellDim = 2;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_numBasis = 3;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_numQuadPts = 1;
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_fiberDim = 3;
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_vertices[] = {
-  5.00000000e-01, -2.00000000e+00, -5.00000000e-01,
-  3.00000000e+00,  5.00000000e-01,  0.00000000e+00,
- -1.00000000e+00,  2.00000000e+00,  4.00000000e+00,
-  7.00000000e+00, -1.00000000e+00, -4.00000000e+00,
-  5.50000000e+00,  3.00000000e+00,  5.00000000e-01,
-};
-
-const int pylith::feassemble::IntegratorDataInertia2Din3DTwo::_cells[] = {
-       0,       1,       2,       3,       4,
-       1,};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_quadPts[] = {
-  3.33333333e-01,  3.33333333e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_quadWts[] = {
-  5.00000000e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_basis[] = {
-  3.33333333e-01,  3.33333333e-01,
-  3.33333333e-01,};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_basisDeriv[] = {
- -1.00000000e+00, -1.00000000e+00,
-  1.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.00000000e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_fieldIn[] = {
-  1.20000000e+00,  1.00000000e-01, -3.00000000e-01,
-  2.00000000e-01, -8.00000000e-01,  1.20000000e+00,
- -9.00000000e-01, -7.00000000e-01,  5.00000000e-01,
-  1.30000000e+00, -2.00000000e-01,  1.70000000e+00,
-  1.10000000e+00,  1.40000000e+00,  9.00000000e-01,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_valsAction[] = {
-  5.68342430e-01, -1.59135880e+00,  1.59135880e+00,
-  3.52372306e+00, -1.13668486e+00,  5.91076127e+00,
-  5.68342430e-01, -1.59135880e+00,  1.59135880e+00,
-  2.95538063e+00,  4.54673944e-01,  4.31940246e+00,
-  2.95538063e+00,  4.54673944e-01,  4.31940246e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_valsMatrix[] = {
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  2.27336972e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  2.27336972e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  2.27336972e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  1.13668486e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  1.13668486e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  0.00000000e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-  0.00000000e+00,  0.00000000e+00,  1.13668486e+00,
-};
-
-const double pylith::feassemble::IntegratorDataInertia2Din3DTwo::_valsLumped[] = {
-  3.41005458e+00,  3.41005458e+00,  3.41005458e+00,
-  6.82010916e+00,  6.82010916e+00,  6.82010916e+00,
-  3.41005458e+00,  3.41005458e+00,  3.41005458e+00,
-  3.41005458e+00,  3.41005458e+00,  3.41005458e+00,
-  3.41005458e+00,  3.41005458e+00,  3.41005458e+00,
-};
-
-pylith::feassemble::IntegratorDataInertia2Din3DTwo::IntegratorDataInertia2Din3DTwo(void)
-{ // constructor
-  numVertices = _numVertices;
-  spaceDim = _spaceDim;
-  numCells = _numCells;
-  cellDim = _cellDim;
-  numBasis = _numBasis;
-  numQuadPts = _numQuadPts;
-  fiberDim = _fiberDim;
-  vertices = const_cast<double*>(_vertices);
-  cells = const_cast<int*>(_cells);
-  quadPts = const_cast<double*>(_quadPts);
-  quadWts = const_cast<double*>(_quadWts);
-  basis = const_cast<double*>(_basis);
-  basisDeriv = const_cast<double*>(_basisDeriv);
-  fieldIn = const_cast<double*>(_fieldIn);
-  valsAction = const_cast<double*>(_valsAction);
-  valsMatrix = const_cast<double*>(_valsMatrix);
-  valsLumped = const_cast<double*>(_valsLumped);
-} // constructor
-
-pylith::feassemble::IntegratorDataInertia2Din3DTwo::~IntegratorDataInertia2Din3DTwo(void)
-{}
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorDataInertia2Din3DTwo.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,78 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorinertia2din3dtwo.
-
-#if !defined(pylith_feassemble_integratordatainertia2din3dtwo_hh)
-#define pylith_feassemble_integratordatainertia2din3dtwo_hh
-
-#include "IntegratorData.hh"
-
-namespace pylith {
-  namespace feassemble {
-     class IntegratorDataInertia2Din3DTwo;
-  } // pylith
-} // feassemble
-
-class pylith::feassemble::IntegratorDataInertia2Din3DTwo : public IntegratorData
-{
-
-public: 
-
-  /// Constructor
-  IntegratorDataInertia2Din3DTwo(void);
-
-  /// Destructor
-  ~IntegratorDataInertia2Din3DTwo(void);
-
-private:
-
-  static const int _numVertices;
-
-  static const int _spaceDim;
-
-  static const int _numCells;
-
-  static const int _cellDim;
-
-  static const int _numBasis;
-
-  static const int _numQuadPts;
-
-  static const int _fiberDim;
-
-  static const double _vertices[];
-
-  static const int _cells[];
-
-  static const double _quadPts[];
-
-  static const double _quadWts[];
-
-  static const double _basis[];
-
-  static const double _basisDeriv[];
-
-  static const double _fieldIn[];
-
-  static const double _valsAction[];
-
-  static const double _valsMatrix[];
-
-  static const double _valsLumped[];
-
-};
-
-#endif // pylith_feassemble_integratordatainertia2din3dtwo_hh
-
-// End of file

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -41,8 +41,6 @@
     self.lameMu = None
     self.lameLambda = None
 
-    self.K = self._calculateStiffnessMat()
-    self.M = self._calculateMassMat()
     return
   
 
@@ -55,53 +53,106 @@
     """
     import feutils
 
-    self.K = numpy.zeros ( (self.spaceDim*self.numVertices,
-                            self.spaceDim*self.numVertices),
-                           dtype=numpy.float64)
+    K = numpy.zeros( (self.spaceDim*self.numVertices,
+                      self.spaceDim*self.numVertices),
+                     dtype=numpy.float64)
 
     # Matrix of elasticity values
     D = self._calculateElasticityMat()
     
     for cell in self.cells:
+      cellK = numpy.zeros( (self.spaceDim*self.numBasis,
+                            self.spaceDim*self.numBasis),
+                           dtype=numpy.float64)
       vertices = self.vertices[cell, :]
+      (jacobian, jacobianInv, jacobianDet) = \
+                 feutils.calculateJacobian(self.quadrature, vertices)
+      for iQuad in xrange(self.numQuadPts):
+        wt = self.quadWts[iQuad] * jacobianDet[iQuad]
+        B = self._calculateBasisDerivMat(iQuad)
+        cellK[:] += wt * numpy.dot(numpy.dot(B.transpose(), D), B)
+      feutils.assembleMat(K, cellK, cell, self.spaceDim)
+    return K
 
-      # Matrix of shape function derivatives
-      B = self._calculateBasisDerivMat(vertices)
 
-      cellK = numpy.dot(numpy.dot(B.transpose(), D), B)
-
-      feutils.assembleMat(self.K, cellK, cell, self.spaceDim)
-    return
-
-
   def _calculateMassMat(self):
     """
     Calculate mass matrix.
     """
 
-    self.M = numpy.zeros ( (self.spaceDim*self.numVertices,
-                            self.spaceDim*self.numVertices),
-                           dtype=numpy.float64)
+    M = numpy.zeros( (self.spaceDim*self.numVertices,
+                      self.spaceDim*self.numVertices),
+                     dtype=numpy.float64)
 
-
     for cell in self.cells:
+      cellM = numpy.zeros( (self.spaceDim*self.numBasis,
+                            self.spaceDim*self.numBasis),
+                           dtype=numpy.float64)
       vertices = self.vertices[cell, :]
       (jacobian, jacobianInv, jacobianDet) = \
-                 feutils.calculateJacobianQuad(self.quadrature, vertices)
+                 feutils.calculateJacobian(self.quadrature, vertices)
       for iQuad in xrange(self.numQuadPts):
         wt = self.quadWts[iQuad] * jacobianDet[iQuad]
-        N = self._calculateBasisMat(vertices, iQuad)
+        N = self._calculateBasisMat(iQuad)
         cellM[:] += self.density * wt * numpy.dot(N.transpose(), N)
-      feutils.assembleMat(self.M, cellM, cell, self.spaceDim)
-    return
+      feutils.assembleMat(M, cellM, cell, self.spaceDim)
+    return M
 
 
   def _calculateElasticityMat(self):
     """
     Calculate elasticity matrix.
     """
-    return
+    if 1 == self.cellDim:
+      lambda2mu = self.lameLambda + 2*self.lameMu
+      C1111 = lambda2mu
+      D = numpy.array([ [C1111] ],
+                      dtype=numpy.float64)
+    elif 2 == self.cellDim:
+      lambda2mu = self.lameLambda + 2*self.lameMu
+      C1111 = lambda2mu
+      C2222 = lambda2mu
+      C1122 = self.lameLambda
+      C1212 = 2*self.lameMu
+      C1112 = 0.0
+      C2212 = 0.0
+      D = numpy.array([ [C1111, C1122, C1112],
+                        [C1122, C2222, C2212],
+                        [C1112, C2212, C1212] ],
+                      dtype=numpy.float64)
+    elif 3 == self.cellDim:
+      lambda2mu = self.lameLambda + 2*self.lameMu
+      C1111 = lambda2mu
+      C2222 = lambda2mu
+      C3333 = lambda2mu
+      C1122 = self.lameLambda
+      C1133 = self.lameLambda
+      C2233 = self.lameLambda
+      C1212 = 2*self.lameMu
+      C2323 = 2*self.lameMu
+      C1313 = 2*self.lameMu
+      C1112 = 0.0
+      C1123 = 0.0
+      C1113 = 0.0
+      C2212 = 0.0
+      C2223 = 0.0
+      C2213 = 0.0
+      C3312 = 0.0
+      C3323 = 0.0
+      C3313 = 0.0
+      C1223 = 0.0
+      C1213 = 0.0
+      C2313 = 0.0
+      D = numpy.array([ [C1111, C1122, C1133, C1112, C1123, C1113],
+                        [C1122, C2222, C2233, C2212, C2223, C2213],
+                        [C1133, C2233, C3333, C3312, C3323, C3313],
+                        [C1112, C2212, C3312, C1212, C1223, C1213],
+                        [C1123, C2223, C3323, C1223, C2323, C2313],
+                        [C1113, C2213, C3313, C1213, C2313, C1313] ],
+                      dtype=numpy.float64)
+    return D
 
+
   def _calculateBasisMat(self, iQuad):
     """
     Calculate matrix of basis functions.
@@ -114,16 +165,39 @@
     return N
 
 
-  def _calculateBasisDerivMat(self):
+  def _calculateBasisDerivMat(self, iQuad):
     """
     Calculate matrix of derivatives of basis functions.
     """
-    B = numpy.zeros( (self.spaceDim, self.spaceDim*self.numBasis),
-                     dtype=numpy.float64)
-    for iBasis in xrange(self.numBasis):
-      for iDim in xrange(self.spaceDim):
-        N[iDim, iBasis*self.spaceDim+iDim] = self.basis[iQuad, iBasis]
-    return
+    if 3 == self.spaceDim:
+      B = numpy.zeros( (6, self.spaceDim*self.numBasis),
+                       dtype=numpy.float64)
+      for iBasis in xrange(self.numBasis):
+        B[0, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 0]
+        B[1, iBasis*self.spaceDim+1] = self.basisDeriv[iQuad, iBasis, 1]
+        B[2, iBasis*self.spaceDim+2] = self.basisDeriv[iQuad, iBasis, 2]
+        B[3, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 1]
+        B[3, iBasis*self.spaceDim+1] = self.basisDeriv[iQuad, iBasis, 0]
+        B[4, iBasis*self.spaceDim+1] = self.basisDeriv[iQuad, iBasis, 2]
+        B[4, iBasis*self.spaceDim+2] = self.basisDeriv[iQuad, iBasis, 1]
+        B[5, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 2]
+        B[5, iBasis*self.spaceDim+2] = self.basisDeriv[iQuad, iBasis, 0]
+    elif 2 == self.spaceDim:
+      B = numpy.zeros( (4, self.spaceDim*self.numBasis),
+                       dtype=numpy.float64)
+      for iBasis in xrange(self.numBasis):
+        B[0, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 0]
+        B[1, iBasis*self.spaceDim+1] = self.basisDeriv[iQuad, iBasis, 1]
+        B[2, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 1]
+        B[2, iBasis*self.spaceDim+1] = self.basisDeriv[iQuad, iBasis, 0]
+    elif 1 == self.spaceDim:
+      iBasis = 0
+      B = numpy.zeros( (1, self.spaceDim*self.numBasis),
+                       dtype=numpy.float64)
+      B[0, iBasis*self.spaceDim+0] = self.basisDeriv[iQuad, iBasis, 0]
+    else:
+      raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+    return B
 
 
 # End of file 

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DLinear.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DLinear.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file unittests/libtests/feassemble/data/IntegratorInertia1DLinear.py
-
-## @brief Python application for generating C++ data files for testing
-## C++ IntegratorInertia object with 1-D cell and linear basis
-## functions.
-
-from IntegratorInertia import IntegratorInertia
-
-import numpy
-
-# ----------------------------------------------------------------------
-
-# IntegratorInertia1DLinear class
-class IntegratorInertia1DLinear(IntegratorInertia):
-  """
-  Python application for generating C++ data files for testing C++
-  IntegratorInertia object with 1-D cell and linear basis functions.
-  """
-  
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-  
-  def __init__(self, name="integratorinertia1dlinear"):
-    """
-    Constructor.
-    """
-    IntegratorInertia.__init__(self, name)
-
-    from Quadrature1DLinear import Quadrature1DLinear
-    self.quadrature = Quadrature1DLinear()
-    
-    self.numVertices = 2
-    self.numCells = 1
-    self.fiberDim = 1
-    
-    self.vertices = numpy.array( [[-0.25], [2.0]], dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
-    self.fieldIn = numpy.array( [[1.2], [1.5]], dtype=numpy.float64)
-    return
-  
-
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
-
-  app = IntegratorInertia1DLinear()
-  app.run()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DOne.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DOne.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DOne.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,66 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file unittests/libtests/feassemble/data/IntegratorInertia2Din3DOne.py
-
-## @brief Python application for generating C++ data files for testing
-## C++ IntegratorInertia object with 2-D cell in 3-D space and linear basis
-## functions.
-
-from IntegratorInertia import IntegratorInertia
-
-import numpy
-
-# ----------------------------------------------------------------------
-
-# IntegratorInertia2Din3DOne class
-class IntegratorInertia2Din3DOne(IntegratorInertia):
-  """
-  Python application for generating C++ data files for testing C++
-  IntegratorInertia object with 2-D cell in 3-D space and linear
-  basis functions.
-  """
-  
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-  
-  def __init__(self, name="integratorinertia2din3done"):
-    """
-    Constructor.
-    """
-    IntegratorInertia.__init__(self, name)
-
-    from Quadrature2Din3DLinearXYZ import Quadrature2Din3DLinearXYZ
-    self.quadrature = Quadrature2Din3DLinearXYZ()
-    
-    self.numVertices = 3
-    self.numCells = 1
-    self.fiberDim = 3
-    
-    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.fieldIn = numpy.array( [[1.2], [0.1], [-0.3],
-                                 [0.5], [-0.3], [1.2],
-                                 [1.1], [0.5], [0.8]], dtype=numpy.float64)
-    return
-  
-
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
-
-  app = IntegratorInertia2Din3DOne()
-  app.run()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DThree.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DThree.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DThree.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file unittests/libtests/feassemble/data/IntegratorInertia2Din3DThree.py
-
-## @brief Python application for generating C++ data files for testing
-## C++ IntegratorInertia object with 2-D cell in 3-D space and linear basis
-## functions using 2 cells sharing 2 vertices.
-
-from IntegratorInertia import IntegratorInertia
-
-import numpy
-
-# ----------------------------------------------------------------------
-
-# IntegratorInertia2Din3DThree class
-class IntegratorInertia2Din3DThree(IntegratorInertia):
-  """
-  Python application for generating C++ data files for testing C++
-  IntegratorInertia object with 2-D cell in 3-D space and linear
-  basis functions using 2 cells sharing 2 vertices.
-  """
-  
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-  
-  def __init__(self, name="integratorinertia2din3dthree"):
-    """
-    Constructor.
-    """
-    IntegratorInertia.__init__(self, name)
-
-    from Quadrature2Din3DLinearXYZ import Quadrature2Din3DLinearXYZ
-    self.quadrature = Quadrature2Din3DLinearXYZ()
-    
-    self.numVertices = 4
-    self.numCells = 2
-    self.fiberDim = 3
-    
-    self.vertices = numpy.array( [[ 0.6, -2.0, -0.4],
-                                  [ 3.0,  0.5,  0.0],
-                                  [-1.0,  2.0,  4.0],
-                                  [-3.4, -0.5,  3.6]],
-                                 dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2],
-                               [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],
-                                 [ 1.1], [ 1.4], [ 0.9]], dtype=numpy.float64)
-    return
-  
-
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
-
-  app = IntegratorInertia2Din3DThree()
-  app.run()
-
-
-# End of file 

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DTwo.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DTwo.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia2Din3DTwo.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,71 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file unittests/libtests/feassemble/data/IntegratorInertia2Din3DTwo.py
-
-## @brief Python application for generating C++ data files for testing
-## C++ IntegratorInertia object with 2-D cell in 3-D space and linear basis
-## functions using 2 cells sharing 1 vertex.
-
-from IntegratorInertia import IntegratorInertia
-
-import numpy
-
-# ----------------------------------------------------------------------
-
-# IntegratorInertia2Din3DTwo class
-class IntegratorInertia2Din3DTwo(IntegratorInertia):
-  """
-  Python application for generating C++ data files for testing C++
-  IntegratorInertia object with 2-D cell in 3-D space and linear
-  basis functions using 2 cells sharing 1 vertex.
-  """
-  
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-  
-  def __init__(self, name="integratorinertia2din3dtwo"):
-    """
-    Constructor.
-    """
-    IntegratorInertia.__init__(self, name)
-
-    from Quadrature2Din3DLinearXYZ import Quadrature2Din3DLinearXYZ
-    self.quadrature = Quadrature2Din3DLinearXYZ()
-    
-    self.numVertices = 5
-    self.numCells = 2
-    self.fiberDim = 3
-    
-    self.vertices = numpy.array( [[ 0.5, -2.0, -0.5],
-                                  [ 3.0,  0.5,  0.0],
-                                  [-1.0,  2.0,  4.0],
-                                  [ 7.0, -1.0, -4.0],
-                                  [ 5.5,  3.0,  0.5]],
-                                 dtype=numpy.float64)
-    self.cells = numpy.array( [[0, 1, 2],
-                               [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],
-                                 [ 1.3], [-0.2], [ 1.7],
-                                 [ 1.1], [ 1.4], [ 0.9]], dtype=numpy.float64)
-    return
-  
-
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
-
-  app = IntegratorInertia2Din3DTwo()
-  app.run()
-
-
-# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Makefile.am	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Makefile.am	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,27 @@
+# -*- Makefile -*-
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+noinst_DATA = \
+	elasticstrain1d.spatialdb
+
+# 'export' the input files by performing a mock install
+export_datadir = $(top_builddir)/unittests/libtests/feassemble/data
+export-data: $(noinst_DATA)
+	for f in $(noinst_DATA); do $(install_sh_DATA) $(srcdir)/$$f $(export_datadir); done
+
+BUILT_SOURCES = export-data
+
+CLEANFILES = \
+	$(export_datadir)/$(noinst_DATA)
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/MaterialElasticStrain1D.odb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/MaterialElasticStrain1D.odb	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/MaterialElasticStrain1D.odb	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/MaterialElasticStrain1D.py
+
+## @brief Python container holding material information for elastic
+## strain 1-D material used in testing finite-element C++ routines.
+
+from pyre.components.Component import Component
+
+# ----------------------------------------------------------------------
+
+# MaterialElasticStrain1D class
+class MaterialElasticStrain1D(Component):
+  """
+  Python container holding material information for elastic strain 1-D
+  material used in testing finite-element C++ routines.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="materialelasticstrain1d"):
+    """
+    Constructor.
+    """
+    Component.__init__(self, name, facility="material")
+    
+    self.dimension = 1
+    self.type = "ElasticStrain1D"
+    self.dbFilename = "data/elasticstrain1d.spatialdb"
+    self.id = 0
+    self.label = "elastic strain 1-D"
+    self.density = 2500.0
+    self.lameMu = 3.0e+10
+    self.lameLambda = self.lameMu
+    return
+  
+
+# FACTORIES ////////////////////////////////////////////////////////////
+def material():
+  """
+  Factory for MaterialElasticStrain1D.
+  """
+  return MaterialElasticStrain1D()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.odb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.odb	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.odb	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Mesh1DLinear.py
+
+## @brief Python container holding mesh information for a 1-D
+## linear finite-element cell used in testing finite-element C++
+## routines.
+
+from pyre.components.Component import Component
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# Mesh1DLinear class
+class Mesh1DLinear(Component):
+  """
+  Python container holding mesh information for a 1-D linear
+  finite-element cell used in testing finite-element C++ routines.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="mesh1dlinear"):
+    """
+    Constructor.
+    """
+    Component.__init__(self, name, facility="mesh")
+    
+    self.spaceDim = 1
+    self.cellDim = 1
+    self.numVertices = 2
+    self.numCells = 1    
+    self.vertices = numpy.array( [[-0.25], [2.0]], dtype=numpy.float64)
+    self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
+    return
+  
+
+# FACTORIES ////////////////////////////////////////////////////////////
+def mesh():
+  """
+  Factory for Mesh1DLinear.
+  """
+  return Mesh1DLinear()
+
+
+# End of file 

Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/MeshData1DLinear.py (from rev 6989, short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DLinear.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia1DLinear.py	2007-05-29 15:19:53 UTC (rev 6989)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/MeshData1DLinear.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Mesh1DLinear.py
+
+## @brief Python container for data associated with finite-element
+## mesh in 1-D space with linear basis funtions.
+
+from IntegratorInertia import IntegratorInertia
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# Mesh1DLinear class
+class Mesh1DLinear(object):
+  """
+  Python application for generating C++ data files for testing C++
+  IntegratorInertia object with 1-D cell and linear basis functions.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self):
+    """
+    Constructor.
+    """
+    # Mesh information
+    self.spaceDim = 1
+    self.cellDim = 1
+    self.numVertices = 2
+    self.numCells = 1
+    self.vertices = numpy.array( [[-0.25], [2.0]], dtype=numpy.float64)
+    self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
+
+    # Quadrature information
+    from Quadrature1DLinear import Quadrature1DLinear
+    self.quadrature = Quadrature1DLinear()
+
+    # Material information
+    self.matType = "ElasticStress1D"
+    self.matDBFilename = "data/elasticstress1d.spatialdb"
+    self.matId = 0
+    self.label = "elastic 1-D"
+    self.mu = 3.0e+10
+    self.lambda = self.mu
+    self.density = 2500.0
+
+    # Input fields
+    self.dt = 0.01
+    self.fieldTpdt = numpy.array( [[1.2], [1.7]], dtype=numpy.float64)
+    self.fieldT = numpy.array( [[1.1], [1.5]], dtype=numpy.float64)
+    self.fieldTmdt = numpy.array( [[1.0], [1.3]], dtype=numpy.float64)
+    return
+  
+
+# End of file 

Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.odb (from rev 6989, short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py	2007-05-29 15:19:53 UTC (rev 6989)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.odb	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Quadrature1DLinear.py
+
+## @brief Python container holding quadrature information for a 1-D
+## linear finite-element cell used in testing finite-element C++
+## routines.
+
+from pyre.components.Component import Component
+
+import numpy
+
+# ----------------------------------------------------------------------
+def N0(p):
+  return 0.5*(1.0-p)
+
+def N0p(p):
+  return -0.5
+
+def N1(p):
+  return 0.5*(1.0+p)
+
+def N1p(p):
+  return +0.5
+
+# ----------------------------------------------------------------------
+
+# Quadrature1DLinear class
+class Quadrature1DLinear(Component):
+  """
+  Python container holding quadrature information for a 1-D linear
+  finite-element cell used in testing finite-element C++ routines.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="quadrature1dlinear"):
+    """
+    Constructor.
+    """
+    Component.__init__(self, name, facility="quadrature")
+    
+    self.quadPtsRef = numpy.array( [[0.0]], dtype=numpy.float64)
+    self.quadWts = numpy.array([2.0], dtype=numpy.float64)
+    self.numBasis = 2
+    self.numQuadPts = 1
+    self.spaceDim = 1
+    self.cellDim = 1
+    return
+  
+
+  def calculateBasis(self):
+    """
+    Calculate basis functions and their derivatives at quadrature points.
+    """
+
+    basis = numpy.zeros( (self.numQuadPts, self.numBasis), dtype=numpy.float64)
+    basisDeriv = numpy.zeros( (self.numQuadPts, self.numBasis, self.cellDim),
+                              dtype=numpy.float64)
+
+    iQuad = 0
+    for q in self.quadPtsRef:
+      # Basis functions at quadrature points
+      basisQ = numpy.array([N0(q), N1(q)], dtype=numpy.float64)
+      basis[iQuad,:] = basisQ.reshape( (self.numBasis,) )
+
+      # Derivatives of basis functions at quadrature points
+      derivQ = numpy.array([[N0p(q)], [N1p(q)]], dtype=numpy.float64)      
+      basisDeriv[iQuad,:] = derivQ.reshape((self.numBasis, self.cellDim))
+
+      iQuad += 1
+    return (basis, basisDeriv)
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+def quadrature():
+  """
+  Factory for Quadrature1DLinear.
+  """
+  return Quadrature1DLinear()
+
+
+# End of file 

Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -1,101 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-#                           Brad T. Aagaard
-#                        U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file unittests/libtests/feassemble/data/Quadrature1DLinear.py
-
-## @brief Python application for generating C++ data files for testing
-## C++ Quadrature1D object w/linear basis functions.
-
-from QuadratureApp import QuadratureApp
-
-import numpy
-
-# ----------------------------------------------------------------------
-def N0(p):
-  return 0.5*(1.0-p)
-
-def N0p(p):
-  return -0.5
-
-def N1(p):
-  return 0.5*(1.0+p)
-
-def N1p(p):
-  return +0.5
-
-# ----------------------------------------------------------------------
-
-# Quadrature1DLinear class
-class Quadrature1DLinear(QuadratureApp):
-  """
-  Python application for generating C++ data files for testing C++
-  Quadrature1D object w/linear basis functions.
-  """
-  
-  # PUBLIC METHODS /////////////////////////////////////////////////////
-  
-  def __init__(self, name="quadrature1dlinear"):
-    """
-    Constructor.
-    """
-    QuadratureApp.__init__(self, name)
-    
-    self.numVertices = 2
-    self.spaceDim = 1
-    self.numCells = 1
-    self.cellDim = 1
-    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)
-    return
-  
-
-  # PRIVATE METHODS ////////////////////////////////////////////////////
-  
-  def calculateBasis(self):
-    """
-    Calculate basis functions and their derivatives at quadrature points.
-    """
-
-    self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
-                              dtype=numpy.float64)
-    self.basisDeriv = numpy.zeros( (self.numQuadPts,
-                                    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.numBasis,) )
-
-      # Derivatives of basis functions at quadrature points
-      deriv = numpy.array([[N0p(q)], [N1p(q)]], dtype=numpy.float64)      
-      self.basisDeriv[iQuad,:] = deriv.reshape((self.numBasis,
-                                                self.cellDim))
-
-      iQuad += 1
-    return
-    
-
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
-
-  app = Quadrature1DLinear()
-  app.run()
-
-
-# End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -38,15 +38,23 @@
     ## @li None
     ##
     ## \b Facilities
-    ## @li \b data Data manager.
+    ## @li \b data Manager for output data.
+    ## @li \b mesh Mesh information.
+    ## @li \b quadrature Quadrature information.
 
     import pyre.inventory
 
     from pylith.utils.CppData import CppData
     data = pyre.inventory.facility("data", factory=CppData)
-    data.meta['tip'] = "Data manager."
+    data.meta['tip'] = "Manager for output data."
 
+    mesh = pyre.inventory.facility("mesh", family="mesh")
+    mesh.meta['tip'] = "Mesh information."
 
+    quadrature = pyre.inventory.facility("quadrature", family="quadrature")
+    quadrature.meta['tip'] = "Quadrature information."
+
+
   # PUBLIC METHODS /////////////////////////////////////////////////////
 
   def __init__(self, name="quadratureapp"):
@@ -56,17 +64,16 @@
     Script.__init__(self, name)
 
     # Mesh information
+    self.spaceDim = None
+    self.cellDim = None
     self.numVertices = None
-    self.spaceDim = None
     self.numCells = None
     self.vertices = None
     self.cells = None
 
     # Reference cell information
-    self.cellDim = None
     self.numBasis = None
     self.numQuadPts = None
-
     self.quadPtsRef = None
     self.quadWts = None
     self.basis = None
@@ -84,35 +91,20 @@
     """
     Run the application.
     """
-    self.calculateBasis()
-    self.calculateJacobian()
+    self._collectData()
 
-    # Quadrature points in cell
+    (self.basis, self.basisDeriv) = self.quadrature.calculateBasis()
     self.quadPts = numpy.dot(self.basis, self.vertices)
 
+    import feutils
+    (self.jacobian, self.jacobianInv, self.jacobianDet) = \
+                    feutils.calculateJacobian(self, self.vertices)
+
     self._initData()
     self.data.write(self.name)
     return
   
 
-  def calculateBasis(self):
-    """
-    Calculate basis functions and derivatives at quadrature points.
-    """
-    raise NotImplementedError
-
-
-  def calculateJacobian(self):
-    """
-    Calculate Jacobian, its determinant, and its inverse at quadrature
-    pts plus coordinates of quadrature points in the cell.
-    """
-    import feutils
-    (self.jacobian, self.jacobianInv, self.jacobianDet) = \
-                    feutils.calculateJacobian(self, self.vertices)
-    return
-
-
   # PRIVATE METHODS ////////////////////////////////////////////////////
 
   def _configure(self):
@@ -121,9 +113,31 @@
     """
     Script._configure(self)
     self.data = self.inventory.data
+    self.mesh = self.inventory.mesh
+    self.quadrature = self.inventory.quadrature
     return
 
 
+  def _collectData(self):
+    """
+    Collect data we need from data objects.
+    """
+    # Mesh information
+    self.spaceDim = self.mesh.spaceDim
+    self.cellDim = self.mesh.cellDim
+    self.numVertices = self.mesh.numVertices
+    self.numCells = self.mesh.numCells
+    self.vertices = self.mesh.vertices
+    self.cells = self.mesh.cells
+
+    # Quadrature information
+    self.numBasis = self.quadrature.numBasis
+    self.numQuadPts = self.quadrature.numQuadPts
+    self.quadPtsRef = self.quadrature.quadPtsRef
+    self.quadWts = self.quadrature.quadWts
+    return
+  
+
   def _initData(self):
     self.data.addScalar(vtype="int", name="_numVertices",
                         value=self.numVertices,
@@ -174,4 +188,11 @@
     return
 
   
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+  app = QuadratureApp()
+  app.run()
+
+
 # End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -11,7 +11,7 @@
 //
 
 // DO NOT EDIT THIS FILE
-// This file was generated from python application quadrature1dlinear.
+// This file was generated from python application quadratureapp.
 
 #include "QuadratureData1DLinear.hh"
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -11,7 +11,7 @@
 //
 
 // DO NOT EDIT THIS FILE
-// This file was generated from python application quadrature1dlinear.
+// This file was generated from python application quadratureapp.
 
 #if !defined(pylith_feassemble_quadraturedata1dlinear_hh)
 #define pylith_feassemble_quadraturedata1dlinear_hh

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Solution1DLinear.odb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Solution1DLinear.odb	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Solution1DLinear.odb	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/Solution1DLinear.py
+
+## @brief Python container holding solution information for 1-D mesh
+## with linear cells used in testing finite-element C++ routines.
+
+from pyre.components.Component import Component
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# Solution1DLinear class
+class Solution1DLinear(Component):
+  """
+  Python container holding solution information for 1-D mesh with
+  linear cells used in testing finite-element C++ routines.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="solution1dlinear"):
+    """
+    Constructor.
+    """
+    Component.__init__(self, name, facility="solution")
+    
+    # Input fields
+    self.dt = 0.01
+    self.fieldTpdt = numpy.array( [[1.2], [1.7]], dtype=numpy.float64)
+    self.fieldT = numpy.array( [[1.1], [1.5]], dtype=numpy.float64)
+    self.fieldTmdt = numpy.array( [[1.0], [1.3]], dtype=numpy.float64)
+    return
+  
+
+# FACTORIES ////////////////////////////////////////////////////////////
+def solution():
+  """
+  Factory for Solution1DLinear.
+  """
+  return Solution1DLinear()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/elasticstrain1d.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/elasticstrain1d.spatialdb	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/elasticstrain1d.spatialdb	2007-05-30 00:37:28 UTC (rev 6994)
@@ -0,0 +1,14 @@
+#SPATIAL.ascii 1
+SimpleDB {
+  num-values = 3
+  value-names =  density vs vp
+  value-units =  kg/m^3  m/s  m/s
+  num-locs = 1
+  data-dim = 0
+  space-dim = 1
+  cs-data = cartesian {
+    to-meters = 1.0
+    space-dim = 1
+  }
+}
+0.0  2500.0  3464.1016151377544 6000.0

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py	2007-05-30 00:37:28 UTC (rev 6994)
@@ -33,11 +33,13 @@
                               quadrature.cellDim, quadrature.spaceDim),
                              dtype=numpy.float64)
   jacobianDet = numpy.zeros( (quadrature.numQuadPts,), dtype=numpy.float64)
+
+  (basis, basisDeriv) = quadrature.calculateBasis()
     
   iQuad = 0
   for q in quadrature.quadPtsRef:
     # Jacobian at quadrature points
-    deriv = quadrature.basisDeriv[iQuad]
+    deriv = basisDeriv[iQuad]
     j = numpy.dot(vertices.transpose(), deriv)
     jacobian[iQuad] = j
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -20,10 +20,12 @@
 
   # 1-D ----------------------------------------------------------------
 
-  python Quadrature1DLinear.py \
+  python QuadratureApp.py \
     --data.namespace=pylith,feassemble \
     --data.object=QuadratureData1DLinear \
-    --data.parent=QuadratureData
+    --data.parent=QuadratureData \
+    --mesh=Mesh1DLinear \
+    --quadrature=Quadrature1DLinear
 
   python Quadrature1DQuadratic.py \
     --data.namespace=pylith,feassemble \
@@ -102,49 +104,24 @@
 fi
 
 # //////////////////////////////////////////////////////////////////////
-if [ $1 == "integrator" ] || [ $1 == "all" ]; then
+if [ $1 == "explicit" ] || [ $1 == "all" ]; then
 
   # 1-D ----------------------------------------------------------------
 
-  python IntegratorInertia1DLinear.py \
+  python ElasticityExplicit.py \
     --data.namespace=pylith,feassemble \
-    --data.object=IntegratorDataInertia1DLinear \
-    --data.parent=IntegratorData
+    --data.object=ElasticityExplicitData1DLinear \
+    --data.parent=IntegratorData \
+    --mesh=Mesh1DLinear \
+    --quadrature=Quadrature1DLinear \
+    --material=MaterialElasticStrain1D \
+    --solution=Solution1DLinear
 
-  python IntegratorInertia1DQuadratic.py \
-    --data.namespace=pylith,feassemble \
-    --data.object=IntegratorDataInertia1DQuadratic \
-    --data.parent=IntegratorData
-
   # 2-D ----------------------------------------------------------------
 
-  python IntegratorInertia2Din3DOne.py \
-    --data.namespace=pylith,feassemble \
-    --data.object=IntegratorDataInertia2Din3DOne \
-    --data.parent=IntegratorData
 
-  python IntegratorInertia2Din3DTwo.py \
-    --data.namespace=pylith,feassemble \
-    --data.object=IntegratorDataInertia2Din3DTwo \
-    --data.parent=IntegratorData
-
-  python IntegratorInertia2Din3DThree.py \
-    --data.namespace=pylith,feassemble \
-    --data.object=IntegratorDataInertia2Din3DThree \
-    --data.parent=IntegratorData
-
   # 3-D ----------------------------------------------------------------
 
-  python IntegratorInertia3DLinear.py \
-    --data.namespace=pylith,feassemble \
-    --data.object=IntegratorDataInertia3DLinear \
-    --data.parent=IntegratorData
-
-  python IntegratorInertia3DQuadratic.py \
-    --data.namespace=pylith,feassemble \
-    --data.object=IntegratorDataInertia3DQuadratic \
-    --data.parent=IntegratorData
-
 fi
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc	2007-05-30 00:37:28 UTC (rev 6994)
@@ -25,25 +25,6 @@
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticMaterial );
 
 // ----------------------------------------------------------------------
-// Test clone()
-void
-pylith::materials::TestElasticMaterial::testClone(void)
-{ // testClone
-  const char* label = "my_material";
-  const int id = 34;
-  ElasticIsotropic3D material;
-  material.label(label);
-  material.id(id);
-
-  ElasticMaterial* mycopy = material.clone();
-  CPPUNIT_ASSERT(0 != mycopy);
-  CPPUNIT_ASSERT(0 == strcmp(label, material.label().c_str()));
-  CPPUNIT_ASSERT_EQUAL(id, material.id());
-
-  delete mycopy; mycopy = 0;
-} // testClone
-
-// ----------------------------------------------------------------------
 // Test useElasticBehavior()
 void
 pylith::materials::TestElasticMaterial::testUseElasticBehavior(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.hh	2007-05-30 00:13:12 UTC (rev 6993)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.hh	2007-05-30 00:37:28 UTC (rev 6994)
@@ -38,7 +38,6 @@
 
   // CPPUNIT TEST SUITE /////////////////////////////////////////////////
   CPPUNIT_TEST_SUITE( TestElasticMaterial );
-  CPPUNIT_TEST( testClone );
   CPPUNIT_TEST( testUseElasticBehavior );
   CPPUNIT_TEST( testCalcDensity );
   CPPUNIT_TEST( testCalcStress );
@@ -48,9 +47,6 @@
   // PUBLIC METHODS /////////////////////////////////////////////////////
 public :
 
-  /// Test clone()
-  void testClone(void);
-
   /// Test useElasticBehavior()
   void testUseElasticBehavior(void);
 



More information about the cig-commits mailing list