[cig-commits] r8298 - in short/3D/PyLith/trunk/unittests/libtests/bc: . data

willic3 at geodynamics.org willic3 at geodynamics.org
Fri Nov 16 13:58:36 PST 2007


Author: willic3
Date: 2007-11-16 13:58:35 -0800 (Fri, 16 Nov 2007)
New Revision: 8298

Added:
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/line2-tractions.spatialdb
   short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4-tractions.spatialdb
   short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3-tractions.spatialdb
Modified:
   short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/bc/data/line2.mesh
   short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4.mesh
Log:
Some fixes to hex8 test for Neumann BC.
Added tests for line2, tri3, and tet4.
Still need to add test for quad4.  For this case, I want to apply a
linear variation in tractions along one edge of the mesh.



Modified: short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am	2007-11-16 21:58:35 UTC (rev 8298)
@@ -38,6 +38,9 @@
 	TestDirichletMulti.cc \
 	TestDirichletMultiTri3.cc \
 	TestNeumann.cc \
+	TestNeumannLine2.cc \
+	TestNeumannTri3.cc \
+	TestNeumannTet4.cc \
 	TestNeumannHex8.cc \
 	test_bc.cc
 
@@ -59,6 +62,9 @@
 	TestDirichletMulti.hh \
 	TestDirichletMultiTri3.hh \
 	TestNeumann.hh \
+	TestNeumannLine2.hh \
+	TestNeumannTri3.hh \
+	TestNeumannTet4.hh \
 	TestNeumannHex8.hh
 
 # Source files associated with testing data
@@ -79,6 +85,9 @@
 	data/DirichletDataMulti.cc \
 	data/DirichletDataMultiTri3.cc \
 	data/NeumannData.cc \
+	data/NeumannDataLine2.cc \
+	data/NeumannDataTri3.cc \
+	data/NeumannDataTet4.cc \
 	data/NeumannDataHex8.cc
 
 noinst_HEADERS += \
@@ -98,6 +107,9 @@
 	data/DirichletDataMulti.hh \
 	data/DirichletDataMultiTri3.hh \
 	data/NeumannData.hh \
+	data/NeumannDataLine2.hh \
+	data/NeumannDataTri3.hh \
+	data/NeumannDataTet4.hh \
 	data/NeumannDataHex8.hh
 
 AM_CPPFLAGS = $(PETSC_SIEVE_FLAGS) $(PETSC_INCLUDE)

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc	2007-11-16 21:58:35 UTC (rev 8298)
@@ -141,13 +141,16 @@
     bc._boundaryMesh->restrict(bc._tractionsGlobal, *c_iter,
 			    &tractionsCell[0], tractionsCell.size());
 
+    // std::cout << "Tractions at quadrature points: " << std::endl;
     for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
       for (int iDim =0; iDim < spaceDim; ++iDim) {
+        // std::cout << "  " << tractionsCell[iQuad*spaceDim+iDim];
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(_data->tractionsCell[index],
 				     tractionsCell[iQuad*spaceDim+iDim],
 				     tolerance);
 	++index;
       } // for
+      // std::cout << std::endl;
     } // for
   } // for
 
@@ -191,7 +194,7 @@
       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
     else
       CPPUNIT_ASSERT_DOUBLES_EQUAL(valsE[i], vals[i], tolerance);
-
+  
 } // testIntegrateResidual
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -35,7 +35,7 @@
 { // class TestNeumann
 
   // CPPUNIT TEST SUITE /////////////////////////////////////////////////
-  CPPUNIT_TEST_SUITE( TestNeumannHex8 );
+  CPPUNIT_TEST_SUB_SUITE( TestNeumannHex8, TestNeumann );
   CPPUNIT_TEST( testInitialize );
   CPPUNIT_TEST( testIntegrateResidual );
   CPPUNIT_TEST_SUITE_END();

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannLine2.cc	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannLine2.cc	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestNeumannLine2.hh" // Implementation of class methods
+
+#include "data/NeumannDataLine2.hh" // USES NeumannDataLine2
+
+#include "pylith/feassemble/Quadrature0D.hh" // USES Quadrature0D
+#include "pylith/feassemble/GeometryPoint1D.hh" // USES GeometryPoint1D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestNeumannLine2 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestNeumannLine2::setUp(void)
+{ // setUp
+  _data = new NeumannDataLine2();
+  _quadrature = new feassemble::Quadrature0D();
+  CPPUNIT_ASSERT(0 != _quadrature);
+  feassemble::GeometryPoint1D geometry;
+  _quadrature->refGeometry(&geometry);
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannLine2.hh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannLine2.hh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestNeumannLine2.hh
+ *
+ * @brief C++ TestNeumann object.
+ *
+ * C++ unit testing for Neumann for mesh with 1-D line cells.
+ */
+
+#if !defined(pylith_bc_testneumannline2_hh)
+#define pylith_bc_testneumannline2_hh
+
+#include "TestNeumann.hh" // ISA TestNeumann
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestNeumannLine2;
+  } // bc
+} // pylith
+
+/// C++ unit testing for Neumann for mesh with 1-D line cells.
+class pylith::bc::TestNeumannLine2 : public TestNeumann
+{ // class TestNeumann
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUB_SUITE( TestNeumannLine2, TestNeumann );
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testIntegrateResidual );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestNeumannLine2
+
+#endif // pylith_bc_neumannline2_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTet4.cc	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTet4.cc	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestNeumannTet4.hh" // Implementation of class methods
+
+#include "data/NeumannDataTet4.hh" // USES NeumannDataTet4
+
+#include "pylith/feassemble/Quadrature2Din3D.hh" // USES Quadrature2Din3D
+#include "pylith/feassemble/GeometryTri3D.hh" // USES GeometryTri3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestNeumannTet4 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestNeumannTet4::setUp(void)
+{ // setUp
+  _data = new NeumannDataTet4();
+  _quadrature = new feassemble::Quadrature2Din3D();
+  CPPUNIT_ASSERT(0 != _quadrature);
+  feassemble::GeometryTri3D geometry;
+  _quadrature->refGeometry(&geometry);
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTet4.hh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTet4.hh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestNeumannTet4.hh
+ *
+ * @brief C++ TestNeumann object.
+ *
+ * C++ unit testing for Neumann for mesh with 3-D tet cells.
+ */
+
+#if !defined(pylith_bc_testneumanntet4_hh)
+#define pylith_bc_testneumanntet4_hh
+
+#include "TestNeumann.hh" // ISA TestNeumann
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestNeumannTet4;
+  } // bc
+} // pylith
+
+/// C++ unit testing for Neumann for mesh with 3-D tet cells.
+class pylith::bc::TestNeumannTet4 : public TestNeumann
+{ // class TestNeumann
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUB_SUITE( TestNeumannTet4, TestNeumann );
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testIntegrateResidual );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestNeumannTet4
+
+#endif // pylith_bc_neumanntet4_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTri3.cc	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTri3.cc	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestNeumannTri3.hh" // Implementation of class methods
+
+#include "data/NeumannDataTri3.hh" // USES NeumannDataTri3
+
+#include "pylith/feassemble/Quadrature1Din2D.hh" // USES Quadrature1Din2D
+#include "pylith/feassemble/GeometryLine2D.hh" // USES GeometryLine2D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestNeumannTri3 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestNeumannTri3::setUp(void)
+{ // setUp
+  _data = new NeumannDataTri3();
+  _quadrature = new feassemble::Quadrature1Din2D();
+  CPPUNIT_ASSERT(0 != _quadrature);
+  feassemble::GeometryLine2D geometry;
+  _quadrature->refGeometry(&geometry);
+} // setUp
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTri3.hh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannTri3.hh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,54 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestNeumannTri3.hh
+ *
+ * @brief C++ TestNeumann object.
+ *
+ * C++ unit testing for Neumann for mesh with 2-D tri cells.
+ */
+
+#if !defined(pylith_bc_testneumanntri3_hh)
+#define pylith_bc_testneumanntri3_hh
+
+#include "TestNeumann.hh" // ISA TestNeumann
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace bc {
+    class TestNeumannTri3;
+  } // bc
+} // pylith
+
+/// C++ unit testing for Neumann for mesh with 2-D tri cells.
+class pylith::bc::TestNeumannTri3 : public TestNeumann
+{ // class TestNeumann
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUB_SUITE( TestNeumannTri3, TestNeumann );
+  CPPUNIT_TEST( testInitialize );
+  CPPUNIT_TEST( testIntegrateResidual );
+  CPPUNIT_TEST_SUITE_END();
+
+  // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+  /// Setup testing data.
+  void setUp(void);
+
+}; // class TestNeumannTri3
+
+#endif // pylith_bc_neumanntri3_hh
+
+
+// End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/Makefile.am	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/Makefile.am	2007-11-16 21:58:35 UTC (rev 8298)
@@ -13,15 +13,18 @@
 noinst_DATA = \
 	line2.mesh \
 	line2.spatialdb \
+	line2-tractions.spatialdb \
 	elasticstrain1d.spatialdb \
 	tri3.mesh \
 	tri3.spatialdb \
 	tri3_b.spatialdb \
+	tri3-tractions.spatialdb \
 	elasticplanestrain.spatialdb \
 	quad4.mesh \
 	quad4.spatialdb \
 	tet4.mesh \
 	tet4.spatialdb \
+	tet4-tractions.spatialdb \
 	elasticisotropic3d.spatialdb \
 	hex8.mesh \
 	hex8.spatialdb \

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.cc	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.cc	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,95 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: line2.mesh
+ *
+ * Neumann BC on vertex 0.
+ * For this problem, the traction should be the same as a point force.
+ * For a point force of 1 applied at vertex 0, the applied traction
+ * and the residual should both have a value of 1 for this vertex.
+ *
+ */
+
+#include "NeumannDataLine2.hh"
+
+const char* pylith::bc::NeumannDataLine2::_meshFilename = 
+  "data/line2.mesh";
+
+const int pylith::bc::NeumannDataLine2::_numBasis = 1;
+const int pylith::bc::NeumannDataLine2::_numQuadPts = 1;
+const double pylith::bc::NeumannDataLine2::_quadPts[] = {
+  0.0,
+};
+const double pylith::bc::NeumannDataLine2::_quadWts[] = {
+  1.0,
+};
+const double pylith::bc::NeumannDataLine2::_basis[] = {
+  1.0,
+};
+const double pylith::bc::NeumannDataLine2::_basisDerivRef[] = {
+  1.0,
+};
+
+const char* pylith::bc::NeumannDataLine2::_spatialDBFilename =
+  "data/line2-tractions.spatialdb";
+const int pylith::bc::NeumannDataLine2::_id = 0;
+const char* pylith::bc::NeumannDataLine2::_label = "bc1";
+
+const int pylith::bc::NeumannDataLine2::_spaceDim = 1;
+const int pylith::bc::NeumannDataLine2::_cellDim = 0;
+
+const int pylith::bc::NeumannDataLine2::_numBoundaryVertices = 1;
+const int pylith::bc::NeumannDataLine2::_numBoundaryCells = 1;
+const int pylith::bc::NeumannDataLine2::_numCorners = 1;
+const double pylith::bc::NeumannDataLine2::_cellVertices[] = { -1.0};
+const double pylith::bc::NeumannDataLine2::_tractionsCell[] = {
+  1.0,
+};
+const double pylith::bc::NeumannDataLine2::_valsResidual[] = {
+  1.0,
+  0.0,
+  0.0,
+};
+
+
+pylith::bc::NeumannDataLine2::NeumannDataLine2(void)
+{ // constructor
+  meshFilename = const_cast<char*>(_meshFilename);
+
+  numBasis = _numBasis;
+  numQuadPts = _numQuadPts;
+  quadPts = const_cast<double*>(_quadPts);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
+
+  spatialDBFilename = const_cast<char*>(_spatialDBFilename);
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  spaceDim = _spaceDim;
+  cellDim = _cellDim;
+  numBoundaryVertices = _numBoundaryVertices;
+  numBoundaryCells = _numBoundaryCells;
+  numCorners = _numCorners;
+
+  cellVertices = const_cast<double*>(_cellVertices);
+  tractionsCell = const_cast<double*>(_tractionsCell);
+  valsResidual = const_cast<double*>(_valsResidual);
+
+} // constructor
+
+pylith::bc::NeumannDataLine2::~NeumannDataLine2(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.hh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataLine2.hh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_neumanndataline2_hh)
+#define pylith_bc_neumanndataline2_hh
+
+#include "NeumannData.hh"
+
+namespace pylith {
+  namespace bc {
+     class NeumannDataLine2;
+  } // pylith
+} // bc
+
+class pylith::bc::NeumannDataLine2 : public NeumannData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  NeumannDataLine2(void);
+
+  /// Destructor
+  ~NeumannDataLine2(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const char* _meshFilename;
+
+  // Quadrature information
+  static const int _numBasis;
+  static const int _numQuadPts;
+  static const double _quadPts[];
+  static const double _quadWts[];
+  static const double _basis[];
+  static const double _basisDerivRef[];
+
+  // BC information
+  static const char* _spatialDBFilename;
+  static const int _id;
+  static const char* _label;
+
+  // Mesh information
+  static const int _spaceDim;
+  static const int _cellDim;
+  static const int _numBoundaryVertices;
+  static const int _numBoundaryCells;
+  static const int _numCorners;
+  static const double _cellVertices[];
+
+  // Calculated values.
+  static const double _tractionsCell[];
+  static const double _valsResidual[];
+
+};
+
+#endif // pylith_bc_neumanndataline2_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.cc	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.cc	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,111 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: tet4.mesh
+ *
+ * Neumann BC on face defined by vertices 1, 2, 3.
+ * This face has an area of sqrt(3)/2.
+ * The unit vectors should be:
+ * Normal:       ( 1/sqrt(3),  1/sqrt(3),  1/sqrt(3))
+ * Horiz-shear:  (-1/sqrt(2),  1/sqrt(2),  0)
+ * Vert-shear:   (-1/sqrt(6), -1/sqrt(6),  2/sqrt(6))
+ * Applying unit values of horiz-shear, vert-shear, and normal
+ * tractions should give x, y, and z tractions that are the sum of each
+ * column, yielding values of approximately (-0.538005, 0.876209, 1.39385).
+ * Integrating these tractions over the area of the triangle and distributing
+ * values to the face nodes, we should get x, y, and z forces of about
+ * ( -1.5530860877e-01,  2.529396817e-01,  4.0236892706e-01)
+ * at vertices 1, 2, and 3.
+ *
+ */
+
+#include "NeumannDataTet4.hh"
+
+const char* pylith::bc::NeumannDataTet4::_meshFilename = 
+  "data/tet4.mesh";
+
+const int pylith::bc::NeumannDataTet4::_numBasis = 3;
+const int pylith::bc::NeumannDataTet4::_numQuadPts = 1;
+const double pylith::bc::NeumannDataTet4::_quadPts[] = {
+  0.3333333333333333, 0.3333333333333333
+};
+const double pylith::bc::NeumannDataTet4::_quadWts[] = {
+  0.5,
+};
+const double pylith::bc::NeumannDataTet4::_basis[] = {
+  0.3333333333333333,
+  0.3333333333333333,
+  0.3333333333333333,
+};
+const double pylith::bc::NeumannDataTet4::_basisDerivRef[] = {
+ -1.0, -1.0,
+  1.0,  0.0,
+  0.0,  1.0,
+};
+
+const char* pylith::bc::NeumannDataTet4::_spatialDBFilename =
+  "data/tet4-tractions.spatialdb";
+const int pylith::bc::NeumannDataTet4::_id = 0;
+const char* pylith::bc::NeumannDataTet4::_label = "bc3";
+
+const int pylith::bc::NeumannDataTet4::_spaceDim = 3;
+const int pylith::bc::NeumannDataTet4::_cellDim = 2;
+
+const int pylith::bc::NeumannDataTet4::_numBoundaryVertices = 3;
+const int pylith::bc::NeumannDataTet4::_numBoundaryCells = 1;
+const int pylith::bc::NeumannDataTet4::_numCorners = 3;
+const double pylith::bc::NeumannDataTet4::_cellVertices[] = { 1.0, 0.0, 0.0,
+							      0.0, 1.0, 0.0,
+							      0.0, 0.0, 1.0};
+const double pylith::bc::NeumannDataTet4::_tractionsCell[] = {
+  -0.5380048025,  0.87620875991,  1.3938468501
+};
+const double pylith::bc::NeumannDataTet4::_valsResidual[] = {
+  0.0,               0.0,               0.0,
+  -1.5530860877e-01,  2.529396817e-01,  4.0236892706e-01,
+  -1.5530860877e-01,  2.529396817e-01,  4.0236892706e-01,
+  -1.5530860877e-01,  2.529396817e-01,  4.0236892706e-01,
+};
+
+
+pylith::bc::NeumannDataTet4::NeumannDataTet4(void)
+{ // constructor
+  meshFilename = const_cast<char*>(_meshFilename);
+
+  numBasis = _numBasis;
+  numQuadPts = _numQuadPts;
+  quadPts = const_cast<double*>(_quadPts);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
+
+  spatialDBFilename = const_cast<char*>(_spatialDBFilename);
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  spaceDim = _spaceDim;
+  cellDim = _cellDim;
+  numBoundaryVertices = _numBoundaryVertices;
+  numBoundaryCells = _numBoundaryCells;
+  numCorners = _numCorners;
+
+  cellVertices = const_cast<double*>(_cellVertices);
+  tractionsCell = const_cast<double*>(_tractionsCell);
+  valsResidual = const_cast<double*>(_valsResidual);
+
+} // constructor
+
+pylith::bc::NeumannDataTet4::~NeumannDataTet4(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.hh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTet4.hh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_neumanndatatet4_hh)
+#define pylith_bc_neumanndatatet4_hh
+
+#include "NeumannData.hh"
+
+namespace pylith {
+  namespace bc {
+     class NeumannDataTet4;
+  } // pylith
+} // bc
+
+class pylith::bc::NeumannDataTet4 : public NeumannData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  NeumannDataTet4(void);
+
+  /// Destructor
+  ~NeumannDataTet4(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const char* _meshFilename;
+
+  // Quadrature information
+  static const int _numBasis;
+  static const int _numQuadPts;
+  static const double _quadPts[];
+  static const double _quadWts[];
+  static const double _basis[];
+  static const double _basisDerivRef[];
+
+  // BC information
+  static const char* _spatialDBFilename;
+  static const int _id;
+  static const char* _label;
+
+  // Mesh information
+  static const int _spaceDim;
+  static const int _cellDim;
+  static const int _numBoundaryVertices;
+  static const int _numBoundaryCells;
+  static const int _numCorners;
+  static const double _cellVertices[];
+
+  // Calculated values.
+  static const double _tractionsCell[];
+  static const double _valsResidual[];
+
+};
+
+#endif // pylith_bc_neumanndatatet4_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.cc	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.cc	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,105 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Mesh: tri3.mesh
+ *
+ * Neumann BC on edge defined by vertices 1, 3.
+ * This edge has a length of sqrt(2).
+ * The unit vectors should be:
+ * Normal: ( 1/sqrt(2), -1/sqrt(2))
+ * Shear:  ( 1/sqrt(2),  1/sqrt(2))
+ * Applying shear and normal tractions of (1,  1) should give x and y
+ * tractions of (sqrt(2), 0).
+ * Integrating these tractions over the length of the edge and distributing
+ * values to the edge nodes, we should get x and y forces of (1.0, 0.0)
+ * at vertices 1 and 3.
+ *
+ */
+
+#include "NeumannDataTri3.hh"
+
+const char* pylith::bc::NeumannDataTri3::_meshFilename = 
+  "data/tri3.mesh";
+
+const int pylith::bc::NeumannDataTri3::_numBasis = 2;
+const int pylith::bc::NeumannDataTri3::_numQuadPts = 1;
+const double pylith::bc::NeumannDataTri3::_quadPts[] = {
+  0.0,
+};
+const double pylith::bc::NeumannDataTri3::_quadWts[] = {
+  2.0,
+};
+const double pylith::bc::NeumannDataTri3::_basis[] = {
+  0.5,
+  0.5,
+};
+const double pylith::bc::NeumannDataTri3::_basisDerivRef[] = {
+ -0.5,
+  0.5,
+};
+
+const char* pylith::bc::NeumannDataTri3::_spatialDBFilename =
+  "data/tri3-tractions.spatialdb";
+const int pylith::bc::NeumannDataTri3::_id = 0;
+const char* pylith::bc::NeumannDataTri3::_label = "bc";
+
+const int pylith::bc::NeumannDataTri3::_spaceDim = 2;
+const int pylith::bc::NeumannDataTri3::_cellDim = 1;
+
+const int pylith::bc::NeumannDataTri3::_numBoundaryVertices = 2;
+const int pylith::bc::NeumannDataTri3::_numBoundaryCells = 1;
+const int pylith::bc::NeumannDataTri3::_numCorners = 2;
+const double pylith::bc::NeumannDataTri3::_cellVertices[] = { 0.0,-1.0,
+							      1.0, 0.0};
+const double pylith::bc::NeumannDataTri3::_tractionsCell[] = {
+  1.4142135624,  0.0,
+};
+const double pylith::bc::NeumannDataTri3::_valsResidual[] = {
+  0.0,  0.0,
+  1.0,  0.0,
+  0.0,  0.0,
+  1.0,  0.0,
+};
+
+
+pylith::bc::NeumannDataTri3::NeumannDataTri3(void)
+{ // constructor
+  meshFilename = const_cast<char*>(_meshFilename);
+
+  numBasis = _numBasis;
+  numQuadPts = _numQuadPts;
+  quadPts = const_cast<double*>(_quadPts);
+  quadWts = const_cast<double*>(_quadWts);
+  basis = const_cast<double*>(_basis);
+  basisDerivRef = const_cast<double*>(_basisDerivRef);
+
+  spatialDBFilename = const_cast<char*>(_spatialDBFilename);
+  id = _id;
+  label = const_cast<char*>(_label);
+
+  spaceDim = _spaceDim;
+  cellDim = _cellDim;
+  numBoundaryVertices = _numBoundaryVertices;
+  numBoundaryCells = _numBoundaryCells;
+  numCorners = _numCorners;
+
+  cellVertices = const_cast<double*>(_cellVertices);
+  tractionsCell = const_cast<double*>(_tractionsCell);
+  valsResidual = const_cast<double*>(_valsResidual);
+
+} // constructor
+
+pylith::bc::NeumannDataTri3::~NeumannDataTri3(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.hh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataTri3.hh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_neumanndatatri3_hh)
+#define pylith_bc_neumanndatatri3_hh
+
+#include "NeumannData.hh"
+
+namespace pylith {
+  namespace bc {
+     class NeumannDataTri3;
+  } // pylith
+} // bc
+
+class pylith::bc::NeumannDataTri3 : public NeumannData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public: 
+
+  /// Constructor
+  NeumannDataTri3(void);
+
+  /// Destructor
+  ~NeumannDataTri3(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+  static const char* _meshFilename;
+
+  // Quadrature information
+  static const int _numBasis;
+  static const int _numQuadPts;
+  static const double _quadPts[];
+  static const double _quadWts[];
+  static const double _basis[];
+  static const double _basisDerivRef[];
+
+  // BC information
+  static const char* _spatialDBFilename;
+  static const int _id;
+  static const char* _label;
+
+  // Mesh information
+  static const int _spaceDim;
+  static const int _cellDim;
+  static const int _numBoundaryVertices;
+  static const int _numBoundaryCells;
+  static const int _numCorners;
+  static const double _cellVertices[];
+
+  // Calculated values.
+  static const double _tractionsCell[];
+  static const double _valsResidual[];
+
+};
+
+#endif // pylith_bc_neumanndatatri3_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/line2-tractions.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/line2-tractions.spatialdb	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/line2-tractions.spatialdb	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,14 @@
+#SPATIAL.ascii 1
+SimpleDB {
+  num-values = 1
+  value-names =  normal-traction
+  value-units =  Pa
+  num-locs = 1
+  data-dim = 0
+  space-dim = 1
+  cs-data = cartesian {
+    to-meters = 1.0
+    space-dim = 1
+  }
+}
+ 0.0    1.0

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/line2.mesh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/line2.mesh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/line2.mesh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -39,4 +39,12 @@
       0  2
     }
   }
+  group = {
+    name = bc1
+    type = vertices
+    count = 1
+    indices = {
+      0
+    }
+  }
 }

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4-tractions.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4-tractions.spatialdb	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4-tractions.spatialdb	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,14 @@
+#SPATIAL.ascii 1
+SimpleDB {
+  num-values = 3
+  value-names =  horiz-shear-traction vert-shear-traction normal-traction
+  value-units =  Pa  Pa  Pa
+  num-locs = 1
+  data-dim = 0
+  space-dim = 3
+  cs-data = cartesian {
+    to-meters = 1.0
+    space-dim = 3
+  }
+}
+ 0.0  0.0  0.0    1.0  1.0  1.0

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4.mesh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4.mesh	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4.mesh	2007-11-16 21:58:35 UTC (rev 8298)
@@ -37,4 +37,12 @@
       0  2  3
     }
   }
+  group = {
+    name = bc3
+    type = vertices
+    count = 3
+    indices = {
+      1  2  3
+    }
+  }
 }

Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3-tractions.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3-tractions.spatialdb	2007-11-16 05:14:14 UTC (rev 8297)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/tri3-tractions.spatialdb	2007-11-16 21:58:35 UTC (rev 8298)
@@ -0,0 +1,14 @@
+#SPATIAL.ascii 1
+SimpleDB {
+  num-values = 2
+  value-names =  shear-traction normal-traction
+  value-units =  Pa  Pa
+  num-locs = 1
+  data-dim = 0
+  space-dim = 2
+  cs-data = cartesian {
+    to-meters = 1.0
+    space-dim = 2
+  }
+}
+ 0.0  0.0    1.0  1.0



More information about the cig-commits mailing list