[cig-commits] r8219 - in short/3D/PyLith/trunk: . libsrc/bc
unittests/libtests/bc unittests/libtests/bc/data
brad at geodynamics.org
brad at geodynamics.org
Tue Nov 6 16:33:43 PST 2007
Author: brad
Date: 2007-11-06 16:33:42 -0800 (Tue, 06 Nov 2007)
New Revision: 8219
Added:
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.cc
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.cc
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.hh
short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.cc
short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.hh
short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.cc
short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.hh
short/3D/PyLith/trunk/unittests/libtests/bc/data/elasticisotropic3d.spatialdb
Modified:
short/3D/PyLith/trunk/TODO
short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc
short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletHex8.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletLine2.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletLine2b.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletQuad4.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletTet4.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletTri3.hh
short/3D/PyLith/trunk/unittests/libtests/bc/data/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/bc/data/absorbingdampers.py
short/3D/PyLith/trunk/unittests/libtests/bc/data/hex8.mesh
short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4.mesh
Log:
Finished C++ unit tests for absorbing boundary condition. Updated TODO list. Added use of CPPUNIT_TETS_SUB_SUITE in libtests/bc.
Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/TODO 2007-11-07 00:33:42 UTC (rev 8219)
@@ -4,16 +4,21 @@
Release 1.0.2
- 1. Fix partitioning with cohesive cells.
+ 1. Fix memory use on proc 0 when partitioning.
- 2. Add check to make sure every material in mesh has a material model.
+ 2. Fix problems with buildbot on darwin.
+ 3. Add check to make sure every material in mesh has a material model.
+
Add check for overlapping of material ids for bulk and cohesive
cells.
Release 1.1
1. Finish AbsorbingDampers BC.
+ Python
+ module
+ Python unit tests
2. Finish Neumann BC.
Modified: short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc 2007-11-07 00:33:42 UTC (rev 8219)
@@ -142,7 +142,7 @@
// Container for data returned in query of database
double_array queryData(numValues);
- double_array quadPtRef(spaceDim);
+ double_array quadPtRef(cellDim);
// Container for damping constants for current cell
double_array dampingConstsLocal(fiberDim);
@@ -159,6 +159,7 @@
const double_array& quadPts = _quadrature->quadPts();
const double_array& quadPtsRef = _quadrature->quadPtsRef();
+ dampingConstsGlobal = 0.0;
for(int iQuad = 0, index=0; iQuad < numQuadPts; ++iQuad, index+=spaceDim) {
// Compute damping constants in normal/tangential coordinates
const int err = _db->query(&queryData[0], numValues,
@@ -183,19 +184,19 @@
// Compute normal/tangential orientation
_boundaryMesh->restrict(coordinates, *c_iter,
&cellVertices[0], cellVertices.size());
- memcpy(&quadPtRef[0], &quadPtsRef[index], spaceDim*sizeof(double));
+ memcpy(&quadPtRef[0], &quadPtsRef[index], cellDim*sizeof(double));
cellGeometry.jacobian(&jacobian, &jacobianDet, cellVertices, quadPtRef);
cellGeometry.orientation(&orientation, jacobian, jacobianDet,
upDir);
orientation /= jacobianDet;
- dampingConstsGlobal = 0.0;
for (int iDim=0; iDim < spaceDim; ++iDim) {
for (int jDim=0; jDim < spaceDim; ++jDim)
- dampingConstsGlobal[iDim] +=
- dampingConstsLocal[jDim]*orientation[iDim*spaceDim+jDim];
+ dampingConstsGlobal[iQuad*spaceDim+iDim] +=
+ dampingConstsLocal[jDim]*orientation[jDim*spaceDim+iDim];
// Ensure damping constants are positive
- dampingConstsGlobal[iDim] = fabs(dampingConstsGlobal[iDim]);
+ dampingConstsGlobal[iQuad*spaceDim+iDim] =
+ fabs(dampingConstsGlobal[iQuad*spaceDim+iDim]);
} // for
} // for
_dampingConsts->updatePoint(*c_iter, &dampingConstsGlobal[0]);
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am 2007-11-07 00:33:42 UTC (rev 8219)
@@ -25,6 +25,8 @@
TestAbsorbingDampersLine2.cc \
TestAbsorbingDampersTri3.cc \
TestAbsorbingDampersQuad4.cc \
+ TestAbsorbingDampersTet4.cc \
+ TestAbsorbingDampersHex8.cc \
TestBoundaryCondition.cc \
TestDirichlet.cc \
TestDirichletLine2.cc \
@@ -44,6 +46,8 @@
TestAbsorbingDampersLine2.hh \
TestAbsorbingDampersTri3.hh \
TestAbsorbingDampersQuad4.hh \
+ TestAbsorbingDampersTet4.hh \
+ TestAbsorbingDampersHex8.hh \
TestBoundaryCondition.hh \
TestDirichlet.hh \
TestDirichletLine2.hh \
@@ -63,6 +67,8 @@
data/AbsorbingDampersDataLine2.cc \
data/AbsorbingDampersDataTri3.cc \
data/AbsorbingDampersDataQuad4.cc \
+ data/AbsorbingDampersDataTet4.cc \
+ data/AbsorbingDampersDataHex8.cc \
data/DirichletData.cc \
data/DirichletDataLine2.cc \
data/DirichletDataLine2b.cc \
@@ -80,6 +86,8 @@
data/AbsorbingDampersDataLine2.hh \
data/AbsorbingDampersDataTri3.hh \
data/AbsorbingDampersDataQuad4.hh \
+ data/AbsorbingDampersDataTet4.hh \
+ data/AbsorbingDampersDataHex8.hh \
data/DirichletData.hh \
data/DirichletDataLine2.hh \
data/DirichletDataLine2b.hh \
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc 2007-11-07 00:33:42 UTC (rev 8219)
@@ -85,6 +85,8 @@
CPPUNIT_ASSERT_EQUAL(_data->numVertices, numVertices);
CPPUNIT_ASSERT_EQUAL(_data->numCells, numCells);
+ //boundaryMesh->view("BOUNDARY MESH");
+
const int boundaryDepth = boundaryMesh->depth()-1; // depth of bndry cells
int iCell = 0;
for(Mesh::label_sequence::iterator c_iter = cells->begin();
@@ -109,6 +111,8 @@
const int size = bc._dampingConsts->sizeWithBC();
const double* vals = bc._dampingConsts->restrict();
+ //bc._dampingConsts->view("DAMPING CONSTS");
+
CPPUNIT_ASSERT_EQUAL(sizeE, size);
const double tolerance = 1.0e-06;
for (int i=0; i < size; ++i)
@@ -275,6 +279,8 @@
bc->db(&db);
bc->initialize(*mesh, &cs, upDir);
+ //bc->_boundaryMesh->view("BOUNDARY MESH");
+
// Setup fields
CPPUNIT_ASSERT(0 != fields);
fields->addReal("residual");
Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.cc 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.cc 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestAbsorbingDampersHex8.hh" // Implementation of class methods
+
+#include "data/AbsorbingDampersDataHex8.hh" // USES AbsorbingDampersDataHex8
+
+#include "pylith/feassemble/Quadrature2Din3D.hh" // USES Quadrature2Din3D
+#include "pylith/feassemble/GeometryQuad3D.hh" // USES GeometryQuad3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestAbsorbingDampersHex8 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestAbsorbingDampersHex8::setUp(void)
+{ // setUp
+ _data = new AbsorbingDampersDataHex8();
+ _quadrature = new feassemble::Quadrature2Din3D();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ feassemble::GeometryQuad3D geometry;
+ _quadrature->refGeometry(&geometry);
+} // setUp
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestAbsorbingDampersHex8.hh
+ *
+ * @brief C++ TestAbsorbingDampers object.
+ *
+ * C++ unit testing for AbsorbingDampers for mesh with 2-D tri cells.
+ */
+
+#if !defined(pylith_bc_testabsorbingdampershex8_hh)
+#define pylith_bc_testabsorbingdampershex8_hh
+
+#include "TestAbsorbingDampers.hh" // ISA TestAbsorbingDampers
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace bc {
+ class TestAbsorbingDampersHex8;
+ } // bc
+} // pylith
+
+/// C++ unit testing for AbsorbingDampers for mesh with 2-D tri cells.
+class pylith::bc::TestAbsorbingDampersHex8 : public TestAbsorbingDampers
+{ // class TestAbsorbingDampers
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUB_SUITE( TestAbsorbingDampersHex8, TestAbsorbingDampers );
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestAbsorbingDampersHex8
+
+#endif // pylith_bc_absorbingdampershex8_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.cc 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.cc 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,38 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestAbsorbingDampersTet4.hh" // Implementation of class methods
+
+#include "data/AbsorbingDampersDataTet4.hh" // USES AbsorbingDampersDataTet4
+
+#include "pylith/feassemble/Quadrature2Din3D.hh" // USES Quadrature2Din3D
+#include "pylith/feassemble/GeometryTri3D.hh" // USES GeometryTri3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestAbsorbingDampersTet4 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::bc::TestAbsorbingDampersTet4::setUp(void)
+{ // setUp
+ _data = new AbsorbingDampersDataTet4();
+ _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/TestAbsorbingDampersTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/bc/TestAbsorbingDampersTet4.hh
+ *
+ * @brief C++ TestAbsorbingDampers object.
+ *
+ * C++ unit testing for AbsorbingDampers for mesh with 2-D tri cells.
+ */
+
+#if !defined(pylith_bc_testabsorbingdamperstet4_hh)
+#define pylith_bc_testabsorbingdamperstet4_hh
+
+#include "TestAbsorbingDampers.hh" // ISA TestAbsorbingDampers
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace bc {
+ class TestAbsorbingDampersTet4;
+ } // bc
+} // pylith
+
+/// C++ unit testing for AbsorbingDampers for mesh with 2-D tri cells.
+class pylith::bc::TestAbsorbingDampersTet4 : public TestAbsorbingDampers
+{ // class TestAbsorbingDampers
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUB_SUITE( TestAbsorbingDampersTet4, TestAbsorbingDampers );
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestAbsorbingDampersTet4
+
+#endif // pylith_bc_absorbingdamperstet4_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletHex8.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletHex8.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -35,7 +35,7 @@
{ // class TestDirichlet
// CPPUNIT TEST SUITE /////////////////////////////////////////////////
- CPPUNIT_TEST_SUITE( TestDirichletHex8 );
+ CPPUNIT_TEST_SUB_SUITE( TestDirichletHex8, TestDirichlet );
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testSetConstraintSizes );
CPPUNIT_TEST( testSetConstraints );
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletLine2.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletLine2.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -35,7 +35,7 @@
{ // class TestDirichlet
// CPPUNIT TEST SUITE /////////////////////////////////////////////////
- CPPUNIT_TEST_SUITE( TestDirichletLine2 );
+ CPPUNIT_TEST_SUB_SUITE( TestDirichletLine2, TestDirichlet );
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testSetConstraintSizes );
CPPUNIT_TEST( testSetConstraints );
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletLine2b.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletLine2b.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletLine2b.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -35,7 +35,7 @@
{ // class TestDirichlet
// CPPUNIT TEST SUITE /////////////////////////////////////////////////
- CPPUNIT_TEST_SUITE( TestDirichletLine2b );
+ CPPUNIT_TEST_SUB_SUITE( TestDirichletLine2b, TestDirichlet );
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testSetConstraintSizes );
CPPUNIT_TEST( testSetConstraints );
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletQuad4.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletQuad4.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -35,7 +35,7 @@
{ // class TestDirichlet
// CPPUNIT TEST SUITE /////////////////////////////////////////////////
- CPPUNIT_TEST_SUITE( TestDirichletQuad4 );
+ CPPUNIT_TEST_SUB_SUITE( TestDirichletQuad4, TestDirichlet );
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testSetConstraintSizes );
CPPUNIT_TEST( testSetConstraints );
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletTet4.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletTet4.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -35,7 +35,7 @@
{ // class TestDirichlet
// CPPUNIT TEST SUITE /////////////////////////////////////////////////
- CPPUNIT_TEST_SUITE( TestDirichletTet4 );
+ CPPUNIT_TEST_SUB_SUITE( TestDirichletTet4, TestDirichlet );
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testSetConstraintSizes );
CPPUNIT_TEST( testSetConstraints );
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletTri3.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestDirichletTri3.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -35,7 +35,7 @@
{ // class TestDirichlet
// CPPUNIT TEST SUITE /////////////////////////////////////////////////
- CPPUNIT_TEST_SUITE( TestDirichletTri3 );
+ CPPUNIT_TEST_SUB_SUITE( TestDirichletTri3, TestDirichlet );
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testSetConstraintSizes );
CPPUNIT_TEST( testSetConstraints );
Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.cc 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.cc 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,609 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "AbsorbingDampersDataHex8.hh"
+
+const char* pylith::bc::AbsorbingDampersDataHex8::_meshFilename =
+ "data/hex8.mesh";
+
+const int pylith::bc::AbsorbingDampersDataHex8::_numBasis = 4;
+const int pylith::bc::AbsorbingDampersDataHex8::_numQuadPts = 4;
+const double pylith::bc::AbsorbingDampersDataHex8::_quadPts[] = {
+ -0.57735027, -0.57735027,
+ 0.57735027, -0.57735027,
+ 0.57735027, 0.57735027,
+ -0.57735027, 0.57735027,
+};
+const double pylith::bc::AbsorbingDampersDataHex8::_quadWts[] = {
+ 1.0, 1.0, 1.0, 1.0,
+};
+const double pylith::bc::AbsorbingDampersDataHex8::_basis[] = {
+ 0.62200847, 0.16666667, 0.0446582, 0.16666667,
+ 0.16666667, 0.62200847, 0.16666667, 0.0446582,
+ 0.0446582, 0.16666667, 0.62200847, 0.16666667,
+ 0.16666667, 0.0446582, 0.16666667, 0.62200847,
+};
+const double pylith::bc::AbsorbingDampersDataHex8::_basisDerivRef[] = {
+ -0.39433757, -0.39433757,
+ 0.39433757, -0.10566243,
+ 0.10566243, 0.10566243,
+ -0.10566243, 0.39433757,
+ -0.39433757, -0.10566243,
+ 0.39433757, -0.39433757,
+ 0.10566243, 0.39433757,
+ -0.10566243, 0.10566243,
+ -0.10566243, -0.10566243,
+ 0.10566243, -0.39433757,
+ 0.39433757, 0.39433757,
+ -0.39433757, 0.10566243,
+ -0.10566243, -0.39433757,
+ 0.10566243, -0.10566243,
+ 0.39433757, 0.10566243,
+ -0.39433757, 0.39433757,
+};
+
+const char* pylith::bc::AbsorbingDampersDataHex8::_spatialDBFilename =
+ "data/elasticisotropic3d.spatialdb";
+const int pylith::bc::AbsorbingDampersDataHex8::_id = 2;
+const char* pylith::bc::AbsorbingDampersDataHex8::_label = "bc2";
+
+const double pylith::bc::AbsorbingDampersDataHex8::_dt = 0.25;
+const double pylith::bc::AbsorbingDampersDataHex8::_fieldTmdt[] = {
+ 1.0, 2.4, 3.0,
+ 1.1, 2.2, 3.2,
+ 1.2, 2.0, 3.4,
+ 1.3, 1.8, 3.6,
+ 1.4, 1.6, 3.8,
+ 1.5, 1.4, 4.0,
+ 1.6, 1.2, 4.2,
+ 1.7, 1.0, 4.4,
+ 1.8, 0.8, 4.6,
+ 1.9, 0.6, 4.8,
+ 2.0, 0.4, 5.0,
+ 2.1, 0.2, 5.2,
+};
+const double pylith::bc::AbsorbingDampersDataHex8::_fieldT[] = {
+ 1.1, 2.3, 3.2,
+ 1.3, 2.1, 3.6,
+ 1.5, 1.9, 4.0,
+ 1.7, 1.7, 4.4,
+ 1.9, 1.5, 4.8,
+ 2.1, 1.3, 5.2,
+ 2.3, 1.1, 5.6,
+ 2.5, 0.9, 6.0,
+ 2.7, 0.7, 6.4,
+ 2.9, 0.5, 6.8,
+ 3.1, 0.3, 7.2,
+ 3.3, 0.1, 7.6,
+};
+const double pylith::bc::AbsorbingDampersDataHex8::_fieldTpdt[] = {
+ 1.2, 1.1, 3.4,
+ 1.5, 1.0, 4.0,
+ 1.8, 0.9, 4.6,
+ 2.1, 0.8, 5.2,
+ 2.4, 0.7, 5.8,
+ 2.7, 0.6, 6.4,
+ 3.0, 0.5, 7.0,
+ 3.3, 0.4, 7.6,
+ 3.6, 0.3, 8.2,
+ 3.9, 0.2, 8.8,
+ 4.2, 0.1, 9.4,
+ 4.5, 0.0, 10.0,
+};
+
+const int pylith::bc::AbsorbingDampersDataHex8::_spaceDim = 3;
+const int pylith::bc::AbsorbingDampersDataHex8::_cellDim = 2;
+const int pylith::bc::AbsorbingDampersDataHex8::_numVertices = 6;
+const int pylith::bc::AbsorbingDampersDataHex8::_numCells = 2;
+const int pylith::bc::AbsorbingDampersDataHex8::_numCorners = 4;
+const int pylith::bc::AbsorbingDampersDataHex8::_cells[] = {
+ 4, 10, 8, 2,
+ 6, 12, 10, 4,
+};
+
+
+const double pylith::bc::AbsorbingDampersDataHex8::_dampingConsts[] = {
+ 7.5e+06, 1.25e+07, 7.5e+06,
+ 7.5e+06, 1.25e+07, 7.5e+06,
+ 7.5e+06, 1.25e+07, 7.5e+06,
+ 7.5e+06, 1.25e+07, 7.5e+06,
+ 7.5e+06, 1.25e+07, 7.5e+06,
+ 7.5e+06, 1.25e+07, 7.5e+06,
+ 7.5e+06, 1.25e+07, 7.5e+06,
+ 7.5e+06, 1.25e+07, 7.5e+06,
+};
+const double pylith::bc::AbsorbingDampersDataHex8::_valsResidual[] = {
+ -5.50000000e+06, 1.29166667e+07, -1.10000000e+07,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -1.50000000e+07, 2.25000000e+07, -3.00000000e+07,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -9.50000000e+06, 9.58333333e+06, -1.90000000e+07,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -8.50000000e+06, 1.04166667e+07, -1.70000000e+07,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -2.10000000e+07, 1.75000000e+07, -4.20000000e+07,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -1.25000000e+07, 7.08333333e+06, -2.50000000e+07,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+};
+const double pylith::bc::AbsorbingDampersDataHex8::_valsJacobian[] = {
+ 3.33333333e+06, 0.0, 0.0, // 0x
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 8.33333333e+05, 0.0, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 5.55555556e+06, 0.0, // 0y
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 1.38888889e+06, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 3.33333333e+06, // 0z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 1x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 1y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 1z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 2x
+ 0.0, 0.0, 0.0,
+ 6.66666667e+06, 0.0, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 8.33333333e+05, 0.0, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 3.33333333e+06, 0.0, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 8.33333333e+05, 0.0, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 2y
+ 0.0, 0.0, 0.0,
+ 0.0, 1.11111111e+07, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 1.38888889e+06, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 5.55555556e+06, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 1.38888889e+06, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 2z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 6.66666667e+06, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 3.33333333e+06, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 3x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 3y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 3z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 4x
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 3.33333333e+06, 0.0, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 8.33333333e+05, 0.0, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 4y
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 5.55555556e+06, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.38888889e+06, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 4z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 3.33333333e+06, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 5x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 5y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 5z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 6x
+ 0.0, 0.0, 0.0,
+ 8.33333333e+05, 0.0, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 3.33333333e+06, 0.0, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 6y
+ 0.0, 0.0, 0.0,
+ 0.0, 1.38888889e+06, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 5.55555556e+06, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 6z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 3.33333333e+06, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 7x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 7y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 7z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 8.33333333e+05, 0.0, 0.0, // 8x
+ 0.0, 0.0, 0.0,
+ 3.33333333e+06, 0.0, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 8.33333333e+05, 0.0, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 6.66666667e+06, 0.0, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 1.38888889e+06, 0.0, // 8y
+ 0.0, 0.0, 0.0,
+ 0.0, 5.55555556e+06, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 1.38888889e+06, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 1.11111111e+07, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 8z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 3.33333333e+06, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 6.66666667e+06, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 9x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 9y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 9z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 10x
+ 0.0, 0.0, 0.0,
+ 8.33333333e+05, 0.0, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 1.66666667e+06, 0.0, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 3.33333333e+06, 0.0, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 10y
+ 0.0, 0.0, 0.0,
+ 0.0, 1.38888889e+06, 0.0, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 2.77777778e+06, 0.0, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 5.55555556e+06, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 10z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 2
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.66666667e+06, // 8
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 3.33333333e+06, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 11x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 11y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 11z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+};
+
+pylith::bc::AbsorbingDampersDataHex8::AbsorbingDampersDataHex8(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);
+
+ dt = _dt;
+ fieldTpdt = const_cast<double*>(_fieldTpdt);
+ fieldT = const_cast<double*>(_fieldT);
+ fieldTmdt = const_cast<double*>(_fieldTmdt);
+
+ spaceDim = _spaceDim;
+ cellDim = _cellDim;
+ numVertices = _numVertices;
+ numCells = _numCells;
+ numCorners = _numCorners;
+ cells = const_cast<int*>(_cells);
+
+ dampingConsts = const_cast<double*>(_dampingConsts);
+ valsResidual = const_cast<double*>(_valsResidual);
+ valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::bc::AbsorbingDampersDataHex8::~AbsorbingDampersDataHex8(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataHex8.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_absorbingdampersdatahex8_hh)
+#define pylith_bc_absorbingdampersdatahex8_hh
+
+#include "AbsorbingDampersData.hh"
+
+namespace pylith {
+ namespace bc {
+ class AbsorbingDampersDataHex8;
+ } // pylith
+} // bc
+
+class pylith::bc::AbsorbingDampersDataHex8 : public AbsorbingDampersData
+{
+
+public:
+
+ /// Constructor
+ AbsorbingDampersDataHex8(void);
+
+ /// Destructor
+ ~AbsorbingDampersDataHex8(void);
+
+private:
+
+ static const char* _meshFilename;
+
+ static const int _numBasis;
+ static const int _numQuadPts;
+ static const double _quadPts[];
+ static const double _quadWts[];
+ static const double _basis[];
+ static const double _basisDerivRef[];
+
+ static const char* _spatialDBFilename;
+ static const int _id;
+ static const char* _label;
+
+ static const double _dt;
+ static const double _fieldTpdt[];
+ static const double _fieldT[];
+ static const double _fieldTmdt[];
+
+ static const int _spaceDim;
+ static const int _cellDim;
+ static const int _numVertices;
+ static const int _numCells;
+ static const int _numCorners;
+ static const int _cells[];
+
+ static const double _dampingConsts[];
+ static const double _valsResidual[];
+ static const double _valsJacobian[];
+
+};
+
+#endif // pylith_bc_absorbingdampersdatahex8_hh
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.cc 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.cc 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,168 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "AbsorbingDampersDataTet4.hh"
+
+const char* pylith::bc::AbsorbingDampersDataTet4::_meshFilename =
+ "data/tet4.mesh";
+
+const int pylith::bc::AbsorbingDampersDataTet4::_numBasis = 3;
+const int pylith::bc::AbsorbingDampersDataTet4::_numQuadPts = 1;
+const double pylith::bc::AbsorbingDampersDataTet4::_quadPts[] = {
+ 0.3333333333333333, 0.3333333333333333
+};
+const double pylith::bc::AbsorbingDampersDataTet4::_quadWts[] = {
+ 0.5,
+};
+const double pylith::bc::AbsorbingDampersDataTet4::_basis[] = {
+ 0.3333333333333333,
+ 0.3333333333333333,
+ 0.3333333333333333,
+};
+const double pylith::bc::AbsorbingDampersDataTet4::_basisDerivRef[] = {
+ -1.0, -1.0,
+ 1.0, 0.0,
+ 0.0, 1.0,
+};
+
+const char* pylith::bc::AbsorbingDampersDataTet4::_spatialDBFilename =
+ "data/elasticisotropic3d.spatialdb";
+const int pylith::bc::AbsorbingDampersDataTet4::_id = 2;
+const char* pylith::bc::AbsorbingDampersDataTet4::_label = "bc2";
+
+const double pylith::bc::AbsorbingDampersDataTet4::_dt = 0.25;
+const double pylith::bc::AbsorbingDampersDataTet4::_fieldTmdt[] = {
+ 1.0, 2.4, 3.0,
+ 1.1, 1.8, 3.2,
+ 1.2, 2.4, 3.4,
+ 1.3, 2.2, 3.6
+};
+const double pylith::bc::AbsorbingDampersDataTet4::_fieldT[] = {
+ 1.1, 2.0, 3.2,
+ 1.3, 2.1, 3.6,
+ 1.5, 2.2, 4.0,
+ 1.7, 2.3, 4.4,
+};
+const double pylith::bc::AbsorbingDampersDataTet4::_fieldTpdt[] = {
+ 1.2, 1.6, 3.4,
+ 1.5, 2.4, 4.0,
+ 1.8, 2.0, 4.6,
+ 2.1, 2.4, 5.2
+};
+
+const int pylith::bc::AbsorbingDampersDataTet4::_spaceDim = 3;
+const int pylith::bc::AbsorbingDampersDataTet4::_cellDim = 2;
+const int pylith::bc::AbsorbingDampersDataTet4::_numVertices = 3;
+const int pylith::bc::AbsorbingDampersDataTet4::_numCells = 1;
+const int pylith::bc::AbsorbingDampersDataTet4::_numCorners = 3;
+const int pylith::bc::AbsorbingDampersDataTet4::_cells[] = {
+ 4, 3, 1,
+};
+
+
+const double pylith::bc::AbsorbingDampersDataTet4::_dampingConsts[] = {
+ 1.25e+07, 7.5e+06, 7.5e+06
+};
+const double pylith::bc::AbsorbingDampersDataTet4::_valsResidual[] = {
+ -2.22222222e+06, 8.33333333e+05, -2.66666667e+06,
+ 0.0, 0.0, 0.0,
+ -2.22222222e+06, 8.33333333e+05, -2.66666667e+06,
+ -2.22222222e+06, 8.33333333e+05, -2.66666667e+06,
+};
+const double pylith::bc::AbsorbingDampersDataTet4::_valsJacobian[] = {
+ 1.38888889e+06, 0.0, 0.0, // 0x
+ 0.0, 0.0, 0.0,
+ 1.38888889e+06, 0.0, 0.0,
+ 1.38888889e+06, 0.0, 0.0,
+ 0.0, 8.33333333e+05, 0.0, // 0y
+ 0.0, 0.0, 0.0,
+ 0.0, 8.33333333e+05, 0.0,
+ 0.0, 8.33333333e+05, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 0z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05,
+ 0.0, 0.0, 8.33333333e+05,
+ 0.0, 0.0, 0.0, // 1x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 1y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 1z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 1.38888889e+06, 0.0, 0.0, // 2x
+ 0.0, 0.0, 0.0,
+ 1.38888889e+06, 0.0, 0.0,
+ 1.38888889e+06, 0.0, 0.0,
+ 0.0, 8.33333333e+05, 0.0, // 2y
+ 0.0, 0.0, 0.0,
+ 0.0, 8.33333333e+05, 0.0,
+ 0.0, 8.33333333e+05, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 2z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05,
+ 0.0, 0.0, 8.33333333e+05,
+ 1.38888889e+06, 0.0, 0.0, // 3x
+ 0.0, 0.0, 0.0,
+ 1.38888889e+06, 0.0, 0.0,
+ 1.38888889e+06, 0.0, 0.0,
+ 0.0, 8.33333333e+05, 0.0, // 3y
+ 0.0, 0.0, 0.0,
+ 0.0, 8.33333333e+05, 0.0,
+ 0.0, 8.33333333e+05, 0.0,
+ 0.0, 0.0, 8.33333333e+05, // 3z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 8.33333333e+05,
+ 0.0, 0.0, 8.33333333e+05,
+};
+
+pylith::bc::AbsorbingDampersDataTet4::AbsorbingDampersDataTet4(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);
+
+ dt = _dt;
+ fieldTpdt = const_cast<double*>(_fieldTpdt);
+ fieldT = const_cast<double*>(_fieldT);
+ fieldTmdt = const_cast<double*>(_fieldTmdt);
+
+ spaceDim = _spaceDim;
+ cellDim = _cellDim;
+ numVertices = _numVertices;
+ numCells = _numCells;
+ numCorners = _numCorners;
+ cells = const_cast<int*>(_cells);
+
+ dampingConsts = const_cast<double*>(_dampingConsts);
+ valsResidual = const_cast<double*>(_valsResidual);
+ valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::bc::AbsorbingDampersDataTet4::~AbsorbingDampersDataTet4(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.hh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/AbsorbingDampersDataTet4.hh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,70 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_bc_absorbingdampersdatatet4_hh)
+#define pylith_bc_absorbingdampersdatatet4_hh
+
+#include "AbsorbingDampersData.hh"
+
+namespace pylith {
+ namespace bc {
+ class AbsorbingDampersDataTet4;
+ } // pylith
+} // bc
+
+class pylith::bc::AbsorbingDampersDataTet4 : public AbsorbingDampersData
+{
+
+public:
+
+ /// Constructor
+ AbsorbingDampersDataTet4(void);
+
+ /// Destructor
+ ~AbsorbingDampersDataTet4(void);
+
+private:
+
+ static const char* _meshFilename;
+
+ static const int _numBasis;
+ static const int _numQuadPts;
+ static const double _quadPts[];
+ static const double _quadWts[];
+ static const double _basis[];
+ static const double _basisDerivRef[];
+
+ static const char* _spatialDBFilename;
+ static const int _id;
+ static const char* _label;
+
+ static const double _dt;
+ static const double _fieldTpdt[];
+ static const double _fieldT[];
+ static const double _fieldTmdt[];
+
+ static const int _spaceDim;
+ static const int _cellDim;
+ static const int _numVertices;
+ static const int _numCells;
+ static const int _numCorners;
+ static const int _cells[];
+
+ static const double _dampingConsts[];
+ static const double _valsResidual[];
+ static const double _valsJacobian[];
+
+};
+
+#endif // pylith_bc_absorbingdampersdatatet4_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-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/Makefile.am 2007-11-07 00:33:42 UTC (rev 8219)
@@ -22,6 +22,7 @@
quad4.spatialdb \
tet4.mesh \
tet4.spatialdb \
+ elasticisotropic3d.spatialdb \
hex8.mesh \
hex8.spatialdb \
hex8b.mesh \
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/absorbingdampers.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/absorbingdampers.py 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/absorbingdampers.py 2007-11-07 00:33:42 UTC (rev 8219)
@@ -131,8 +131,235 @@
# ----------------------------------------------------------------------
-calcTri3()
-calcQuad4()
+def calcTet4():
+ """
+ Calculate damping constants, residual, and Jacobian values for
+ absorbing dampers on mesh with tet4 cells.
+ """
+ dt = 0.25
+ density = 2500.0
+ vp = 5000.0
+ vs = 3000.0
+ area = 0.5
+ N0 = 1.0/3.0
+ N1 = 1.0/3.0
+ N2 = 1.0/3.0
+ velocityX = (N0+N1+N2)/3.0 * \
+ (N0*(2.1-1.3)+N1*(1.8-1.2)+N2*(1.2-1.0)) / (2.0*dt)
+ velocityY = (N0+N1+N2)/3.0 * \
+ (N0*(2.4-2.2)+N1*(2.0-2.4)+N2*(1.6-2.4)) / (2.0*dt)
+ velocityZ = (N0+N1+N2)/3.0 * \
+ (N0*(5.2-3.6)+N1*(4.6-3.4)+N2*(3.4-3.0)) / (2.0*dt)
+ normal = [-1.0, 0.0, 0.0]
+ tangent1 = [0.0, -1.0, 0.0]
+ tangent2 = [0.0, 0.0, 1.0]
+
+ constNormal = density*vp
+ constTangential = density*vs
+ dampingConsts = [abs(constNormal*normal[0] +
+ constTangential*tangent1[0] +
+ constTangential*tangent2[0]),
+ abs(constNormal*normal[1] +
+ constTangential*tangent1[1] +
+ constTangential*tangent2[1]),
+ abs(constNormal*normal[2] +
+ constTangential*tangent1[2] +
+ constTangential*tangent2[2])]
+ residualX = -dampingConsts[0]*velocityX*area
+ residualY = -dampingConsts[1]*velocityY*area
+ residualZ = -dampingConsts[2]*velocityZ*area
+ residual = [residualX, residualY, residualZ,
+ residualX, residualY, residualZ,
+ residualX, residualY, residualZ]
+
+ j00 = area*N0**2 / (2.0*dt)
+ j01 = area*N0*N1 / (2.0*dt)
+ j02 = area*N0*N2 / (2.0*dt)
+ j10 = j01
+ j11 = area*N1**2 / (2.0*dt)
+ j12 = area*N1*N2 / (2.0*dt)
+ j20 = j02
+ j21 = j12
+ j22 = area*N2**2 / (2.0*dt)
+ jacobian = [dampingConsts[0]*j00, dampingConsts[1]*j00, dampingConsts[2]*j00,
+ dampingConsts[0]*j01, dampingConsts[1]*j01, dampingConsts[2]*j01,
+ dampingConsts[0]*j10, dampingConsts[1]*j10, dampingConsts[2]*j10,
+ dampingConsts[0]*j11, dampingConsts[1]*j11, dampingConsts[2]*j11,
+ dampingConsts[0]*j12, dampingConsts[1]*j12, dampingConsts[2]*j12,
+ dampingConsts[0]*j20, dampingConsts[1]*j20, dampingConsts[2]*j20,
+ dampingConsts[0]*j21, dampingConsts[1]*j21, dampingConsts[2]*j21,
+ dampingConsts[0]*j22, dampingConsts[1]*j22, dampingConsts[2]*j22]
+
+ print "Absorbing boundary for hex8 mesh"
+ print "damping constants:"
+ for v in dampingConsts:
+ print " %16.8e" % v
+ print "values for residual:"
+ for v in residual:
+ print " %16.8e" % v
+ print "values for jacobian:"
+ for j in jacobian:
+ print " %16.8e" % j
+
+# ----------------------------------------------------------------------
+def calcHex8():
+ """
+ Calculate damping constants, residual, and Jacobian values for
+ absorbing dampers on mesh with hex8 cells.
+ """
+
+ import numpy
+
+ dt = 0.25
+ density = 2500.0
+ vp = 5000.0
+ vs = 3000.0
+ area = 1.0
+ jacobianDet = 0.5
+ basis = [[0.62200847, 0.16666667, 0.0446582, 0.16666667],
+ [0.16666667, 0.62200847, 0.16666667, 0.0446582 ],
+ [0.0446582, 0.16666667, 0.62200847, 0.16666667],
+ [0.16666667, 0.0446582, 0.16666667, 0.62200847]]
+ cells = [[2, 8, 6, 0],
+ [4, 10, 8, 2]]
+ dispTpdt = [[1.2, 1.1, 3.4],
+ [1.5, 1.0, 4.0],
+ [1.8, 0.9, 4.6],
+ [2.1, 0.8, 5.2],
+ [2.4, 0.7, 5.8],
+ [2.7, 0.6, 6.4],
+ [3.0, 0.5, 7.0],
+ [3.3, 0.4, 7.6],
+ [3.6, 0.3, 8.2],
+ [3.9, 0.2, 8.8],
+ [4.2, 0.1, 9.4],
+ [4.5, 0.0, 10.0]]
+ dispTmdt = [[1.0, 2.4, 3.0],
+ [1.1, 2.2, 3.2],
+ [1.2, 2.0, 3.4],
+ [1.3, 1.8, 3.6],
+ [1.4, 1.6, 3.8],
+ [1.5, 1.4, 4.0],
+ [1.6, 1.2, 4.2],
+ [1.7, 1.0, 4.4],
+ [1.8, 0.8, 4.6],
+ [1.9, 0.6, 4.8],
+ [2.0, 0.4, 5.0],
+ [2.1, 0.2, 5.2]]
+ normal = [0.0, 1.0, 0.0]
+ tangent1 = [-1.0, 0.0, 0.0]
+ tangent2 = [0.0, 0.0, 1.0]
+
+ constNormal = density*vp
+ constTangential = density*vs
+ dampingConsts = [abs(constNormal*normal[0] +
+ constTangential*tangent1[0] +
+ constTangential*tangent2[0]),
+ abs(constNormal*normal[1] +
+ constTangential*tangent1[1] +
+ constTangential*tangent2[1]),
+ abs(constNormal*normal[2] +
+ constTangential*tangent1[2] +
+ constTangential*tangent2[2])]
+
+ residual = numpy.zeros( (12, 3), dtype=numpy.float64 )
+ jacobian = numpy.zeros( (12, 3, 12, 3), dtype=numpy.float64 )
+ for cell in cells:
+ for b in basis:
+ N0 = b[0]
+ N1 = b[1]
+ N2 = b[2]
+ N3 = b[3]
+ v0x = (dispTpdt[cell[0]][0]-dispTmdt[cell[0]][0])/(2.0*dt)
+ v0y = (dispTpdt[cell[0]][1]-dispTmdt[cell[0]][1])/(2.0*dt)
+ v0z = (dispTpdt[cell[0]][2]-dispTmdt[cell[0]][2])/(2.0*dt)
+ v1x = (dispTpdt[cell[1]][0]-dispTmdt[cell[1]][0])/(2.0*dt)
+ v1y = (dispTpdt[cell[1]][1]-dispTmdt[cell[1]][1])/(2.0*dt)
+ v1z = (dispTpdt[cell[1]][2]-dispTmdt[cell[1]][2])/(2.0*dt)
+ v2x = (dispTpdt[cell[2]][0]-dispTmdt[cell[2]][0])/(2.0*dt)
+ v2y = (dispTpdt[cell[2]][1]-dispTmdt[cell[2]][1])/(2.0*dt)
+ v2z = (dispTpdt[cell[2]][2]-dispTmdt[cell[2]][2])/(2.0*dt)
+ v3x = (dispTpdt[cell[3]][0]-dispTmdt[cell[3]][0])/(2.0*dt)
+ v3y = (dispTpdt[cell[3]][1]-dispTmdt[cell[3]][1])/(2.0*dt)
+ v3z = (dispTpdt[cell[3]][2]-dispTmdt[cell[3]][2])/(2.0*dt)
+ velocityX = N0*v0x + N1*v1x + N2*v2x + N3*v3x
+ velocityY = N0*v0y + N1*v1y + N2*v2y + N3*v3y
+ velocityZ = N0*v0z + N1*v1z + N2*v2z + N3*v3z
+
+ residualX = -dampingConsts[0] * velocityX * area * jacobianDet
+ residualY = -dampingConsts[1] * velocityY * area * jacobianDet
+ residualZ = -dampingConsts[2] * velocityZ * area * jacobianDet
+ residual[cell[0],:] += N0*numpy.array([residualX,residualY,residualZ])
+ residual[cell[1],:] += N1*numpy.array([residualX,residualY,residualZ])
+ residual[cell[2],:] += N2*numpy.array([residualX,residualY,residualZ])
+ residual[cell[3],:] += N3*numpy.array([residualX,residualY,residualZ])
+
+
+ for b in basis:
+ j00 = jacobianDet*area*b[0]*b[0] / (2.0*dt)
+ j01 = jacobianDet*area*b[0]*b[1] / (2.0*dt)
+ j02 = jacobianDet*area*b[0]*b[2] / (2.0*dt)
+ j03 = jacobianDet*area*b[0]*b[3] / (2.0*dt)
+
+ j10 = jacobianDet*area*b[1]*b[0] / (2.0*dt)
+ j11 = jacobianDet*area*b[1]*b[1] / (2.0*dt)
+ j12 = jacobianDet*area*b[1]*b[2] / (2.0*dt)
+ j13 = jacobianDet*area*b[1]*b[3] / (2.0*dt)
+
+ j20 = jacobianDet*area*b[2]*b[0] / (2.0*dt)
+ j21 = jacobianDet*area*b[2]*b[1] / (2.0*dt)
+ j22 = jacobianDet*area*b[2]*b[2] / (2.0*dt)
+ j23 = jacobianDet*area*b[2]*b[3] / (2.0*dt)
+
+ j30 = jacobianDet*area*b[3]*b[0] / (2.0*dt)
+ j31 = jacobianDet*area*b[3]*b[1] / (2.0*dt)
+ j32 = jacobianDet*area*b[3]*b[2] / (2.0*dt)
+ j33 = jacobianDet*area*b[3]*b[3] / (2.0*dt)
+
+ jj = [dampingConsts[0]*j00, dampingConsts[1]*j00, dampingConsts[2]*j00,
+ dampingConsts[0]*j01, dampingConsts[1]*j01, dampingConsts[2]*j01,
+ dampingConsts[0]*j02, dampingConsts[1]*j02, dampingConsts[2]*j02,
+ dampingConsts[0]*j03, dampingConsts[1]*j03, dampingConsts[2]*j03,
+ dampingConsts[0]*j10, dampingConsts[1]*j10, dampingConsts[2]*j10,
+ dampingConsts[0]*j11, dampingConsts[1]*j11, dampingConsts[2]*j11,
+ dampingConsts[0]*j12, dampingConsts[1]*j12, dampingConsts[2]*j12,
+ dampingConsts[0]*j13, dampingConsts[1]*j13, dampingConsts[2]*j13,
+ dampingConsts[0]*j20, dampingConsts[1]*j20, dampingConsts[2]*j20,
+ dampingConsts[0]*j21, dampingConsts[1]*j21, dampingConsts[2]*j21,
+ dampingConsts[0]*j22, dampingConsts[1]*j22, dampingConsts[2]*j22,
+ dampingConsts[0]*j23, dampingConsts[1]*j23, dampingConsts[2]*j23,
+ dampingConsts[0]*j30, dampingConsts[1]*j30, dampingConsts[2]*j30,
+ dampingConsts[0]*j31, dampingConsts[1]*j31, dampingConsts[2]*j31,
+ dampingConsts[0]*j32, dampingConsts[1]*j32, dampingConsts[2]*j32,
+ dampingConsts[0]*j33, dampingConsts[1]*j33, dampingConsts[2]*j33]
+ index = 0
+ for i in xrange(4):
+ for j in xrange(4):
+ jacobian[cell[i],0,cell[j],0] += numpy.array(jj[index ])
+ jacobian[cell[i],1,cell[j],1] += numpy.array(jj[index+1])
+ jacobian[cell[i],2,cell[j],2] += numpy.array(jj[index+2])
+ index += 3
+
+
+ print "Absorbing boundary for hex8 mesh"
+ print "damping constants:"
+ for v in dampingConsts:
+ print " %16.8e" % v
+ print "values for residual:"
+ for v in numpy.ravel(residual):
+ print " %16.8e" % v
+ print "values for jacobian:"
+ for j in numpy.ravel(jacobian):
+ print " %16.8e" % j
+
+
+# ----------------------------------------------------------------------
+#calcTri3()
+#calcQuad4()
+#calcTet4()
+#calcHex8()
+
+
# End of file
Added: short/3D/PyLith/trunk/unittests/libtests/bc/data/elasticisotropic3d.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/elasticisotropic3d.spatialdb 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/elasticisotropic3d.spatialdb 2007-11-07 00:33:42 UTC (rev 8219)
@@ -0,0 +1,14 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 3
+ value-names = density vs vp
+ value-units = kg/m^3 m/s m/s
+ num-locs = 1
+ data-dim = 0
+ space-dim = 3
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 3
+ }
+}
+0.0 0.0 0.0 2500.0 3000.0 5000.0
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/hex8.mesh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/hex8.mesh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/hex8.mesh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -1,3 +1,32 @@
+// Original
+//
+// 11 -----10
+// / | / |
+// / | / |
+// 9 ----- 8 |
+// / | 5 /-|-- 4
+// / | / / | /
+// 7 ----- 6 |/ Cell 1
+// | 3 --|-- 2
+// | / | /
+// |/ |/ Cell 0
+// 1 ----- 0
+//
+//
+// Sieve mesh
+//
+// 13 -----12
+// / | / |
+// / | / |
+// 11 -----10 |
+// / | 7 /-|-- 6
+// / | / / | /
+// 9 ----- 8 |/ 1
+// | 5 --|-- 4
+// | / | /
+// |/ |/ 0
+// 3 ----- 2
+//
mesh = {
dimension = 3
use-index-zero = true
@@ -39,4 +68,12 @@
0 1 6 7
}
}
+ group = {
+ name = bc2
+ type = vertices
+ count = 6
+ indices = {
+ 0 2 4 6 8 10
+ }
+ }
}
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4.mesh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4.mesh 2007-11-07 00:32:32 UTC (rev 8218)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/tet4.mesh 2007-11-07 00:33:42 UTC (rev 8219)
@@ -29,4 +29,12 @@
2
}
}
+ group = {
+ name = bc2
+ type = vertices
+ count = 3
+ indices = {
+ 0 2 3
+ }
+ }
}
More information about the cig-commits
mailing list