[cig-commits] r7124 - in short/3D/PyLith/trunk: . libsrc/faults
libsrc/feassemble libsrc/meshio unittests/libtests/faults
unittests/libtests/faults/data
unittests/libtests/feassemble/data unittests/libtests/meshio
unittests/libtests/meshio/data unittests/pytests/feassemble
brad at geodynamics.org
brad at geodynamics.org
Sun Jun 10 21:25:05 PDT 2007
Author: brad
Date: 2007-06-10 21:25:02 -0700 (Sun, 10 Jun 2007)
New Revision: 7124
Added:
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_finalslip.spatialdb
short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_peakrate.spatialdb
short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_sliptime.spatialdb
short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_finalslip.spatialdb
short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_peakrate.spatialdb
short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_sliptime.spatialdb
Modified:
short/3D/PyLith/trunk/TODO
short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.cc
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.cc
short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.cc
short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.cc
short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh
short/3D/PyLith/trunk/libsrc/meshio/MeshIOCubit.cc
short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8.mesh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIOCubit.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.cc
short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATLagrange.py
Log:
Fixed some more bugs in fault implementation. Established consistent ordering and coordinates of vertices in reference cells (see libsrc/feassemble/Geometry*.hh files). Added more fault unit tests. Updated tests based on established ordering. Need to update FIATLagrange to use new ordering. Need to update CohesiveTopology::create() to generate proper ordering.
Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/TODO 2007-06-11 04:25:02 UTC (rev 7124)
@@ -34,20 +34,14 @@
3. Implement faults for kinematic source
a. Creation of cohesive cells
- i. Add tests for interpolated meshes.
- Double check consistency in ordering of vertices (positive/negative).
+ Add more tests for orientations.
b. Implement integrator for faults
- i. Add determinant of Jacobian to CellGeometry::jacobian()
-
ii. FaultCohesiveKin
(1) C++ unit tests
- initialize()
- integrateResidual()
- integrateJacobian()
- setConstraintSizes()
- setField()
+ Quad4
+ Hex8
(2) Python unit tests
initialize()
adjustTopology()
@@ -61,7 +55,7 @@
5. Additional unit tests
a. FaultCohesive
- i. Check faultMesh
+ i. Add checking of faultMesh [not currently used]
b. ElasticityExplicit and ElasticityImplicit
i. multiple materials
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -113,10 +113,10 @@
const int spaceDim = 3;
const double j00 = jacobian[0];
- const double j10 = jacobian[1];
- const double j20 = jacobian[2];
- const double j01 = jacobian[3];
- const double j11 = jacobian[4];
+ const double j01 = jacobian[1];
+ const double j10 = jacobian[2];
+ const double j11 = jacobian[3];
+ const double j20 = jacobian[4];
const double j21 = jacobian[5];
// Compute normal using Jacobian
@@ -146,13 +146,13 @@
const double wt = jacobianDet;
(*orientation)[0] = p0*wt;
- (*orientation)[1] = q0*wt;
- (*orientation)[2] = r0*wt;
- (*orientation)[3] = p1*wt;
+ (*orientation)[1] = p1*wt;
+ (*orientation)[2] = p2*wt;
+ (*orientation)[3] = q0*wt;
(*orientation)[4] = q1*wt;
- (*orientation)[5] = r1*wt;
- (*orientation)[6] = p2*wt;
- (*orientation)[7] = q2*wt;
+ (*orientation)[5] = q2*wt;
+ (*orientation)[6] = r0*wt;
+ (*orientation)[7] = r1*wt;
(*orientation)[8] = r2*wt;
} // _orient3D
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -165,7 +165,8 @@
++c_iter) {
mesh->restrict(coordinates, *c_iter,
&cohesiveVertices[0], cohesiveVertices.size());
- for (int i=0, offset=2*numBasis; i < numBasis; ++i)
+ const int size = numBasis*spaceDim;
+ for (int i=0, offset=2*size; i < size; ++i)
faceVertices[i] = cohesiveVertices[offset+i];
int iBasis = 0;
@@ -208,10 +209,12 @@
for (int jDim=0, index=iDim*spaceDim; jDim < spaceDim; ++jDim)
mag += pow(vertexOrient[index+jDim],2);
mag = sqrt(mag);
+ assert(mag > 0.0);
for (int jDim=0, index=iDim*spaceDim; jDim < spaceDim; ++jDim)
vertexDir[index+jDim] =
vertexOrient[index+jDim] / mag;
} // for
+
_orientation->updatePoint(*v_iter, &vertexDir[0]);
} // for
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -96,12 +96,12 @@
const double y7 = vertices[22];
const double z7 = vertices[23];
- const double x = location[0];
- const double y = location[1];
- const double z = location[2];
- assert(0 <= x && x <= 1.0);
- assert(0 <= y && y <= 1.0);
- assert(0 <= z && z <= 1.0);
+ const double x = 0.5 * (location[0] + 1.0);
+ const double y = 0.5 * (location[1] + 1.0);
+ const double z = 0.5 * (location[2] + 1.0);
+ assert(-1.0 <= x && x <= 1.0);
+ assert(-1.0 <= y && y <= 1.0);
+ assert(-1.0 <= z && z <= 1.0);
const double f_xy = x2 - x1 - x3 + x0;
const double g_xy = y2 - y1 - y3 + y0;
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -15,6 +15,18 @@
*
* @brief C++ implementation of cell geometry calculations for 3-D
* hexahedral cell.
+ *
+ * Reference cell:
+ *
+ * Vertex x y z
+ * 0 -1.0 -1.0 -1.0
+ * 1 +1.0 -1.0 -1.0
+ * 2 +1.0 +1.0 -1.0
+ * 3 -1.0 +1.0 -1.0
+ * 4 -1.0 -1.0 +1.0
+ * 5 +1.0 -1.0 +1.0
+ * 6 +1.0 +1.0 +1.0
+ * 7 -1.0 +1.0 +1.0
*/
#if !defined(pylith_feassemble_geometryhex3d_hh)
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -83,8 +83,8 @@
const double x3 = vertices[6];
const double y3 = vertices[7];
- const double x = location[0];
- const double y = location[1];
+ const double x = 0.5 * (location[0] + 1.0);
+ const double y = 0.5 * (location[1] + 1.0);
assert(0 <= x && x <= 1.0);
assert(0 <= y && y <= 1.0);
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -15,6 +15,19 @@
*
* @brief C++ implementation of cell geometry calculations for 2-D
* quadrilateral cell.
+ *
+ * Reference cell:
+ *
+ * 3 -- 2
+ * | |
+ * | |
+ * 0 -- 1
+ *
+ * Vertex x y
+ * 0 -1.0 -1.0
+ * 1 +1.0 -1.0
+ * 2 +1.0 +1.0
+ * 3 -1.0 +1.0
*/
#if !defined(pylith_feassemble_geometryquad2d_hh)
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -87,8 +87,8 @@
const double y3 = vertices[10];
const double z3 = vertices[11];
- const double x = location[0];
- const double y = location[1];
+ const double x = 0.5 * (location[0] + 1.0);
+ const double y = 0.5 * (location[1] + 1.0);
assert(0 <= x && x <= 1.0);
assert(0 <= y && y <= 1.0);
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -15,6 +15,19 @@
*
* @brief C++ implementation of cell geometry calculations for 2-D
* quadrilateral cell in 3-D.
+ *
+ * Reference cell:
+ *
+ * 3 -- 2
+ * | |
+ * | |
+ * 0 -- 1
+ *
+ * Vertex x y
+ * 0 -1.0 -1.0
+ * 1 +1.0 -1.0
+ * 2 +1.0 +1.0
+ * 3 -1.0 +1.0
*/
#if !defined(pylith_feassemble_geometryquad3d_hh)
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -15,6 +15,14 @@
*
* @brief C++ implementation of cell geometry calculations for 3-D
* tetrahedral cell.
+ *
+ * Reference cell:
+ *
+ * Vertex x y z
+ * 0 -1.0 -1.0 -1.0
+ * 1 +1.0 -1.0 -1.0
+ * 2 -1.0 +1.0 -1.0
+ * 3 -1.0 -1.0 +1.0
*/
#if !defined(pylith_feassemble_geometrytet3d_hh)
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -15,6 +15,13 @@
*
* @brief C++ implementation of cell geometry calculations for 2-D
* triangular cell.
+ *
+ * Reference cell:
+ *
+ * Vertex x y
+ * 0 -1.0 -1.0
+ * 1 +1.0 -1.0
+ * 2 -1.0 +1.0
*/
#if !defined(pylith_feassemble_geometrytri2d_hh)
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -15,6 +15,13 @@
*
* @brief C++ implementation of cell geometry calculations for 2-D
* triangular cell.
+ *
+ * Reference cell:
+ *
+ * Vertex x y
+ * 0 -1.0 -1.0
+ * 1 +1.0 -1.0
+ * 2 -1.0 +1.0
*/
#if !defined(pylith_feassemble_geometrytri3d_hh)
Modified: short/3D/PyLith/trunk/libsrc/meshio/MeshIOCubit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/MeshIOCubit.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/libsrc/meshio/MeshIOCubit.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -320,6 +320,7 @@
assert(cells->size() == numCells*numCorners);
if (2 == meshDim && 4 == numCorners) // QUAD
+#if 0
// 0 1 2 3 -> 0 1 3 2
for (int iCell=0; iCell < numCells; ++iCell) {
const int i2 = iCell*numCorners+2;
@@ -328,7 +329,11 @@
(*cells)[i2] = (*cells)[i3];
(*cells)[i3] = tmp;
} // for
+#else
+ ; // do nothing
+#endif
else if (3 == meshDim && 8 == numCorners) // HEX
+#if 0
// 0 1 2 3 4 5 6 7 -> 0 1 3 2 4 5 7 6
for (int iCell=0; iCell < numCells; ++iCell) {
const int i2 = iCell*numCorners+2;
@@ -343,6 +348,9 @@
(*cells)[i6] = (*cells)[i7];
(*cells)[i7] = tmp;
} // for
+#else
+ ; // do nothing
+#endif
} // _orientCells
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am 2007-06-11 04:25:02 UTC (rev 7124)
@@ -28,10 +28,11 @@
TestFaultCohesiveKin.cc \
TestFaultCohesiveKinLine2.cc \
TestFaultCohesiveKinTri3.cc \
+ TestFaultCohesiveKinQuad4.cc \
+ TestFaultCohesiveKinTet4.cc \
+ TestFaultCohesiveKinHex8.cc \
test_faults.cc
-
-
noinst_HEADERS = \
TestBruneSlipFn.hh \
TestEqKinSrc.hh \
@@ -39,7 +40,10 @@
TestFaultCohesive.hh \
TestFaultCohesiveKin.hh \
TestFaultCohesiveKinLine2.hh \
- TestFaultCohesiveKinTri3.hh
+ TestFaultCohesiveKinTri3.hh \
+ TestFaultCohesiveKinQuad4.hh \
+ TestFaultCohesiveKinTet4.hh \
+ TestFaultCohesiveKinHex8.hh
# Source files associated with testing data
testfaults_SOURCES += \
@@ -56,7 +60,10 @@
data/CohesiveDataTet4Lagrange.cc \
data/CohesiveKinData.cc \
data/CohesiveKinDataLine2.cc \
- data/CohesiveKinDataTri3.cc
+ data/CohesiveKinDataTri3.cc \
+ data/CohesiveKinDataQuad4.cc \
+ data/CohesiveKinDataTet4.cc \
+ data/CohesiveKinDataHex8.cc
noinst_HEADERS += \
data/CohesiveData.hh \
@@ -72,7 +79,10 @@
data/CohesiveDataTet4Lagrange.hh \
data/CohesiveKinData.hh \
data/CohesiveKinDataLine2.hh \
- data/CohesiveKinDataTri3.hh
+ data/CohesiveKinDataTri3.hh \
+ data/CohesiveKinDataQuad4.hh \
+ data/CohesiveKinDataTet4.hh \
+ data/CohesiveKinDataHex8.hh
testfaults_LDFLAGS = $(PETSC_LIB) $(PYTHON_BLDLIBRARY)
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -207,21 +207,26 @@
const int orientSize = 9;
const double jacobianVals[] = {
- 2.0, 1.0, 0.5, -0.5, -0.2, 2.0,
- -1.0, -3.0, -0.3, 2.0, -0.2, 0.3,
+ 2.0, -0.5,
+ 1.0, -0.2,
+ 0.5, 2.0,
+
+ -1.0, 2.0,
+ -3.0, -0.2,
+ -0.3, 0.3,
};
const double jacobianDetVals[] = {
1.3, 0.7
};
const double upDirVals[] = { 0.0, 0.0, 1.0 };
const double orientationE[] = {
- 1.1654847299258313, -0.012145479112634533, 0.57575848378190342,
- 0.57588657243394026, 0.024580136299379406, -1.1652255028919474,
- 0.0, 1.2997108540889502, 0.027417070656281111,
+ 1.1654847299258313, 0.57588657243394026, 0.0,
+ -0.012145479112634533, 0.024580136299379406, 1.2997108540889502,
+ 0.57575848378190342, -1.1652255028919474, 0.027417070656281111,
- 0.20879249519516274, 0.65951433797689429, -0.10698846644884991,
- -0.66813598462452073, 0.20609823061777949, -0.033433895765265592,
- 0.0, 0.11209084413599232, 0.69096717914882233
+ 0.20879249519516274, -0.66813598462452073, 0.0,
+ 0.65951433797689429, 0.20609823061777949, 0.11209084413599232,
+ -0.10698846644884991, -0.033433895765265592, 0.69096717914882233
};
double_array upDir(upDirVals, 3);
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -256,7 +256,7 @@
err = MatAssemblyEnd(jacobian, MAT_FINAL_ASSEMBLY);
CPPUNIT_ASSERT(0 == err);
- //MatView(jacobian, PETSC_VIEWER_STDOUT_WORLD);
+ MatView(jacobian, PETSC_VIEWER_STDOUT_WORLD);
const double* valsE = _data->valsJacobian;
const int nrowsE = dispT->sizeWithBC();
Added: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,39 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestFaultCohesiveKinHex8.hh" // Implementation of class methods
+
+#include "data/CohesiveKinDataHex8.hh" // USES CohesiveKinDataHex8
+
+#include "pylith/feassemble/Quadrature2Din3D.hh" // USES Quadrature2Din3D
+#include "pylith/feassemble/GeometryQuad3D.hh" // USES GeometryQuad3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::faults::TestFaultCohesiveKinHex8 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::faults::TestFaultCohesiveKinHex8::setUp(void)
+{ // setUp
+ TestFaultCohesiveKin::setUp();
+ _data = new CohesiveKinDataHex8();
+ _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/faults/TestFaultCohesiveKinHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/faults/TestFaultCohesiveKinHex8.hh
+ *
+ * @brief C++ TestFaultCohesiveKinHex8 object.
+ *
+ * C++ unit testing for FaultCohesiveKin for mesh with 3-D hex cells.
+ */
+
+#if !defined(pylith_faults_testfaultcohesivekinhex8_hh)
+#define pylith_faults_testfaultcohesivekinhex8_hh
+
+#include "TestFaultCohesiveKin.hh" // ISA TestFaultCohesiveKin
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace faults {
+ class TestFaultCohesiveKinHex8;
+ } // bc
+} // pylith
+
+/// C++ unit testing for FaultCohesiveKin for mesh with 3-D hex cells.
+class pylith::faults::TestFaultCohesiveKinHex8 : public TestFaultCohesiveKin
+{ // class TestFaultCohesiveKinHex8
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestFaultCohesiveKinHex8 );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testSetConstraintSizes );
+ CPPUNIT_TEST( testSetField );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestFaultCohesiveKinHex8
+
+#endif // pylith_faults_testfaultcohesivehex8_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,39 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestFaultCohesiveKinQuad4.hh" // Implementation of class methods
+
+#include "data/CohesiveKinDataQuad4.hh" // USES CohesiveKinDataQuad4
+
+#include "pylith/feassemble/Quadrature1Din2D.hh" // USES Quadrature1Din2D
+#include "pylith/feassemble/GeometryLine2D.hh" // USES GeometryLine2D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::faults::TestFaultCohesiveKinQuad4 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::faults::TestFaultCohesiveKinQuad4::setUp(void)
+{ // setUp
+ TestFaultCohesiveKin::setUp();
+ _data = new CohesiveKinDataQuad4();
+ _quadrature = new feassemble::Quadrature1Din2D();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ feassemble::GeometryLine2D geometry;
+ _quadrature->refGeometry(&geometry);
+} // setUp
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh
+ *
+ * @brief C++ TestFaultCohesiveKinQuad4 object.
+ *
+ * C++ unit testing for FaultCohesiveKin for mesh with 2-D quadrilateral cells.
+ */
+
+#if !defined(pylith_faults_testfaultcohesivekinquad4_hh)
+#define pylith_faults_testfaultcohesivekinquad4_hh
+
+#include "TestFaultCohesiveKin.hh" // ISA TestFaultCohesiveKin
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace faults {
+ class TestFaultCohesiveKinQuad4;
+ } // bc
+} // pylith
+
+/// C++ unit testing for FaultCohesiveKin for mesh with 2-D quadrilateral cells.
+class pylith::faults::TestFaultCohesiveKinQuad4 : public TestFaultCohesiveKin
+{ // class TestFaultCohesiveKinQuad4
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestFaultCohesiveKinQuad4 );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testSetConstraintSizes );
+ CPPUNIT_TEST( testSetField );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestFaultCohesiveKinQuad4
+
+#endif // pylith_faults_testfaultcohesivequad4_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,39 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestFaultCohesiveKinTet4.hh" // Implementation of class methods
+
+#include "data/CohesiveKinDataTet4.hh" // USES CohesiveKinDataTet4
+
+#include "pylith/feassemble/Quadrature2Din3D.hh" // USES Quadrature2Din3D
+#include "pylith/feassemble/GeometryTri3D.hh" // USES GeometryTri3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::faults::TestFaultCohesiveKinTet4 );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::faults::TestFaultCohesiveKinTet4::setUp(void)
+{ // setUp
+ TestFaultCohesiveKin::setUp();
+ _data = new CohesiveKinDataTet4();
+ _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/faults/TestFaultCohesiveKinTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/faults/TestFaultCohesiveKinTet4.hh
+ *
+ * @brief C++ TestFaultCohesiveKinTet4 object.
+ *
+ * C++ unit testing for FaultCohesiveKin for mesh with 3-D tetrahedral cells.
+ */
+
+#if !defined(pylith_faults_testfaultcohesivekintet4_hh)
+#define pylith_faults_testfaultcohesivekintet4_hh
+
+#include "TestFaultCohesiveKin.hh" // ISA TestFaultCohesiveKin
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace faults {
+ class TestFaultCohesiveKinTet4;
+ } // bc
+} // pylith
+
+/// C++ unit testing for FaultCohesiveKin for mesh with 3-D tetrahedral cells.
+class pylith::faults::TestFaultCohesiveKinTet4 : public TestFaultCohesiveKin
+{ // class TestFaultCohesiveKinTet4
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestFaultCohesiveKinTet4 );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testSetConstraintSizes );
+ CPPUNIT_TEST( testSetField );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestFaultCohesiveKinTet4
+
+#endif // pylith_faults_testfaultcohesivetet4_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -30,7 +30,7 @@
} // bc
} // pylith
-/// C++ unit testing for FaultCohesiveKin for mesh with 1-D line cells.
+/// C++ unit testing for FaultCohesiveKin for mesh with 2-D triangular cells.
class pylith::faults::TestFaultCohesiveKinTri3 : public TestFaultCohesiveKin
{ // class TestFaultCohesiveKinTri3
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -64,9 +64,9 @@
};
const int pylith::faults::CohesiveDataHex8::_cells[] = {
- 2, 4, 5, 3, 6, 8, 9, 7,
- 14, 16, 17, 15, 10, 12, 13, 11,
- 6, 8, 9, 7, 14, 16, 17, 15,
+ 2, 3, 5, 4, 6, 7, 9, 8,
+ 14, 15, 17, 16, 10, 11, 13, 12,
+ 6, 7, 9, 8, 14, 15, 17, 16,
};
const int pylith::faults::CohesiveDataHex8::_materialIds[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -68,9 +68,9 @@
};
const int pylith::faults::CohesiveDataHex8Lagrange::_cells[] = {
- 2, 4, 5, 3, 6, 8, 9, 7,
- 14, 18, 20, 16, 10, 12, 13, 11,
- 6, 8, 9, 7, 14, 18, 20, 16, 15, 19, 21, 17
+ 2, 3, 5, 4, 6, 7, 9, 8,
+ 14, 16, 20, 18, 10, 11, 13, 12,
+ 6, 7, 9, 8, 14, 16, 20, 18, 15, 17, 21, 19
};
const int pylith::faults::CohesiveDataHex8Lagrange::_materialIds[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -71,7 +71,7 @@
const int pylith::faults::CohesiveDataQuad4::_cells[] = {
2, 4, 5, 3,
6, 7, 9, 8,
- 4, 5, 8, 9,
+ 5, 4, 9, 8,
};
const int pylith::faults::CohesiveDataQuad4::_materialIds[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4Lagrange.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -73,7 +73,7 @@
const int pylith::faults::CohesiveDataQuad4Lagrange::_cells[] = {
2, 4, 5, 3,
6, 7, 10, 8,
- 4, 5, 8, 10, 9, 11
+ 5, 4, 10, 8, 11, 9
};
const int pylith::faults::CohesiveDataQuad4Lagrange::_materialIds[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -57,7 +57,7 @@
const int pylith::faults::CohesiveDataTet4::_cells[] = {
3, 4, 5, 2,
7, 9, 8, 6,
- 3, 4, 5, 7, 8, 9
+ 3, 5, 4, 7, 9, 8
};
const int pylith::faults::CohesiveDataTet4::_materialIds[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -60,7 +60,7 @@
const int pylith::faults::CohesiveDataTet4Lagrange::_cells[] = {
3, 4, 5, 2,
7, 11, 9, 6,
- 3, 4, 5, 7, 9, 11, 8, 10, 12
+ 3, 5, 4, 7, 11, 9, 8, 12, 10
};
const int pylith::faults::CohesiveDataTet4Lagrange::_materialIds[] = {
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,1443 @@
+// -*- 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,16,18,20 -------- 10,11,12,13
+ * 15,17,19,21
+ * ^^^^^^^^^^^^^^^^^^^^^^ Cohesive element
+ *
+ */
+
+#include "CohesiveKinDataHex8.hh"
+
+const char* pylith::faults::CohesiveKinDataHex8::_meshFilename =
+ "data/hex8.mesh";
+
+const int pylith::faults::CohesiveKinDataHex8::_spaceDim = 3;
+
+const int pylith::faults::CohesiveKinDataHex8::_cellDim = 2;
+
+const int pylith::faults::CohesiveKinDataHex8::_numBasis = 4;
+
+const int pylith::faults::CohesiveKinDataHex8::_numQuadPts = 4;
+
+const double pylith::faults::CohesiveKinDataHex8::_quadPts[] = {
+ -0.57735027, -0.57735027,
+ +0.57735027, -0.57735027,
+ +0.57735027, +0.57735027,
+ -0.57735027, +0.57735027,
+};
+
+const double pylith::faults::CohesiveKinDataHex8::_quadWts[] = {
+ 1.0, 1.0, 1.0, 1.0
+};
+
+const double pylith::faults::CohesiveKinDataHex8::_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::CohesiveKinDataHex8::_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::CohesiveKinDataHex8::_verticesRef[] = {
+ -1.0, -1.0,
+ +1.0, -1.0,
+ +1.0, +1.0,
+ -1.0, +1.0
+};
+
+const int pylith::faults::CohesiveKinDataHex8::_id = 10;
+
+const char* pylith::faults::CohesiveKinDataHex8::_label = "fault";
+
+const char* pylith::faults::CohesiveKinDataHex8::_finalSlipFilename =
+ "data/hex8_finalslip.spatialdb";
+
+const char* pylith::faults::CohesiveKinDataHex8::_slipTimeFilename =
+ "data/hex8_sliptime.spatialdb";
+
+const char* pylith::faults::CohesiveKinDataHex8::_peakRateFilename =
+ "data/hex8_peakrate.spatialdb";
+
+const double pylith::faults::CohesiveKinDataHex8::_fieldTpdt[] = {
+ 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,
+ 4.6, 6.6, 8.6,
+ 4.7, 6.7, 8.7,
+ 4.8, 6.8, 8.8,
+ 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,
+ 5.4, 7.4, 9.4,
+ 5.5, 7.5, 9.5,
+ 5.6, 7.6, 9.6,
+ 5.7, 7.7, 9.7,
+ 5.8, 7.8, 9.8,
+ 5.9, 7.9, 9.9,
+ 5.0, 7.0, 9.0,
+};
+
+const double pylith::faults::CohesiveKinDataHex8::_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,
+ 4.6, 6.6, 8.6,
+ 4.7, 6.7, 8.7,
+ 4.8, 6.8, 8.8,
+ 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,
+ 1.1, 1.2, 1.3, // 15
+ 5.5, 7.5, 9.5,
+ 2.1, 2.2, 2.3, // 17
+ 5.7, 7.7, 9.7,
+ 3.1, 3.2, 3.3, // 19
+ 5.9, 7.9, 9.9,
+ 1.5, 1.6, 1.7, // 21
+};
+
+const int pylith::faults::CohesiveKinDataHex8::_numConstraintVert = 4;
+
+const double pylith::faults::CohesiveKinDataHex8::_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 int pylith::faults::CohesiveKinDataHex8::_constraintVertices[] = {
+ 15, 17, 19, 21
+};
+
+const double pylith::faults::CohesiveKinDataHex8::_valsResidual[] = {
+ 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.1,-1.2,-1.3, // 6
+ -2.1,-2.2,-2.3, // 7
+ -3.1,-3.2,-3.3, // 8
+ -1.5,-1.6,-1.7, // 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,
+ +1.1,+1.2,+1.3, // 14
+ 0.0, 0.0, 0.0, // 15 (constraint)
+ +2.1,+2.2,+2.3, // 16
+ 0.0, 0.0, 0.0, // 17 (constraint)
+ +3.1,+3.2,+3.3, // 18
+ 0.0, 0.0, 0.0, // 19 (constraint)
+ +1.5,+1.6,+1.7, // 20
+ 0.0, 0.0, 0.0, // 21 (constraint)
+};
+
+const double pylith::faults::CohesiveKinDataHex8::_valsSlip[] = {
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.07974939836, -0.32861938211, 0.04694562602, // 15 (constraint)
+ 0.0, 0.0, 0.0,
+ 1.00381374723, -0.33460458241, 0.08365114560, // 17 (constraint)
+ 0.0, 0.0, 0.0,
+ 0.90493237602, -0.32577565537, 0.10859188512, // 19 (constraint)
+ 0.0, 0.0, 0.0,
+ 0.78469841324, -0.30180708202, 0.12072283281, // 21 (constraint)
+};
+
+const double pylith::faults::CohesiveKinDataHex8::_valsJacobian[] = {
+ 0.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, 0.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, 0.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
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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, // 6y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, // 6z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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, // 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,
+ 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, // 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,
+ 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,
+ 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,
+ 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, // 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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, // 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, // 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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, // 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,
+ 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, // 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, 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, // 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, 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, // 15x
+ 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, // 15y
+ 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, // 15z
+ 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, // 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,
+ 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, // 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, 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,
+ 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, 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, // 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,-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, 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, // 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,-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, 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, // 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,
+ -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,
+ 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, // 18x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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, // 18y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, // 18z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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, // 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, 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, 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, // 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, 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, 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, // 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,
+ 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,
+ 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, // 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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, // 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, // 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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, // 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, 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, // 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, 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, // 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,
+ 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,
+};
+
+pylith::faults::CohesiveKinDataHex8::CohesiveKinDataHex8(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);
+ finalSlipFilename = const_cast<char*>(_finalSlipFilename);
+ slipTimeFilename = const_cast<char*>(_slipTimeFilename);
+ peakRateFilename = const_cast<char*>(_peakRateFilename);
+ fieldTpdt = const_cast<double*>(_fieldTpdt);
+ fieldT = const_cast<double*>(_fieldT);
+ orientation = const_cast<double*>(_orientation);
+ constraintVertices = const_cast<int*>(_constraintVertices);
+ valsResidual = const_cast<double*>(_valsResidual);
+ valsSlip = const_cast<double*>(_valsSlip);
+ valsJacobian = const_cast<double*>(_valsJacobian);
+ numConstraintVert = _numConstraintVert;
+} // constructor
+
+pylith::faults::CohesiveKinDataHex8::~CohesiveKinDataHex8(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataHex8.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_faults_cohesivekindatahex8_hh)
+#define pylith_faults_cohesivekindatahex8_hh
+
+#include "CohesiveKinData.hh"
+
+namespace pylith {
+ namespace faults {
+ class CohesiveKinDataHex8;
+ } // pylith
+} // faults
+
+class pylith::faults::CohesiveKinDataHex8 : public CohesiveKinData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public:
+
+ /// Constructor
+ CohesiveKinDataHex8(void);
+
+ /// Destructor
+ ~CohesiveKinDataHex8(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* _finalSlipFilename; ///< Name of db for final slip
+ static const char* _slipTimeFilename; ///< Name of db for slip time
+ static const char* _peakRateFilename; ///< Name of db for peak rate
+ //@}
+
+ static const double _fieldTpdt[]; ///< Input field at time t+dt.
+ static const double _fieldT[]; ///< Input field at time t.
+
+ static const double _orientation[]; ///< Expected values for fault orientation.
+ static const int _constraintVertices[]; ///< Expected points for constraint vertices
+ static const double _valsResidual[]; ///< Expected values from residual calculation.
+ static const double _valsSlip[]; ///< Expected values from settting field.
+ static const double _valsJacobian[]; ///< Expected values from Jacobian calculation.
+ static const int _numConstraintVert; ///< Number of constraint vertices
+
+};
+
+#endif // pylith_faults_cohesivekindatahex8_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,389 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/* Original mesh
+ *
+ * Cells are 0-1, vertices are 2-7.
+ *
+ * 3 -------- 5 -------- 7
+ * | | |
+ * | | |
+ * | | |
+ * | | |
+ * | | |
+ * | | |
+ * | | |
+ * | | |
+ * 2 -------- 4 -------- 6
+ *
+ * After adding cohesive elements
+ *
+ * Cells are 0-1,10 vertices are 2-9.
+ *
+ * 3 -------- 5 -11- 10 -------- 7
+ * | | | |
+ * | | | |
+ * | | | |
+ * | | | |
+ * | | | |
+ * | | | |
+ * | | | |
+ * | | | |
+ * 2 -------- 4 --9-- 8 -------- 6
+ */
+
+#include "CohesiveKinDataQuad4.hh"
+
+const char* pylith::faults::CohesiveKinDataQuad4::_meshFilename =
+ "data/quad4.mesh";
+
+const int pylith::faults::CohesiveKinDataQuad4::_spaceDim = 2;
+
+const int pylith::faults::CohesiveKinDataQuad4::_cellDim = 1;
+
+const int pylith::faults::CohesiveKinDataQuad4::_numBasis = 2;
+
+const int pylith::faults::CohesiveKinDataQuad4::_numQuadPts = 1;
+
+const double pylith::faults::CohesiveKinDataQuad4::_quadPts[] = {
+ 0.0,
+};
+
+const double pylith::faults::CohesiveKinDataQuad4::_quadWts[] = {
+ 2.0,
+};
+
+const double pylith::faults::CohesiveKinDataQuad4::_basis[] = {
+ 0.5,
+ 0.5
+};
+
+const double pylith::faults::CohesiveKinDataQuad4::_basisDeriv[] = {
+ -0.5,
+ 0.5
+};
+
+const double pylith::faults::CohesiveKinDataQuad4::_verticesRef[] = {
+ -1.0, 1.0
+};
+
+const int pylith::faults::CohesiveKinDataQuad4::_id = 10;
+
+const char* pylith::faults::CohesiveKinDataQuad4::_label = "fault";
+
+const char* pylith::faults::CohesiveKinDataQuad4::_finalSlipFilename =
+ "data/quad4_finalslip.spatialdb";
+
+const char* pylith::faults::CohesiveKinDataQuad4::_slipTimeFilename =
+ "data/quad4_sliptime.spatialdb";
+
+const char* pylith::faults::CohesiveKinDataQuad4::_peakRateFilename =
+ "data/quad4_peakrate.spatialdb";
+
+const double pylith::faults::CohesiveKinDataQuad4::_fieldTpdt[] = {
+ 8.1, 9.1,
+ 8.2, 9.2,
+ 8.3, 9.3,
+ 8.4, 9.4,
+ 8.5, 9.5,
+ 8.6, 9.6,
+ 8.7, 9.7,
+ 8.8, 9.8,
+ 8.9, 9.9,
+ 8.0, 9.0,
+};
+
+const double pylith::faults::CohesiveKinDataQuad4::_fieldT[] = {
+ 6.1, 7.1, // 2
+ 6.2, 7.2, // 3
+ 6.3, 7.3, // 4
+ 6.4, 7.4, // 5
+ 6.5, 7.5, // 6
+ 6.6, 7.6, // 7
+ 6.7, 7.7, // 8
+ 1.4, 1.5, // 9 (constraint force)
+ 6.8, 7.8, // 10
+ 2.6, 2.7, // 11 (constraint force)
+};
+
+const int pylith::faults::CohesiveKinDataQuad4::_numConstraintVert = 2;
+
+const double pylith::faults::CohesiveKinDataQuad4::_orientation[] = {
+ 0.0, -1.0, +1.0, 0.0,
+ 0.0, -1.0, +1.0, 0.0
+};
+
+const int pylith::faults::CohesiveKinDataQuad4::_constraintVertices[] = {
+ 9, 11
+};
+
+const double pylith::faults::CohesiveKinDataQuad4::_valsResidual[] = {
+ 0.0, 0.0, // 2
+ 0.0, 0.0, // 3
+ -1.4, -1.5, // 4
+ -2.6, -2.7, // 5
+ 0.0, 0.0, // 6
+ 0.0, 0.0, // 7
+ +1.4, +1.5, // 8
+ 0.0, 0.0, // 9
+ +2.6, +2.7, // 10
+ 0.0, 0.0, // 11
+};
+
+const double pylith::faults::CohesiveKinDataQuad4::_valsSlip[] = {
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.989535448086, 0.0824612873405, // 9
+ 0.0, 0.0,
+ 1.05057813143, 0.0456773100622, // 11
+};
+
+const double pylith::faults::CohesiveKinDataQuad4::_valsJacobian[] = {
+ 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, // 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, // 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, // 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, // 4x
+ 0.0, 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, // 4y
+ 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, // 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,-1.0, // 11
+ 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,
+ +1.0, 0.0, // 11
+ 0.0, 0.0, // 6x
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 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,
+ 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, // 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, // 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,+1.0, // 9
+ 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,
+ -1.0, 0.0, // 9
+ 0.0, 0.0,
+ 0.0, 0.0,
+ 0.0, 0.0, // 9x
+ 0.0, 0.0,
+ 0.0,+1.0, // 4
+ 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, // 9y
+ 0.0, 0.0,
+ -1.0, 0.0, // 4
+ 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, // 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,+1.0, // 11
+ 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,
+ -1.0, 0.0, // 11
+ 0.0, 0.0, // 11x
+ 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,-1.0, // 10
+ 0.0, 0.0,
+ 0.0, 0.0, // 11y
+ 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,
+ +1.0, 0.0, // 10
+ 0.0, 0.0,
+};
+
+pylith::faults::CohesiveKinDataQuad4::CohesiveKinDataQuad4(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);
+ finalSlipFilename = const_cast<char*>(_finalSlipFilename);
+ slipTimeFilename = const_cast<char*>(_slipTimeFilename);
+ peakRateFilename = const_cast<char*>(_peakRateFilename);
+ fieldTpdt = const_cast<double*>(_fieldTpdt);
+ fieldT = const_cast<double*>(_fieldT);
+ orientation = const_cast<double*>(_orientation);
+ constraintVertices = const_cast<int*>(_constraintVertices);
+ valsResidual = const_cast<double*>(_valsResidual);
+ valsSlip = const_cast<double*>(_valsSlip);
+ valsJacobian = const_cast<double*>(_valsJacobian);
+ numConstraintVert = _numConstraintVert;
+} // constructor
+
+pylith::faults::CohesiveKinDataQuad4::~CohesiveKinDataQuad4(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataQuad4.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_faults_cohesivekindataquad4_hh)
+#define pylith_faults_cohesivekindataquad4_hh
+
+#include "CohesiveKinData.hh"
+
+namespace pylith {
+ namespace faults {
+ class CohesiveKinDataQuad4;
+ } // pylith
+} // faults
+
+class pylith::faults::CohesiveKinDataQuad4 : public CohesiveKinData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public:
+
+ /// Constructor
+ CohesiveKinDataQuad4(void);
+
+ /// Destructor
+ ~CohesiveKinDataQuad4(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* _finalSlipFilename; ///< Name of db for final slip
+ static const char* _slipTimeFilename; ///< Name of db for slip time
+ static const char* _peakRateFilename; ///< Name of db for peak rate
+ //@}
+
+ static const double _fieldTpdt[]; ///< Input field at time t+dt.
+ static const double _fieldT[]; ///< Input field at time t.
+
+ static const double _orientation[]; ///< Expected values for fault orientation.
+ static const int _constraintVertices[]; ///< Expected points for constraint vertices
+ static const double _valsResidual[]; ///< Expected values from residual calculation.
+ static const double _valsSlip[]; ///< Expected values from settting field.
+ static const double _valsJacobian[]; ///< Expected values from Jacobian calculation.
+ static const int _numConstraintVert; ///< Number of constraint vertices
+
+};
+
+#endif // pylith_faults_cohesivekindataquad4_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,545 @@
+// -*- 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,9,11 6
+ * 8,10,12
+ * ^^^^^^^^^^^^ Cohesive element in x-y plane.
+ */
+
+#include "CohesiveKinDataTet4.hh"
+
+const char* pylith::faults::CohesiveKinDataTet4::_meshFilename =
+ "data/tet4.mesh";
+
+const int pylith::faults::CohesiveKinDataTet4::_spaceDim = 3;
+
+const int pylith::faults::CohesiveKinDataTet4::_cellDim = 2;
+
+const int pylith::faults::CohesiveKinDataTet4::_numBasis = 3;
+
+const int pylith::faults::CohesiveKinDataTet4::_numQuadPts = 1;
+
+const double pylith::faults::CohesiveKinDataTet4::_quadPts[] = {
+ 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::faults::CohesiveKinDataTet4::_quadWts[] = {
+ 5.00000000e-01,
+};
+
+const double pylith::faults::CohesiveKinDataTet4::_basis[] = {
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
+
+const double pylith::faults::CohesiveKinDataTet4::_basisDeriv[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::faults::CohesiveKinDataTet4::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00,
+};
+
+const int pylith::faults::CohesiveKinDataTet4::_id = 10;
+
+const char* pylith::faults::CohesiveKinDataTet4::_label = "fault";
+
+const char* pylith::faults::CohesiveKinDataTet4::_finalSlipFilename =
+ "data/tet4_finalslip.spatialdb";
+
+const char* pylith::faults::CohesiveKinDataTet4::_slipTimeFilename =
+ "data/tet4_sliptime.spatialdb";
+
+const char* pylith::faults::CohesiveKinDataTet4::_peakRateFilename =
+ "data/tet4_peakrate.spatialdb";
+
+const double pylith::faults::CohesiveKinDataTet4::_fieldTpdt[] = {
+ 7.1, 8.1, 9.1,
+ 7.2, 8.2, 9.2,
+ 7.3, 8.3, 9.3,
+ 7.4, 8.4, 9.4,
+ 7.5, 8.5, 9.5,
+ 7.6, 8.6, 9.6,
+ 7.7, 8.7, 9.7,
+ 7.8, 8.8, 9.8,
+ 7.9, 8.9, 9.9,
+ 7.0, 8.0, 9.0,
+ 7.1, 8.1, 9.1,
+};
+
+const double pylith::faults::CohesiveKinDataTet4::_fieldT[] = {
+ 4.1, 5.1, 6.1, // 2
+ 4.2, 5.2, 6.2, // 3
+ 4.3, 5.3, 6.3, // 4
+ 4.4, 5.4, 6.4, // 5
+ 4.5, 5.5, 6.5, // 6
+ 4.6, 5.6, 6.6, // 7
+ 1.2, 1.3, 1.4, // 8 (constraint force)
+ 4.8, 5.8, 6.8, // 9
+ 2.2, 2.3, 2.4, // 10 (constraint force)
+ 4.0, 5.0, 6.0, // 11
+ 3.2, 3.3, 3.4, // 12 (constraint force)
+};
+
+const int pylith::faults::CohesiveKinDataTet4::_numConstraintVert = 3;
+
+const double pylith::faults::CohesiveKinDataTet4::_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 int pylith::faults::CohesiveKinDataTet4::_constraintVertices[] = {
+ 8, 10, 12
+};
+
+const double pylith::faults::CohesiveKinDataTet4::_valsResidual[] = {
+ 0.0, 0.0, 0.0, // 2
+ -1.2, -1.3, -1.4, // 3
+ -2.2, -2.3, -2.4, // 4
+ -3.2, -3.3, -3.4, // 5
+ 0.0, 0.0, 0.0, // 6
+ +1.2, +1.3, +1.4, // 7
+ 0.0, 0.0, 0.0, // 8
+ +2.2, +2.3, +2.4, // 9
+ 0.0, 0.0, 0.0, // 10
+ +3.2, +3.3, +3.4, // 11
+ 0.0, 0.0, 0.0, // 12
+};
+
+const double pylith::faults::CohesiveKinDataTet4::_valsSlip[] = {
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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.07974939836, -0.32861938211, 0.04694562602, // 8
+ 0.0, 0.0, 0.0,
+ 1.00381374723, -0.33460458241, 0.08365114560, // 10
+ 0.0, 0.0, 0.0,
+ 0.90493237602, -0.32577565537, 0.10859188512, // 12
+};
+
+const double pylith::faults::CohesiveKinDataTet4::_valsJacobian[] = {
+ 0.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, // 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, // 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
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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, // 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,
+ -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, // 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,-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, // 4x
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 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, // 4y
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, // 4z
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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, // 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,-1.0, // 12
+ 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,
+ -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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 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,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 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,+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, // 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,
+ +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, // 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,+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, // 8x
+ 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, // 8y
+ 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, // 8z
+ -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, // 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,+1.0, // 10
+ 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,
+ +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, // 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,+1.0, 0.0, // 10
+ 0.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0, // 10x
+ 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, 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, // 10y
+ 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, 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, // 10z
+ 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,
+ 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, // 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,+1.0, // 12
+ 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,
+ +1.0, 0.0, 0.0, // 12
+ 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,+1.0, 0.0, // 12
+ 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, 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, // 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, 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, // 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,
+ 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,
+};
+
+pylith::faults::CohesiveKinDataTet4::CohesiveKinDataTet4(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);
+ finalSlipFilename = const_cast<char*>(_finalSlipFilename);
+ slipTimeFilename = const_cast<char*>(_slipTimeFilename);
+ peakRateFilename = const_cast<char*>(_peakRateFilename);
+ fieldTpdt = const_cast<double*>(_fieldTpdt);
+ fieldT = const_cast<double*>(_fieldT);
+ orientation = const_cast<double*>(_orientation);
+ constraintVertices = const_cast<int*>(_constraintVertices);
+ valsResidual = const_cast<double*>(_valsResidual);
+ valsSlip = const_cast<double*>(_valsSlip);
+ valsJacobian = const_cast<double*>(_valsJacobian);
+ numConstraintVert = _numConstraintVert;
+} // constructor
+
+pylith::faults::CohesiveKinDataTet4::~CohesiveKinDataTet4(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.hh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveKinDataTet4.hh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_faults_cohesivekindatatet4_hh)
+#define pylith_faults_cohesivekindatatet4_hh
+
+#include "CohesiveKinData.hh"
+
+namespace pylith {
+ namespace faults {
+ class CohesiveKinDataTet4;
+ } // pylith
+} // faults
+
+class pylith::faults::CohesiveKinDataTet4 : public CohesiveKinData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public:
+
+ /// Constructor
+ CohesiveKinDataTet4(void);
+
+ /// Destructor
+ ~CohesiveKinDataTet4(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* _finalSlipFilename; ///< Name of db for final slip
+ static const char* _slipTimeFilename; ///< Name of db for slip time
+ static const char* _peakRateFilename; ///< Name of db for peak rate
+ //@}
+
+ static const double _fieldTpdt[]; ///< Input field at time t+dt.
+ static const double _fieldT[]; ///< Input field at time t.
+
+ static const double _orientation[]; ///< Expected values for fault orientation.
+ static const int _constraintVertices[]; ///< Expected points for constraint vertices
+ static const double _valsResidual[]; ///< Expected values from residual calculation.
+ static const double _valsSlip[]; ///< Expected values from settting field.
+ static const double _valsJacobian[]; ///< Expected values from Jacobian calculation.
+ static const int _numConstraintVert; ///< Number of constraint vertices
+
+};
+
+#endif // pylith_faults_cohesivekindatatet4_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 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am 2007-06-11 04:25:02 UTC (rev 7124)
@@ -20,11 +20,17 @@
tri3_sliptime.spatialdb \
tri3_peakrate.spatialdb \
quad4.mesh \
+ quad4_finalslip.spatialdb \
+ quad4_sliptime.spatialdb \
+ quad4_peakrate.spatialdb \
tet4.mesh \
tet4_finalslip.spatialdb \
tet4_sliptime.spatialdb \
tet4_peakrate.spatialdb \
- hex8.mesh
+ hex8.mesh \
+ hex8_finalslip.spatialdb \
+ hex8_sliptime.spatialdb \
+ hex8_peakrate.spatialdb
noinst_TMP =
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8.mesh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8.mesh 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8.mesh 2007-06-11 04:25:02 UTC (rev 7124)
@@ -23,8 +23,8 @@
count = 2
num-corners = 8
simplices = {
- 0 0 2 3 1 4 6 7 5
- 1 4 6 7 5 8 10 11 9
+ 0 0 1 3 2 4 5 7 6
+ 1 4 5 7 6 8 9 11 10
}
material-ids = {
0 0
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_finalslip.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_finalslip.spatialdb 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_finalslip.spatialdb 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,17 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 3
+ value-names = left-lateral-slip reverse-slip fault-opening
+ value-units = m m m
+ num-locs = 4
+ data-dim = 2
+ space-dim = 3
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 3
+ }
+}
+0.0 -1.0 -1.0 2.3 -0.7 0.1
+0.0 1.0 -1.0 2.4 -0.8 0.2
+0.0 -1.0 1.0 2.5 -0.9 0.3
+0.0 1.0 1.0 2.6 -1.0 0.4
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_peakrate.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_peakrate.spatialdb 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_peakrate.spatialdb 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,17 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 1
+ value-names = slip-rate
+ value-units = m/s
+ num-locs = 4
+ data-dim = 2
+ space-dim = 3
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 3
+ }
+}
+0.0 -1.0 -1.0 1.5
+0.0 1.0 -1.0 1.6
+0.0 -1.0 1.0 1.7
+0.0 1.0 1.0 1.8
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_sliptime.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_sliptime.spatialdb 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_sliptime.spatialdb 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,17 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 1
+ value-names = slip-time
+ value-units = s
+ num-locs = 4
+ data-dim = 2
+ space-dim = 3
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 3
+ }
+}
+0.0 -1.0 -1.0 1.2
+0.0 1.0 -1.0 1.3
+0.0 -1.0 1.0 1.4
+0.0 1.0 1.0 1.5
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_finalslip.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_finalslip.spatialdb 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_finalslip.spatialdb 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,15 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 2
+ value-names = slip fault-opening
+ value-units = m m
+ num-locs = 2
+ data-dim = 1
+ space-dim = 2
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 2
+ }
+}
+0.0 +1.0 2.3 0.1
+0.0 -1.0 2.4 0.2
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_peakrate.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_peakrate.spatialdb 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_peakrate.spatialdb 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,15 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 1
+ value-names = slip-rate
+ value-units = m/s
+ num-locs = 2
+ data-dim = 1
+ space-dim = 2
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 2
+ }
+}
+0.0 +1.0 1.4
+0.0 -1.0 1.5
Added: short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_sliptime.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_sliptime.spatialdb 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/quad4_sliptime.spatialdb 2007-06-11 04:25:02 UTC (rev 7124)
@@ -0,0 +1,15 @@
+#SPATIAL.ascii 1
+SimpleDB {
+ num-values = 1
+ value-names = slip-time
+ value-units = s
+ num-locs = 2
+ data-dim = 1
+ space-dim = 2
+ cs-data = cartesian {
+ to-meters = 1.0
+ space-dim = 2
+ }
+}
+0.0 +1.0 1.2
+0.0 -1.0 1.3
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataHex3D.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -28,19 +28,19 @@
-1.7, -0.8, 1.8,
2.1, -1.7, 0.6,
2.3, 0.2, 1.9,
- -1.8, 0.3, 2.2
+ -1.8, 0.3, 2.2,
};
const double pylith::feassemble::GeomDataHex3D::_locations[] = {
- 0.0, 0.0, 0.0,
- 1.0, 0.0, 0.0,
- 0.0, 1.0, 0.0,
- 1.0, 1.0, 0.0,
- 0.0, 0.0, 1.0,
- 1.0, 0.0, 1.0,
- 0.0, 1.0, 1.0,
+ -1.0,-1.0,-1.0,
+ 1.0,-1.0,-1.0,
+ -1.0, 1.0,-1.0,
+ 1.0, 1.0,-1.0,
+ -1.0,-1.0, 1.0,
+ 1.0,-1.0, 1.0,
+ -1.0, 1.0, 1.0,
1.0, 1.0, 1.0,
- 0.2, 0.8, 0.7
+ -0.6, 0.6, 0.4
};
const double pylith::feassemble::GeomDataHex3D::_jacobian[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad2D.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -24,15 +24,15 @@
0.3, 0.1,
0.8, -0.2,
0.7, 1.2,
- -0.1, 1.6
+ -0.1, 1.6,
};
const double pylith::feassemble::GeomDataQuad2D::_locations[] = {
- 0.0, 0.0,
- 1.0, 0.0,
- 0.0, 1.0,
- 1.0, 1.0,
- 0.4, 0.7
+ -1.0, -1.0,
+ 1.0, -1.0,
+ -1.0, 1.0,
+ 1.0, 1.0,
+ -0.2, 0.4
};
const double pylith::feassemble::GeomDataQuad2D::_jacobian[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/GeomDataQuad3D.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -24,15 +24,15 @@
1.1, -0.9, 0.1,
1.0, 0.7, 0.8,
-0.4, 0.6, 1.2,
- -0.3, -1.3, -0.1
+ -0.3, -1.3, -0.1,
};
const double pylith::feassemble::GeomDataQuad3D::_locations[] = {
- 0.0, 0.0,
- 1.0, 0.0,
- 0.0, 1.0,
- 1.0, 1.0,
- 0.3, 0.8
+ -1.0, -1.0,
+ 1.0, -1.0,
+ -1.0, 1.0,
+ 1.0, 1.0,
+ -0.4, 0.6
};
const double pylith::feassemble::GeomDataQuad3D::_jacobian[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIOCubit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIOCubit.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIOCubit.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -183,8 +183,7 @@
void
pylith::meshio::TestMeshIOCubit::testOrientQuad(void)
{ // testOrientQuad
- // Expect vertices 0 and 1 to remain the same, but vertices 2 and 3
- // should be swapped
+ // Expect no change.
const int meshDim = 2;
const int numCells = 2;
@@ -194,8 +193,8 @@
6, 7, 8, 9
};
const int cellsE[] = {
- 0, 1, 3, 2,
- 6, 7, 9, 8
+ 0, 1, 2, 3,
+ 6, 7, 8, 9
};
int_array cells(cellsOrig, numCells*numCorners);
@@ -240,8 +239,7 @@
void
pylith::meshio::TestMeshIOCubit::testOrientHex(void)
{ // testOrientHex
- // Expect vertices 0 and 1 to remain the same, but vertices 2 and 3
- // should be swapped
+ // Expect no change.
const int meshDim = 3;
const int numCells = 2;
@@ -251,8 +249,8 @@
10, 11, 12, 13, 14, 15, 16, 17
};
const int cellsE[] = {
- 0, 1, 3, 2, 4, 5, 7, 6,
- 10, 11, 13, 12, 14, 15, 17, 16
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 10, 11, 12, 13, 14, 15, 16, 17
};
int_array cells(cellsOrig, numCells*numCorners);
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitHex.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -39,8 +39,8 @@
// PyLith order, not Cubit order
const int pylith::meshio::MeshDataCubitHex::_cells[] = {
- 0, 1, 3, 2, 4, 5, 7, 6,
- 4, 5, 7, 6, 8, 9, 11, 10
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 4, 5, 6, 7, 8, 9, 10, 11
};
const int pylith::meshio::MeshDataCubitHex::_materialIds[] = {
7, 8
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.cc 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshDataCubitQuad.cc 2007-06-11 04:25:02 UTC (rev 7124)
@@ -32,8 +32,8 @@
};
const int pylith::meshio::MeshDataCubitQuad::_cells[] = {
- 0, 1, 3, 2,
- 1, 4, 2, 5
+ 0, 1, 2, 3,
+ 1, 4, 5, 2
};
const int pylith::meshio::MeshDataCubitQuad::_materialIds[] = {
10, 11
Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATLagrange.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATLagrange.py 2007-06-10 03:14:33 UTC (rev 7123)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATLagrange.py 2007-06-11 04:25:02 UTC (rev 7124)
@@ -127,12 +127,12 @@
"""
vertices = numpy.array([[-1.0, -1.0],
[+1.0, -1.0],
- [-1.0, +1.0],
- [+1.0, +1.0]])
+ [+1.0, +1.0],
+ [-1.0, +1.0]])
quadPts = numpy.array([ [-1.0/3**0.5, -1.0/3**0.5],
[+1.0/3**0.5, -1.0/3**0.5],
- [-1.0/3**0.5, +1.0/3**0.5],
- [+1.0/3**0.5, +1.0/3**0.5] ])
+ [+1.0/3**0.5, +1.0/3**0.5],
+ [-1.0/3**0.5, +1.0/3**0.5] ])
quadWts = numpy.array( [1.0, 1.0, 1.0, 1.0])
# Compute basis fns and derivatives at quadrature points
@@ -158,6 +158,10 @@
self.quadWts = quadWts
self.basis = basis
self.basisDeriv = basisDeriv
+
+ print "quadPts\n",quadPts
+ print "basis\n",basis
+ print "basisDeriv\n",basisDeriv
return
@@ -180,22 +184,22 @@
return -(1+p[0])/4.0
def N2(self, p):
- return (1-p[0])*(1+p[1])/4.0
+ return (1+p[0])*(1+p[1])/4.0
def N2p(self, p):
- return -(1+p[1])/4.0
+ return (1+p[1])/4.0
def N2q(self, p):
- return (1-p[0])/4.0
+ return (1+p[0])/4.0
def N3(self, p):
- return (1+p[0])*(1+p[1])/4.0
+ return (1-p[0])*(1+p[1])/4.0
def N3p(self, p):
- return (1+p[1])/4.0
+ return -(1+p[1])/4.0
def N3q(self, p):
- return (1+p[0])/4.0
+ return (1-p[0])/4.0
# ----------------------------------------------------------------------
class Hex8(object):
@@ -206,20 +210,20 @@
"""
vertices = numpy.array([[-1.0, -1.0, -1.0],
[+1.0, -1.0, -1.0],
+ [+1.0, +1.0, -1.0],
[-1.0, +1.0, -1.0],
- [+1.0, +1.0, -1.0],
[-1.0, -1.0, +1.0],
[+1.0, -1.0, +1.0],
- [-1.0, +1.0, +1.0],
- [+1.0, +1.0, +1.0]])
+ [+1.0, +1.0, +1.0],
+ [-1.0, +1.0, +1.0]])
quadPts = numpy.array([ [-1.0/3**0.5, -1.0/3**0.5, -1.0/3**0.5],
[+1.0/3**0.5, -1.0/3**0.5, -1.0/3**0.5],
+ [+1.0/3**0.5, +1.0/3**0.5, -1.0/3**0.5],
[-1.0/3**0.5, +1.0/3**0.5, -1.0/3**0.5],
- [+1.0/3**0.5, +1.0/3**0.5, -1.0/3**0.5],
[-1.0/3**0.5, -1.0/3**0.5, +1.0/3**0.5],
[+1.0/3**0.5, -1.0/3**0.5, +1.0/3**0.5],
- [-1.0/3**0.5, +1.0/3**0.5, +1.0/3**0.5],
- [+1.0/3**0.5, +1.0/3**0.5, +1.0/3**0.5]])
+ [+1.0/3**0.5, +1.0/3**0.5, +1.0/3**0.5],
+ [-1.0/3**0.5, +1.0/3**0.5, +1.0/3**0.5]])
quadWts = numpy.array( [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])
# Compute basis fns and derivatives at quadrature points
@@ -279,29 +283,29 @@
return -(1+p[0])*(1-p[1])/8.0
def N2(self, p):
- return (1-p[0])*(1+p[1])*(1-p[2])/8.0
+ return (1+p[0])*(1+p[1])*(1-p[2])/8.0
def N2p(self, p):
- return -(1+p[1])*(1-p[2])/8.0
+ return (1+p[1])*(1-p[2])/8.0
def N2q(self, p):
- return (1-p[0])*(1-p[2])/8.0
-
+ return (1+p[0])*(1-p[2])/8.0
+
def N2r(self, p):
- return -(1-p[0])*(1+p[1])/8.0
-
+ return -(1+p[0])*(1+p[1])/8.0
+
def N3(self, p):
- return (1+p[0])*(1+p[1])*(1-p[2])/8.0
+ return (1-p[0])*(1+p[1])*(1-p[2])/8.0
def N3p(self, p):
- return (1+p[1])*(1-p[2])/8.0
+ return -(1+p[1])*(1-p[2])/8.0
def N3q(self, p):
- return (1+p[0])*(1-p[2])/8.0
-
+ return (1-p[0])*(1-p[2])/8.0
+
def N3r(self, p):
- return -(1+p[0])*(1+p[1])/8.0
-
+ return -(1-p[0])*(1+p[1])/8.0
+
def N4(self, p):
return (1-p[0])*(1-p[1])*(1+p[2])/8.0
@@ -327,29 +331,29 @@
return (1+p[0])*(1-p[1])/8.0
def N6(self, p):
- return (1-p[0])*(1+p[1])*(1+p[2])/8.0
+ return (1+p[0])*(1+p[1])*(1+p[2])/8.0
def N6p(self, p):
- return -(1+p[1])*(1+p[2])/8.0
+ return (1+p[1])*(1+p[2])/8.0
def N6q(self, p):
- return (1-p[0])*(1+p[2])/8.0
+ return (1+p[0])*(1+p[2])/8.0
def N6r(self, p):
- return (1-p[0])*(1+p[1])/8.0
-
+ return (1+p[0])*(1+p[1])/8.0
+
def N7(self, p):
- return (1+p[0])*(1+p[1])*(1+p[2])/8.0
+ return (1-p[0])*(1+p[1])*(1+p[2])/8.0
def N7p(self, p):
- return (1+p[1])*(1+p[2])/8.0
+ return -(1+p[1])*(1+p[2])/8.0
def N7q(self, p):
- return (1+p[0])*(1+p[2])/8.0
+ return (1-p[0])*(1+p[2])/8.0
def N7r(self, p):
- return (1+p[0])*(1+p[1])/8.0
-
+ return (1-p[0])*(1+p[1])/8.0
+
# ----------------------------------------------------------------------
class TestFIATLagrange(unittest.TestCase):
"""
More information about the cig-commits
mailing list