[cig-commits] r16144 - in short/3D/PyLith/trunk/unittests/libtests/faults: . data
surendra at geodynamics.org
surendra at geodynamics.org
Mon Jan 18 23:16:23 PST 2010
Author: surendra
Date: 2010-01-18 23:16:22 -0800 (Mon, 18 Jan 2010)
New Revision: 16144
Added:
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLHex8.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLHex8.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLTet4.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLTet4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataHex8.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataHex8.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataTet4.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataTet4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_initialtract.spatialdb
short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4_initialtract.spatialdb
Modified:
short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynL.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am
Log:
Added Hex8 Tet4 unittests for friction and tests passed
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am 2010-01-18 22:16:36 UTC (rev 16143)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am 2010-01-19 07:16:22 UTC (rev 16144)
@@ -48,6 +48,8 @@
TestFaultCohesiveDynL.cc \
TestFaultCohesiveDynLTri3.cc \
TestFaultCohesiveDynLQuad4.cc \
+ TestFaultCohesiveDynLHex8.cc \
+ TestFaultCohesiveDynLTet4.cc \
test_faults.cc
@@ -77,7 +79,9 @@
TestFaultCohesiveKinSrcsHex8.hh \
TestFaultCohesiveDynL.hh \
TestFaultCohesiveDynLTri3.hh \
- TestFaultCohesiveDynLQuad4.hh
+ TestFaultCohesiveDynLQuad4.hh \
+ TestFaultCohesiveDynLHex8.hh \
+ TestFaultCohesiveDynLTet4.hh
# Source files associated with testing data
testfaults_SOURCES += \
@@ -137,7 +141,9 @@
data/CohesiveKinSrcsDataHex8.cc \
data/CohesiveDynLData.cc \
data/CohesiveDynLDataTri3.cc \
- data/CohesiveDynLDataQuad4.cc
+ data/CohesiveDynLDataQuad4.cc \
+ data/CohesiveDynLDataHex8.cc \
+ data/CohesiveDynLDataTet4.cc
noinst_HEADERS += \
data/CohesiveData.hh \
@@ -196,7 +202,9 @@
data/CohesiveKinSrcsDataHex8.hh \
data/CohesiveDynLData.hh \
data/CohesiveDynLDataTri3.hh \
- data/CohesiveDynLDataQuad4.hh
+ data/CohesiveDynLDataQuad4.hh \
+ data/CohesiveDynLDataHex8.hh \
+ data/CohesiveDynLDataTet4.hh
AM_CPPFLAGS = \
$(PYTHON_EGG_CPPFLAGS) -I$(PYTHON_INCDIR) \
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynL.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynL.cc 2010-01-18 22:16:36 UTC (rev 16143)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynL.cc 2010-01-19 07:16:22 UTC (rev 16144)
@@ -400,6 +400,9 @@
for (int i = 0; i < fiberDimE; ++i) {
const int index = iVertex * spaceDim + i;
const double valE = valsE[index];
+ std::cout << "valE: " << valE
+ << ", val: " << vals[i]
+ << std::endl;
if (fabs(valE) > tolerance)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valE, tolerance);
else
@@ -467,6 +470,9 @@
for (int i = 0; i < fiberDimE; ++i) {
const int index = iVertex * spaceDim + i;
const double valE = valsE[index];
+ std::cout << "valE: " << valE
+ << ", val: " << vals[i]
+ << std::endl;
if (fabs(valE) > tolerance)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valE, tolerance);
else
@@ -513,6 +519,9 @@
for (int i = 0; i < fiberDimE; ++i) {
const int index = iVertex * spaceDim + i;
const double valE = valsE[index];
+ std::cout << "valE: " << valE
+ << ", val: " << vals[i]
+ << std::endl;
if (fabs(valE) > tolerance)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valE, tolerance);
else
@@ -610,7 +619,7 @@
const double scale = 1.0 / _data->area[iVertex];
for (int iDim=0; iDim < spaceDim; ++iDim) {
const double tractionE =
- (_data->initialTractions[iVertex*spaceDim+iDim] + dispVertex[iDim]) * scale;
+ _data->initialTractions[iVertex*spaceDim+iDim] + (dispVertex[iDim]) * scale;
if (tractionE != 0.0)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, tractionsVertex[iDim]/tractionE,
tolerance);
Added: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLHex8.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLHex8.cc 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,42 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestFaultCohesiveDynLHex8.hh" // Implementation of class methods
+
+#include "data/CohesiveDynLDataHex8.hh" // USES CohesiveDynLDataHex8
+
+#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<SubMesh>
+#include "pylith/feassemble/GeometryQuad3D.hh" // USES GeometryQuad3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::faults::TestFaultCohesiveDynLHex8 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::faults::TestFaultCohesiveDynLHex8::setUp(void)
+{ // setUp
+ TestFaultCohesiveDynL::setUp();
+ _data = new CohesiveDynLDataHex8();
+
+ CPPUNIT_ASSERT(0 != _quadrature);
+ feassemble::GeometryQuad3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ _flipFault = true;
+} // setUp
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLHex8.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLHex8.hh 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/faults/TestFaultCohesiveDynLHex8.hh
+ *
+ * @brief C++ TestFaultCohesiveDynLHex8 object.
+ *
+ * C++ unit testing for FaultCohesiveDynL for mesh with 3-D quadrilateral cells.
+ */
+
+#if !defined(pylith_faults_testfaultcohesivedynlhex8_hh)
+#define pylith_faults_testfaultcohesivedynlhex8_hh
+
+#include "TestFaultCohesiveDynL.hh" // ISA TestFaultCohesiveDynL
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace faults {
+ class TestFaultCohesiveDynLHex8;
+ } // bc
+} // pylith
+
+/// C++ unit testing for FaultCohesiveDynL for mesh with 3-D quadrilateral cells.
+class pylith::faults::TestFaultCohesiveDynLHex8 : public TestFaultCohesiveDynL
+{ // class TestFaultCohesiveDynLHex8
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestFaultCohesiveDynLHex8 );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testConstrainSolnSpaceStick );
+ CPPUNIT_TEST( testConstrainSolnSpaceSlip );
+ CPPUNIT_TEST( testConstrainSolnSpaceOpen );
+ CPPUNIT_TEST( testUpdateStateVars );
+ CPPUNIT_TEST( testCalcTractions );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestFaultCohesiveDynLHex8
+
+#endif // pylith_faults_testfaultcohesivedynlhex8_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLTet4.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLTet4.cc 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,42 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestFaultCohesiveDynLTet4.hh" // Implementation of class methods
+
+#include "data/CohesiveDynLDataTet4.hh" // USES CohesiveDynLDataTet4
+
+#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature<SubMesh>
+#include "pylith/feassemble/GeometryTri3D.hh" // USES GeometryTri3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::faults::TestFaultCohesiveDynLTet4 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::faults::TestFaultCohesiveDynLTet4::setUp(void)
+{ // setUp
+ TestFaultCohesiveDynL::setUp();
+ _data = new CohesiveDynLDataTet4();
+
+ CPPUNIT_ASSERT(0 != _quadrature);
+ feassemble::GeometryTri3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ _flipFault = true;
+} // setUp
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLTet4.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveDynLTet4.hh 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/faults/TestFaultCohesiveDynLTet4.hh
+ *
+ * @brief C++ TestFaultCohesiveDynLTet4 object.
+ *
+ * C++ unit testing for FaultCohesiveDynL for mesh with 2-D quadrilateral cells.
+ */
+
+#if !defined(pylith_faults_testfaultcohesivedynltet4_hh)
+#define pylith_faults_testfaultcohesivedynltet4_hh
+
+#include "TestFaultCohesiveDynL.hh" // ISA TestFaultCohesiveDynL
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace faults {
+ class TestFaultCohesiveDynLTet4;
+ } // bc
+} // pylith
+
+/// C++ unit testing for FaultCohesiveDynL for mesh with 2-D quadrilateral cells.
+class pylith::faults::TestFaultCohesiveDynLTet4 : public TestFaultCohesiveDynL
+{ // class TestFaultCohesiveDynLTet4
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestFaultCohesiveDynLTet4 );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testConstrainSolnSpaceStick );
+ CPPUNIT_TEST( testConstrainSolnSpaceSlip );
+ CPPUNIT_TEST( testConstrainSolnSpaceOpen );
+ CPPUNIT_TEST( testUpdateStateVars );
+ CPPUNIT_TEST( testCalcTractions );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestFaultCohesiveDynLTet4
+
+#endif // pylith_faults_testfaultcohesivedynltet4_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataHex8.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataHex8.cc 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,1551 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+
+/* Original mesh
+ *
+ * Cells are 0-1 and vertices are 2-13.
+ *
+ * 2,3,4,5 -------- 6,7,8,9 -------- 10,11,12,13
+ *
+ * ^^^^^^^ Vertices forming fault
+ *
+ * After adding cohesive elements
+ *
+ * Cells are 0-1,16 and vertices are 4-15.
+ *
+ * 2,3,4,5 -------- 6,7,8,9 -- 14,15,16,17 -------- 10,11,12,13
+ * 18,19,20,21
+ * ^^^^^^^^^^^^^^^^^^^^^^ Cohesive element
+ *
+ */
+
+#include "CohesiveDynLDataHex8.hh"
+
+const char* pylith::faults::CohesiveDynLDataHex8::_meshFilename =
+ "data/hex8.mesh";
+
+const int pylith::faults::CohesiveDynLDataHex8::_spaceDim = 3;
+
+const int pylith::faults::CohesiveDynLDataHex8::_cellDim = 2;
+
+const int pylith::faults::CohesiveDynLDataHex8::_numBasis = 4;
+
+const int pylith::faults::CohesiveDynLDataHex8::_numQuadPts = 4;
+
+const double pylith::faults::CohesiveDynLDataHex8::_quadPts[] = {
+ -0.57735027, -0.57735027,
+ +0.57735027, -0.57735027,
+ +0.57735027, +0.57735027,
+ -0.57735027, +0.57735027,
+};
+
+const double pylith::faults::CohesiveDynLDataHex8::_quadWts[] = {
+ 1.0, 1.0, 1.0, 1.0
+};
+
+const double pylith::faults::CohesiveDynLDataHex8::_basis[] = {
+ 0.62200847, 0.16666667, 0.16666667, 0.0446582,
+ 0.16666667, 0.62200847, 0.0446582, 0.16666667,
+ 0.16666667, 0.0446582, 0.62200847, 0.16666667,
+ 0.0446582, 0.16666667, 0.16666667, 0.62200847,
+};
+
+const double pylith::faults::CohesiveDynLDataHex8::_basisDeriv[] = {
+ -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 double pylith::faults::CohesiveDynLDataHex8::_verticesRef[] = {
+ -1.0, -1.0,
+ +1.0, -1.0,
+ +1.0, +1.0,
+ -1.0, +1.0
+};
+
+const int pylith::faults::CohesiveDynLDataHex8::_id = 10;
+
+const char* pylith::faults::CohesiveDynLDataHex8::_label = "fault";
+
+const char* pylith::faults::CohesiveDynLDataHex8::_initialTractFilename =
+ "data/hex8_initialtract.spatialdb";
+
+const double pylith::faults::CohesiveDynLDataHex8::_fieldT[] = {
+ 4.1, 6.1, 8.1,
+ 4.2, 6.2, 8.2,
+ 4.3, 6.3, 8.3,
+ 4.4, 6.4, 8.4,
+ 4.5, 6.5, 8.5, // 6
+ 4.6, 6.6, 8.6, // 7
+ 4.7, 6.7, 8.7, // 8
+ 4.8, 6.8, 8.8, // 9
+ 4.9, 6.9, 8.9,
+ 4.0, 6.0, 8.0,
+ 5.1, 7.1, 9.1,
+ 5.2, 7.2, 9.2,
+ 5.3, 7.3, 9.3, // 14
+ 5.5, 7.5, 9.5, // 15
+ 5.7, 7.7, 9.7, // 16
+ 5.9, 7.9, 9.9, // 17
+ 5.4, 7.4, 9.4, // 18
+ 5.6, 7.6, 9.6, // 19
+ 5.8, 7.8, 9.8, // 20
+ 5.0, 7.0, 9.0, // 21
+};
+
+// :TODO: Make sensible values for Jacobian for DOF on positive and
+// negative sides of the fault. Add semi-random values for other DOF.
+const double pylith::faults::CohesiveDynLDataHex8::_jacobian[] = {
+ 1.0, 0.0, 0.0, // 2x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 2y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 2z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 3x
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 4y
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 4z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 6x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 18
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 6y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 18
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 6z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 18
+ 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,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 19
+ 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, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 19
+ 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, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 19
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 8x
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 20
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 8y
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 20
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 8z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 20
+ 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,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 21
+ 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, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 21
+ 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, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 21
+ 0.0, 0.0, 0.0, // 10x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 10y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 10z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 12x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 12y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 12z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 13x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 13y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 13z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 14x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 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.0, // 18
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 14y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ -1.0, 0.0, 0.0, // 18
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 14z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,-1.0, 0.0, // 18
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 15x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 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.0, // 19
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 15y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ -1.0, 0.0, 0.0, // 19
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 15z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,-1.0, 0.0, // 19
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 16x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 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.0, // 20
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 16y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ -1.0, 0.0, 0.0, // 20
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 16z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,-1.0, 0.0, // 20
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 17x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 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.0, // 21
+ 0.0, 0.0, 0.0, // 17y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ -1.0, 0.0, 0.0, // 21
+ 0.0, 0.0, 0.0, // 17z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,-1.0, 0.0, // 21
+ 0.0, 0.0, 0.0, // 18x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,+1.0, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 14
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 18y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,+1.0, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 14
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 18z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ +1.0, 0.0, 0.0, // 6
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 14
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 19x
+ 0.0, 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.0, 0.0, // 7
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 15
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 19y
+ 0.0, 0.0, 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.0, // 7
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 15
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 19z
+ 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.0, 0.0, 0.0, // 7
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 15
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 20x
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,-1.0, 0.0, // 16
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 20y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,-1.0, // 16
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 20z
+ 0.0, 0.0, 0.0,
+ 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.0, 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ -1.0, 0.0, 0.0, // 16
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 21x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 9
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 17
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 21y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 9
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 17
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 21z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 9
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 17
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+};
+
+// ----------------------------------------------------------------------
+// Computed values
+// ----------------------------------------------------------------------
+
+const double pylith::faults::CohesiveDynLDataHex8::_orientation[] = {
+ 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0,
+ 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0,
+ 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0,
+ 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0,
+};
+
+const double pylith::faults::CohesiveDynLDataHex8::_area[] = {
+ 1.0, 1.0, 1.0, 1.0
+};
+
+const double pylith::faults::CohesiveDynLDataHex8::_initialTractions[] = {
+ 1.0, 2.0, -3.0,
+ 1.1, 2.1, -3.1,
+ 1.2, 2.2, -3.2,
+ 1.3, 2.3, -3.3,
+};
+
+
+const int pylith::faults::CohesiveDynLDataHex8::_numConstraintVert = 4;
+const int pylith::faults::CohesiveDynLDataHex8::_constraintVertices[] = {
+ 18, 19, 20, 21
+};
+const int pylith::faults::CohesiveDynLDataHex8::_constraintCells[] = {
+ 23, 23, 23, 23
+};
+
+// ----------------------------------------------------------------------
+// Stick case
+// ----------------------------------------------------------------------
+// Input
+const double pylith::faults::CohesiveDynLDataHex8::_fieldIncrStick[] = {
+ 0.1, 2.1, 28.1,
+ 0.2, 2.2, 28.2,
+ 0.3, 2.3, 28.3,
+ 0.4, 2.4, 28.4,
+ 0.5, 2.5, 28.5, // 6
+ 0.6, 2.6, 28.6, // 7
+ 0.7, 2.7, 28.7, // 8
+ 0.8, 2.8, 28.8, // 9
+ 0.9, 2.9, 28.9,
+ 0.0, 2.0, 28.0,
+ 1.1, 3.1, 29.1,
+ 1.2, 3.2, 29.2,
+ 1.3, 3.3, 29.3, // 14
+ 1.5, 3.5, 29.5, // 15
+ 1.7, 3.7, 29.7, // 16
+ 1.9, 3.9, 29.9, // 17
+ 1.4, 3.4, -29.4, // 18
+ 1.6, 3.6, -29.6, // 19
+ 1.8, 3.8, -29.8, // 20
+ 1.0, 3.0, -29.0, // 21
+};
+
+// No change in fieldIncr
+// Zero slip
+
+// ----------------------------------------------------------------------
+// Slip case
+// ----------------------------------------------------------------------
+// Input
+const double pylith::faults::CohesiveDynLDataHex8::_fieldIncrSlip[] = {
+ 5.1, 7.1, 9.1,
+ 5.2, 7.2, 9.2,
+ 5.3, 7.3, 9.3,
+ 5.4, 7.4, 9.4,
+ 5.5, 7.5, 9.5, // 6
+ 5.6, 7.6, 9.6, // 7
+ 5.7, 7.7, 9.7, // 8
+ 5.8, 7.8, 9.8, // 9
+ 5.9, 7.9, 9.9,
+ 5.0, 7.0, 9.0,
+ 6.1, 8.1, 10.1,
+ 6.2, 8.2, 10.2,
+ 6.3, 8.3, 10.3, // 14
+ 6.5, 8.5, 10.5, // 15
+ 6.7, 8.7, 10.7, // 16
+ 6.9, 8.9, 10.9, // 17
+ 6.4, 8.4, -10.4, // 18
+ 6.6, 8.6, -10.6, // 19
+ 6.8, 8.8, -10.8, // 20
+ 6.0, 8.0, -10.0, // 21
+};
+
+// Output
+// :TODO: Update Lagrange multiplier values
+const double pylith::faults::CohesiveDynLDataHex8::_fieldIncrSlipE[] = {
+ 5.1, 7.1, 9.1,
+ 5.2, 7.2, 9.2,
+ 5.3, 7.3, 9.3,
+ 5.4, 7.4, 9.4,
+ 5.5, 7.5, 9.5, // 6
+ 5.6, 7.6, 9.6, // 7
+ 5.7, 7.7, 9.7, // 8
+ 5.8, 7.8, 9.8, // 9
+ 5.9, 7.9, 9.9,
+ 5.0, 7.0, 9.0,
+ 6.1, 8.1, 10.1,
+ 6.2, 8.2, 10.2,
+ 6.3, 8.3, 10.3, // 14
+ 6.5, 8.5, 10.5, // 15
+ 6.7, 8.7, 10.7, // 16
+ 6.9, 8.9, 10.9, // 17
+ -3.9639, -5.47708, -10.4, // 18
+ -4.12012, -5.63492, -10.6, // 19
+ -4.27642, -5.79274, -10.8, // 20
+ -3.47428, -4.91948, -10.0, // 21
+};
+
+// :TODO: Update slip values based on changes in Lagrange multiplier values
+const double pylith::faults::CohesiveDynLDataHex8::_slipSlipE[] = {
+ 20.727794955342528, 27.754166126645078, 0.0,
+ 21.440242443570444, 28.469830129986981, 0.0,
+ 22.152833625484085, 29.185479220875859, 0.0,
+ 18.948563495682009, 25.838950221384557, 0.0,
+};
+
+// ----------------------------------------------------------------------
+// Open case
+// ----------------------------------------------------------------------
+// Input
+const double pylith::faults::CohesiveDynLDataHex8::_fieldIncrOpen[] = {
+ 5.1, 7.1, 9.1,
+ 5.2, 7.2, 9.2,
+ 5.3, 7.3, 9.3,
+ 5.4, 7.4, 9.4,
+ 5.5, 7.5, 9.5, // 6
+ 5.6, 7.6, 9.6, // 7
+ 5.7, 7.7, 9.7, // 8
+ 5.8, 7.8, 9.8, // 9
+ 5.9, 7.9, 9.9,
+ 5.0, 7.0, 9.0,
+ 6.1, 8.1, 10.1,
+ 6.2, 8.2, 10.2,
+ 6.3, 8.3, 10.3, // 14
+ 6.5, 8.5, 10.5, // 15
+ 6.7, 8.7, 10.7, // 16
+ 6.9, 8.9, 10.9, // 17
+ 6.4, 8.4, 10.4, // 18
+ 6.6, 8.6, 10.6, // 19
+ 6.8, 8.8, 10.8, // 20
+ 6.0, 8.0, 10.0, // 21
+};
+
+// Output
+const double pylith::faults::CohesiveDynLDataHex8::_fieldIncrOpenE[] = {
+ 5.1, 7.1, 9.1,
+ 5.2, 7.2, 9.2,
+ 5.3, 7.3, 9.3,
+ 5.4, 7.4, 9.4,
+ 5.5, 7.5, 9.5, // 6
+ 5.6, 7.6, 9.6, // 7
+ 5.7, 7.7, 9.7, // 8
+ 5.8, 7.8, 9.8, // 9
+ 5.9, 7.9, 9.9,
+ 5.0, 7.0, 9.0,
+ 6.1, 8.1, 10.1,
+ 6.2, 8.2, 10.2,
+ 6.3, 8.3, 10.3, // 14
+ 6.5, 8.5, 10.5, // 15
+ 6.7, 8.7, 10.7, // 16
+ 6.9, 8.9, 10.9, // 17
+ -5.4, -7.4, -9.4, // 18
+ -5.6, -7.6, -9.6, // 19
+ -5.8, -7.8, -9.8, // 20
+ -5.0, -7.0, -9.0, // 21
+};
+
+const double pylith::faults::CohesiveDynLDataHex8::_slipOpenE[] = {
+ 23.6, 31.6, 39.6,
+ 24.4, 32.4, 40.4,
+ 25.2, 33.2, 41.2,
+ 22.0, 30.0, 38.0,
+};
+
+// ----------------------------------------------------------------------
+pylith::faults::CohesiveDynLDataHex8::CohesiveDynLDataHex8(void)
+{ // constructor
+ meshFilename = const_cast<char*>(_meshFilename);
+ spaceDim = _spaceDim;
+ cellDim = _cellDim;
+ numBasis = _numBasis;
+ numQuadPts = _numQuadPts;
+ quadPts = const_cast<double*>(_quadPts);
+ quadWts = const_cast<double*>(_quadWts);
+ basis = const_cast<double*>(_basis);
+ basisDeriv = const_cast<double*>(_basisDeriv);
+ verticesRef = const_cast<double*>(_verticesRef);
+ id = _id;
+ label = const_cast<char*>(_label);
+ initialTractFilename = const_cast<char*>(_initialTractFilename);
+
+ fieldT = const_cast<double*>(_fieldT);
+ jacobian = const_cast<double*>(_jacobian);
+ orientation = const_cast<double*>(_orientation);
+ area = const_cast<double*>(_area);
+ initialTractions = const_cast<double*>(_initialTractions);
+
+ constraintVertices = const_cast<int*>(_constraintVertices);
+ constraintCells = const_cast<int*>(_constraintCells);
+ numConstraintVert = _numConstraintVert;
+
+ // Stick
+ fieldIncrStick = const_cast<double*>(_fieldIncrStick);
+
+ // Slip
+ fieldIncrSlip = const_cast<double*>(_fieldIncrSlip);
+ fieldIncrSlipE = const_cast<double*>(_fieldIncrSlipE);
+ slipSlipE = const_cast<double*>(_slipSlipE);
+
+ // Open
+ fieldIncrOpen = const_cast<double*>(_fieldIncrOpen);
+ fieldIncrOpenE = const_cast<double*>(_fieldIncrOpenE);
+ slipOpenE = const_cast<double*>(_slipOpenE);
+} // constructor
+
+pylith::faults::CohesiveDynLDataHex8::~CohesiveDynLDataHex8(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataHex8.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataHex8.hh 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,78 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_faults_cohesivedynldatahex8_hh)
+#define pylith_faults_cohesivedynldatahex8_hh
+
+#include "CohesiveDynLData.hh"
+
+namespace pylith {
+ namespace faults {
+ class CohesiveDynLDataHex8;
+ } // pylith
+} // faults
+
+class pylith::faults::CohesiveDynLDataHex8 : public CohesiveDynLData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public:
+
+ /// Constructor
+ CohesiveDynLDataHex8(void);
+
+ /// Destructor
+ ~CohesiveDynLDataHex8(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+ static const char* _meshFilename; ///< Filename of input mesh
+
+ static const int _spaceDim; ///< Number of dimensions in vertex coordinates
+ static const int _cellDim; ///< Number of dimensions associated with cell
+
+ static const int _numBasis; ///< Number of vertices in cell
+ static const int _numQuadPts; ///< Number of quadrature points
+ static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
+ static const double _quadWts[]; ///< Weights of quadrature points
+ static const double _basis[]; ///< Basis fns at quadrature points
+ static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+ static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+
+ static const int _id; ///< Fault material identifier
+ static const char* _label; ///< Label for fault
+ static const char* _initialTractFilename; ///< Name of db for initial tractions.
+
+ static const double _fieldT[]; ///< Solution field at time t.
+ static const double _fieldIncrStick[]; ///< Solution increment at time t for stick case.
+ static const double _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
+ static const double _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
+ static const double _jacobian[]; ///< Jacobian sparse matrix.
+
+ static const double _orientation[]; ///< Expected values for fault orientation.
+ static const double _area[]; ///< Expected values for fault area.
+ static const double _initialTractions[]; ///< Expected values for initial tractions.
+ static const double _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
+ static const double _slipSlipE[]; ///< Expected values for slip for slip case.
+ static const double _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
+ static const double _slipOpenE[]; ///< Expected values for slip for opening case.
+ static const int _constraintVertices[]; ///< Expected points for constraint vertices
+ static const int _constraintCells[]; ///< Expected cells for constraint vertices
+ static const int _numConstraintVert; ///< Number of constraint vertices
+
+};
+
+#endif // pylith_faults_cohesivedynldatahex8_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataTet4.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataTet4.cc 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,634 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+
+/* Original mesh
+ *
+ * Cells are 0-1, vertices are 2-6.
+ *
+ * 2 3,4,5 6
+ *
+ * ^^^^^ Face in x-y plane
+ *
+ * After adding cohesive elements
+ *
+ * Cells are 0-1,10, vertices are 2-9.
+ *
+ * 2 3,4,5 7,8,9 6
+ * 10,11,12
+ * ^^^^^^^^^^^^ Cohesive element in x-y plane.
+ */
+
+#include "CohesiveDynLDataTet4.hh"
+
+const char* pylith::faults::CohesiveDynLDataTet4::_meshFilename =
+ "data/tet4.mesh";
+
+const int pylith::faults::CohesiveDynLDataTet4::_spaceDim = 3;
+
+const int pylith::faults::CohesiveDynLDataTet4::_cellDim = 2;
+
+const int pylith::faults::CohesiveDynLDataTet4::_numBasis = 3;
+
+const int pylith::faults::CohesiveDynLDataTet4::_numQuadPts = 1;
+
+const double pylith::faults::CohesiveDynLDataTet4::_quadPts[] = {
+ 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::faults::CohesiveDynLDataTet4::_quadWts[] = {
+ 5.00000000e-01,
+};
+
+const double pylith::faults::CohesiveDynLDataTet4::_basis[] = {
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
+
+const double pylith::faults::CohesiveDynLDataTet4::_basisDeriv[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::faults::CohesiveDynLDataTet4::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00,
+};
+
+const int pylith::faults::CohesiveDynLDataTet4::_id = 10;
+
+const char* pylith::faults::CohesiveDynLDataTet4::_label = "fault";
+
+const char* pylith::faults::CohesiveDynLDataTet4::_initialTractFilename =
+ "data/tet4_initialtract.spatialdb";
+
+const double pylith::faults::CohesiveDynLDataTet4::_fieldT[] = {
+ 7.1, 8.1, 9.1,
+ 7.2, 8.2, 9.2, // 3
+ 7.3, 8.3, 9.3, // 4
+ 7.4, 8.4, 9.4, // 5
+ 7.5, 8.5, 9.5,
+ 7.6, 8.6, 9.6, // 7
+ 7.8, 8.8, 9.8, // 8
+ 7.0, 8.0, 9.0, // 9
+ 7.7, 8.7, 9.7, // 10
+ 7.9, 8.9, 9.9, // 11
+ 7.1, 8.1, 9.1, // 12
+};
+
+// :TODO: Make sensible values for Jacobian for DOF on positive and
+// negative sides of the fault. Add semi-random values for other DOF.
+const double pylith::faults::CohesiveDynLDataTet4::_jacobian[] = {
+ 1.0, 0.0, 0.0, // 2x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 2y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 2z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 3x
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 3y
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 3z
+ 0.0, 0.0, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 10
+ 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.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 11
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 4y
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 11
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 4z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 11
+ 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,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0, // 12
+ 0.0, 0.0, 0.0, // 5y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0, // 12
+ 0.0, 0.0, 0.0, // 5z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0, // 12
+ 0.0, 0.0, 0.0, // 6x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 6y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 6z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,+1.0, // 10
+ 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, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ +1.0, 0.0, 0.0, // 10
+ 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, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,+1.0, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 8x
+ 0.0, 0.0, 0.0,
+ 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.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,+1.0, // 11
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 8y
+ 0.0, 0.0, 0.0,
+ 0.0, 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.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ +1.0, 0.0, 0.0, // 11
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 8z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,+1.0, 0.0, // 11
+ 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,
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,+1.0, // 12
+ 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, 1.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ +1.0, 0.0, 0.0, // 12
+ 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, 1.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,+1.0, 0.0, // 12
+ 0.0, 0.0, 0.0, // 10x
+ 0.0,-1.0, 0.0, // 3
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,+1.0, 0.0, // 7
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 10y
+ 0.0, 0.0,-1.0, // 3
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,+1.0, // 7
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 10z
+ -1.0, 0.0, 0.0, // 3
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ +1.0, 0.0, 0.0, // 7
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 11x
+ 0.0, 0.0, 0.0,
+ 0.0,-1.0, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,+1.0, 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, 0.0,
+ 0.0, 0.0, 0.0, // 11y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,-1.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,+1.0, // 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,
+ 0.0, 0.0, 0.0, // 11z
+ 0.0, 0.0, 0.0,
+ -1.0, 0.0, 0.0, // 4
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ +1.0, 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 12x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,-1.0, 0.0, // 5
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0,+1.0, 0.0, // 9
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 12y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,-1.0, // 5
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0,+1.0, // 9
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 12z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ -1.0, 0.0, 0.0, // 5
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ +1.0, 0.0, 0.0, // 9
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+};
+
+// ----------------------------------------------------------------------
+// Computed values
+// ----------------------------------------------------------------------
+
+const double pylith::faults::CohesiveDynLDataTet4::_orientation[] = {
+ 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0,
+ 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0,
+ 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0,
+};
+
+const double pylith::faults::CohesiveDynLDataTet4::_area[] = {
+ 1.0/3.0,
+ 1.0/3.0,
+ 1.0/3.0,
+};
+
+const double pylith::faults::CohesiveDynLDataTet4::_initialTractions[] = {
+ 1.0, 2.0, -3.0,
+ 1.1, 2.1, -3.1,
+ 1.2, 2.2, -3.2,
+};
+
+
+const int pylith::faults::CohesiveDynLDataTet4::_numConstraintVert = 3;
+const int pylith::faults::CohesiveDynLDataTet4::_constraintVertices[] = {
+ 10, 11, 12
+};
+const int pylith::faults::CohesiveDynLDataTet4::_constraintCells[] = {
+ 14, 14, 14
+};
+
+// ----------------------------------------------------------------------
+// Stick case
+// ----------------------------------------------------------------------
+// Input
+const double pylith::faults::CohesiveDynLDataTet4::_fieldIncrStick[] = {
+ 1.1, 2.1, 35.1,
+ 1.2, 2.2, 35.2, // 3
+ 1.3, 2.3, 35.3, // 4
+ 1.4, 2.4, 35.4, // 5
+ 1.5, 2.5, 35.5,
+ 1.6, 2.6, 35.6, // 7
+ 1.8, 2.8, 35.8, // 8
+ 1.0, 2.0, 35.0, // 9
+ 1.7, 2.7, -35.7, // 10
+ 1.9, 2.9, -35.9, // 11
+ 1.1, 2.1, -35.1, // 12
+};
+
+// No change in fieldIncr
+// Zero slip
+
+// ----------------------------------------------------------------------
+// Slip case
+// ----------------------------------------------------------------------
+// Input
+const double pylith::faults::CohesiveDynLDataTet4::_fieldIncrSlip[] = {
+ 8.1, 9.1, 10.1,
+ 8.2, 9.2, 10.2, // 3
+ 8.3, 9.3, 10.3, // 4
+ 8.4, 9.4, 10.4, // 5
+ 8.5, 9.5, 10.5,
+ 8.6, 9.6, 10.6, // 7
+ 8.8, 9.8, 10.8, // 8
+ 8.0, 9.0, 10.0, // 9
+ 8.7, 9.7, -10.7, // 10
+ 8.9, 9.9, -10.9, // 11
+ 8.1, 9.1, -10.1, // 12
+};
+
+// Output
+// :TODO: Update Lagrange multiplier values
+const double pylith::faults::CohesiveDynLDataTet4::_fieldIncrSlipE[] = {
+ 8.1, 9.1, 10.1,
+ 8.2, 9.2, 10.2, // 3
+ 8.3, 9.3, 10.3, // 4
+ 8.4, 9.4, 10.4, // 5
+ 8.5, 9.5, 10.5,
+ 8.6, 9.6, 10.6, // 7
+ 8.8, 9.8, 10.8, // 8
+ 8.0, 9.0, 10.0, // 9
+ -6.90156, -7.80418, -10.7, // 10
+ -7.08708, -7.9903, -10.9, // 11
+ -6.27887, -7.17083, -10.1, // 12
+};
+
+// :TODO: Update slip values based on changes in Lagrange multiplier values
+const double pylith::faults::CohesiveDynLDataTet4::_slipSlipE[] = {
+ 31.203110740589327, 35.008368147978267, 0.0,
+ 31.974152400186210, 35.780599114494088, 0.0,
+ 28.757749464750159, 32.541663868006758, 0.0,
+};
+
+// ----------------------------------------------------------------------
+// Open case
+// ----------------------------------------------------------------------
+// Input
+const double pylith::faults::CohesiveDynLDataTet4::_fieldIncrOpen[] = {
+ 8.1, 9.1, 10.1,
+ 8.2, 9.2, 10.2, // 3
+ 8.3, 9.3, 10.3, // 4
+ 8.4, 9.4, 10.4, // 5
+ 8.5, 9.5, 10.5,
+ 8.6, 9.6, 10.6, // 7
+ 8.8, 9.8, 10.8, // 8
+ 8.0, 9.0, 10.0, // 9
+ 8.7, 9.7, 10.7, // 10
+ 8.9, 9.9, 10.9, // 11
+ 8.1, 9.1, 10.1, // 12
+};
+
+// Output
+const double pylith::faults::CohesiveDynLDataTet4::_fieldIncrOpenE[] = {
+ 8.1, 9.1, 10.1,
+ 8.2, 9.2, 10.2, // 3
+ 8.3, 9.3, 10.3, // 4
+ 8.4, 9.4, 10.4, // 5
+ 8.5, 9.5, 10.5,
+ 8.6, 9.6, 10.6, // 7
+ 8.8, 9.8, 10.8, // 8
+ 8.0, 9.0, 10.0, // 9
+ -7.7, -8.7, -9.7, // 10
+ -7.9, -8.9, -9.9, // 11
+ -7.1, -8.1, -9.1, // 12
+};
+
+const double pylith::faults::CohesiveDynLDataTet4::_slipOpenE[] = {
+ 32.8, 36.8, 40.8,
+ 33.6, 37.6, 41.6,
+ 30.4, 34.4, 38.4,
+};
+
+// ----------------------------------------------------------------------
+pylith::faults::CohesiveDynLDataTet4::CohesiveDynLDataTet4(void)
+{ // constructor
+ meshFilename = const_cast<char*>(_meshFilename);
+ spaceDim = _spaceDim;
+ cellDim = _cellDim;
+ numBasis = _numBasis;
+ numQuadPts = _numQuadPts;
+ quadPts = const_cast<double*>(_quadPts);
+ quadWts = const_cast<double*>(_quadWts);
+ basis = const_cast<double*>(_basis);
+ basisDeriv = const_cast<double*>(_basisDeriv);
+ verticesRef = const_cast<double*>(_verticesRef);
+ id = _id;
+ label = const_cast<char*>(_label);
+ initialTractFilename = const_cast<char*>(_initialTractFilename);
+
+ fieldT = const_cast<double*>(_fieldT);
+ jacobian = const_cast<double*>(_jacobian);
+ orientation = const_cast<double*>(_orientation);
+ area = const_cast<double*>(_area);
+ initialTractions = const_cast<double*>(_initialTractions);
+
+ constraintVertices = const_cast<int*>(_constraintVertices);
+ constraintCells = const_cast<int*>(_constraintCells);
+ numConstraintVert = _numConstraintVert;
+
+ // Stick
+ fieldIncrStick = const_cast<double*>(_fieldIncrStick);
+
+ // Slip
+ fieldIncrSlip = const_cast<double*>(_fieldIncrSlip);
+ fieldIncrSlipE = const_cast<double*>(_fieldIncrSlipE);
+ slipSlipE = const_cast<double*>(_slipSlipE);
+
+ // Open
+ fieldIncrOpen = const_cast<double*>(_fieldIncrOpen);
+ fieldIncrOpenE = const_cast<double*>(_fieldIncrOpenE);
+ slipOpenE = const_cast<double*>(_slipOpenE);
+} // constructor
+
+pylith::faults::CohesiveDynLDataTet4::~CohesiveDynLDataTet4(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataTet4.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynLDataTet4.hh 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,78 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_faults_cohesivedynldatatet4_hh)
+#define pylith_faults_cohesivedynldatatet4_hh
+
+#include "CohesiveDynLData.hh"
+
+namespace pylith {
+ namespace faults {
+ class CohesiveDynLDataTet4;
+ } // pylith
+} // faults
+
+class pylith::faults::CohesiveDynLDataTet4 : public CohesiveDynLData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public:
+
+ /// Constructor
+ CohesiveDynLDataTet4(void);
+
+ /// Destructor
+ ~CohesiveDynLDataTet4(void);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private:
+
+ static const char* _meshFilename; ///< Filename of input mesh
+
+ static const int _spaceDim; ///< Number of dimensions in vertex coordinates
+ static const int _cellDim; ///< Number of dimensions associated with cell
+
+ static const int _numBasis; ///< Number of vertices in cell
+ static const int _numQuadPts; ///< Number of quadrature points
+ static const double _quadPts[]; ///< Coordinates of quad pts in ref cell
+ static const double _quadWts[]; ///< Weights of quadrature points
+ static const double _basis[]; ///< Basis fns at quadrature points
+ static const double _basisDeriv[]; ///< Derivatives of basis fns at quad pts
+ static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis)
+
+ static const int _id; ///< Fault material identifier
+ static const char* _label; ///< Label for fault
+ static const char* _initialTractFilename; ///< Name of db for initial tractions.
+
+ static const double _fieldT[]; ///< Solution field at time t.
+ static const double _fieldIncrStick[]; ///< Solution increment at time t for stick case.
+ static const double _fieldIncrSlip[]; ///< Solution increment at time t for slip case.
+ static const double _fieldIncrOpen[]; ///< Solution increment at time t for opening case.
+ static const double _jacobian[]; ///< Jacobian sparse matrix.
+
+ static const double _orientation[]; ///< Expected values for fault orientation.
+ static const double _area[]; ///< Expected values for fault area.
+ static const double _initialTractions[]; ///< Expected values for initial tractions.
+ static const double _fieldIncrSlipE[]; ///< Expected values for solution increment for slip case.
+ static const double _slipSlipE[]; ///< Expected values for slip for slip case.
+ static const double _fieldIncrOpenE[]; ///< Expected values for solution increment for opening case.
+ static const double _slipOpenE[]; ///< Expected values for slip for opening case.
+ static const int _constraintVertices[]; ///< Expected points for constraint vertices
+ static const int _constraintCells[]; ///< Expected cells for constraint vertices
+ static const int _numConstraintVert; ///< Number of constraint vertices
+
+};
+
+#endif // pylith_faults_cohesivedynldatatet4_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am 2010-01-18 22:16:36 UTC (rev 16143)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am 2010-01-19 07:16:22 UTC (rev 16144)
@@ -67,6 +67,7 @@
tet4e_finalslip.spatialdb \
tet4e_sliptime.spatialdb \
tet4e_risetime.spatialdb \
+ tet4_initialtract.spatialdb \
hex8.mesh \
hex8b.mesh \
hex8c.mesh \
@@ -79,6 +80,7 @@
hex8_finalslip.spatialdb \
hex8_sliptime.spatialdb \
hex8_risetime.spatialdb \
+ hex8_initialtract.spatialdb \
tri3traction.mesh \
quad4traction.mesh \
tet4traction.mesh \
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_initialtract.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_initialtract.spatialdb (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_initialtract.spatialdb 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,17 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 3
+ value-names = traction-shear-leftlateral traction-shear-updip traction-normal
+ value-units = Pa Pa Pa
+ num-locs = 4
+ data-dim = 1
+ space-dim = 3
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 3
+ }
+}
+ 0.0 -1.0000 -1.0000 1.0000 2.0000 -3.0000
+ 0.0 1.0000 -1.0000 1.1000 2.1000 -3.1000
+ 0.0 -1.0000 1.0000 1.2000 2.2000 -3.2000
+ 0.0 1.0000 1.0000 1.3000 2.3000 -3.3000
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4_initialtract.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4_initialtract.spatialdb (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4_initialtract.spatialdb 2010-01-19 07:16:22 UTC (rev 16144)
@@ -0,0 +1,16 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 3
+ value-names = traction-shear-leftlateral traction-shear-updip traction-normal
+ value-units = Pa Pa Pa
+ num-locs = 3
+ data-dim = 1
+ space-dim = 3
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 3
+ }
+}
+0.0 -1.0 0.0 1.0 2.0 -3.0
+0.0 0.0 1.0 1.1 2.1 -3.1
+0.0 1.0 0.0 1.2 2.2 -3.2
More information about the CIG-COMMITS
mailing list