[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