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

brad at geodynamics.org brad at geodynamics.org
Sat May 12 21:32:33 PDT 2007


Author: brad
Date: 2007-05-12 21:32:31 -0700 (Sat, 12 May 2007)
New Revision: 6871

Added:
   short/3D/PyLith/trunk/libsrc/topology/GeometryHex3D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryHex3D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryLine1D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryLine1D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryLine2D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryLine2D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryLine3D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryLine3D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryPoint1D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryPoint1D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryPoint2D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryPoint2D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryPoint3D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryPoint3D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryQuad2D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryQuad2D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryQuad3D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryQuad3D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryTet3D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryTet3D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryTri2D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryTri2D.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryTri3D.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryTri3D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestCellGeometry.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestCellGeometry.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine1D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine1D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine2D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine2D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine3D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine3D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint1D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint1D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint2D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint2D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint3D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint3D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/CellGeomData.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/CellGeomData.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine1D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine1D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine2D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine2D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine3D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine3D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint1D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint1D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint2D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint2D.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint3D.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint3D.hh
Removed:
   short/3D/PyLith/trunk/libsrc/topology/GeometryHex.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryHex.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryLine.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryLine.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryTet.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryTet.hh
   short/3D/PyLith/trunk/libsrc/topology/GeometryTri.cc
   short/3D/PyLith/trunk/libsrc/topology/GeometryTri.hh
Modified:
   short/3D/PyLith/trunk/libsrc/Makefile.am
   short/3D/PyLith/trunk/libsrc/topology/CellGeometry.cc
   short/3D/PyLith/trunk/libsrc/topology/CellGeometry.hh
   short/3D/PyLith/trunk/libsrc/topology/CellGeometry.icc
   short/3D/PyLith/trunk/libsrc/topology/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/topology/Makefile.am
Log:
Worked on implementing unit tests for cell geometry routines. Added objects for lower dimension cells in higher dimension spaces.

Modified: short/3D/PyLith/trunk/libsrc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/Makefile.am	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/Makefile.am	2007-05-13 04:32:31 UTC (rev 6871)
@@ -63,12 +63,18 @@
 	meshio/SolutionIO.cc \
 	meshio/SolutionIOVTK.cc \
 	topology/CellGeometry.cc \
-	topology/GeometryPoint.cc \
-	topology/GeometryLine.cc \
-	topology/GeometryTri.cc \
-	topology/GeometryTet.cc \
-	topology/GeometryQuad.cc \
-	topology/GeometryHex.cc
+	topology/GeometryPoint1D.cc \
+	topology/GeometryPoint2D.cc \
+	topology/GeometryPoint3D.cc \
+	topology/GeometryLine1D.cc \
+	topology/GeometryLine2D.cc \
+	topology/GeometryLine3D.cc \
+	topology/GeometryTri2D.cc \
+	topology/GeometryTri3D.cc \
+	topology/GeometryTet3D.cc \
+	topology/GeometryQuad2D.cc \
+	topology/GeometryQuad3D.cc \
+	topology/GeometryHex3D.cc
 
 if ENABLE_CUBIT
   libpylith_la_SOURCES += \

Modified: short/3D/PyLith/trunk/libsrc/topology/CellGeometry.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/CellGeometry.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/CellGeometry.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -16,8 +16,12 @@
 
 // ----------------------------------------------------------------------
 // Default constructor.
-pylith::topology::CellGeometry::CellGeometry(const int dimension) :
-  _dimension(dimension)
+pylith::topology::CellGeometry::CellGeometry(const int cellDim,
+					     const int spaceDim,
+					     const int numCorners) :
+  _cellDim(cellDim),
+  _spaceDim(spaceDim),
+  _numCorners(numCorners)
 { // constructor
 } // constructor
 

Modified: short/3D/PyLith/trunk/libsrc/topology/CellGeometry.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/CellGeometry.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/CellGeometry.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -35,9 +35,13 @@
   
   /** Default constructor.
    *
-   * @param dimension Dimension of cell.
+   * @param cellDim Dimension of cell.
+   * @param spaceDim Dimension of coordinate space.
+   * @param numCorners Number of corners in cell.
    */
-  CellGeometry(const int dimension);
+  CellGeometry(const int cellDim,
+	       const int spaceDim,
+	       const int numCorners);
 
   /// Default destructor.
   virtual
@@ -47,8 +51,28 @@
    *
    * @returns Spatial dimension of cell.
    */
-  int dimension(void) const;
+  int cellDim(void) const;
 
+  /** Get dimension of coordinate space.
+   *
+   * @returns Dimension of coordinate space.
+   */
+  int spaceDim(void) const;
+
+  /** Get number of vertices in cell.
+   *
+   * @returns Number of vertices in cell.
+   */
+  int numCorners(void) const;
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  virtual
+  CellGeometry* geometryLowerDim(void) const = 0;
+
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
@@ -63,7 +87,9 @@
 // PRIVATE MEMBERS //////////////////////////////////////////////////////
 private :
 
-  int _dimension; ///< Dimension of cell.
+  int _cellDim; ///< Dimension of cell.
+  int _spaceDim; ///< Dimension of coordinate space.
+  int _numCorners; ///< Number of corners in cell.
   
 }; // CellGeometry
 

Modified: short/3D/PyLith/trunk/libsrc/topology/CellGeometry.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/CellGeometry.icc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/CellGeometry.icc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -17,11 +17,25 @@
 // Get dimension of cell.
 inline
 int
-pylith::topology::CellGeometry::dimension(void) const {
-  return _dimension;
-} // dimension
+pylith::topology::CellGeometry::cellDim(void) const {
+  return _cellDim;
+} // cellDim
 
+// Get dimension of coordinate space.
+inline
+int
+pylith::topology::CellGeometry::spaceDim(void) const {
+  return _spaceDim;
+} // spaceDim
 
+// Get number of corners in cell.
+inline
+int
+pylith::topology::CellGeometry::numCorners(void) const {
+  return _numCorners;
+} // numCorners
+
+
 #endif
 
 // End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryHex.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryHex.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryHex.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,113 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#include <portinfo>
-
-#include "GeometryHex.hh" // implementation of class methods
-
-#include "pylith/utils/array.hh" // USES double_array
-
-#include <assert.h> // USES assert()
-
-// ----------------------------------------------------------------------
-// Default constructor.
-pylith::topology::GeometryHex::GeometryHex(void) :
-  CellGeometry(3)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Default destructor.
-pylith::topology::GeometryHex::~GeometryHex(void)
-{ // destructor
-} // destructor
-
-// ----------------------------------------------------------------------
-// Compute Jacobian at location in cell.
-void
-pylith::topology::GeometryHex::jacobian(double_array* jacobian,
-					  const double_array& vertices,
-					  const double_array& location) const
-{ // jacobian
-  assert(0 != jacobian);
-
-  assert(3*8 == vertices.size());
-  assert(3 == location.size());
-  assert(9 == jacobian->size());
-  
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
-
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
-
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
-
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
-
-  const double x4 = vertices[12];
-  const double y4 = vertices[13];
-  const double z4 = vertices[14];
-
-  const double x5 = vertices[15];
-  const double y5 = vertices[16];
-  const double z5 = vertices[17];
-
-  const double x6 = vertices[18];
-  const double y6 = vertices[19];
-  const double z6 = vertices[20];
-
-  const double x7 = vertices[21];
-  const double y7 = vertices[22];
-  const double z7 = vertices[23];
-
-  const double x = location[0];
-  const double y = location[1];
-  const double z = location[2];
-
-  const double f_xy = x2 - x1 - x3 + x0;
-  const double g_xy = y2 - y1 - y3 + y0;
-  const double h_xy = z2 - z1 - z3 + z0;
-
-  const double f_yz = x7 - x3 - x4 + x0;
-  const double g_yz = y7 - y3 - y4 + y0;
-  const double h_yz = z7 - z3 - z4 + z0;
-
-  const double f_xz = x5 - x1 - x4 + x0;
-  const double g_xz = y5 - y1 - y4 + y0;
-  const double h_xz = z5 - z1 - z4 + z0;
-
-  const double f_xyz = x6 - x0 + x1 - x2 + x3 + x4 - x5 - x7;
-  const double g_xyz = y6 - y0 + y1 - y2 + y3 + y4 - y5 - y7;
-  const double h_xyz = z6 - z0 + z1 - z2 + z3 + z4 - z5 - z7;
-
-  (*jacobian)[0] = x1 - x0 + f_xy*y + f_xz*z + f_xyz*y*z;
-  (*jacobian)[1] = x3 - x0 + f_xy*x + f_yz*z + f_xyz*x*z;
-  (*jacobian)[2] = x4 - x0 + f_yz*y + f_xz*x + f_xyz*x*y;
-
-  (*jacobian)[3] = y1 - y0 + g_xy*y + g_xz*z + g_xyz*y*z;
-  (*jacobian)[4] = y3 - y0 + g_xy*x + g_yz*z + g_xyz*x*z;
-  (*jacobian)[5] = y4 - y0 + g_yz*y + g_xz*x + g_xyz*x*y;
-
-  (*jacobian)[6] = z1 - z0 + h_xy*y + h_xz*z + h_xyz*y*z;
-  (*jacobian)[7] = z3 - z0 + h_xy*x + h_yz*z + h_xyz*x*z;
-  (*jacobian)[8] = z4 - z0 + h_yz*y + h_xz*x + h_xyz*x*y;
-} // jacobian
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryHex.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryHex.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryHex.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/**
- * @file pylith/topology/GeometryHex.hh
- *
- * @brief C++ implementation of cell geometry calculations for 3-D
- * hexahedral cell.
- */
-
-#if !defined(pylith_topology_geometryhex_hh)
-#define pylith_topology_geometryhex_hh
-
-#include "CellGeometry.hh" // ISA CellGeometry
-
-namespace pylith {
-  namespace topology {
-    class GeometryHex;
-  } // topology
-} // pylith
-
-class pylith::topology::GeometryHex : public CellGeometry
-{ // GeometryHex
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-  
-  /// Default constructor.
-  GeometryHex(void);
-
-  /// Default destructor.
-  ~GeometryHex(void);
-
-  /** Compute Jacobian at location in cell.
-   *
-   * @param jacobian Jacobian at location.
-   * @param vertices Coordinates of vertices of cell.
-   * @param location Location in reference cell at which to compute Jacobian.
-   */
-  void jacobian(double_array* jacobian,
-		const double_array& vertices,
-		const double_array& location) const;
-
-}; // GeometryHex
-
-#endif // pylith_topology_geometryhex_hh
-
-
-// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryHex3D.cc (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryHex.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryHex.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryHex3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,126 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryHex3D.hh" // implementation of class methods
+
+#include "GeometryQuad3D.hh" // USES GeometryQuad3D
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryHex3D::GeometryHex3D(void) :
+  CellGeometry(3, 3, 8)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryHex3D::~GeometryHex3D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryHex3D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryQuad3D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryHex3D::jacobian(double_array* jacobian,
+					  const double_array& vertices,
+					  const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(cellDim() == location.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+
+  const double x0 = vertices[0];
+  const double y0 = vertices[1];
+  const double z0 = vertices[2];
+
+  const double x1 = vertices[3];
+  const double y1 = vertices[4];
+  const double z1 = vertices[5];
+
+  const double x2 = vertices[6];
+  const double y2 = vertices[7];
+  const double z2 = vertices[8];
+
+  const double x3 = vertices[9];
+  const double y3 = vertices[10];
+  const double z3 = vertices[11];
+
+  const double x4 = vertices[12];
+  const double y4 = vertices[13];
+  const double z4 = vertices[14];
+
+  const double x5 = vertices[15];
+  const double y5 = vertices[16];
+  const double z5 = vertices[17];
+
+  const double x6 = vertices[18];
+  const double y6 = vertices[19];
+  const double z6 = vertices[20];
+
+  const double x7 = vertices[21];
+  const double y7 = vertices[22];
+  const double z7 = vertices[23];
+
+  const double x = location[0];
+  const double y = location[1];
+  const double z = location[2];
+  assert(0 <= x && x <= 1.0);
+  assert(0 <= y && y <= 1.0);
+  assert(0 <= z && z <= 1.0);
+
+  const double f_xy = x2 - x1 - x3 + x0;
+  const double g_xy = y2 - y1 - y3 + y0;
+  const double h_xy = z2 - z1 - z3 + z0;
+
+  const double f_yz = x7 - x3 - x4 + x0;
+  const double g_yz = y7 - y3 - y4 + y0;
+  const double h_yz = z7 - z3 - z4 + z0;
+
+  const double f_xz = x5 - x1 - x4 + x0;
+  const double g_xz = y5 - y1 - y4 + y0;
+  const double h_xz = z5 - z1 - z4 + z0;
+
+  const double f_xyz = x6 - x0 + x1 - x2 + x3 + x4 - x5 - x7;
+  const double g_xyz = y6 - y0 + y1 - y2 + y3 + y4 - y5 - y7;
+  const double h_xyz = z6 - z0 + z1 - z2 + z3 + z4 - z5 - z7;
+
+  (*jacobian)[0] = x1 - x0 + f_xy*y + f_xz*z + f_xyz*y*z;
+  (*jacobian)[1] = x3 - x0 + f_xy*x + f_yz*z + f_xyz*x*z;
+  (*jacobian)[2] = x4 - x0 + f_yz*y + f_xz*x + f_xyz*x*y;
+
+  (*jacobian)[3] = y1 - y0 + g_xy*y + g_xz*z + g_xyz*y*z;
+  (*jacobian)[4] = y3 - y0 + g_xy*x + g_yz*z + g_xyz*x*z;
+  (*jacobian)[5] = y4 - y0 + g_yz*y + g_xz*x + g_xyz*x*y;
+
+  (*jacobian)[6] = z1 - z0 + h_xy*y + h_xz*z + h_xyz*y*z;
+  (*jacobian)[7] = z3 - z0 + h_xy*x + h_yz*z + h_xyz*x*z;
+  (*jacobian)[8] = z4 - z0 + h_yz*y + h_xz*x + h_xyz*x*y;
+} // jacobian
+
+
+// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryHex3D.hh (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryHex.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryHex.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryHex3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryHex3D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 3-D
+ * hexahedral cell.
+ */
+
+#if !defined(pylith_topology_geometryhex3d_hh)
+#define pylith_topology_geometryhex3d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryHex3D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryHex3D : public CellGeometry
+{ // GeometryHex3D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryHex3D(void);
+
+  /// Default destructor.
+  ~GeometryHex3D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryHex3D
+
+#endif // pylith_topology_geometryhex3d_hh
+
+
+// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryLine.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryLine.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryLine.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,51 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#include <portinfo>
-
-#include "GeometryLine.hh" // implementation of class methods
-
-#include "pylith/utils/array.hh" // USES double_array
-
-#include <assert.h> // USES assert()
-
-// ----------------------------------------------------------------------
-// Default constructor.
-pylith::topology::GeometryLine::GeometryLine(void) :
-  CellGeometry(1)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Default destructor.
-pylith::topology::GeometryLine::~GeometryLine(void)
-{ // destructor
-} // destructor
-
-// ----------------------------------------------------------------------
-// Compute Jacobian at location in cell.
-void
-pylith::topology::GeometryLine::jacobian(double_array* jacobian,
-					  const double_array& vertices,
-					  const double_array& location) const
-{ // jacobian
-  assert(0 != jacobian);
-
-  assert(2 == vertices.size());
-  assert(1 == location.size());
-  assert(1 == jacobian->size());
-
-  (*jacobian)[0] = vertices[1]-vertices[0];
-} // jacobian
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryLine.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryLine.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryLine.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/**
- * @file pylith/topology/GeometryLine.hh
- *
- * @brief C++ implementation of cell geometry calculations for 1-D
- * line cell.
- */
-
-#if !defined(pylith_topology_geometryline_hh)
-#define pylith_topology_geometryline_hh
-
-#include "CellGeometry.hh" // ISA CellGeometry
-
-namespace pylith {
-  namespace topology {
-    class GeometryLine;
-  } // topology
-} // pylith
-
-class pylith::topology::GeometryLine : public CellGeometry
-{ // GeometryLine
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-  
-  /// Default constructor.
-  GeometryLine(void);
-
-  /// Default destructor.
-  ~GeometryLine(void);
-
-  /** Compute Jacobian at location in cell.
-   *
-   * @param jacobian Jacobian at location.
-   * @param vertices Coordinates of vertices of cell.
-   * @param location Location in reference cell at which to compute Jacobian.
-   */
-  void jacobian(double_array* jacobian,
-		const double_array& vertices,
-		const double_array& location) const;
-
-}; // GeometryLine
-
-#endif // pylith_topology_geometryline_hh
-
-
-// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryLine1D.cc (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryLine.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryLine.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryLine1D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,63 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryLine1D.hh" // implementation of class methods
+
+#include "GeometryPoint1D.hh" // USES GeometryPoint
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryLine1D::GeometryLine1D(void) :
+  CellGeometry(1, 1, 2)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryLine1D::~GeometryLine1D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryLine1D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryPoint1D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryLine1D::jacobian(double_array* jacobian,
+					   const double_array& vertices,
+					   const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+
+  const double x0 = vertices[0];
+  const double x1 = vertices[1];
+
+  (*jacobian)[0] = x1 - x0;
+} // jacobian
+
+
+// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryLine1D.hh (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryLine.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryLine.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryLine1D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryLine1D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 1-D
+ * line cell.
+ */
+
+#if !defined(pylith_topology_geometryline1d_hh)
+#define pylith_topology_geometryline1d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryLine1D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryLine1D : public CellGeometry
+{ // GeometryLine1D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryLine1D(void);
+
+  /// Default destructor.
+  ~GeometryLine1D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryLine1D
+
+#endif // pylith_topology_geometryline1d_hh
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryLine2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryLine2D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryLine2D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,67 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryLine2D.hh" // implementation of class methods
+
+#include "GeometryPoint2D.hh" // USES GeometryPoint
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryLine2D::GeometryLine2D(void) :
+  CellGeometry(1, 2, 2)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryLine2D::~GeometryLine2D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryLine2D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryPoint2D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryLine2D::jacobian(double_array* jacobian,
+					   const double_array& vertices,
+					   const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+
+  const double x0 = vertices[0];
+  const double y0 = vertices[1];
+
+  const double x1 = vertices[2];
+  const double y1 = vertices[3];
+
+  (*jacobian)[0] = x1 - x0;
+  (*jacobian)[1] = y1 - y0;
+} // jacobian
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryLine2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryLine2D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryLine2D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryLine2D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 1-D
+ * line cell in 2-D space.
+ */
+
+#if !defined(pylith_topology_geometryline2d_hh)
+#define pylith_topology_geometryline2d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryLine2D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryLine2D : public CellGeometry
+{ // GeometryLine2D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryLine2D(void);
+
+  /// Default destructor.
+  ~GeometryLine2D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryLine2D
+
+#endif // pylith_topology_geometryline2d_hh
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryLine3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryLine3D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryLine3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryLine3D.hh" // implementation of class methods
+
+#include "GeometryPoint3D.hh" // USES GeometryPoint3D
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryLine3D::GeometryLine3D(void) :
+  CellGeometry(1, 3, 2)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryLine3D::~GeometryLine3D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryLine3D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryPoint3D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryLine3D::jacobian(double_array* jacobian,
+					   const double_array& vertices,
+					   const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+
+  const double x0 = vertices[0];
+  const double y0 = vertices[1];
+  const double z0 = vertices[2];
+
+  const double x1 = vertices[3];
+  const double y1 = vertices[4];
+  const double z1 = vertices[5];
+
+  (*jacobian)[0] = x1 - x0;
+  (*jacobian)[1] = y1 - y0;
+  (*jacobian)[2] = z1 - z0;
+} // jacobian
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryLine3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryLine3D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryLine3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryLine3D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 1-D
+ * line cell.
+ */
+
+#if !defined(pylith_topology_geometryline3d_hh)
+#define pylith_topology_geometryline3d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryLine3D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryLine3D : public CellGeometry
+{ // GeometryLine3D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryLine3D(void);
+
+  /// Default destructor.
+  ~GeometryLine3D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryLine3D
+
+#endif // pylith_topology_geometryline3d_hh
+
+
+// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,51 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#include <portinfo>
-
-#include "GeometryPoint.hh" // implementation of class methods
-
-#include "pylith/utils/array.hh" // USES double_array
-
-#include <assert.h> // USES assert()
-
-// ----------------------------------------------------------------------
-// Default constructor.
-pylith::topology::GeometryPoint::GeometryPoint(void) :
-  CellGeometry(0)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Default destructor.
-pylith::topology::GeometryPoint::~GeometryPoint(void)
-{ // destructor
-} // destructor
-
-// ----------------------------------------------------------------------
-// Compute Jacobian at location in cell.
-void
-pylith::topology::GeometryPoint::jacobian(double_array* jacobian,
-					  const double_array& vertices,
-					  const double_array& location) const
-{ // jacobian
-  assert(0 != jacobian);
-
-  assert(1 == vertices.size());
-  assert(1 == location.size());
-  assert(1 == jacobian->size());
-  
-  (*jacobian)[0] = 1.0;
-} // jacobian
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/**
- * @file pylith/topology/GeometryPoint.hh
- *
- * @brief C++ implementation of cell geometry calculations for 0-D
- * point cell.
- */
-
-#if !defined(pylith_topology_geometrypoint_hh)
-#define pylith_topology_geometrypoint_hh
-
-#include "CellGeometry.hh" // ISA CellGeometry
-
-namespace pylith {
-  namespace topology {
-    class GeometryPoint;
-  } // topology
-} // pylith
-
-class pylith::topology::GeometryPoint : public CellGeometry
-{ // GeometryPoint
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-  
-  /// Default constructor.
-  GeometryPoint(void);
-
-  /// Default destructor.
-  ~GeometryPoint(void);
-
-  /** Compute Jacobian at location in cell.
-   *
-   * @param jacobian Jacobian at location.
-   * @param vertices Coordinates of vertices of cell.
-   * @param location Location in reference cell at which to compute Jacobian.
-   */
-  void jacobian(double_array* jacobian,
-		const double_array& vertices,
-		const double_array& location) const;
-
-}; // GeometryPoint
-
-#endif // pylith_topology_geometrypoint_hh
-
-
-// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryPoint1D.cc (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryPoint1D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,57 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryPoint1D.hh" // implementation of class methods
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryPoint1D::GeometryPoint1D(void) :
+  CellGeometry(0, 1, 1)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryPoint1D::~GeometryPoint1D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryPoint1D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return 0;
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryPoint1D::jacobian(double_array* jacobian,
+					    const double_array& vertices,
+					    const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(1 == jacobian->size());
+  
+  (*jacobian)[0] = 1.0;
+} // jacobian
+
+
+// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryPoint1D.hh (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryPoint.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryPoint1D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryPoint1D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 0-D
+ * point cell.
+ */
+
+#if !defined(pylith_topology_geometrypoint_hh)
+#define pylith_topology_geometrypoint_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryPoint1D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryPoint1D : public CellGeometry
+{ // GeometryPoint1D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryPoint1D(void);
+
+  /// Default destructor.
+  ~GeometryPoint1D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryPoint1D
+
+#endif // pylith_topology_geometrypoint_hh
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryPoint2D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryPoint2D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,57 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryPoint2D.hh" // implementation of class methods
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryPoint2D::GeometryPoint2D(void) :
+  CellGeometry(0, 2, 1)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryPoint2D::~GeometryPoint2D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryPoint2D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return 0;
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryPoint2D::jacobian(double_array* jacobian,
+					  const double_array& vertices,
+					  const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(1 == jacobian->size());
+  
+  (*jacobian)[0] = 1.0;
+} // jacobian
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryPoint2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryPoint2D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryPoint2D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryPoint2D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 0-D
+ * point cell.
+ */
+
+#if !defined(pylith_topology_geometrypoint_hh)
+#define pylith_topology_geometrypoint_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryPoint2D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryPoint2D : public CellGeometry
+{ // GeometryPoint2D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryPoint2D(void);
+
+  /// Default destructor.
+  ~GeometryPoint2D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryPoint2D
+
+#endif // pylith_topology_geometrypoint_hh
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryPoint3D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryPoint3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,57 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryPoint3D.hh" // implementation of class methods
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryPoint3D::GeometryPoint3D(void) :
+  CellGeometry(0, 3, 1)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryPoint3D::~GeometryPoint3D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryPoint3D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return 0;
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryPoint3D::jacobian(double_array* jacobian,
+					    const double_array& vertices,
+					    const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(1 == jacobian->size());
+  
+  (*jacobian)[0] = 1.0;
+} // jacobian
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryPoint3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryPoint3D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryPoint3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryPoint3D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 0-D
+ * point cell.
+ */
+
+#if !defined(pylith_topology_geometrypoint_hh)
+#define pylith_topology_geometrypoint_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryPoint3D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryPoint3D : public CellGeometry
+{ // GeometryPoint3D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryPoint3D(void);
+
+  /// Default destructor.
+  ~GeometryPoint3D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryPoint3D
+
+#endif // pylith_topology_geometrypoint_hh
+
+
+// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,72 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#include <portinfo>
-
-#include "GeometryQuad.hh" // implementation of class methods
-
-#include "pylith/utils/array.hh" // USES double_array
-
-#include <assert.h> // USES assert()
-
-// ----------------------------------------------------------------------
-// Default constructor.
-pylith::topology::GeometryQuad::GeometryQuad(void) :
-  CellGeometry(2)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Default destructor.
-pylith::topology::GeometryQuad::~GeometryQuad(void)
-{ // destructor
-} // destructor
-
-// ----------------------------------------------------------------------
-// Compute Jacobian at location in cell.
-void
-pylith::topology::GeometryQuad::jacobian(double_array* jacobian,
-					  const double_array& vertices,
-					  const double_array& location) const
-{ // jacobian
-  assert(0 != jacobian);
-
-  assert(2*4 == vertices.size());
-  assert(2 == location.size());
-  assert(4 == jacobian->size());
-  
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
-
-  const double x2 = vertices[4];
-  const double y2 = vertices[5];
-
-  const double x3 = vertices[6];
-  const double y3 = vertices[7];
-
-  const double x = location[0];
-  const double y = location[1];
-
-  const double f_xy = x2 - x1 - x3 + x0;
-  const double g_xy = y2 - y1 - y3 + y0;
-
-  (*jacobian)[0] = x1 - x0 + f_xy*y;
-  (*jacobian)[1] = x3 - x0 + f_xy*x;
-  (*jacobian)[2] = y1 - y0 + g_xy*y;
-  (*jacobian)[3] = y3 - y0 + g_xy*x;
-} // jacobian
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/**
- * @file pylith/topology/GeometryQuad.hh
- *
- * @brief C++ implementation of cell geometry calculations for 2-D
- * quadrilateral cell.
- */
-
-#if !defined(pylith_topology_geometryquad_hh)
-#define pylith_topology_geometryquad_hh
-
-#include "CellGeometry.hh" // ISA CellGeometry
-
-namespace pylith {
-  namespace topology {
-    class GeometryQuad;
-  } // topology
-} // pylith
-
-class pylith::topology::GeometryQuad : public CellGeometry
-{ // GeometryQuad
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-  
-  /// Default constructor.
-  GeometryQuad(void);
-
-  /// Default destructor.
-  ~GeometryQuad(void);
-
-  /** Compute Jacobian at location in cell.
-   *
-   * @param jacobian Jacobian at location.
-   * @param vertices Coordinates of vertices of cell.
-   * @param location Location in reference cell at which to compute Jacobian.
-   */
-  void jacobian(double_array* jacobian,
-		const double_array& vertices,
-		const double_array& location) const;
-
-}; // GeometryQuad
-
-#endif // pylith_topology_geometryquad_hh
-
-
-// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryQuad2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryQuad2D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryQuad2D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,84 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryQuad2D.hh" // implementation of class methods
+
+#include "GeometryLine2D.hh" // USES GeometryLine2D
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryQuad2D::GeometryQuad2D(void) :
+  CellGeometry(2, 2, 4)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryQuad2D::~GeometryQuad2D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryQuad2D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryLine2D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryQuad2D::jacobian(double_array* jacobian,
+					  const double_array& vertices,
+					  const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(cellDim() == location.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+  
+  const double x0 = vertices[0];
+  const double y0 = vertices[1];
+
+  const double x1 = vertices[2];
+  const double y1 = vertices[3];
+
+  const double x2 = vertices[4];
+  const double y2 = vertices[5];
+
+  const double x3 = vertices[6];
+  const double y3 = vertices[7];
+
+  const double x = location[0];
+  const double y = location[1];
+  assert(0 <= x && x <= 1.0);
+  assert(0 <= y && y <= 1.0);
+
+  const double f_xy = x2 - x1 - x3 + x0;
+  const double g_xy = y2 - y1 - y3 + y0;
+
+  (*jacobian)[0] = x1 - x0 + f_xy*y;
+  (*jacobian)[1] = x3 - x0 + f_xy*x;
+  (*jacobian)[2] = y1 - y0 + g_xy*y;
+  (*jacobian)[3] = y3 - y0 + g_xy*x;
+} // jacobian
+
+
+// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryQuad2D.hh (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryQuad2D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryQuad2D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 2-D
+ * quadrilateral cell.
+ */
+
+#if !defined(pylith_topology_geometryquad2d_hh)
+#define pylith_topology_geometryquad2d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryQuad2D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryQuad2D : public CellGeometry
+{ // GeometryQuad2D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryQuad2D(void);
+
+  /// Default destructor.
+  ~GeometryQuad2D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryQuad2D
+
+#endif // pylith_topology_geometryquad2d_hh
+
+
+// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryQuad3D.cc (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryQuad.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryQuad3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryQuad3D.hh" // implementation of class methods
+
+#include "GeometryLine3D.hh" // USES GeometryLine3D
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryQuad3D::GeometryQuad3D(void) :
+  CellGeometry(2, 2, 4)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryQuad3D::~GeometryQuad3D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryQuad3D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryLine3D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryQuad3D::jacobian(double_array* jacobian,
+					  const double_array& vertices,
+					  const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(cellDim() == location.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+  
+  const double x0 = vertices[0];
+  const double y0 = vertices[1];
+  const double z0 = vertices[2];
+
+  const double x1 = vertices[3];
+  const double y1 = vertices[4];
+  const double z1 = vertices[5];
+
+  const double x2 = vertices[6];
+  const double y2 = vertices[7];
+  const double z2 = vertices[8];
+
+  const double x3 = vertices[9];
+  const double y3 = vertices[10];
+  const double z3 = vertices[11];
+
+  const double x = location[0];
+  const double y = location[1];
+  assert(0 <= x && x <= 1.0);
+  assert(0 <= y && y <= 1.0);
+
+  const double f_xy = x2 - x1 - x3 + x0;
+  const double g_xy = y2 - y1 - y3 + y0;
+  const double h_xy = z2 - z1 - z3 + z0;
+
+  (*jacobian)[0] = x1 - x0 + f_xy*y;
+  (*jacobian)[1] = x3 - x0 + f_xy*x;
+
+  (*jacobian)[2] = y1 - y0 + g_xy*y;
+  (*jacobian)[3] = y3 - y0 + g_xy*x;
+
+  (*jacobian)[4] = z1 - z0 + h_xy*y;
+  (*jacobian)[5] = z3 - z0 + h_xy*x;
+} // jacobian
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryQuad3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryQuad3D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryQuad3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryQuad3D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 2-D
+ * quadrilateral cell in 3-D.
+ */
+
+#if !defined(pylith_topology_geometryquad3d_hh)
+#define pylith_topology_geometryquad3d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryQuad3D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryQuad3D : public CellGeometry
+{ // GeometryQuad3D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryQuad3D(void);
+
+  /// Default destructor.
+  ~GeometryQuad3D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryQuad3D
+
+#endif // pylith_topology_geometryquad3d_hh
+
+
+// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryTet.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTet.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTet.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,75 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#include <portinfo>
-
-#include "GeometryTet.hh" // implementation of class methods
-
-#include "pylith/utils/array.hh" // USES double_array
-
-#include <assert.h> // USES assert()
-
-// ----------------------------------------------------------------------
-// Default constructor.
-pylith::topology::GeometryTet::GeometryTet(void) :
-  CellGeometry(3)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Default destructor.
-pylith::topology::GeometryTet::~GeometryTet(void)
-{ // destructor
-} // destructor
-
-// ----------------------------------------------------------------------
-// Compute Jacobian at location in cell.
-void
-pylith::topology::GeometryTet::jacobian(double_array* jacobian,
-					const double_array& vertices,
-					const double_array& location) const
-{ // jacobian
-  assert(0 != jacobian);
-
-  assert(12 == vertices.size());
-  assert(3 == location.size());
-  assert(9 == jacobian->size());
-  
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-  const double z0 = vertices[2];
-
-  const double x1 = vertices[3];
-  const double y1 = vertices[4];
-  const double z1 = vertices[5];
-
-  const double x2 = vertices[6];
-  const double y2 = vertices[7];
-  const double z2 = vertices[8];
-
-  const double x3 = vertices[9];
-  const double y3 = vertices[10];
-  const double z3 = vertices[11];
-
-  (*jacobian)[0] = x1 - x0;
-  (*jacobian)[1] = x2 - x0;
-  (*jacobian)[2] = x3 - x0;
-  (*jacobian)[3] = y1 - y0;
-  (*jacobian)[4] = y2 - y0;
-  (*jacobian)[5] = y3 - y0;
-  (*jacobian)[6] = z1 - z0;
-  (*jacobian)[7] = z2 - z0;
-  (*jacobian)[8] = z3 - z0;
-} // jacobian
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryTet.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTet.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTet.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/**
- * @file pylith/topology/GeometryTet.hh
- *
- * @brief C++ implementation of cell geometry calculations for 3-D
- * tetrahedral cell.
- */
-
-#if !defined(pylith_topology_geometrytet_hh)
-#define pylith_topology_geometrytet_hh
-
-#include "CellGeometry.hh" // ISA CellGeometry
-
-namespace pylith {
-  namespace topology {
-    class GeometryTet;
-  } // topology
-} // pylith
-
-class pylith::topology::GeometryTet : public CellGeometry
-{ // GeometryTet
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-  
-  /// Default constructor.
-  GeometryTet(void);
-
-  /// Default destructor.
-  ~GeometryTet(void);
-
-  /** Compute Jacobian at location in cell.
-   *
-   * @param jacobian Jacobian at location.
-   * @param vertices Coordinates of vertices of cell.
-   * @param location Location in reference cell at which to compute Jacobian.
-   */
-  void jacobian(double_array* jacobian,
-		const double_array& vertices,
-		const double_array& location) const;
-
-}; // GeometryTet
-
-#endif // pylith_topology_geometrytet_hh
-
-
-// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryTet3D.cc (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryTet.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTet.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTet3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,84 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryTet3D.hh" // implementation of class methods
+
+#include "GeometryTri3D.hh" // USES GeometryTri3D
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryTet3D::GeometryTet3D(void) :
+  CellGeometry(3, 3, 4)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryTet3D::~GeometryTet3D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryTet3D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryTri3D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryTet3D::jacobian(double_array* jacobian,
+					  const double_array& vertices,
+					  const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+  
+  const double x0 = vertices[0];
+  const double y0 = vertices[1];
+  const double z0 = vertices[2];
+
+  const double x1 = vertices[3];
+  const double y1 = vertices[4];
+  const double z1 = vertices[5];
+
+  const double x2 = vertices[6];
+  const double y2 = vertices[7];
+  const double z2 = vertices[8];
+
+  const double x3 = vertices[9];
+  const double y3 = vertices[10];
+  const double z3 = vertices[11];
+
+  (*jacobian)[0] = x1 - x0;
+  (*jacobian)[1] = x2 - x0;
+  (*jacobian)[2] = x3 - x0;
+  (*jacobian)[3] = y1 - y0;
+  (*jacobian)[4] = y2 - y0;
+  (*jacobian)[5] = y3 - y0;
+  (*jacobian)[6] = z1 - z0;
+  (*jacobian)[7] = z2 - z0;
+  (*jacobian)[8] = z3 - z0;
+} // jacobian
+
+
+// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryTet3D.hh (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryTet.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTet.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTet3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryTet3D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 3-D
+ * tetrahedral cell.
+ */
+
+#if !defined(pylith_topology_geometrytet3d_hh)
+#define pylith_topology_geometrytet3d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryTet3D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryTet3D : public CellGeometry
+{ // GeometryTet3D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryTet3D(void);
+
+  /// Default destructor.
+  ~GeometryTet3D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryTet3D
+
+#endif // pylith_topology_geometrytet3d_hh
+
+
+// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryTri.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTri.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTri.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,63 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-#include <portinfo>
-
-#include "GeometryTri.hh" // implementation of class methods
-
-#include "pylith/utils/array.hh" // USES double_array
-
-#include <assert.h> // USES assert()
-
-// ----------------------------------------------------------------------
-// Default constructor.
-pylith::topology::GeometryTri::GeometryTri(void) :
-  CellGeometry(2)
-{ // constructor
-} // constructor
-
-// ----------------------------------------------------------------------
-// Default destructor.
-pylith::topology::GeometryTri::~GeometryTri(void)
-{ // destructor
-} // destructor
-
-// ----------------------------------------------------------------------
-// Compute Jacobian at location in cell.
-void
-pylith::topology::GeometryTri::jacobian(double_array* jacobian,
-					  const double_array& vertices,
-					  const double_array& location) const
-{ // jacobian
-  assert(0 != jacobian);
-
-  assert(2*3 == vertices.size());
-  assert(2 == location.size());
-  assert(4 == jacobian->size());
-  
-  const double x0 = vertices[0];
-  const double y0 = vertices[1];
-
-  const double x1 = vertices[2];
-  const double y1 = vertices[3];
-
-  const double x2 = vertices[4];
-  const double y2 = vertices[5];
-
-  (*jacobian)[0] = x1 - x0;
-  (*jacobian)[1] = x2 - x0;
-  (*jacobian)[2] = y1 - y0;
-  (*jacobian)[3] = y2 - y0;
-} // jacobian
-
-
-// End of file

Deleted: short/3D/PyLith/trunk/libsrc/topology/GeometryTri.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTri.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTri.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-//
-// ======================================================================
-//
-//                           Brad T. Aagaard
-//                        U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ======================================================================
-//
-
-/**
- * @file pylith/topology/GeometryTri.hh
- *
- * @brief C++ implementation of cell geometry calculations for 2-D
- * triangular cell.
- */
-
-#if !defined(pylith_topology_geometrytri_hh)
-#define pylith_topology_geometrytri_hh
-
-#include "CellGeometry.hh" // ISA CellGeometry
-
-namespace pylith {
-  namespace topology {
-    class GeometryTri;
-  } // topology
-} // pylith
-
-class pylith::topology::GeometryTri : public CellGeometry
-{ // GeometryTri
-
-// PUBLIC METHODS ///////////////////////////////////////////////////////
-public :
-  
-  /// Default constructor.
-  GeometryTri(void);
-
-  /// Default destructor.
-  ~GeometryTri(void);
-
-  /** Compute Jacobian at location in cell.
-   *
-   * @param jacobian Jacobian at location.
-   * @param vertices Coordinates of vertices of cell.
-   * @param location Location in reference cell at which to compute Jacobian.
-   */
-  void jacobian(double_array* jacobian,
-		const double_array& vertices,
-		const double_array& location) const;
-
-}; // GeometryTri
-
-#endif // pylith_topology_geometrytri_hh
-
-
-// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryTri2D.cc (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryTri.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTri.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTri2D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,72 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryTri2D.hh" // implementation of class methods
+
+#include "GeometryLine2D.hh" // USES GeometryLine2D
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryTri2D::GeometryTri2D(void) :
+  CellGeometry(2, 2, 3)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryTri2D::~GeometryTri2D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryTri2D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryLine2D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryTri2D::jacobian(double_array* jacobian,
+					  const double_array& vertices,
+					  const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+  
+  const double x0 = vertices[0];
+  const double y0 = vertices[1];
+
+  const double x1 = vertices[2];
+  const double y1 = vertices[3];
+
+  const double x2 = vertices[4];
+  const double y2 = vertices[5];
+
+  (*jacobian)[0] = x1 - x0;
+  (*jacobian)[1] = x2 - x0;
+  (*jacobian)[2] = y1 - y0;
+  (*jacobian)[3] = y2 - y0;
+} // jacobian
+
+
+// End of file

Copied: short/3D/PyLith/trunk/libsrc/topology/GeometryTri2D.hh (from rev 6870, short/3D/PyLith/trunk/libsrc/topology/GeometryTri.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTri.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTri2D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryTri2D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 2-D
+ * triangular cell.
+ */
+
+#if !defined(pylith_topology_geometrytri2d_hh)
+#define pylith_topology_geometrytri2d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryTri2D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryTri2D : public CellGeometry
+{ // GeometryTri2D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryTri2D(void);
+
+  /// Default destructor.
+  ~GeometryTri2D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryTri2D
+
+#endif // pylith_topology_geometrytri2d_hh
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryTri3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTri3D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTri3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,79 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "GeometryTri3D.hh" // implementation of class methods
+
+#include "GeometryLine3D.hh" // USES GeometryLine3D
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <assert.h> // USES assert()
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::topology::GeometryTri3D::GeometryTri3D(void) :
+  CellGeometry(2, 2, 3)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Default destructor.
+pylith::topology::GeometryTri3D::~GeometryTri3D(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Get cell geometry for lower dimension cell.
+pylith::topology::CellGeometry*
+pylith::topology::GeometryTri3D::geometryLowerDim(void) const
+{ // geometryLowerDim
+  return new GeometryLine3D();
+} // geometryLowerDim
+
+// ----------------------------------------------------------------------
+// Compute Jacobian at location in cell.
+void
+pylith::topology::GeometryTri3D::jacobian(double_array* jacobian,
+					  const double_array& vertices,
+					  const double_array& location) const
+{ // jacobian
+  assert(0 != jacobian);
+
+  assert(numCorners()*spaceDim() == vertices.size());
+  assert(spaceDim()*cellDim() == jacobian->size());
+  
+  const double x0 = vertices[0];
+  const double y0 = vertices[1];
+  const double z0 = vertices[2];
+
+  const double x1 = vertices[3];
+  const double y1 = vertices[4];
+  const double z1 = vertices[5];
+
+  const double x2 = vertices[6];
+  const double y2 = vertices[7];
+  const double z2 = vertices[8];
+
+  (*jacobian)[0] = x1 - x0;
+  (*jacobian)[1] = x2 - x0;
+
+  (*jacobian)[2] = y1 - y0;
+  (*jacobian)[3] = y2 - y0;
+
+  (*jacobian)[4] = z1 - z0;
+  (*jacobian)[5] = z2 - z0;
+} // jacobian
+
+
+// End of file

Added: short/3D/PyLith/trunk/libsrc/topology/GeometryTri3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/GeometryTri3D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/GeometryTri3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,65 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file pylith/topology/GeometryTri3D.hh
+ *
+ * @brief C++ implementation of cell geometry calculations for 2-D
+ * triangular cell.
+ */
+
+#if !defined(pylith_topology_geometrytri3d_hh)
+#define pylith_topology_geometrytri3d_hh
+
+#include "CellGeometry.hh" // ISA CellGeometry
+
+namespace pylith {
+  namespace topology {
+    class GeometryTri3D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeometryTri3D : public CellGeometry
+{ // GeometryTri3D
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Default constructor.
+  GeometryTri3D(void);
+
+  /// Default destructor.
+  ~GeometryTri3D(void);
+
+  /** Get cell geometry for lower dimension cell.
+   *
+   * @returns Pointer to cell geometry object corresponding to next
+   * lower dimension, NULL if there is no lower dimension object.
+   */
+  CellGeometry* geometryLowerDim(void) const;
+
+  /** Compute Jacobian at location in cell.
+   *
+   * @param jacobian Jacobian at location.
+   * @param vertices Coordinates of vertices of cell.
+   * @param location Location in reference cell at which to compute Jacobian.
+   */
+  void jacobian(double_array* jacobian,
+		const double_array& vertices,
+		const double_array& location) const;
+
+}; // GeometryTri3D
+
+#endif // pylith_topology_geometrytri3d_hh
+
+
+// End of file

Modified: short/3D/PyLith/trunk/libsrc/topology/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/Makefile.am	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/libsrc/topology/Makefile.am	2007-05-13 04:32:31 UTC (rev 6871)
@@ -16,12 +16,18 @@
 subpkginclude_HEADERS = \
 	CellGeometry.hh \
 	CellGeometry.icc \
-	GeometryPoint.hh \
-	GeometryLine.hh \
-	GeometryTri.hh \
-	GeometryTet.hh \
-	GeometryQuad.hh \
-	GeometryHex.hh
+	GeometryPoint1D.hh \
+	GeometryPoint2D.hh \
+	GeometryPoint3D.hh \
+	GeometryLine1D.hh \
+	GeometryLine2D.hh \
+	GeometryLine3D.hh \
+	GeometryTri2D.hh \
+	GeometryTri3D.hh \
+	GeometryTet3D.hh \
+	GeometryQuad2D.hh \
+	GeometryQuad3D.hh \
+	GeometryHex3D.hh
 
 noinst_HEADERS =
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/Makefile.am	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/Makefile.am	2007-05-13 04:32:31 UTC (rev 6871)
@@ -19,14 +19,42 @@
 
 # Primary source files
 testtopology_SOURCES = \
+	TestCellGeometry.cc \
+	TestGeometryPoint1D.cc \
+	TestGeometryPoint2D.cc \
+	TestGeometryPoint3D.cc \
+	TestGeometryLine1D.cc \
+	TestGeometryLine2D.cc \
+	TestGeometryLine3D.cc \
 	test_topology.cc
 
 noinst_HEADERS =
+	TestCellGeometry.hh \
+	TestGeometryPoint1D.hh \
+	TestGeometryPoint2D.hh \
+	TestGeometryPoint3D.hh \
+	TestGeometryLine1D.hh \
+	TestGeometryLine2D.hh \
+	TestGeometryLine3D.hh
 
 # Source files associated with testing data
-testtopology_SOURCES += 
+testtopology_SOURCES += \
+	data/CellGeomData.cc \
+	data/GeomDataPoint1D.cc \
+	data/GeomDataPoint2D.cc \
+	data/GeomDataPoint3D.cc \
+	data/GeomDataLine1D.cc \
+	data/GeomDataLine2D.cc \
+	data/GeomDataLine3D.cc
 
 noinst_HEADERS += 
+	data/CellGeomData.hh \
+	data/GeometryDataPoint1D.hh \
+	data/GeometryDataPoint2D.hh \
+	data/GeometryDataPoint3D.hh \
+	data/GeometryDataLine1D.hh \
+	data/GeometryDataLine2D.hh \
+	data/GeometryDataLine3D.hh
 
 testtopology_LDFLAGS = $(PETSC_LIB) $(PYTHON_BLDLIBRARY)
 
@@ -38,6 +66,10 @@
 	-lcppunit -ldl \
 	$(top_builddir)/libsrc/libpylith.la
 
+if ENABLE_CUBIT
+  testtopology_LDADD += -lnetcdf_c++ -lnetcdf
+endif
+
 noinst_tmp =
 
 CLEANFILES = $(noinst_tmp)

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestCellGeometry.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestCellGeometry.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestCellGeometry.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,86 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestCellGeometry.hh" // Implementation of class methods
+
+#include "pylith/topology/CellGeometry.hh" // USES CellGeometry
+#include "pylith/utils/array.hh" // USES double_array
+
+#include "data/CellGeomData.hh" // USES CellGeomData
+
+// ----------------------------------------------------------------------
+// Test cellDim().
+void
+pylith::topology::TestCellGeometry::_testCellDim(const CellGeometry& geometry,
+						 const CellGeomData& data)
+{ // _testCellDim
+  CPPUNIT_ASSERT_EQUAL(data.cellDim, geometry.cellDim());
+} // _testCellDim
+
+// ----------------------------------------------------------------------
+// Test spaceDim().
+void
+pylith::topology::TestCellGeometry::_testSpaceDim(const CellGeometry& geometry,
+						  const CellGeomData& data)
+{ // _testSpaceDim
+  CPPUNIT_ASSERT_EQUAL(data.spaceDim, geometry.spaceDim());
+} // _testSpaceDim
+
+// ----------------------------------------------------------------------
+// Test numCorners().
+void
+pylith::topology::TestCellGeometry::_testNumCorners(const CellGeometry& geometry,
+						    const CellGeomData& data)
+{ // _testNumCorners
+  CPPUNIT_ASSERT_EQUAL(data.numCorners, geometry.numCorners());
+} // _testNumConers
+
+// ----------------------------------------------------------------------
+// Test jacobian().
+void
+pylith::topology::TestCellGeometry::_testJacobian(const CellGeometry* geometry,
+						  const CellGeomData& data)
+{ // _testJacobian
+  const int cellDim = data.cellDim;
+  const int spaceDim = data.spaceDim;
+  const int numCorners = data.numCorners;
+
+  const int numLocs = data.numLocs;
+
+  CPPUNIT_ASSERT_EQUAL(cellDim, geometry->cellDim());
+  CPPUNIT_ASSERT_EQUAL(spaceDim, geometry->spaceDim());
+  CPPUNIT_ASSERT_EQUAL(numCorners, geometry->numCorners());
+
+  double_array jacobian(cellDim*spaceDim);
+  for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+    double_array vertices(data.vertices, numCorners*spaceDim);
+    double_array location(&data.locations[iLoc*cellDim], cellDim);
+
+    geometry->jacobian(&jacobian, vertices, location);
+
+    const int size = jacobian.size();
+    const int index = iLoc*cellDim*spaceDim;
+    const double tolerance = 1.0e-06;
+    for (int i=0; i < size; ++i)
+      if (data.jacobian[index+i] < 1.0)
+	CPPUNIT_ASSERT_DOUBLES_EQUAL(data.jacobian[index+i], jacobian[i],
+				     tolerance);
+      else
+	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, jacobian[i]/data.jacobian[index+i],
+				     tolerance);
+  } // for
+} // _testJacobian
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestCellGeometry.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestCellGeometry.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestCellGeometry.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,81 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/topology/TestCellGeometry.hh
+ *
+ * @brief C++ TestCellGeometry object
+ *
+ * C++ unit testing for CellGeometry.
+ */
+
+#if !defined(pylith_topology_testcellgeometry_hh)
+#define pylith_topology_testcellgeometry_hh
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "pylith/utils/sievefwd.hh" // USES PETSc Mesh
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace topology {
+    class TestCellGeometry;
+    class CellGeometry;
+
+    class CellGeomData;
+  } // topology
+} // pylith
+
+/// C++ unit testing for TestCellGeometry
+class pylith::topology::TestCellGeometry : public CppUnit::TestFixture
+{ // class TestCellGeometry
+
+// PROTECTED METHODS ////////////////////////////////////////////////////
+protected :
+
+  /** Test cellDim().
+   *
+   * @param geometry CellGeometry object.
+   * @param data Geometry data.
+   */
+  void _testCellDim(const CellGeometry& geometry,
+		    const CellGeomData& data);
+
+  /** Test spaceDim().
+   *
+   * @param geometry CellGeometry object.
+   * @param data Geometry data.
+   */
+  void _testSpaceDim(const CellGeometry& geometry,
+		     const CellGeomData& data);
+
+  /** Test numCorners().
+   *
+   * @param geometry CellGeometry object.
+   * @param data Geometry data.
+   */
+  void _testNumCorners(const CellGeometry& geometry,
+		       const CellGeomData& data);
+
+  /** Test jacobian().
+   *
+   * @param geometry CellGeometry object.
+   * @param data Geometry data.
+   */
+  void _testJacobian(const CellGeometry* geometry,
+		     const CellGeomData& data);
+
+}; // class TestCellGeometry
+
+#endif // pylith_topology_testcellgeometry_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine1D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine1D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,89 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestGeometryLine1D.hh" // Implementation of class methods
+
+#include "pylith/topology/GeometryLine1D.hh"
+#include "pylith/topology/GeometryPoint1D.hh"
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include "data/GeomDataLine1D.hh"
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestGeometryLine1D );
+
+// ----------------------------------------------------------------------
+// Test constructor
+void
+pylith::topology::TestGeometryLine1D::testConstructor(void)
+{ // testConstructor
+  GeometryLine1D geometry;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test cellDim()
+void
+pylith::topology::TestGeometryLine1D::testCellDim(void)
+{ // testCellDim
+  GeometryLine1D geometry;
+  GeomDataLine1D data;
+  _testCellDim(geometry, data);
+} // testCellDim
+
+// ----------------------------------------------------------------------
+// Test spaceDim()
+void
+pylith::topology::TestGeometryLine1D::testSpaceDim(void)
+{ // testSpaceDim
+  GeometryLine1D geometry;
+  GeomDataLine1D data;
+  _testSpaceDim(geometry, data);
+} // testSpaceDim
+
+// ----------------------------------------------------------------------
+// Test numCorners()
+void
+pylith::topology::TestGeometryLine1D::testNumCorners(void)
+{ // testNumCorners
+  GeometryLine1D geometry;
+  GeomDataLine1D data;
+  _testNumCorners(geometry, data);
+} // testNumCorners
+
+// ----------------------------------------------------------------------
+// Test geometryLowerDim().
+void
+pylith::topology::TestGeometryLine1D::testGeomLowerDim(void)
+{ // testGeomLowerDim
+  GeometryLine1D geometry;
+  CellGeometry* geometryLD = geometry.geometryLowerDim();
+  GeometryPoint1D* geometryPt = dynamic_cast<GeometryPoint1D*>(geometryLD);
+  CPPUNIT_ASSERT(0 != geometryLD);
+  delete geometryLD; geometryLD = 0;
+} // testGeomLowerDim
+
+// ----------------------------------------------------------------------
+// Test jacobian().
+void
+pylith::topology::TestGeometryLine1D::testJacobian(void)
+{ // testJacobian
+  GeometryLine1D geometry;
+  GeomDataLine1D data;
+
+  _testJacobian(&geometry, data);
+} // testJacobian
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine1D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine1D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/topology/TestGeometryLine1D.hh
+ *
+ * @brief C++ TestGeometryLine1D object
+ *
+ * C++ unit testing for TopologyAscii.
+ */
+
+#if !defined(pylith_topology_testgeometryline1d_hh)
+#define pylith_topology_testgeometryline1d_hh
+
+#include "TestCellGeometry.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace topology {
+    class TestGeometryLine1D;
+    class CellGeomData;
+  } // topology
+} // pylith
+
+/// C++ unit testing for Quadrature1D
+class pylith::topology::TestGeometryLine1D : public TestCellGeometry
+{ // class TestGeometryLine1D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestGeometryLine1D );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testCellDim );
+  CPPUNIT_TEST( testSpaceDim );
+  CPPUNIT_TEST( testNumCorners );
+  CPPUNIT_TEST( testGeomLowerDim );
+  CPPUNIT_TEST( testJacobian );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Test constructor
+  void testConstructor(void);
+
+  /// Test cellDim()
+  void testCellDim(void);
+
+  /// Test spaceDim()
+  void testSpaceDim(void);
+
+  /// Test numCorners()
+  void testNumCorners(void);
+
+  /// Test geometryLowerDim().
+  void testGeomLowerDim(void);
+
+  /// Test jacobian().
+  void testJacobian(void);
+
+}; // class TestGeometryLine1D
+
+#endif // pylith_topology_testgeometryline1d_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine2D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine2D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,89 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestGeometryLine2D.hh" // Implementation of class methods
+
+#include "pylith/topology/GeometryLine2D.hh"
+#include "pylith/topology/GeometryPoint2D.hh"
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include "data/GeomDataLine2D.hh"
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestGeometryLine2D );
+
+// ----------------------------------------------------------------------
+// Test constructor
+void
+pylith::topology::TestGeometryLine2D::testConstructor(void)
+{ // testConstructor
+  GeometryLine2D geometry;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test cellDim()
+void
+pylith::topology::TestGeometryLine2D::testCellDim(void)
+{ // testCellDim
+  GeometryLine2D geometry;
+  GeomDataLine2D data;
+  _testCellDim(geometry, data);
+} // testCellDim
+
+// ----------------------------------------------------------------------
+// Test spaceDim()
+void
+pylith::topology::TestGeometryLine2D::testSpaceDim(void)
+{ // testSpaceDim
+  GeometryLine2D geometry;
+  GeomDataLine2D data;
+  _testSpaceDim(geometry, data);
+} // testSpaceDim
+
+// ----------------------------------------------------------------------
+// Test numCorners()
+void
+pylith::topology::TestGeometryLine2D::testNumCorners(void)
+{ // testNumCorners
+  GeometryLine2D geometry;
+  GeomDataLine2D data;
+  _testNumCorners(geometry, data);
+} // testNumCorners
+
+// ----------------------------------------------------------------------
+// Test geometryLowerDim().
+void
+pylith::topology::TestGeometryLine2D::testGeomLowerDim(void)
+{ // testGeomLowerDim
+  GeometryLine2D geometry;
+  CellGeometry* geometryLD = geometry.geometryLowerDim();
+  GeometryPoint2D* geometryPt = dynamic_cast<GeometryPoint2D*>(geometryLD);
+  CPPUNIT_ASSERT(0 != geometryLD);
+  delete geometryLD; geometryLD = 0;
+} // testGeomLowerDim
+
+// ----------------------------------------------------------------------
+// Test jacobian().
+void
+pylith::topology::TestGeometryLine2D::testJacobian(void)
+{ // testJacobian
+  GeometryLine2D geometry;
+  GeomDataLine2D data;
+
+  _testJacobian(&geometry, data);
+} // testJacobian
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine2D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine2D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/topology/TestGeometryLine2D.hh
+ *
+ * @brief C++ TestGeometryLine2D object
+ *
+ * C++ unit testing for TopologyAscii.
+ */
+
+#if !defined(pylith_topology_testgeometryline2d_hh)
+#define pylith_topology_testgeometryline2d_hh
+
+#include "TestCellGeometry.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace topology {
+    class TestGeometryLine2D;
+    class CellGeomData;
+  } // topology
+} // pylith
+
+/// C++ unit testing for Quadrature2D
+class pylith::topology::TestGeometryLine2D : public TestCellGeometry
+{ // class TestGeometryLine2D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestGeometryLine2D );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testCellDim );
+  CPPUNIT_TEST( testSpaceDim );
+  CPPUNIT_TEST( testNumCorners );
+  CPPUNIT_TEST( testGeomLowerDim );
+  CPPUNIT_TEST( testJacobian );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Test constructor
+  void testConstructor(void);
+
+  /// Test cellDim()
+  void testCellDim(void);
+
+  /// Test spaceDim()
+  void testSpaceDim(void);
+
+  /// Test numCorners()
+  void testNumCorners(void);
+
+  /// Test geometryLowerDim().
+  void testGeomLowerDim(void);
+
+  /// Test jacobian().
+  void testJacobian(void);
+
+}; // class TestGeometryLine2D
+
+#endif // pylith_topology_testgeometryline2d_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine3D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,89 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestGeometryLine3D.hh" // Implementation of class methods
+
+#include "pylith/topology/GeometryLine3D.hh"
+#include "pylith/topology/GeometryPoint3D.hh"
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include "data/GeomDataLine3D.hh"
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestGeometryLine3D );
+
+// ----------------------------------------------------------------------
+// Test constructor
+void
+pylith::topology::TestGeometryLine3D::testConstructor(void)
+{ // testConstructor
+  GeometryLine3D geometry;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test cellDim()
+void
+pylith::topology::TestGeometryLine3D::testCellDim(void)
+{ // testCellDim
+  GeometryLine3D geometry;
+  GeomDataLine3D data;
+  _testCellDim(geometry, data);
+} // testCellDim
+
+// ----------------------------------------------------------------------
+// Test spaceDim()
+void
+pylith::topology::TestGeometryLine3D::testSpaceDim(void)
+{ // testSpaceDim
+  GeometryLine3D geometry;
+  GeomDataLine3D data;
+  _testSpaceDim(geometry, data);
+} // testSpaceDim
+
+// ----------------------------------------------------------------------
+// Test numCorners()
+void
+pylith::topology::TestGeometryLine3D::testNumCorners(void)
+{ // testNumCorners
+  GeometryLine3D geometry;
+  GeomDataLine3D data;
+  _testNumCorners(geometry, data);
+} // testNumCorners
+
+// ----------------------------------------------------------------------
+// Test geometryLowerDim().
+void
+pylith::topology::TestGeometryLine3D::testGeomLowerDim(void)
+{ // testGeomLowerDim
+  GeometryLine3D geometry;
+  CellGeometry* geometryLD = geometry.geometryLowerDim();
+  GeometryPoint3D* geometryPt = dynamic_cast<GeometryPoint3D*>(geometryLD);
+  CPPUNIT_ASSERT(0 != geometryLD);
+  delete geometryLD; geometryLD = 0;
+} // testGeomLowerDim
+
+// ----------------------------------------------------------------------
+// Test jacobian().
+void
+pylith::topology::TestGeometryLine3D::testJacobian(void)
+{ // testJacobian
+  GeometryLine3D geometry;
+  GeomDataLine3D data;
+
+  _testJacobian(&geometry, data);
+} // testJacobian
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine3D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryLine3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/topology/TestGeometryLine3D.hh
+ *
+ * @brief C++ TestGeometryLine3D object
+ *
+ * C++ unit testing for TopologyAscii.
+ */
+
+#if !defined(pylith_topology_testgeometryline3d_hh)
+#define pylith_topology_testgeometryline3d_hh
+
+#include "TestCellGeometry.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace topology {
+    class TestGeometryLine3D;
+    class CellGeomData;
+  } // topology
+} // pylith
+
+/// C++ unit testing for Quadrature3D
+class pylith::topology::TestGeometryLine3D : public TestCellGeometry
+{ // class TestGeometryLine3D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestGeometryLine3D );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testCellDim );
+  CPPUNIT_TEST( testSpaceDim );
+  CPPUNIT_TEST( testNumCorners );
+  CPPUNIT_TEST( testGeomLowerDim );
+  CPPUNIT_TEST( testJacobian );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Test constructor
+  void testConstructor(void);
+
+  /// Test cellDim()
+  void testCellDim(void);
+
+  /// Test spaceDim()
+  void testSpaceDim(void);
+
+  /// Test numCorners()
+  void testNumCorners(void);
+
+  /// Test geometryLowerDim().
+  void testGeomLowerDim(void);
+
+  /// Test jacobian().
+  void testJacobian(void);
+
+}; // class TestGeometryLine3D
+
+#endif // pylith_topology_testgeometryline3d_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint1D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint1D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestGeometryPoint1D.hh" // Implementation of class methods
+
+#include "pylith/topology/GeometryPoint1D.hh"
+#include "pylith/utils/array.hh" // USES double_array
+
+#include "data/GeomDataPoint1D.hh"
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestGeometryPoint1D );
+
+// ----------------------------------------------------------------------
+// Test constructor
+void
+pylith::topology::TestGeometryPoint1D::testConstructor(void)
+{ // testConstructor
+  GeometryPoint1D geometry;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test cellDim()
+void
+pylith::topology::TestGeometryPoint1D::testCellDim(void)
+{ // testCellDim
+  GeometryPoint1D geometry;
+  GeomDataPoint1D data;
+  _testCellDim(geometry, data);
+} // testCellDim
+
+// ----------------------------------------------------------------------
+// Test spaceDim()
+void
+pylith::topology::TestGeometryPoint1D::testSpaceDim(void)
+{ // testSpaceDim
+  GeometryPoint1D geometry;
+  GeomDataPoint1D data;
+  _testSpaceDim(geometry, data);
+} // testSpaceDim
+
+// ----------------------------------------------------------------------
+// Test numCorners()
+void
+pylith::topology::TestGeometryPoint1D::testNumCorners(void)
+{ // testNumCorners
+  GeometryPoint1D geometry;
+  GeomDataPoint1D data;
+  _testNumCorners(geometry, data);
+} // testNumCorners
+
+// ----------------------------------------------------------------------
+// Test geometryLowerDim().
+void
+pylith::topology::TestGeometryPoint1D::testGeomLowerDim(void)
+{ // testGeomLowerDim
+  GeometryPoint1D geometry;
+  CellGeometry* geometryLD = geometry.geometryLowerDim();
+  CPPUNIT_ASSERT(0 == geometryLD);
+  delete geometryLD; geometryLD = 0;
+} // testGeomLowerDim
+
+// ----------------------------------------------------------------------
+// Test jacobian().
+void
+pylith::topology::TestGeometryPoint1D::testJacobian(void)
+{ // testJacobian
+  GeometryPoint1D geometry;
+  GeomDataPoint1D data;
+
+  const int cellDim = data.cellDim;
+  const int spaceDim = data.spaceDim;
+  const int numCorners = data.numCorners;
+
+  const int numLocs = data.numLocs;
+
+  CPPUNIT_ASSERT_EQUAL(cellDim, geometry.cellDim());
+  CPPUNIT_ASSERT_EQUAL(spaceDim, geometry.spaceDim());
+  CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
+
+  double_array jacobian(1);
+  for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+    double_array vertices(data.vertices, numCorners*spaceDim);
+    double_array location(&data.locations[iLoc], 1);
+
+    geometry.jacobian(&jacobian, vertices, location);
+    CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
+  } //for
+} // testJacobian
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint1D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint1D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/topology/TestGeometryPoint1D.hh
+ *
+ * @brief C++ TestGeometryPoint1D object
+ *
+ * C++ unit testing for TopologyAscii.
+ */
+
+#if !defined(pylith_topology_testgeometrypoint1d_hh)
+#define pylith_topology_testgeometrypoint1d_hh
+
+#include "TestCellGeometry.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace topology {
+    class TestGeometryPoint1D;
+    class CellGeomData;
+  } // topology
+} // pylith
+
+/// C++ unit testing for Quadrature1D
+class pylith::topology::TestGeometryPoint1D : public TestCellGeometry
+{ // class TestGeometryPoint1D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestGeometryPoint1D );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testCellDim );
+  CPPUNIT_TEST( testSpaceDim );
+  CPPUNIT_TEST( testNumCorners );
+  CPPUNIT_TEST( testGeomLowerDim );
+  CPPUNIT_TEST( testJacobian );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Test constructor
+  void testConstructor(void);
+
+  /// Test cellDim()
+  void testCellDim(void);
+
+  /// Test spaceDim()
+  void testSpaceDim(void);
+
+  /// Test numCorners()
+  void testNumCorners(void);
+
+  /// Test geometryLowerDim().
+  void testGeomLowerDim(void);
+
+  /// Test jacobian().
+  void testJacobian(void);
+
+}; // class TestGeometryPoint1D
+
+#endif // pylith_topology_testgeometrypoint1d_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint2D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint2D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestGeometryPoint2D.hh" // Implementation of class methods
+
+#include "pylith/topology/GeometryPoint2D.hh"
+#include "pylith/utils/array.hh" // USES double_array
+
+#include "data/GeomDataPoint2D.hh"
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestGeometryPoint2D );
+
+// ----------------------------------------------------------------------
+// Test constructor
+void
+pylith::topology::TestGeometryPoint2D::testConstructor(void)
+{ // testConstructor
+  GeometryPoint2D geometry;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test cellDim()
+void
+pylith::topology::TestGeometryPoint2D::testCellDim(void)
+{ // testCellDim
+  GeometryPoint2D geometry;
+  GeomDataPoint2D data;
+  _testCellDim(geometry, data);
+} // testCellDim
+
+// ----------------------------------------------------------------------
+// Test spaceDim()
+void
+pylith::topology::TestGeometryPoint2D::testSpaceDim(void)
+{ // testSpaceDim
+  GeometryPoint2D geometry;
+  GeomDataPoint2D data;
+  _testSpaceDim(geometry, data);
+} // testSpaceDim
+
+// ----------------------------------------------------------------------
+// Test numCorners()
+void
+pylith::topology::TestGeometryPoint2D::testNumCorners(void)
+{ // testNumCorners
+  GeometryPoint2D geometry;
+  GeomDataPoint2D data;
+  _testNumCorners(geometry, data);
+} // testNumCorners
+
+// ----------------------------------------------------------------------
+// Test geometryLowerDim().
+void
+pylith::topology::TestGeometryPoint2D::testGeomLowerDim(void)
+{ // testGeomLowerDim
+  GeometryPoint2D geometry;
+  CellGeometry* geometryLD = geometry.geometryLowerDim();
+  CPPUNIT_ASSERT(0 == geometryLD);
+  delete geometryLD; geometryLD = 0;
+} // testGeomLowerDim
+
+// ----------------------------------------------------------------------
+// Test jacobian().
+void
+pylith::topology::TestGeometryPoint2D::testJacobian(void)
+{ // testJacobian
+  GeometryPoint2D geometry;
+  GeomDataPoint2D data;
+
+  const int cellDim = data.cellDim;
+  const int spaceDim = data.spaceDim;
+  const int numCorners = data.numCorners;
+
+  const int numLocs = data.numLocs;
+
+  CPPUNIT_ASSERT_EQUAL(cellDim, geometry.cellDim());
+  CPPUNIT_ASSERT_EQUAL(spaceDim, geometry.spaceDim());
+  CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
+
+  double_array jacobian(1);
+  for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+    double_array vertices(data.vertices, numCorners*spaceDim);
+    double_array location(&data.locations[iLoc], 1);
+
+    geometry.jacobian(&jacobian, vertices, location);
+    CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
+  } //for
+} // testJacobian
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint2D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint2D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/topology/TestGeometryPoint2D.hh
+ *
+ * @brief C++ TestGeometryPoint2D object
+ *
+ * C++ unit testing for TopologyAscii.
+ */
+
+#if !defined(pylith_topology_testgeometrypoint2d_hh)
+#define pylith_topology_testgeometrypoint2d_hh
+
+#include "TestCellGeometry.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace topology {
+    class TestGeometryPoint2D;
+    class CellGeomData;
+  } // topology
+} // pylith
+
+/// C++ unit testing for Quadrature2D
+class pylith::topology::TestGeometryPoint2D : public TestCellGeometry
+{ // class TestGeometryPoint2D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestGeometryPoint2D );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testCellDim );
+  CPPUNIT_TEST( testSpaceDim );
+  CPPUNIT_TEST( testNumCorners );
+  CPPUNIT_TEST( testGeomLowerDim );
+  CPPUNIT_TEST( testJacobian );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Test constructor
+  void testConstructor(void);
+
+  /// Test cellDim()
+  void testCellDim(void);
+
+  /// Test spaceDim()
+  void testSpaceDim(void);
+
+  /// Test numCorners()
+  void testNumCorners(void);
+
+  /// Test geometryLowerDim().
+  void testGeomLowerDim(void);
+
+  /// Test jacobian().
+  void testJacobian(void);
+
+}; // class TestGeometryPoint2D
+
+#endif // pylith_topology_testgeometrypoint2d_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint3D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,103 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestGeometryPoint3D.hh" // Implementation of class methods
+
+#include "pylith/topology/GeometryPoint3D.hh"
+#include "pylith/utils/array.hh" // USES double_array
+
+#include "data/GeomDataPoint3D.hh"
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::topology::TestGeometryPoint3D );
+
+// ----------------------------------------------------------------------
+// Test constructor
+void
+pylith::topology::TestGeometryPoint3D::testConstructor(void)
+{ // testConstructor
+  GeometryPoint3D geometry;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test cellDim()
+void
+pylith::topology::TestGeometryPoint3D::testCellDim(void)
+{ // testCellDim
+  GeometryPoint3D geometry;
+  GeomDataPoint3D data;
+  _testCellDim(geometry, data);
+} // testCellDim
+
+// ----------------------------------------------------------------------
+// Test spaceDim()
+void
+pylith::topology::TestGeometryPoint3D::testSpaceDim(void)
+{ // testSpaceDim
+  GeometryPoint3D geometry;
+  GeomDataPoint3D data;
+  _testSpaceDim(geometry, data);
+} // testSpaceDim
+
+// ----------------------------------------------------------------------
+// Test numCorners()
+void
+pylith::topology::TestGeometryPoint3D::testNumCorners(void)
+{ // testNumCorners
+  GeometryPoint3D geometry;
+  GeomDataPoint3D data;
+  _testNumCorners(geometry, data);
+} // testNumCorners
+
+// ----------------------------------------------------------------------
+// Test geometryLowerDim().
+void
+pylith::topology::TestGeometryPoint3D::testGeomLowerDim(void)
+{ // testGeomLowerDim
+  GeometryPoint3D geometry;
+  CellGeometry* geometryLD = geometry.geometryLowerDim();
+  CPPUNIT_ASSERT(0 == geometryLD);
+  delete geometryLD; geometryLD = 0;
+} // testGeomLowerDim
+
+// ----------------------------------------------------------------------
+// Test jacobian().
+void
+pylith::topology::TestGeometryPoint3D::testJacobian(void)
+{ // testJacobian
+  GeometryPoint3D geometry;
+  GeomDataPoint3D data;
+
+  const int cellDim = data.cellDim;
+  const int spaceDim = data.spaceDim;
+  const int numCorners = data.numCorners;
+
+  const int numLocs = data.numLocs;
+
+  CPPUNIT_ASSERT_EQUAL(cellDim, geometry.cellDim());
+  CPPUNIT_ASSERT_EQUAL(spaceDim, geometry.spaceDim());
+  CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
+
+  double_array jacobian(1);
+  for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+    double_array vertices(data.vertices, numCorners*spaceDim);
+    double_array location(&data.locations[iLoc], 1);
+
+    geometry.jacobian(&jacobian, vertices, location);
+    CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
+  } //for
+} // testJacobian
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint3D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestGeometryPoint3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,73 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/topology/TestGeometryPoint3D.hh
+ *
+ * @brief C++ TestGeometryPoint3D object
+ *
+ * C++ unit testing for TopologyAscii.
+ */
+
+#if !defined(pylith_topology_testgeometrypoint3d_hh)
+#define pylith_topology_testgeometrypoint3d_hh
+
+#include "TestCellGeometry.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace topology {
+    class TestGeometryPoint3D;
+    class CellGeomData;
+  } // topology
+} // pylith
+
+/// C++ unit testing for Quadrature3D
+class pylith::topology::TestGeometryPoint3D : public TestCellGeometry
+{ // class TestGeometryPoint3D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestGeometryPoint3D );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testCellDim );
+  CPPUNIT_TEST( testSpaceDim );
+  CPPUNIT_TEST( testNumCorners );
+  CPPUNIT_TEST( testGeomLowerDim );
+  CPPUNIT_TEST( testJacobian );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Test constructor
+  void testConstructor(void);
+
+  /// Test cellDim()
+  void testCellDim(void);
+
+  /// Test spaceDim()
+  void testSpaceDim(void);
+
+  /// Test numCorners()
+  void testNumCorners(void);
+
+  /// Test geometryLowerDim().
+  void testGeomLowerDim(void);
+
+  /// Test jacobian().
+  void testJacobian(void);
+
+}; // class TestGeometryPoint3D
+
+#endif // pylith_topology_testgeometrypoint3d_hh
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/CellGeomData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/CellGeomData.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/CellGeomData.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,35 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "CellGeomData.hh"
+
+// ----------------------------------------------------------------------
+// Constructor
+pylith::topology::CellGeomData::CellGeomData(void) :
+  cellDim(0),
+  spaceDim(0),
+  numCorners(0),
+  numLocs(0),
+  vertices(0),
+  locations(0),
+  jacobian(0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor
+pylith::topology::CellGeomData::~CellGeomData(void)
+{ // destructor
+} // destructor
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/CellGeomData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/CellGeomData.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/CellGeomData.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,52 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_topology_cellgeomdata_hh)
+#define pylith_topology_cellgeomdata_hh
+
+namespace pylith {
+  namespace topology {
+     class CellGeomData;
+  } // pylith
+} // topology
+
+class pylith::topology::CellGeomData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+  
+  /// Constructor
+  CellGeomData(void);
+
+  /// Destructor
+  ~CellGeomData(void);
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public:
+
+  int cellDim; ///< Number of dimensions associated with cell
+  int spaceDim; ///< Number of dimensions in vertex coordinates
+  int numCorners; ///< Number of vertices in cell
+
+  int numLocs; ///< Number of locations
+
+  double* vertices; ///< Coordinates of vertices of cell
+  double* locations; ///< Locations where Jacobian is computed
+  double* jacobian; ///< Jacobian at locations
+
+};
+
+#endif // pylith_topology_cellgeomdata_hh
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine1D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine1D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "GeomDataLine1D.hh"
+
+const int pylith::topology::GeomDataLine1D::_cellDim = 1;
+
+const int pylith::topology::GeomDataLine1D::_spaceDim = 1;
+
+const int pylith::topology::GeomDataLine1D::_numCorners = 2;
+
+const int pylith::topology::GeomDataLine1D::_numLocs = 2;
+
+const double pylith::topology::GeomDataLine1D::_vertices[] = {
+  1.2,
+  4.5
+};
+
+const double pylith::topology::GeomDataLine1D::_locations[] = {
+  0.345,
+  0.459
+};
+
+const double pylith::topology::GeomDataLine1D::_jacobian[] = {
+  3.3,
+  3.3
+};
+
+pylith::topology::GeomDataLine1D::GeomDataLine1D(void)
+{ // constructor
+  cellDim = _cellDim;
+  spaceDim = _spaceDim;
+  numCorners = _numCorners;
+  numLocs = _numLocs;
+  vertices = const_cast<double*>(_vertices);
+  locations = const_cast<double*>(_locations);
+  jacobian = const_cast<double*>(_jacobian);
+} // constructor
+
+pylith::topology::GeomDataLine1D::~GeomDataLine1D(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine1D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine1D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_meshio_geomdataline1d_hh)
+#define pylith_meshio_geomdataline1d_hh
+
+#include "CellGeomData.hh"
+
+namespace pylith {
+  namespace topology {
+     class GeomDataLine1D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeomDataLine1D : public CellGeomData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  GeomDataLine1D(void);
+
+  /// Destructor
+  ~GeomDataLine1D(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _cellDim; ///< Number of dimensions associated with cell
+  static const int _spaceDim; ///< Number of dimensions in vertex coordinates
+  static const int _numCorners; ///< Number of vertices in cell
+
+  static const int _numLocs; ///< Number of locations for computing Jacobian
+
+  static const double _vertices[]; ///< Coordinates of cell's vertices
+  static const double _locations[]; ///< Locations to compute Jacobian
+  static const double _jacobian[]; ///< Jacobian at locations
+
+};
+
+#endif // pylith_meshio_geomdataline1d_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine2D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine2D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "GeomDataLine2D.hh"
+
+const int pylith::topology::GeomDataLine2D::_cellDim = 1;
+
+const int pylith::topology::GeomDataLine2D::_spaceDim = 2;
+
+const int pylith::topology::GeomDataLine2D::_numCorners = 2;
+
+const int pylith::topology::GeomDataLine2D::_numLocs = 2;
+
+const double pylith::topology::GeomDataLine2D::_vertices[] = {
+  1.2, 2.4,
+  4.5, -1.4
+};
+
+const double pylith::topology::GeomDataLine2D::_locations[] = {
+  0.345,
+  0.459
+};
+
+const double pylith::topology::GeomDataLine2D::_jacobian[] = {
+  3.3, -3.8,
+  3.3, -3.8
+};
+
+pylith::topology::GeomDataLine2D::GeomDataLine2D(void)
+{ // constructor
+  cellDim = _cellDim;
+  spaceDim = _spaceDim;
+  numCorners = _numCorners;
+  numLocs = _numLocs;
+  vertices = const_cast<double*>(_vertices);
+  locations = const_cast<double*>(_locations);
+  jacobian = const_cast<double*>(_jacobian);
+} // constructor
+
+pylith::topology::GeomDataLine2D::~GeomDataLine2D(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine2D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine2D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_meshio_geomdataline2d_hh)
+#define pylith_meshio_geomdataline2d_hh
+
+#include "CellGeomData.hh"
+
+namespace pylith {
+  namespace topology {
+     class GeomDataLine2D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeomDataLine2D : public CellGeomData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  GeomDataLine2D(void);
+
+  /// Destructor
+  ~GeomDataLine2D(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _cellDim; ///< Number of dimensions associated with cell
+  static const int _spaceDim; ///< Number of dimensions in vertex coordinates
+  static const int _numCorners; ///< Number of vertices in cell
+
+  static const int _numLocs; ///< Number of locations for computing Jacobian
+
+  static const double _vertices[]; ///< Coordinates of cell's vertices
+  static const double _locations[]; ///< Locations to compute Jacobian
+  static const double _jacobian[]; ///< Jacobian at locations
+
+};
+
+#endif // pylith_meshio_geomdataline2d_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine3D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "GeomDataLine3D.hh"
+
+const int pylith::topology::GeomDataLine3D::_cellDim = 1;
+
+const int pylith::topology::GeomDataLine3D::_spaceDim = 3;
+
+const int pylith::topology::GeomDataLine3D::_numCorners = 2;
+
+const int pylith::topology::GeomDataLine3D::_numLocs = 2;
+
+const double pylith::topology::GeomDataLine3D::_vertices[] = {
+  1.2, 2.3, 2.4,
+  4.5, -1.5, 5.3
+};
+
+const double pylith::topology::GeomDataLine3D::_locations[] = {
+  0.345,
+  0.459
+};
+
+const double pylith::topology::GeomDataLine3D::_jacobian[] = {
+  3.3, -3.8, 2.9,
+  3.3, -3.8, 2.9
+};
+
+pylith::topology::GeomDataLine3D::GeomDataLine3D(void)
+{ // constructor
+  cellDim = _cellDim;
+  spaceDim = _spaceDim;
+  numCorners = _numCorners;
+  numLocs = _numLocs;
+  vertices = const_cast<double*>(_vertices);
+  locations = const_cast<double*>(_locations);
+  jacobian = const_cast<double*>(_jacobian);
+} // constructor
+
+pylith::topology::GeomDataLine3D::~GeomDataLine3D(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine3D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataLine3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_meshio_geomdataline3d_hh)
+#define pylith_meshio_geomdataline3d_hh
+
+#include "CellGeomData.hh"
+
+namespace pylith {
+  namespace topology {
+     class GeomDataLine3D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeomDataLine3D : public CellGeomData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  GeomDataLine3D(void);
+
+  /// Destructor
+  ~GeomDataLine3D(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _cellDim; ///< Number of dimensions associated with cell
+  static const int _spaceDim; ///< Number of dimensions in vertex coordinates
+  static const int _numCorners; ///< Number of vertices in cell
+
+  static const int _numLocs; ///< Number of locations for computing Jacobian
+
+  static const double _vertices[]; ///< Coordinates of cell's vertices
+  static const double _locations[]; ///< Locations to compute Jacobian
+  static const double _jacobian[]; ///< Jacobian at locations
+
+};
+
+#endif // pylith_meshio_geomdataline3d_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint1D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint1D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "GeomDataPoint1D.hh"
+
+const int pylith::topology::GeomDataPoint1D::_cellDim = 0;
+
+const int pylith::topology::GeomDataPoint1D::_spaceDim = 1;
+
+const int pylith::topology::GeomDataPoint1D::_numCorners = 1;
+
+const int pylith::topology::GeomDataPoint1D::_numLocs = 2;
+
+const double pylith::topology::GeomDataPoint1D::_vertices[] = {
+  1.2,
+  4.5
+};
+
+const double pylith::topology::GeomDataPoint1D::_locations[] = {
+  0.0,
+  0.0
+};
+
+const double pylith::topology::GeomDataPoint1D::_jacobian[] = {
+  1.0,
+  1.0
+};
+
+pylith::topology::GeomDataPoint1D::GeomDataPoint1D(void)
+{ // constructor
+  cellDim = _cellDim;
+  spaceDim = _spaceDim;
+  numCorners = _numCorners;
+  numLocs = _numLocs;
+  vertices = const_cast<double*>(_vertices);
+  locations = const_cast<double*>(_locations);
+  jacobian = const_cast<double*>(_jacobian);
+} // constructor
+
+pylith::topology::GeomDataPoint1D::~GeomDataPoint1D(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint1D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint1D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_meshio_geomdatapoint1d_hh)
+#define pylith_meshio_geomdatapoint1d_hh
+
+#include "CellGeomData.hh"
+
+namespace pylith {
+  namespace topology {
+     class GeomDataPoint1D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeomDataPoint1D : public CellGeomData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  GeomDataPoint1D(void);
+
+  /// Destructor
+  ~GeomDataPoint1D(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _cellDim; ///< Number of dimensions associated with cell
+  static const int _spaceDim; ///< Number of dimensions in vertex coordinates
+  static const int _numCorners; ///< Number of vertices in cell
+
+  static const int _numLocs; ///< Number of locations for computing Jacobian
+
+  static const double _vertices[]; ///< Coordinates of cell's vertices
+  static const double _locations[]; ///< Locations to compute Jacobian
+  static const double _jacobian[]; ///< Jacobian at locations
+
+};
+
+#endif // pylith_meshio_geomdatapoint1d_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint2D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint2D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "GeomDataPoint2D.hh"
+
+const int pylith::topology::GeomDataPoint2D::_cellDim = 0;
+
+const int pylith::topology::GeomDataPoint2D::_spaceDim = 2;
+
+const int pylith::topology::GeomDataPoint2D::_numCorners = 1;
+
+const int pylith::topology::GeomDataPoint2D::_numLocs = 2;
+
+const double pylith::topology::GeomDataPoint2D::_vertices[] = {
+  1.3, 5.4,
+  4.1, 7.5
+};
+
+const double pylith::topology::GeomDataPoint2D::_locations[] = {
+  0.0,
+  0.0
+};
+
+const double pylith::topology::GeomDataPoint2D::_jacobian[] = {
+  1.0,
+  1.0
+};
+
+pylith::topology::GeomDataPoint2D::GeomDataPoint2D(void)
+{ // constructor
+  cellDim = _cellDim;
+  spaceDim = _spaceDim;
+  numCorners = _numCorners;
+  numLocs = _numLocs;
+  vertices = const_cast<double*>(_vertices);
+  locations = const_cast<double*>(_locations);
+  jacobian = const_cast<double*>(_jacobian);
+} // constructor
+
+pylith::topology::GeomDataPoint2D::~GeomDataPoint2D(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint2D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint2D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_meshio_geomdatapoint2d_hh)
+#define pylith_meshio_geomdatapoint2d_hh
+
+#include "CellGeomData.hh"
+
+namespace pylith {
+  namespace topology {
+     class GeomDataPoint2D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeomDataPoint2D : public CellGeomData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  GeomDataPoint2D(void);
+
+  /// Destructor
+  ~GeomDataPoint2D(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _cellDim; ///< Number of dimensions associated with cell
+  static const int _spaceDim; ///< Number of dimensions in vertex coordinates
+  static const int _numCorners; ///< Number of vertices in cell
+
+  static const int _numLocs; ///< Number of locations for computing Jacobian
+
+  static const double _vertices[]; ///< Coordinates of cell's vertices
+  static const double _locations[]; ///< Locations to compute Jacobian
+  static const double _jacobian[]; ///< Jacobian at locations
+
+};
+
+#endif // pylith_meshio_geomdatapoint2d_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint3D.cc	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint3D.cc	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "GeomDataPoint3D.hh"
+
+const int pylith::topology::GeomDataPoint3D::_cellDim = 0;
+
+const int pylith::topology::GeomDataPoint3D::_spaceDim = 3;
+
+const int pylith::topology::GeomDataPoint3D::_numCorners = 1;
+
+const int pylith::topology::GeomDataPoint3D::_numLocs = 2;
+
+const double pylith::topology::GeomDataPoint3D::_vertices[] = {
+  1.22, 4.35, 6.56,
+  4.45, 5.62, 2.55
+};
+
+const double pylith::topology::GeomDataPoint3D::_locations[] = {
+  0.0,
+  0.0
+};
+
+const double pylith::topology::GeomDataPoint3D::_jacobian[] = {
+  1.0,
+  1.0
+};
+
+pylith::topology::GeomDataPoint3D::GeomDataPoint3D(void)
+{ // constructor
+  cellDim = _cellDim;
+  spaceDim = _spaceDim;
+  numCorners = _numCorners;
+  numLocs = _numLocs;
+  vertices = const_cast<double*>(_vertices);
+  locations = const_cast<double*>(_locations);
+  jacobian = const_cast<double*>(_jacobian);
+} // constructor
+
+pylith::topology::GeomDataPoint3D::~GeomDataPoint3D(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint3D.hh	2007-05-12 22:50:15 UTC (rev 6870)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/data/GeomDataPoint3D.hh	2007-05-13 04:32:31 UTC (rev 6871)
@@ -0,0 +1,53 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_meshio_geomdatapoint3d_hh)
+#define pylith_meshio_geomdatapoint3d_hh
+
+#include "CellGeomData.hh"
+
+namespace pylith {
+  namespace topology {
+     class GeomDataPoint3D;
+  } // topology
+} // pylith
+
+class pylith::topology::GeomDataPoint3D : public CellGeomData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  GeomDataPoint3D(void);
+
+  /// Destructor
+  ~GeomDataPoint3D(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const int _cellDim; ///< Number of dimensions associated with cell
+  static const int _spaceDim; ///< Number of dimensions in vertex coordinates
+  static const int _numCorners; ///< Number of vertices in cell
+
+  static const int _numLocs; ///< Number of locations for computing Jacobian
+
+  static const double _vertices[]; ///< Coordinates of cell's vertices
+  static const double _locations[]; ///< Locations to compute Jacobian
+  static const double _jacobian[]; ///< Jacobian at locations
+
+};
+
+#endif // pylith_meshio_geomdatapoint3d_hh
+
+// End of file



More information about the cig-commits mailing list