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

brad at geodynamics.org brad at geodynamics.org
Fri Jun 8 11:27:00 PDT 2007


Author: brad
Date: 2007-06-08 11:26:59 -0700 (Fri, 08 Jun 2007)
New Revision: 7102

Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.cc
   short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestCellGeometry.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint1D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.hh
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.cc
   short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.hh
Log:
Added computation of Jacobian determinant to C++ CellGeometry::jacobian(). Updated unit tests accordingly.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/TODO	2007-06-08 18:26:59 UTC (rev 7102)
@@ -4,8 +4,6 @@
 
 1. Simple tests with analytical solutions
 
-   Try shear tests with Poisson ratio of 0.5.
-
    a. 2-D
      i. tri3 cells
        (1) axial compression
@@ -56,6 +54,9 @@
 SECONDARY PRIORITIES
 ======================================================================
 
+Want to take advantage of symmetry and block structure of Jacobian
+when possible.
+
 1. Implement MeshIOHDF5 & HDF5 (helper class)
    a. C++ objects
    b. unit tests at C++ level

Modified: short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -83,11 +83,13 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of Jacobian at location.
    * @param vertices Coordinates of vertices of cell.
    * @param location Location in reference cell at which to compute Jacobian.
    */
   virtual
   void jacobian(double_array* jacobian,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const = 0;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -53,10 +53,12 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryHex3D::jacobian(double_array* jacobian,
-					  const double_array& vertices,
-					  const double_array& location) const
+					    double* det,
+					    const double_array& vertices,
+					    const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(cellDim() == location.size());
@@ -128,6 +130,14 @@
   (*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;
+
+  *det = 
+    (*jacobian)[0]*((*jacobian)[4]*(*jacobian)[8] -
+		    (*jacobian)[5]*(*jacobian)[7]) -
+    (*jacobian)[1]*((*jacobian)[3]*(*jacobian)[8] -
+		    (*jacobian)[5]*(*jacobian)[6]) +
+    (*jacobian)[2]*((*jacobian)[3]*(*jacobian)[7] -
+		    (*jacobian)[4]*(*jacobian)[6]);
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -53,10 +53,12 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryLine1D::jacobian(double_array* jacobian,
+					   double* det,
 					   const double_array& vertices,
 					   const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(spaceDim()*cellDim() == jacobian->size());
@@ -65,6 +67,7 @@
   const double x1 = vertices[1];
 
   (*jacobian)[0] = x1 - x0;
+  *det = (*jacobian)[0];
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -53,10 +53,12 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryLine2D::jacobian(double_array* jacobian,
+					   double* det,
 					   const double_array& vertices,
 					   const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(spaceDim()*cellDim() == jacobian->size());
@@ -69,6 +71,8 @@
 
   (*jacobian)[0] = x1 - x0;
   (*jacobian)[1] = y1 - y0;
+  *det = sqrt(pow((*jacobian)[0], 2) +
+	      pow((*jacobian)[1], 2));
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -53,10 +53,12 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryLine3D::jacobian(double_array* jacobian,
+					   double* det,
 					   const double_array& vertices,
 					   const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(spaceDim()*cellDim() == jacobian->size());
@@ -72,6 +74,9 @@
   (*jacobian)[0] = x1 - x0;
   (*jacobian)[1] = y1 - y0;
   (*jacobian)[2] = z1 - z0;
+  *det = sqrt(pow((*jacobian)[0], 2) +
+	      pow((*jacobian)[1], 2) +
+	      pow((*jacobian)[2], 2));
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -58,14 +58,17 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryPoint1D::jacobian(double_array* jacobian,
+					    double* det,
 					    const double_array& vertices,
 					    const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(1 == jacobian->size());
   
   (*jacobian)[0] = 1.0;
+  *det = 1.0;
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -58,14 +58,17 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryPoint2D::jacobian(double_array* jacobian,
+					  double* det,
 					  const double_array& vertices,
 					  const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(1 == jacobian->size());
   
   (*jacobian)[0] = 1.0;
+  *det = 1.0;
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -58,14 +58,17 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryPoint3D::jacobian(double_array* jacobian,
+					    double* det,
 					    const double_array& vertices,
 					    const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(1 == jacobian->size());
   
   (*jacobian)[0] = 1.0;
+  *det = 1.0;
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -60,10 +60,12 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryQuad2D::jacobian(double_array* jacobian,
+					  double* det,
 					  const double_array& vertices,
 					  const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(cellDim() == location.size());
@@ -93,6 +95,10 @@
   (*jacobian)[1] = x3 - x0 + f_xy*x;
   (*jacobian)[2] = y1 - y0 + g_xy*y;
   (*jacobian)[3] = y3 - y0 + g_xy*x;
+
+  *det = 
+    (*jacobian)[0]*(*jacobian)[3] - 
+    (*jacobian)[1]*(*jacobian)[2];
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -60,10 +60,12 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryQuad3D::jacobian(double_array* jacobian,
+					  double* det,
 					  const double_array& vertices,
 					  const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(cellDim() == location.size());
@@ -102,6 +104,21 @@
 
   (*jacobian)[4] = z1 - z0 + h_xy*y;
   (*jacobian)[5] = z3 - z0 + h_xy*x;
+
+  const double jj00 = 
+    (*jacobian)[0]*(*jacobian)[0] +
+    (*jacobian)[2]*(*jacobian)[2] +
+    (*jacobian)[4]*(*jacobian)[4];
+  const double jj10 =
+    (*jacobian)[0]*(*jacobian)[1] +
+    (*jacobian)[2]*(*jacobian)[3] +
+    (*jacobian)[4]*(*jacobian)[5];
+  const double jj01 = jj10;
+  const double jj11 = 
+    (*jacobian)[1]*(*jacobian)[1] +
+    (*jacobian)[3]*(*jacobian)[3] +
+    (*jacobian)[5]*(*jacobian)[5];
+  *det = sqrt(jj00*jj11 - jj01*jj10);
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -60,10 +60,12 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryTet3D::jacobian(double_array* jacobian,
+					  double* det,
 					  const double_array& vertices,
 					  const double_array& location) const
 { // jacobian
   assert(0 != jacobian);
+  assert(0 != det);
 
   assert(numCorners()*spaceDim() == vertices.size());
   assert(spaceDim()*cellDim() == jacobian->size());
@@ -93,6 +95,14 @@
   (*jacobian)[6] = z1 - z0;
   (*jacobian)[7] = z2 - z0;
   (*jacobian)[8] = z3 - z0;
+
+  *det = 
+    (*jacobian)[0]*((*jacobian)[4]*(*jacobian)[8] -
+		    (*jacobian)[5]*(*jacobian)[7]) -
+    (*jacobian)[1]*((*jacobian)[3]*(*jacobian)[8] -
+		    (*jacobian)[5]*(*jacobian)[6]) +
+    (*jacobian)[2]*((*jacobian)[3]*(*jacobian)[7] -
+		    (*jacobian)[4]*(*jacobian)[6]);
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -60,6 +60,7 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryTri2D::jacobian(double_array* jacobian,
+					  double* det,
 					  const double_array& vertices,
 					  const double_array& location) const
 { // jacobian
@@ -81,6 +82,10 @@
   (*jacobian)[1] = x2 - x0;
   (*jacobian)[2] = y1 - y0;
   (*jacobian)[3] = y2 - y0;
+
+  *det = 
+    (*jacobian)[0]*(*jacobian)[3] - 
+    (*jacobian)[1]*(*jacobian)[2];
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -60,6 +60,7 @@
 // Compute Jacobian at location in cell.
 void
 pylith::feassemble::GeometryTri3D::jacobian(double_array* jacobian,
+					  double* det,
 					  const double_array& vertices,
 					  const double_array& location) const
 { // jacobian
@@ -88,6 +89,21 @@
 
   (*jacobian)[4] = z1 - z0;
   (*jacobian)[5] = z2 - z0;
+
+  const double jj00 = 
+    (*jacobian)[0]*(*jacobian)[0] +
+    (*jacobian)[2]*(*jacobian)[2] +
+    (*jacobian)[4]*(*jacobian)[4];
+  const double jj10 =
+    (*jacobian)[0]*(*jacobian)[1] +
+    (*jacobian)[2]*(*jacobian)[3] +
+    (*jacobian)[4]*(*jacobian)[5];
+  const double jj01 = jj10;
+  const double jj11 = 
+    (*jacobian)[1]*(*jacobian)[1] +
+    (*jacobian)[3]*(*jacobian)[3] +
+    (*jacobian)[5]*(*jacobian)[5];
+  *det = sqrt(jj00*jj11 - jj01*jj10);
 } // jacobian
 
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -56,10 +56,12 @@
   /** Compute Jacobian at location in cell.
    *
    * @param jacobian Jacobian at location.
+   * @param det Determinant of 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,
+		double* det,
 		const double_array& vertices,
 		const double_array& location) const;
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestCellGeometry.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestCellGeometry.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestCellGeometry.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -98,11 +98,12 @@
   CPPUNIT_ASSERT_EQUAL(numCorners, _object->numCorners());
 
   double_array jacobian(cellDim*spaceDim);
+  double det = 0;
   for (int iLoc=0; iLoc < numLocs; ++iLoc) {
     double_array vertices(_data->vertices, numCorners*spaceDim);
     double_array location(&_data->locations[iLoc*cellDim], cellDim);
 
-    _object->jacobian(&jacobian, vertices, location);
+    _object->jacobian(&jacobian, &det, vertices, location);
 
     const int size = jacobian.size();
     const int index = iLoc*cellDim*spaceDim;
@@ -114,6 +115,7 @@
       else
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, jacobian[i]/_data->jacobian[index+i],
 				     tolerance);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->jacobianDet[iLoc], det, tolerance);
   } // for
 } // testJacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint1D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint1D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -70,12 +70,14 @@
   CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
 
   double_array jacobian(1);
+  double det = 0.0;
   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);
+    geometry.jacobian(&jacobian, &det, vertices, location);
     CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
+    CPPUNIT_ASSERT_EQUAL(1.0, det);
   } //for
 } // testJacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -70,12 +70,14 @@
   CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
 
   double_array jacobian(1);
+  double det = 0.0;
   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);
+    geometry.jacobian(&jacobian, &det, vertices, location);
     CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
+    CPPUNIT_ASSERT_EQUAL(1.0, det);
   } //for
 } // testJacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestGeometryPoint3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -70,12 +70,14 @@
   CPPUNIT_ASSERT_EQUAL(numCorners, geometry.numCorners());
 
   double_array jacobian(1);
+  double det = 0.0;
   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);
+    geometry.jacobian(&jacobian, &det, vertices, location);
     CPPUNIT_ASSERT_EQUAL(1.0, jacobian[0]);
+    CPPUNIT_ASSERT_EQUAL(1.0, det);
   } //for
 } // testJacobian
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -21,7 +21,8 @@
   numLocs(0),
   vertices(0),
   locations(0),
-  jacobian(0)
+  jacobian(0),
+  jacobianDet(0)
 { // constructor
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/CellGeomData.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -43,6 +43,7 @@
   double* vertices; ///< Coordinates of vertices of cell
   double* locations; ///< Locations where Jacobian is computed
   double* jacobian; ///< Jacobian at locations
+  double* jacobianDet; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -55,6 +55,18 @@
   3.698, -0.088, -0.012, -0.116, 1.446, -0.056, -0.51, 0.46, 2.7
 };
 
+const double pylith::feassemble::GeomDataHex3D::_jacobianDet[] = {
+  11.13,
+  8.359,
+  14.622,
+  21.199,
+  9.41,
+  13.135,
+  12.253,
+  27.302,
+  14.494708
+};
+
 pylith::feassemble::GeomDataHex3D::GeomDataHex3D(void)
 { // constructor
   cellDim = _cellDim;
@@ -64,6 +76,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataHex3D::~GeomDataHex3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -35,6 +35,11 @@
   3.3
 };
 
+const double pylith::feassemble::GeomDataLine1D::_jacobianDet[] = {
+  3.3,
+  3.3
+};
+
 pylith::feassemble::GeomDataLine1D::GeomDataLine1D(void)
 { // constructor
   cellDim = _cellDim;
@@ -44,6 +49,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataLine1D::~GeomDataLine1D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine1D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -35,6 +35,11 @@
   3.3, -3.8
 };
 
+const double pylith::feassemble::GeomDataLine2D::_jacobianDet[] = {
+  5.0328918128646478,
+  5.0328918128646478
+};
+
 pylith::feassemble::GeomDataLine2D::GeomDataLine2D(void)
 { // constructor
   cellDim = _cellDim;
@@ -44,6 +49,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataLine2D::~GeomDataLine2D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine2D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -35,6 +35,11 @@
   3.3, -3.8, 2.9
 };
 
+const double pylith::feassemble::GeomDataLine3D::_jacobianDet[] = {
+  5.8086142925830417,
+  5.8086142925830417
+};
+
 pylith::feassemble::GeomDataLine3D::GeomDataLine3D(void)
 { // constructor
   cellDim = _cellDim;
@@ -44,6 +49,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataLine3D::~GeomDataLine3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataLine3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -35,6 +35,11 @@
   1.0
 };
 
+const double pylith::feassemble::GeomDataPoint1D::_jacobianDet[] = {
+  1.0,
+  1.0
+};
+
 pylith::feassemble::GeomDataPoint1D::GeomDataPoint1D(void)
 { // constructor
   cellDim = _cellDim;
@@ -44,6 +49,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataPoint1D::~GeomDataPoint1D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint1D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -35,6 +35,11 @@
   1.0
 };
 
+const double pylith::feassemble::GeomDataPoint2D::_jacobianDet[] = {
+  1.0,
+  1.0
+};
+
 pylith::feassemble::GeomDataPoint2D::GeomDataPoint2D(void)
 { // constructor
   cellDim = _cellDim;
@@ -44,6 +49,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataPoint2D::~GeomDataPoint2D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint2D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -35,6 +35,11 @@
   1.0
 };
 
+const double pylith::feassemble::GeomDataPoint3D::_jacobianDet[] = {
+  1.0,
+  1.0
+};
+
 pylith::feassemble::GeomDataPoint3D::GeomDataPoint3D(void)
 { // constructor
   cellDim = _cellDim;
@@ -44,6 +49,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataPoint3D::~GeomDataPoint3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataPoint3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -43,6 +43,14 @@
   0.71, -0.28, -0.37, 1.46
 };
 
+const double pylith::feassemble::GeomDataQuad2D::_jacobianDet[] = {
+  0.63,
+  0.67,
+  1.04,
+  1.08,
+  0.933
+};
+
 pylith::feassemble::GeomDataQuad2D::GeomDataQuad2D(void)
 { // constructor
   cellDim = _cellDim;
@@ -52,6 +60,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataQuad2D::~GeomDataQuad2D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -43,6 +43,14 @@
   -0.1, -1.4, 1.84, -0.31, 1.18, -0.02
 };
 
+const double pylith::feassemble::GeomDataQuad3D::_jacobianDet[] = {
+  2.4899799195977463,
+  2.5397243944963788,
+  3.2703516630478742,
+  3.3300750742288079,
+  3.1049003204611898
+};
+
 pylith::feassemble::GeomDataQuad3D::GeomDataQuad3D(void)
 { // constructor
   cellDim = _cellDim;
@@ -52,6 +60,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataQuad3D::~GeomDataQuad3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -37,6 +37,11 @@
   3.4, 0.3, 1.2, 0.1, 3.2, 1.0, -0.1, -0.5, 2.8
 };
 
+const double pylith::feassemble::GeomDataTet3D::_jacobianDet[] = {
+  32.374,
+  32.374
+};
+
 pylith::feassemble::GeomDataTet3D::GeomDataTet3D(void)
 { // constructor
   cellDim = _cellDim;
@@ -46,6 +51,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataTet3D::~GeomDataTet3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTet3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -36,6 +36,11 @@
   2.0, 0.5, 0.8, 2.8
 };
 
+const double pylith::feassemble::GeomDataTri2D::_jacobianDet[] = {
+  5.2,
+  5.2
+};
+
 pylith::feassemble::GeomDataTri2D::GeomDataTri2D(void)
 { // constructor
   cellDim = _cellDim;
@@ -45,6 +50,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataTri2D::~GeomDataTri2D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri2D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.cc	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.cc	2007-06-08 18:26:59 UTC (rev 7102)
@@ -36,6 +36,11 @@
   -1.5, -1.3, -3.0, -0.9, 0.5, 1.8
 };
 
+const double pylith::feassemble::GeomDataTri3D::_jacobianDet[] = {
+  5.933590818383081,
+  5.933590818383081
+};
+
 pylith::feassemble::GeomDataTri3D::GeomDataTri3D(void)
 { // constructor
   cellDim = _cellDim;
@@ -45,6 +50,7 @@
   vertices = const_cast<double*>(_vertices);
   locations = const_cast<double*>(_locations);
   jacobian = const_cast<double*>(_jacobian);
+  jacobianDet = const_cast<double*>(_jacobianDet);
 } // constructor
 
 pylith::feassemble::GeomDataTri3D::~GeomDataTri3D(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.hh	2007-06-08 18:00:52 UTC (rev 7101)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataTri3D.hh	2007-06-08 18:26:59 UTC (rev 7102)
@@ -45,6 +45,7 @@
   static const double _vertices[]; ///< Coordinates of cell's vertices
   static const double _locations[]; ///< Locations to compute Jacobian
   static const double _jacobian[]; ///< Jacobian at locations
+  static const double _jacobianDet[]; ///< Determinant of Jacobian at locations
 
 };
 



More information about the cig-commits mailing list