[cig-commits] r19004 - in short/3D/PyLith/branches/v1.6-revisedfault: libsrc/pylith/faults unittests/libtests/faults unittests/libtests/faults/data
brad at geodynamics.org
brad at geodynamics.org
Mon Oct 3 17:54:54 PDT 2011
Author: brad
Date: 2011-10-03 17:54:54 -0700 (Mon, 03 Oct 2011)
New Revision: 19004
Modified:
short/3D/PyLith/branches/v1.6-revisedfault/libsrc/pylith/faults/FaultCohesiveDyn.cc
short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/TestFaultCohesiveDyn.cc
short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc
short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTet4.cc
short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTri3.cc
short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTri3d.cc
short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/cohesivedyn.py
Log:
Updated test data for slip and opening cases.
Modified: short/3D/PyLith/branches/v1.6-revisedfault/libsrc/pylith/faults/FaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/libsrc/pylith/faults/FaultCohesiveDyn.cc 2011-10-04 00:25:12 UTC (rev 19003)
+++ short/3D/PyLith/branches/v1.6-revisedfault/libsrc/pylith/faults/FaultCohesiveDyn.cc 2011-10-04 00:54:54 UTC (rev 19004)
@@ -629,20 +629,6 @@
} // for
} // for
-#if 1 // debugging
- std::cout << "slipVertex: ";
- for (int iDim=0; iDim < spaceDim; ++iDim)
- std::cout << " " << slipVertex[iDim];
- std::cout << ", slipRateVertex: ";
- for (int iDim=0; iDim < spaceDim; ++iDim)
- std::cout << " " << slipRateVertex[iDim];
- std::cout << ", tractionVertex: ";
- for (int iDim=0; iDim < spaceDim; ++iDim)
- std::cout << " " << tractionTpdtVertex[iDim];
- std::cout << std::endl;
-#endif
-
-
// Get friction properties and state variables.
_friction->retrievePropsStateVars(v_fault);
@@ -663,11 +649,33 @@
} // for
} // for
+#if 1 // debugging
+ std::cout << "slipVertex: ";
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ std::cout << " " << slipVertex[iDim];
+ std::cout << ", slipRateVertex: ";
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ std::cout << " " << slipRateVertex[iDim];
+ std::cout << ", tractionVertex: ";
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ std::cout << " " << tractionTpdtVertex[iDim];
+ std::cout << ", dLagrangeTpdtVertex: ";
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ std::cout << " " << dLagrangeTpdtVertex[iDim];
+ std::cout << ", dLagrangeTpdtVertexGlobal: ";
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ std::cout << " " << dLagrangeTpdtVertexGlobal[iDim];
+ std::cout << std::endl;
+#endif
+
+
assert(dLagrangeTpdtVertexGlobal.size() ==
dLagrangeTpdtSection->getFiberDimension(v_fault));
dLagrangeTpdtSection->updatePoint(v_fault, &dLagrangeTpdtVertexGlobal[0]);
} // for
+ dLagrangeTpdtSection->view("dLagrange"); // DEBUGGING
+
// Solve sensitivity problem for negative side of the fault.
bool negativeSide = true;
_sensitivityUpdateJacobian(negativeSide, jacobian, *fields);
@@ -739,7 +747,7 @@
slipVertex[iDim] += orientationVertex[iDim*spaceDim+jDim] *
dispRelVertex[jDim];
dSlipVertex[iDim] += orientationVertex[iDim*spaceDim+jDim] *
- 2.0*sensDispRelVertex[jDim];
+ sensDispRelVertex[jDim];
} // for
} // for
@@ -791,11 +799,11 @@
} // for
-#if 0 // DEBUGGING
- dLagrangeTpdtSection->view("AFTER dLagrange");
- //dispTIncrSection->view("AFTER DISP INCR (t->t+dt)");
- dispRelSection->view("AFTER RELATIVE DISPLACEMENT");
- velRelSection->view("AFTER RELATIVE VELOCITY");
+#if 1 // DEBUGGING
+ //dLagrangeTpdtSection->view("AFTER dLagrange");
+ dispTIncrSection->view("AFTER DISP INCR (t->t+dt)");
+ //dispRelSection->view("AFTER RELATIVE DISPLACEMENT");
+ //velRelSection->view("AFTER RELATIVE VELOCITY");
#endif
} // constrainSolnSpace
@@ -1768,7 +1776,7 @@
_jacobian->assemble("final_assembly");
- //_jacobian->view(); // DEBUGGING
+ _jacobian->view(); // DEBUGGING
} // _sensitivityUpdateJacobian
// ----------------------------------------------------------------------
@@ -1782,7 +1790,7 @@
* so we compute L rather than extract entries from the Jacoiab.
*/
- const double signFault = (negativeSide) ? -1.0 : 1.0;
+ const double signFault = (negativeSide) ? 1.0 : -1.0;
// Get cell information
const int numQuadPts = _quadrature->numQuadPts();
@@ -1864,10 +1872,10 @@
for (int iBasis=0; iBasis < numBasis; ++iBasis) {
for (int jBasis=0; jBasis < numBasis; ++jBasis) {
- const double l = basisProducts[iBasis*numBasis+jBasis];
+ const double l = signFault * basisProducts[iBasis*numBasis+jBasis];
for (int iDim=0; iDim < spaceDim; ++iDim) {
- residualCell[iBasis*spaceDim+iDim] -=
- signFault * l * dLagrangeCell[jBasis*spaceDim+iDim];
+ residualCell[iBasis*spaceDim+iDim] +=
+ l * dLagrangeCell[jBasis*spaceDim+iDim];
} // for
} // for
} // for
@@ -1907,7 +1915,7 @@
// Update section view of field.
solution.scatterVectorToSection();
-#if 0 // DEBUGGING
+#if 1 // DEBUGGING
residual.view("SENSITIVITY RESIDUAL");
solution.view("SENSITIVITY SOLUTION");
#endif
Modified: short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/TestFaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/TestFaultCohesiveDyn.cc 2011-10-04 00:25:12 UTC (rev 19003)
+++ short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/TestFaultCohesiveDyn.cc 2011-10-04 00:54:54 UTC (rev 19004)
@@ -307,105 +307,105 @@
fault.timeStep(dt);
fault.constrainSolnSpace(&fields, t, jacobian);
- //residual.view("RESIDUAL"); // DEBUGGING
+ { // Check slip values
+ // Slip values should be adjusted based on the change in the
+ // Lagrange multipliers as reflected in the slipSlipE data member.
- { // Check solution values
- // Lagrange multipliers should be adjusted according to friction
- // as reflected in the fieldIncrSlipE data member.
- const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
- CPPUNIT_ASSERT(!sieveMesh.isNull());
- const ALE::Obj<SieveMesh::label_sequence>& vertices =
- sieveMesh->depthStratum(0);
+ // Get fault vertex info
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = fault._faultMesh->sieveMesh();
+ CPPUNIT_ASSERT(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
CPPUNIT_ASSERT(!vertices.isNull());
- const SieveMesh::label_sequence::iterator verticesBegin = vertices->begin();
- const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
+ const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
- // Get section containing solution (disp + Lagrange multipliers)
- const ALE::Obj<RealSection>& dispIncrSection =
- fields.get("dispIncr(t->t+dt)").section();
- CPPUNIT_ASSERT(!dispIncrSection.isNull());
+ // Get section containing slip
+ const ALE::Obj<RealSection>& slipSection =
+ fault.vertexField("slip").section();
+ CPPUNIT_ASSERT(!slipSection.isNull());
+ slipSection->view("SLIP"); // DEBUGGING
+
// Get expected values
- const double* valsE = _data->fieldIncrSlipE; // Expected values for dispIncr
+ const double* valsE = _data->slipSlipE;
int iVertex = 0; // variable to use as index into valsE array
const int fiberDimE = spaceDim; // number of values per point
const double tolerance = 1.0e-06;
- for (SieveMesh::label_sequence::iterator v_iter = verticesBegin;
- v_iter != verticesEnd;
- ++v_iter, ++iVertex) { // loop over all vertices in mesh
+ for (SieveMesh::label_sequence::iterator v_iter = verticesBegin; v_iter
+ != verticesEnd;
+ ++v_iter, ++iVertex) { // loop over fault vertices
// Check fiber dimension (number of values at point)
- const int fiberDim = dispIncrSection->getFiberDimension(*v_iter);
+ const int fiberDim = slipSection->getFiberDimension(*v_iter);
CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
- const double* vals = dispIncrSection->restrictPoint(*v_iter);
+ const double* vals = slipSection->restrictPoint(*v_iter);
CPPUNIT_ASSERT(0 != vals);
// Check values at point
for (int i = 0; i < fiberDimE; ++i) {
const int index = iVertex * spaceDim + i;
const double valE = valsE[index];
-#if 0 // DEBUGGING
- std::cout << "SOLUTION valE: " << valE
+#if 1 // DEBUGGING
+ std::cout << "SLIP valE: " << valE
<< ", val: " << vals[i]
<< ", error: " << fabs(1.0-vals[i]/valE)
<< std::endl;
#endif // DEBUGGING
- if (fabs(valE) > tolerance)
+ if (fabs(valE) > tolerance)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valE, tolerance);
else
CPPUNIT_ASSERT_DOUBLES_EQUAL(valE, vals[i], tolerance);
} // for
} // for
- } // Check solution values
+ } // Check slip values
- { // Check slip values
- // Slip values should be adjusted based on the change in the
- // Lagrange multipliers as reflected in the slipSlipE data member.
-
- // Get fault vertex info
- const ALE::Obj<SieveSubMesh>& faultSieveMesh = fault._faultMesh->sieveMesh();
- CPPUNIT_ASSERT(!faultSieveMesh.isNull());
- const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
- faultSieveMesh->depthStratum(0);
+ { // Check solution values
+ // Lagrange multipliers should be adjusted according to friction
+ // as reflected in the fieldIncrSlipE data member.
+ const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
+ CPPUNIT_ASSERT(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ sieveMesh->depthStratum(0);
CPPUNIT_ASSERT(!vertices.isNull());
- const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
- const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+ const SieveMesh::label_sequence::iterator verticesBegin = vertices->begin();
+ const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
- // Get section containing slip
- const ALE::Obj<RealSection>& slipSection =
- fault.vertexField("slip").section();
- CPPUNIT_ASSERT(!slipSection.isNull());
+ // Get section containing solution (disp + Lagrange multipliers)
+ const ALE::Obj<RealSection>& dispIncrSection =
+ fields.get("dispIncr(t->t+dt)").section();
+ CPPUNIT_ASSERT(!dispIncrSection.isNull());
// Get expected values
- const double* valsE = _data->slipSlipE;
+ const double* valsE = _data->fieldIncrSlipE; // Expected values for dispIncr
int iVertex = 0; // variable to use as index into valsE array
const int fiberDimE = spaceDim; // number of values per point
const double tolerance = 1.0e-06;
- for (SieveMesh::label_sequence::iterator v_iter = verticesBegin; v_iter
- != verticesEnd;
- ++v_iter, ++iVertex) { // loop over fault vertices
+ for (SieveMesh::label_sequence::iterator v_iter = verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter, ++iVertex) { // loop over all vertices in mesh
// Check fiber dimension (number of values at point)
- const int fiberDim = slipSection->getFiberDimension(*v_iter);
+ const int fiberDim = dispIncrSection->getFiberDimension(*v_iter);
CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
- const double* vals = slipSection->restrictPoint(*v_iter);
+ const double* vals = dispIncrSection->restrictPoint(*v_iter);
CPPUNIT_ASSERT(0 != vals);
// Check values at point
for (int i = 0; i < fiberDimE; ++i) {
const int index = iVertex * spaceDim + i;
const double valE = valsE[index];
-#if 0 // DEBUGGING
- std::cout << "SLIP valE: " << valE
+#if 1 // DEBUGGING
+ std::cout << "SOLUTION valE: " << valE
<< ", val: " << vals[i]
<< ", error: " << fabs(1.0-vals[i]/valE)
<< std::endl;
#endif // DEBUGGING
- if (fabs(valE) > tolerance)
+ if (fabs(valE) > tolerance)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valE, tolerance);
else
CPPUNIT_ASSERT_DOUBLES_EQUAL(valE, vals[i], tolerance);
} // for
} // for
- } // Check slip values
+ } // Check solution values
} // testConstrainSolnSpaceSlip
Modified: short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc 2011-10-04 00:25:12 UTC (rev 19003)
+++ short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc 2011-10-04 00:54:54 UTC (rev 19004)
@@ -103,209 +103,167 @@
8.0, 9.0, // 11
};
-// :TODO: Make sensible values for Jacobian for DOF on positive and
-// negative sides of the fault. Add semi-random values for other DOF.
const double pylith::faults::CohesiveDynDataQuad4::_jacobian[] = {
- 1, 0.1,
+ 0.1, 0.1, // 2x
0.2, 0.3,
0.4, 0.5,
0.6, 0.7,
0.8, 0.9,
- 1, 1.1,
+ 1.0, 1.1,
1.2, 1.3,
1.4, 1.5,
1.6, 1.7,
1.8, 1.9,
- 2, 1,
+ 2.0, 2.1, // 2y
2.1, 2.2,
2.3, 2.4,
2.5, 2.6,
2.7, 2.8,
- 2.9, 3,
+ 2.9, 3.0,
3.1, 3.2,
3.3, 3.4,
3.5, 3.6,
3.7, 3.8,
- 3.9, 4,
- 1, 4.1,
+ 3.9, 4.0, // 3x
+ 4.0, 4.1,
4.2, 4.3,
4.4, 4.5,
4.6, 4.7,
4.8, 4.9,
- 5, 5.1,
+ 5.0, 5.1,
5.2, 5.3,
5.4, 5.5,
5.6, 5.7,
- 5.8, 5.9,
- 6, 1,
+ 5.8, 5.9, // 3y
+ 6.0, 6.1,
6.1, 6.2,
6.3, 6.4,
6.5, 6.6,
6.7, 6.8,
- 6.9, 7,
+ 6.9, 7.0,
7.1, 7.2,
7.3, 7.4,
7.5, 7.6,
- 7.7, 7.8,
- 7.9, 8,
- 1, 8.1,
- 8.2, 8.3,
+ 7.7, 7.8, // 4x
+ 7.9, 8.0,
++4.0,-1.2, // 4
+-2.2,-2.3, // 5
8.4, 8.5,
8.6, 8.7,
8.8, 8.9,
- 9, 9.1,
- 9.2, -1,
+ 9.0, 9.1,
+ 9.2, 9.3,
9.3, 9.4,
- 9.5, 9.6,
- 9.7, 9.8,
- 9.9, 1,
- 10,10.1,
-10.2,10.3,
-10.4,10.5,
-10.6,10.7,
-10.8,10.9,
- -1, 11,
-11.1,11.2,
-11.3,11.4,
-11.5,11.6,
-11.7,11.8,
- 1,11.9,
- 12,12.1,
-12.2,12.3,
-12.4,12.5,
-12.6,12.7,
-12.8,12.9,
- 13, -1,
-13.1,13.2,
-13.3,13.4,
-13.5,13.6,
-13.7, 1,
-13.8,13.9,
- 14,14.1,
-14.2,14.3,
-14.4,14.5,
-14.6,14.7,
- -1,14.8,
-14.9, 15,
-15.1,15.2,
-15.3,15.4,
-15.5,15.6,
- 1,15.7,
-15.8,15.9,
- 16,16.1,
-16.2,16.3,
-16.4,16.5,
-16.6,16.7,
-16.8,16.9,
- 17,17.1,
-17.2,17.3,
-17.4,17.5,
-17.6, 1,
-17.7,17.8,
-17.9, 18,
-18.1,18.2,
-18.3,18.4,
-18.5,18.6,
-18.7,18.8,
-18.9, 19,
-19.1,19.2,
-19.3,19.4,
-19.5,19.6,
- 1,19.7,
-19.8,19.9,
- 20,20.1,
-20.2,20.3,
-20.4,20.5,
-20.6,20.7,
-20.8,20.9,
- 21,21.1,
-21.2,21.3,
-21.4,21.5,
-21.6, 1,
-21.7,21.8,
-21.9, 22,
-22.1,22.2,
-22.3,22.4,
-22.5,22.6,
-22.7,22.8,
-22.9, 23,
-23.1,23.2,
-23.3,23.4,
-23.5,23.6,
- 1,23.7,
-23.8,23.9,
- 24, 1,
-24.1,24.2,
-24.3,24.4,
-24.5,24.6,
-24.7,24.8,
-24.9, 25,
-25.1,25.2,
-25.3,25.4,
-25.5, 1,
-25.6,25.7,
- 1,25.8,
-25.9, 26,
-26.1,26.2,
-26.3,26.4,
-26.5,26.6,
-26.7,26.8,
-26.9, 27,
-27.1,27.2,
-27.3,27.4,
- 1,27.5,
-27.6,27.7,
-27.8, 1,
-27.9, 28,
-28.1,28.2,
-28.3,28.4,
-28.5,28.6,
-28.7,28.8,
-28.9, 29,
-29.1,29.2,
-29.3, 1,
-29.4,29.5,
- 1,29.6,
-29.7,29.8,
-29.9, 30,
-30.1, -1,
-30.2,30.3,
-30.4,30.5,
-30.6,30.7,
-30.8, 1,
-30.9, 31,
-31.1,31.2,
-31.3,31.4,
-31.5,31.6,
-31.7,31.8,
- -1,31.9,
- 32,32.1,
-32.2,32.3,
-32.4,32.5,
- 1,32.6,
-32.7,32.8,
-32.9, 33,
-33.1,33.2,
-33.3,33.4,
-33.5,33.6,
-33.7,33.8,
-33.9, -1,
- 34,34.1,
-34.2,34.3,
-34.4,34.5,
-34.6, 1,
-34.7,34.8,
-34.9, 35,
-35.1,35.2,
-35.3,35.4,
-35.5,35.6,
- -1,35.7,
-35.8,35.9,
- 36,36.1,
-36.2,36.3,
- 1,36.4,
-36.5,36.6,
-36.7,36.8,
+ 3.7, 4.8, // 4y
+ 3.9, 4.0,
+-1.2,+5.0, // 4
+-1.3,-3.2, // 5
+ 4.4, 5.5,
+ 4.6, 5.7,
+ 4.8, 5.9,
+ 4.0, 5.1,
+ 4.2, 5.3,
+ 4.3, 5.4,
+ 7.7, 7.8, // 5x
+ 7.9, 8.0,
+-2.2,-1.3, // 4
++4.1,-4.3, // 5
+ 8.4, 8.5,
+ 8.6, 8.7,
+ 8.8, 8.9,
+ 9.0, 9.1,
+ 9.2, 9.3,
+ 9.3, 9.4,
+ 3.7, 4.8, // 5y
+ 3.9, 4.0,
+-2.3,-3.2, // 4
+-4.3,+5.1, // 5
+ 4.4, 5.5,
+ 4.6, 5.7,
+ 4.8, 5.9,
+ 4.0, 5.1,
+ 4.2, 5.3,
+ 4.3, 5.4,
+ 0.1, 0.1, // 6x
+ 0.2, 0.3,
+ 0.4, 0.5,
+ 0.6, 0.7,
+ 0.8, 0.9,
+ 1.0, 1.1,
+ 1.2, 1.3,
+ 1.4, 1.5,
+ 1.6, 1.7,
+ 1.8, 1.9,
+ 2.0, 2.1, // 6y
+ 2.1, 2.2,
+ 2.3, 2.4,
+ 2.5, 2.6,
+ 2.7, 2.8,
+ 2.9, 3.0,
+ 3.1, 3.2,
+ 3.3, 3.4,
+ 3.5, 3.6,
+ 3.7, 3.8,
+ 3.9, 4.0, // 7x
+ 4.0, 4.1,
+ 4.2, 4.3,
+ 4.4, 4.5,
+ 4.6, 4.7,
+ 4.8, 4.9,
+ 5.0, 5.1,
+ 5.2, 5.3,
+ 5.4, 5.5,
+ 5.6, 5.7,
+ 5.8, 5.9, // 7y
+ 6.0, 6.1,
+ 6.1, 6.2,
+ 6.3, 6.4,
+ 6.5, 6.6,
+ 6.7, 6.8,
+ 6.9, 7.0,
+ 7.1, 7.2,
+ 7.3, 7.4,
+ 7.5, 7.6,
+ 7.7, 7.8, // 8x
+ 7.9, 8.0,
+ 8.4, 8.5,
+ 8.6, 8.7,
+ 8.8, 8.9,
+ 9.0, 9.1,
++5.0,-1.2, // 8
+-2.2,-2.3, // 9
+ 9.2, 9.3,
+ 9.3, 9.4,
+ 3.7, 4.8, // 8y
+ 3.9, 4.0,
+ 4.4, 5.5,
+ 4.6, 5.7,
+ 4.8, 5.9,
+ 4.0, 5.1,
+-1.2,+4.0, // 8
+-1.3,-3.2, // 9
+ 4.2, 5.3,
+ 4.3, 5.4,
+ 7.7, 7.8, // 9x
+ 7.9, 8.0,
+ 8.4, 8.5,
+ 8.6, 8.7,
+ 8.8, 8.9,
+ 9.0, 9.1,
+-2.2,-1.3, // 8
++5.1,-4.3, // 9
+ 9.2, 9.3,
+ 9.3, 9.4,
+ 3.7, 4.8, // 9y
+ 3.9, 4.0,
+ 4.4, 5.5,
+ 4.6, 5.7,
+ 4.8, 5.9,
+ 4.0, 5.1,
+-2.3,-3.2, // 8
+-4.3,+4.1, // 9
+ 4.2, 5.3,
+ 4.3, 5.4,
};
// ----------------------------------------------------------------------
@@ -358,37 +316,36 @@
// ----------------------------------------------------------------------
// Input
const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrSlip[] = {
- 9.1, 10.1,
- 9.2, 10.2,
- 9.3, 10.3, // 4
- 9.4, 10.4, // 5
- 9.5, 10.5,
- 9.6, 10.6,
- 9.7, 10.7, // 8
- 9.9, 10.9, // 9
- -9.8, -10.8, // 10
- -9.0, -10.0, // 11
+ 1.1, 2.1,
+ 1.2, 2.2,
+ 1.3, 2.3, // 4
+ 1.4, 2.4, // 5
+ 1.5, 2.5,
+ 1.6, 2.6,
+ 1.7, 2.7, // 8
+ 1.9, 2.9, // 9
+ 1.8, 2.8, // 10
+ 1.0, 2.0, // 11
};
// Output
-// :TODO: Update Lagrange multiplier values
const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrSlipE[] = {
- 9.1, 10.100000000000,
- 9.2, 10.200000000000,
- 9.3, 10.313079001869,
- 9.4, 10.405865253910,
- 9.5, 10.500000000000,
- 9.6, 10.600000000000,
- 9.7, 10.686920998131,
- 9.9, 10.894134746090,
- -9.4, -10.800000000000,
- -8.6, -10.000000000000,
+ 1.100000000000, 2.100000000000,
+ 1.200000000000, 2.200000000000,
+ 1.300000000000, 2.468370545405,
+ 1.400000000000, 3.350253402750,
+ 1.500000000000, 2.500000000000,
+ 1.600000000000, 2.600000000000,
+ 1.700000000000, 2.531629454595,
+ 1.900000000000, 1.949746597250,
+ 1.800000000000, -3.440000000000,
+ 1.000000000000, -3.600000000000,
};
// Update slip values based on changes in Lagrange multiplier values
const double pylith::faults::CohesiveDynDataQuad4::_slipSlipE[] = {
- 0.026158003737426, 0.0,
- 0.011730507820273, 0.0,
+ 0.336741090809, 0.000000000000,
+ 1.900506805500, 0.000000000000,
};
// ----------------------------------------------------------------------
@@ -396,35 +353,35 @@
// ----------------------------------------------------------------------
// Input
const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrOpen[] = {
- 9.1, 10.1,
- 9.2, 10.2,
- 9.3, 10.3, // 4
- 9.4, 10.4, // 5
- 9.5, 10.5,
- 9.6, 10.6,
- 9.7, 10.7, // 8
- 9.9, 10.9, // 9
- 9.8, 10.8, // 10
- 9.0, 10.0, // 11
+ 1.1, 2.1,
+ 1.2, 2.2,
+ 1.3, 2.3, // 4
+ 1.4, 2.4, // 5
+ 1.5, 2.5,
+ 1.6, 2.6,
+ 1.7, 2.7, // 8
+ 1.9, 2.9, // 9
+ -10.8, 2.8, // 10
+ -10.0, 2.0, // 11
};
// Output
const double pylith::faults::CohesiveDynDataQuad4::_fieldIncrOpenE[] = {
- 9.100000000000, 10.100000000000,
- 9.200000000000, 10.200000000000,
- 9.300000000000, 10.685047196672,
- 9.932709332305, 11.176949275526,
- 9.500000000000, 10.500000000000,
- 9.600000000000, 10.600000000000,
- 9.700000000000, 10.314952803328,
- 9.367290667695, 10.123050724474,
+ 1.100000000000, 2.100000000000,
+ 1.200000000000, 2.200000000000,
+ 3.837558167495, 2.192904776328,
+ 4.297022233334, 3.773022694556,
+ 1.500000000000, 2.500000000000,
+ 1.600000000000, 2.600000000000,
+ -0.837558167495, 2.807095223672,
+ -0.997022233334, 1.526977305444,
-8.800000000000, -9.800000000000,
-8.000000000000, -9.000000000000,
};
const double pylith::faults::CohesiveDynDataQuad4::_slipOpenE[] = {
- 0.770094393343286, 0.0,
- 1.553898551051246, 1.065418664609568,
+ -0.214190447343, 5.075116334990,
+ 2.746045389111, 5.794044466667,
};
// ----------------------------------------------------------------------
Modified: short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTet4.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTet4.cc 2011-10-04 00:25:12 UTC (rev 19003)
+++ short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTet4.cc 2011-10-04 00:54:54 UTC (rev 19004)
@@ -92,372 +92,370 @@
7.1, 8.1, 9.1, // 12
};
-// :TODO: Make sensible values for Jacobian for DOF on positive and
-// negative sides of the fault. Add semi-random values for other DOF.
const double pylith::faults::CohesiveDynDataTet4::_jacobian[] = {
- 1, 0.1, 0.2,
+ 1.0, 0.1, 0.2, // 2x
0.3, 0.4, 0.5,
0.6, 0.7, 0.8,
- 0.9, 1, 1.1,
+ 0.9, 1.0, 1.1,
1.2, 1.3, 1.4,
1.5, 1.6, 1.7,
- 1.8, 1.9, 2,
+ 1.8, 1.9, 2.0,
2.1, 2.2, 2.3,
2.4, 2.5, 2.6,
2.7, 2.8, 2.9,
- 3, 3.1, 3.2,
- 3.3, 1, 3.4,
- 3.5, 3.6, 3.7,
- 3.8, 3.9, 4,
- 4.1, 4.2, 4.3,
- 4.4, 4.5, 4.6,
- 4.7, 4.8, 4.9,
- 5, 5.1, 5.2,
- 5.3, 5.4, 5.5,
- 5.6, 5.7, 5.8,
- 5.9, 6, 6.1,
- 6.2, 6.3, 6.4,
- 6.5, 6.6, 1,
- 6.7, 6.8, 6.9,
- 7, 7.1, 7.2,
- 7.3, 7.4, 7.5,
- 7.6, 7.7, 7.8,
- 7.9, 8, 8.1,
- 8.2, 8.3, 8.4,
- 8.5, 8.6, 8.7,
- 8.8, 8.9, 9,
- 9.1, 9.2, 9.3,
- 9.4, 9.5, 9.6,
- 9.7, 9.8, 9.9,
- 1, 10, 10.1,
- 10.2, 10.3, 10.4,
- 10.5, 10.6, 10.7,
- 10.8, 10.9, 11,
- 11.1, 11.2, 11.3,
- 11.4, 11.5, 11.6,
- 11.7, 11.8, 11.9,
- 12, 12.1, -1,
- 12.2, 12.3, 12.4,
- 12.5, 12.6, 12.7,
- 12.8, 12.9, 13,
- 13.1, 1, 13.2,
- 13.3, 13.4, 13.5,
- 13.6, 13.7, 13.8,
- 13.9, 14, 14.1,
- 14.2, 14.3, 14.4,
- 14.5, 14.6, 14.7,
- 14.8, 14.9, 15,
- -1, 15.1, 15.2,
- 15.3, 15.4, 15.5,
- 15.6, 15.7, 15.8,
- 15.9, 16, 16.1,
- 16.2, 16.3, 1,
- 16.4, 16.5, 16.6,
- 16.7, 16.8, 16.9,
- 17, 17.1, 17.2,
- 17.3, 17.4, 17.5,
- 17.6, 17.7, 17.8,
- 17.9, 18, 18.1,
- 18.2, -1, 18.3,
- 18.4, 18.5, 18.6,
- 18.7, 18.8, 18.9,
- 19, 19.1, 19.2,
- 19.3, 19.4, 19.5,
- 1, 19.6, 19.7,
- 19.8, 19.9, 20,
- 20.1, 20.2, 20.3,
- 20.4, 20.5, 20.6,
- 20.7, 20.8, 20.9,
- 21, 21.1, 21.2,
- 21.3, 21.4, 21.5,
- 21.6, 21.7, -1,
- 21.8, 21.9, 22,
- 22.1, 22.2, 22.3,
- 22.4, 22.5, 22.6,
- 22.7, 1, 22.8,
- 22.9, 23, 23.1,
- 23.2, 23.3, 23.4,
- 23.5, 23.6, 23.7,
- 23.8, 23.9, 24,
- 24.1, 24.2, 24.3,
- 24.4, 24.5, 24.6,
- -1, 24.7, 24.8,
- 24.9, 25, 25.1,
- 25.2, 25.3, 25.4,
- 25.5, 25.6, 25.7,
- 25.8, 25.9, 1,
- 26, 26.1, 26.2,
- 26.3, 26.4, 26.5,
- 26.6, 26.7, 26.8,
- 26.9, 27, 27.1,
- 27.2, 27.3, 27.4,
- 27.5, 27.6, 27.7,
- 27.8, -1, 27.9,
- 28, 28.1, 28.2,
- 28.3, 28.4, 28.5,
- 28.6, 28.7, 28.8,
- 28.9, 29, 29.1,
- 1, 29.2, 29.3,
- 29.4, 29.5, 29.6,
- 29.7, 29.8, 29.9,
- 30, 30.1, 30.2,
- 30.3, 30.4, 30.5,
- 30.6, 30.7, 30.8,
- 30.9, 31, 31.1,
- 31.2, 31.3, -1,
- 31.4, 31.5, 31.6,
- 31.7, 31.8, 31.9,
- 32, 32.1, 32.2,
- 32.3, 1, 32.4,
- 32.5, 32.6, 32.7,
- 32.8, 32.9, 33,
- 33.1, 33.2, 33.3,
- 33.4, 33.5, 33.6,
- 33.7, 33.8, 33.9,
- 34, 34.1, 34.2,
- -1, 34.3, 34.4,
- 34.5, 34.6, 34.7,
- 34.8, 34.9, 35,
- 35.1, 35.2, 35.3,
- 35.4, 35.5, 1,
- 35.6, 35.7, 35.8,
- 35.9, 36, 36.1,
- 36.2, 36.3, 36.4,
- 36.5, 36.6, 36.7,
- 36.8, 36.9, 37,
- 37.1, 37.2, 37.3,
- 37.4, -1, 37.5,
- 37.6, 37.7, 37.8,
- 37.9, 38, 38.1,
- 38.2, 38.3, 38.4,
- 38.5, 38.6, 38.7,
- 1, 38.8, 38.9,
- 39, 39.1, 39.2,
- 39.3, 39.4, 39.5,
- 39.6, 39.7, 39.8,
- 39.9, 40, 40.1,
- 40.2, 40.3, 40.4,
- 40.5, 40.6, 40.7,
- 40.8, 40.9, 41,
- 41.1, 41.2, 41.3,
- 41.4, 41.5, 41.6,
- 41.7, 41.8, 41.9,
- 42, 1, 42.1,
- 42.2, 42.3, 42.4,
- 42.5, 42.6, 42.7,
- 42.8, 42.9, 43,
- 43.1, 43.2, 43.3,
- 43.4, 43.5, 43.6,
- 43.7, 43.8, 43.9,
- 44, 44.1, 44.2,
- 44.3, 44.4, 44.5,
- 44.6, 44.7, 44.8,
- 44.9, 45, 45.1,
- 45.2, 45.3, 1,
- 45.4, 45.5, 45.6,
- 45.7, 45.8, 45.9,
- 46, 46.1, 46.2,
- 46.3, 46.4, 46.5,
- 46.6, 46.7, 46.8,
- 46.9, 47, 47.1,
- 47.2, 47.3, 47.4,
- 47.5, 47.6, 47.7,
- 47.8, 47.9, 48,
- 48.1, 48.2, 48.3,
- 48.4, 48.5, 48.6,
- 1, 48.7, 48.8,
- 48.9, 49, 49.1,
- 49.2, 49.3, 49.4,
- 49.5, 49.6, 1,
- 49.7, 49.8, 49.9,
- 50, 50.1, 50.2,
- 50.3, 50.4, 50.5,
- 50.6, 50.7, 50.8,
- 50.9, 51, 51.1,
- 51.2, 51.3, 51.4,
- 51.5, 51.6, 51.7,
- 51.8, 1, 51.9,
- 52, 52.1, 52.2,
- 52.3, 52.4, 52.5,
- 1, 52.6, 52.7,
- 52.8, 52.9, 53,
- 53.1, 53.2, 53.3,
- 53.4, 53.5, 53.6,
- 53.7, 53.8, 53.9,
- 54, 54.1, 54.2,
- 54.3, 54.4, 54.5,
- 54.6, 54.7, 54.8,
- 54.9, 55, 1,
- 55.1, 55.2, 55.3,
- 55.4, 55.5, 55.6,
- 55.7, 1, 55.8,
- 55.9, 56, 56.1,
- 56.2, 56.3, 56.4,
- 56.5, 56.6, 56.7,
- 56.8, 56.9, 57,
- 57.1, 57.2, 57.3,
- 57.4, 57.5, 57.6,
- 57.7, 57.8, 57.9,
- 58, 58.1, 58.2,
- 1, 58.3, 58.4,
- 58.5, 58.6, 58.7,
- 58.8, 58.9, 59,
- 59.1, 59.2, 1,
- 59.3, 59.4, 59.5,
- 59.6, 59.7, 59.8,
- 59.9, 60, 60.1,
- 60.2, 60.3, 60.4,
- 60.5, 60.6, 60.7,
- 60.8, 60.9, 61,
- 61.1, 61.2, 61.3,
- 61.4, 1, 61.5,
- 61.6, 61.7, 61.8,
- 61.9, 62, 62.1,
- 1, 62.2, 62.3,
- 62.4, 62.5, 62.6,
- 62.7, 62.8, 62.9,
- 63, 63.1, 63.2,
- 63.3, 63.4, 63.5,
- 63.6, 63.7, 63.8,
- 63.9, 64, 64.1,
- 64.2, 64.3, 64.4,
- 64.5, 64.6, 1,
- 64.7, 64.8, 64.9,
- 65, 65.1, 65.2,
- 65.3, 1, 65.4,
- 65.5, 65.6, 65.7,
- 65.8, 65.9, 66,
- 66.1, 66.2, 66.3,
- 66.4, 66.5, 66.6,
- 66.7, 66.8, 66.9,
- 67, 67.1, 67.2,
- 67.3, 67.4, 67.5,
- 67.6, 67.7, 67.8,
- 1, 67.9, 68,
- 68.1, 68.2, 68.3,
- 68.4, 68.5, 68.6,
- 68.7, 68.8, 1,
- 68.9, 69, 69.1,
- 69.2, 69.3, 69.4,
- 69.5, 69.6, 69.7,
- 69.8, 69.9, 70,
- 70.1, 70.2, 70.3,
- 70.4, 70.5, 70.6,
- 70.7, 70.8, 70.9,
- 71, 1, 71.1,
- 71.2, 71.3, 71.4,
- 71.5, 71.6, 71.7,
- 1, 71.8, 71.9,
- 72, 72.1, 72.2,
- 72.3, 72.4, 72.5,
- 72.6, 72.7, 72.8,
- 72.9, 73, 73.1,
- 73.2, 73.3, 73.4,
- 73.5, 73.6, 73.7,
- 73.8, 73.9, 74,
- 74.1, 74.2, 1,
- 74.3, 74.4, 74.5,
- 74.6, 74.7, 74.8,
- 74.9, 1, 75,
- 75.1, 75.2, 75.3,
- 75.4, -1, 75.5,
- 75.6, 75.7, 75.8,
- 75.9, 76, 76.1,
- 76.2, 76.3, 76.4,
- 76.5, 1, 76.6,
- 76.7, 76.8, 76.9,
- 77, 77.1, 77.2,
- 77.3, 77.4, 77.5,
- 77.6, 77.7, 77.8,
- 77.9, 78, 78.1,
- 78.2, 78.3, 78.4,
- 78.5, 78.6, -1,
- 78.7, 78.8, 78.9,
- 79, 79.1, 79.2,
- 79.3, 79.4, 79.5,
- 79.6, 79.7, 1,
- 79.8, 79.9, 80,
- 80.1, 80.2, 80.3,
- 80.4, 80.5, 80.6,
- 80.7, 80.8, 80.9,
- 81, 81.1, 81.2,
- 81.3, 81.4, 81.5,
- -1, 81.6, 81.7,
- 81.8, 81.9, 82,
- 82.1, 82.2, 82.3,
- 82.4, 82.5, 82.6,
- 1, 82.7, 82.8,
- 82.9, 83, 83.1,
- 83.2, 83.3, 83.4,
- 83.5, 83.6, 83.7,
- 83.8, 83.9, 84,
- 84.1, 84.2, 84.3,
- 84.4, 84.5, 84.6,
- 84.7, 84.8, 84.9,
- 85, -1, 85.1,
- 85.2, 85.3, 85.4,
- 85.5, 85.6, 85.7,
- 85.8, 85.9, 86,
- 86.1, 1, 86.2,
- 86.3, 86.4, 86.5,
- 86.6, 86.7, 86.8,
- 86.9, 87, 87.1,
- 87.2, 87.3, 87.4,
- 87.5, 87.6, 87.7,
- 87.8, 87.9, 88,
- 88.1, 88.2, -1,
- 88.3, 88.4, 88.5,
- 88.6, 88.7, 88.8,
- 88.9, 89, 89.1,
- 89.2, 89.3, 1,
- 89.4, 89.5, 89.6,
- 89.7, 89.8, 89.9,
- 90, 90.1, 90.2,
- 90.3, 90.4, 90.5,
- 90.6, 90.7, 90.8,
- 90.9, 91, 91.1,
- -1, 91.2, 91.3,
- 91.4, 91.5, 91.6,
- 91.7, 91.8, 91.9,
- 92, 92.1, 92.2,
- 1, 92.3, 92.4,
- 92.5, 92.6, 92.7,
- 92.8, 92.9, 93,
- 93.1, 93.2, 93.3,
- 93.4, 93.5, 93.6,
- 93.7, 93.8, 93.9,
- 94, 94.1, 94.2,
- 94.3, 94.4, 94.5,
- 94.6, -1, 94.7,
- 94.8, 94.9, 95,
- 95.1, 95.2, 95.3,
- 95.4, 95.5, 95.6,
- 95.7, 1, 95.8,
- 95.9, 96, 96.1,
- 96.2, 96.3, 96.4,
- 96.5, 96.6, 96.7,
- 96.8, 96.9, 97,
- 97.1, 97.2, 97.3,
- 97.4, 97.5, 97.6,
- 97.7, 97.8, -1,
- 97.9, 98, 98.1,
- 98.2, 98.3, 98.4,
- 98.5, 98.6, 98.7,
- 98.8, 98.9, 1,
- 99, 99.1, 99.2,
- 99.3, 99.4, 99.5,
- 99.6, 99.7, 99.8,
- 99.9, 100,100.1,
-100.2,100.3,100.4,
-100.5,100.6,100.7,
- -1,100.8,100.9,
- 101,101.1,101.2,
-101.3,101.4,101.5,
-101.6,101.7,101.8,
- 1,101.9, 102,
-102.1,102.2,102.3,
-102.4,102.5,102.6,
-102.7,102.8,102.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 2y
+ 2.3, 4.4, 3.5,
+ 2.6, 4.7, 3.8,
+ 2.9, 4.0, 3.1,
+ 2.2, 4.3, 3.4,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 2z
+ 1.3, 7.4, 2.5,
+ 1.6, 7.7, 2.8,
+ 1.9, 7.0, 2.1,
+ 1.2, 7.3, 2.4,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 3x
+ +4.0, -1.1, -1.2, // 3
+ -1.3, -1.4, -1.5, // 4
+ -1.6, -1.7, -1.8, // 5
+ 0.3, 0.4, 0.5,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 3y
+ -1.1, +4.1, -2.3, // 3
+ -2.4, -2.5, -2.6, // 4
+ -2.7, -2.8, -2.9, // 5
+ 2.3, 4.4, 3.5,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 3z
+ -1.2, -2.3, +4.2, // 3
+ -1.0, -1.1, -1.2, // 4
+ -1.3, -1.4, -1.5, // 5
+ 1.5, 7.6, 2.7,
+ 1.3, 7.4, 2.5,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 4x
+ -1.3, -2.4, -1.0, // 3
+ +4.3, -0.2, -0.3, // 4
+ -0.4, -0.5, -0.6, // 5
+ 0.3, 0.4, 0.5,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 4y
+ -1.4, -2.5, -1.1, // 3
+ -0.2, +4.4, -0.9, // 4
+ -0.8, -0.7, -0.5, // 5
+ 2.3, 4.4, 3.5,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 4z
+ -1.5, -2.6, -1.2, // 3
+ -0.3, -0.9, +4.5, // 4
+ -1.1, -1.2, -1.3, // 5
+ 1.3, 7.4, 2.5,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 5x
+ -1.6, -2.7, -1.3, // 3
+ -0.4, -0.8, -1.1, // 4
+ +4.6, -1.8, -1.5, // 5
+ 0.3, 0.4, 0.5,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 1.0, 0.1, 0.2, // 5y
+ -1.7, -2.8, -1.4, // 3
+ -0.5, -0.7, -1.2, // 4
+ -1.8, +4.7, -1.1, // 5
+ 0.3, 0.4, 0.5,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 1.0, 7.1, 2.2, // 5z
+ -1.8, -2.9, -1.5, // 3
+ -0.6, -0.5, -1.3, // 4
+ -1.5, -1.1, +4.8, // 5
+ 1.3, 7.4, 2.5,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 6x
+ 0.3, 0.4, 0.5,
+ 0.6, 0.7, 0.8,
+ 0.9, 1.0, 1.1,
+ 1.2, 1.3, 1.4,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 6y
+ 2.3, 4.4, 3.5,
+ 2.6, 4.7, 3.8,
+ 2.9, 4.0, 3.1,
+ 2.2, 4.3, 3.4,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 6z
+ 1.3, 7.4, 2.5,
+ 1.6, 7.7, 2.8,
+ 1.9, 7.0, 2.1,
+ 1.2, 7.3, 2.4,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 7x
+ 0.3, 0.4, 0.5,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ +5.0, -1.1, -1.2, // 3
+ -1.3, -1.4, -1.5, // 4
+ -1.6, -1.7, -1.8, // 5
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 7y
+ 2.3, 4.4, 3.5,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ -1.1, +5.1, -2.3, // 7
+ -2.4, -2.5, -2.6, // 8
+ -2.7, -2.8, -2.9, // 9
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 7z
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.3, 7.4, 2.5,
+ -1.2, -2.3, +5.2, // 7
+ -1.0, -1.1, -1.2, // 8
+ -1.3, -1.4, -1.5, // 9
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 8x
+ 0.3, 0.4, 0.5,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ -1.3, -2.4, -1.0, // 7
+ +5.3, -0.2, -0.3, // 8
+ -0.4, -0.5, -0.6, // 9
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 8y
+ 2.3, 4.4, 3.5,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ -1.4, -2.5, -1.1, // 7
+ -0.2, +5.4, -0.9, // 8
+ -0.8, -0.7, -0.5, // 9
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 8z
+ 1.3, 7.4, 2.5,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ -1.5, -2.6, -1.2, // 7
+ -0.3, -0.9, +5.5, // 8
+ -1.1, -1.2, -1.3, // 9
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 9x
+ 0.3, 0.4, 0.5,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ -1.6, -2.7, -1.3, // 7
+ -0.4, -0.8, -1.1, // 8
+ +5.6, -1.8, -1.5, // 9
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 9y
+ 2.3, 4.4, 3.5,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ -1.7, -2.8, -1.4, // 7
+ -0.5, -0.7, -1.2, // 8
+ -1.8, +5.7, -1.1, // 9
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 9z
+ 1.3, 7.4, 2.5,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ -1.8, -2.9, -1.5, // 7
+ -0.6, -0.5, -1.3, // 8
+ -1.5, -1.1, +5.8, // 9
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 10x
+ 0.3, 0.4, 0.5,
+ 0.6, 0.7, 0.8,
+ 0.9, 1.0, 1.1,
+ 1.2, 1.3, 1.4,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 10y
+ 2.3, 4.4, 3.5,
+ 2.6, 4.7, 3.8,
+ 2.9, 4.0, 3.1,
+ 2.2, 4.3, 3.4,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 10z
+ 1.3, 7.4, 2.5,
+ 1.6, 7.7, 2.8,
+ 1.9, 7.0, 2.1,
+ 1.2, 7.3, 2.4,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 11x
+ 0.3, 0.4, 0.5,
+ 0.6, 0.7, 0.8,
+ 0.9, 1.0, 1.1,
+ 1.2, 1.3, 1.4,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 11y
+ 2.3, 4.4, 3.5,
+ 2.6, 4.7, 3.8,
+ 2.9, 4.0, 3.1,
+ 2.2, 4.3, 3.4,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 11z
+ 1.3, 7.4, 2.5,
+ 1.6, 7.7, 2.8,
+ 1.9, 7.0, 2.1,
+ 1.2, 7.3, 2.4,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
+ 1.0, 0.1, 0.2, // 12x
+ 0.3, 0.4, 0.5,
+ 0.6, 0.7, 0.8,
+ 0.9, 1.0, 1.1,
+ 1.2, 1.3, 1.4,
+ 1.5, 1.6, 1.7,
+ 1.8, 1.9, 2.0,
+ 2.1, 2.2, 2.3,
+ 2.4, 2.5, 2.6,
+ 2.7, 2.8, 2.9,
+ 3.0, 3.1, 3.2,
+ 2.0, 4.1, 3.2, // 12y
+ 2.3, 4.4, 3.5,
+ 2.6, 4.7, 3.8,
+ 2.9, 4.0, 3.1,
+ 2.2, 4.3, 3.4,
+ 2.5, 4.6, 3.7,
+ 2.8, 4.9, 3.0,
+ 2.1, 4.2, 3.3,
+ 2.4, 4.5, 3.6,
+ 2.7, 4.8, 3.9,
+ 2.0, 4.1, 3.2,
+ 1.0, 7.1, 2.2, // 12z
+ 1.3, 7.4, 2.5,
+ 1.6, 7.7, 2.8,
+ 1.9, 7.0, 2.1,
+ 1.2, 7.3, 2.4,
+ 1.5, 7.6, 2.7,
+ 1.8, 7.9, 2.0,
+ 1.1, 7.2, 2.3,
+ 1.4, 7.5, 2.6,
+ 1.7, 7.8, 2.9,
+ 1.0, 7.1, 2.2,
};
// ----------------------------------------------------------------------
@@ -514,38 +512,38 @@
// ----------------------------------------------------------------------
// Input
const double pylith::faults::CohesiveDynDataTet4::_fieldIncrSlip[] = {
- 8.1, 9.1, 10.1,
- 8.2, 9.2, 10.2, // 3
- 8.3, 9.3, 10.3, // 4
- 8.4, 9.4, 10.4, // 5
- 8.5, 9.5, 10.5,
- 8.6, 9.6, 10.6, // 7
- 8.8, 9.8, 10.8, // 8
- 8.0, 9.0, 10.0, // 9
- 8.7, 9.7, -10.7, // 10
- 8.9, 9.9, -10.9, // 11
- 8.1, 9.1, -10.1, // 12
+ 1.1, 2.1, 3.1,
+ 1.2, 2.2, 3.2, // 3
+ 1.3, 2.3, 3.3, // 4
+ 1.4, 2.4, 3.4, // 5
+ 1.5, 2.5, 3.5,
+ 1.6, 2.6, 3.6, // 7
+ 1.8, 2.8, 3.8, // 8
+ 1.0, 2.0, 3.0, // 9
+ 9.7, 2.7, 3.7, // 10
+ 9.9, 2.9, 3.9, // 11
+ 9.1, 2.1, 3.1, // 12
};
// Output
const double pylith::faults::CohesiveDynDataTet4::_fieldIncrSlipE[] = {
- 8.100000000000, 9.100000000000, 10.100000000000,
- 8.200000000000, 8.391727731714, 10.956284985259,
- 8.300000000000, 8.791277340217, 10.815192651071,
- 8.400000000000, 9.060755249362, 10.758883268626,
- 8.500000000000, 9.500000000000, 10.500000000000,
- 8.600000000000, 10.408272268286, 9.843715014741,
- 8.800000000000, 10.308722659783, 10.284807348929,
- 8.000000000000, 9.339244750638, 9.641116731374,
- -7.300777685147, -8.252092036995, -10.700000000000,
- -7.500201409882, -8.452606339630, -10.900000000000,
- -6.702681322117, -7.650402548711, -10.100000000000,
+ 1.100000000000, 2.100000000000, 3.100000000000,
+ 1.200000000000, 2.433903699854, 3.235410526853,
+ 1.300000000000, 2.308933719863, 3.314292166303,
+ 1.400000000000, 2.517316497418, 3.471580524964,
+ 1.500000000000, 2.500000000000, 3.500000000000,
+ 1.600000000000, 2.366096300146, 3.564589473147,
+ 1.800000000000, 2.791066280137, 3.785707833697,
+ 1.000000000000, 1.882683502582, 2.928419475036,
+ 9.700000000000, -1.935106067360, -1.748282570405,
+ 9.900000000000, -1.959241090539, -1.782841275376,
+ 9.100000000000, -1.865391385620, -1.642919108291,
};
const double pylith::faults::CohesiveDynDataTet4::_slipSlipE[] = {
- -1.616544536572, -1.512569970519, 0.000000000000,
- -1.017445319566, -1.030385302142, 0.000000000000,
- -0.678489501275, -0.717766537252, 0.000000000000,
+ 0.467807399707, -0.070821053706, 0.000000000000,
+ 0.017867439727, -0.028584332606, 0.000000000000,
+ 0.234632994837, -0.143161049929, 0.000000000000,
};
// ----------------------------------------------------------------------
@@ -553,38 +551,38 @@
// ----------------------------------------------------------------------
// Input
const double pylith::faults::CohesiveDynDataTet4::_fieldIncrOpen[] = {
- 8.1, 9.1, 10.1,
- 8.2, 9.2, 10.2, // 3
- 8.3, 9.3, 10.3, // 4
- 8.4, 9.4, 10.4, // 5
- 8.5, 9.5, 10.5,
- 8.6, 9.6, 10.6, // 7
- 8.8, 9.8, 10.8, // 8
- 8.0, 9.0, 10.0, // 9
- 8.7, 9.7, 10.7, // 10
- 8.9, 9.9, 10.9, // 11
- 8.1, 9.1, 10.1, // 12
+ 1.1, 2.1, 3.1,
+ 1.2, 2.2, 3.2, // 3
+ 1.3, 2.3, 3.3, // 4
+ 1.4, 2.4, 3.4, // 5
+ 1.5, 2.5, 3.5,
+ 1.6, 2.6, 3.6, // 7
+ 1.8, 2.8, 3.8, // 8
+ 1.0, 2.0, 3.0, // 9
+ -20.7, 2.7, 3.7, // 10
+ -20.9, 2.9, 3.9, // 11
+ -20.1, 2.1, 3.1, // 12
};
// Output
const double pylith::faults::CohesiveDynDataTet4::_fieldIncrOpenE[] = {
- 8.100000000000, 9.100000000000, 10.100000000000,
- 8.200000000000, 8.707485448105, 11.300792216319,
- 8.300000000000, 9.089936432069, 11.135493258511,
- 8.400000000000, 9.353421152116, 11.068689140292,
- 8.500000000000, 9.500000000000, 10.500000000000,
- 8.600000000000, 10.092514551895, 9.499207783681,
- 8.800000000000, 10.010063567931, 9.964506741489,
- 8.000000000000, 9.046578847884, 9.331310859708,
+ 1.100000000000, 2.100000000000, 3.100000000000,
+ 2.475088478561, 2.213019936374, 2.881149654501,
+ 2.516111596990, 1.955359213432, 2.906382357903,
+ 2.454638633592, 2.326073874055, 3.211721621635,
+ 1.500000000000, 2.500000000000, 3.500000000000,
+ 0.324911521439, 2.586980063626, 3.918850345499,
+ 0.583888403010, 3.144640786568, 4.193617642097,
+ -0.054638633592, 2.073926125945, 3.188278378365,
-7.700000000000, -8.700000000000, -9.700000000000,
-7.900000000000, -8.900000000000, -9.900000000000,
-7.100000000000, -8.100000000000, -9.100000000000,
};
const double pylith::faults::CohesiveDynDataTet4::_slipOpenE[] = {
- -0.985029103789, -2.201584432637, 0.000000000000,
- -0.420127135861, -1.670986517021, 0.000000000000,
- -0.093157695768, -1.337378280584, 0.000000000000,
+ 0.026039872749, 0.637700690999, 2.550176957122,
+ -0.689281573136, 0.787235284195, 2.432223193980,
+ -0.147852251890, 0.376556756729, 2.109277267185,
};
// ----------------------------------------------------------------------
Modified: short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTri3.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTri3.cc 2011-10-04 00:25:12 UTC (rev 19003)
+++ short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTri3.cc 2011-10-04 00:54:54 UTC (rev 19004)
@@ -103,10 +103,8 @@
8.8, 9.8, // 9
};
-// :TODO: Make sensible values for Jacobian for DOF on positive and
-// negative sides of the fault. Add semi-random values for other DOF.
const double pylith::faults::CohesiveDynDataTri3::_jacobian[] = {
- 1.0, 1.1, // 2x (values for row associated with vertex with label 2, x DOF)
+ 1.0, 1.1, // 2x
0.1, 1.2,
0.2, 1.3,
0.3, 1.4,
@@ -122,86 +120,86 @@
2.6, 3.5,
2.7, 3.6,
2.8, 3.7,
- 4.1, 5.1, // 3x (values for row associated with vertex label 3, x DOF)
- 1.0, 5.2,
- 4.2, 5.3,
+ 4.1, 5.1, // 3x
+ +4.0,-1.2, // 3
+ -2.2,-2.3, // 4
4.3, 5.4,
4.4, 5.5,
4.5, 5.6,
- 4.6,+1.0, // 8 (column for DOF associated with vertex label 8)
+ 4.6,+1.0,
4.7, 5.7,
6.1, 7.1, // 3y
- 6.2, 1.0,
- 6.3, 7.2,
+ -1.2,+5.0, // 3
+ -1.3,-3.2, // 4
6.4, 7.3,
6.5, 7.4,
6.6, 7.5,
- +1.0, 7.6, // 8
+ 1.0, 7.6,
6.7, 7.7,
8.1, 9.1, // 4x
- 8.2, 9.2,
- 1.0, 9.3,
+ -2.2,-1.3, // 3
+ +4.1,-4.3, // 4
8.3, 9.4,
8.4, 9.5,
8.5, 9.6,
8.6, 9.7,
- 8.7,+1.0, // 9
- 10.1, 11.1, // 4y
- 10.2, 11.2,
- 10.3, 1.0,
- 10.4, 11.3,
- 10.5, 11.4,
- 10.6, 11.5,
- 10.7, 11.6,
- +1.0, 11.7, // 9
- 12.1, 13.1, // 5x
- 12.2, 13.2,
- 12.3, 13.3,
- 1.0, 13.4,
- 12.4, 13.5,
- 12.5, 13.6,
- 12.6, 13.7,
- 12.7, 13.8,
- 14.1, 15.1, // 5y
- 14.2, 15.2,
- 14.3, 15.3,
- 14.4, 1.0,
- 14.5, 15.4,
- 14.6, 15.5,
- 14.7, 15.6,
- 14.8, 15.7,
- 16.1, 17.1, // 6x
- 16.2, 17.2,
- 16.3, 17.3,
- 16.4, 17.4,
- 1.0, 17.5,
- 16.5, 17.6,
- 16.6,-1.0, // 8
- 16.7, 17.7,
- 18.1, 19.1, // 6y
- 18.2, 19.2,
- 18.3, 19.3,
- 18.4, 19.4,
- 18.5, 1.0,
- 18.6, 19.5,
- -1.0, 19.6, // 8
- 18.7, 19.7,
- 20.1, 21.1, // 7x
- 20.2, 21.2,
- 20.3, 21.3,
- 20.4, 21.4,
- 20.5, 21.5,
- 1.0, 21.6,
- 20.6, 21.7,
- 20.7,-1.0, // 9
- 22.1, 23.1, // 7y
- 22.2, 23.2,
- 22.3, 23.3,
- 22.4, 23.4,
- 22.5, 23.5,
- 22.6, 1.0,
- 22.7, 23.6,
- -1.0, 23.7, // 9
+ 8.7,+1.0,
+ 1.1, 1.1, // 4y
+ -2.3,-3.2, // 3
+ -4.3,+5.1, // 4
+ 1.4, 1.3,
+ 1.5, 1.4,
+ 1.6, 1.5,
+ 1.7, 1.6,
+ 1.0, 1.7,
+ 2.1, 3.1, // 5x
+ 2.2, 3.2,
+ 2.3, 3.3,
+ 1.0, 3.4,
+ 2.4, 3.5,
+ 2.5, 3.6,
+ 2.6, 3.7,
+ 2.7, 3.8,
+ 4.1, 5.1, // 5y
+ 4.2, 5.2,
+ 4.3, 5.3,
+ 4.4, 1.0,
+ 4.5, 5.4,
+ 4.6, 5.5,
+ 4.7, 5.6,
+ 4.8, 5.7,
+ 6.1, 7.1, // 6x
+ 6.2, 7.2,
+ 6.3, 7.3,
+ 6.4, 7.4,
+ +5.0,-1.2, // 6
+ -2.2,-2.3, // 7
+ 6.6, 1.0,
+ 6.7, 7.7,
+ 8.1, 9.1, // 6y
+ 8.2, 9.2,
+ 8.3, 9.3,
+ 8.4, 9.4,
+ -1.2,+4.0, // 6
+ -1.3,-3.2, // 7
+ 1.0, 9.6,
+ 8.7, 9.7,
+ 0.1, 1.1, // 7x
+ 0.2, 1.2,
+ 0.3, 1.3,
+ 0.4, 1.4,
+ -2.2,-1.3, // 6
+ +5.1,-4.3, // 7
+ 0.6, 1.7,
+ 0.7, 1.0,
+ 2.1, 3.1, // 7y
+ 2.2, 3.2,
+ 2.3, 3.3,
+ 2.4, 3.4,
+ -2.3,-3.2, // 6
+ -4.3,+4.1, // 7
+ 2.7, 3.6,
+ 1.0, 3.7, // 9
24.1, 25.1, // 8x (rows associated with Lagrange multiplier vertex label 8)
24.2,+1.0, // 3
@@ -286,31 +284,31 @@
// ----------------------------------------------------------------------
// Input
const double pylith::faults::CohesiveDynDataTri3::_fieldIncrSlip[] = {
- 9.1, 10.1,
- 9.2, 10.2, // 3
- 9.3, 10.3, // 4
- 9.4, 10.4,
- 9.5, 10.5, // 6
- 9.7, 10.7, // 7
- 9.6, -10.6, // 8
- 9.8, -10.8, // 9
+ 9.1, 7.1,
+ 9.2, 7.2, // 3
+ 9.3, 7.3, // 4
+ 9.4, 7.4,
+ 9.5, 7.5, // 6
+ 9.7, 7.7, // 7
+ 1.6, 2.6, // 8
+ 1.8, 2.8, // 9
};
// Output
const double pylith::faults::CohesiveDynDataTri3::_fieldIncrSlipE[] = {
- 9.1, 10.100000000000,
- 9.2, 9.304186565683,
- 9.3, 10.066643380561,
- 9.4, 10.400000000000,
- 9.5, 11.395813434317,
- 9.7, 10.933356619439,
- -8.0, -10.600000000000,
- -8.2, -10.800000000000,
+ 9.100000000000, 7.100000000000,
+ 9.200000000000, 7.375196378327,
+ 9.300000000000, 8.288777189348,
+ 9.400000000000, 7.400000000000,
+ 9.500000000000, 7.324803621673,
+ 9.700000000000, 6.711222810652,
+ 1.600000000000, -3.480000000000,
+ 1.800000000000, -3.440000000000,
};
const double pylith::faults::CohesiveDynDataTri3::_slipSlipE[] = {
- -1.791626868633122, 0.0,
- -0.466713238878134, 0.0,
+ 0.350392756653, 0.000000000000,
+ 1.977554378695, 0.000000000000,
};
// ----------------------------------------------------------------------
@@ -318,31 +316,31 @@
// ----------------------------------------------------------------------
// Input
const double pylith::faults::CohesiveDynDataTri3::_fieldIncrOpen[] = {
- 9.1, 10.1,
- 9.2, 10.2, // 3
- 9.3, 10.3, // 4
- 9.4, 10.4,
- 9.5, 10.5, // 6
- 9.7, 10.7, // 7
- 9.6, 10.6, // 8
- 9.8, 10.8, // 9
+ 9.1, 7.1,
+ 9.2, 7.2, // 3
+ 9.3, 7.3, // 4
+ 9.4, 7.4,
+ 9.5, 7.5, // 6
+ 9.7, 7.7, // 7
+ -10.6, 2.6, // 8
+ -10.8, 2.8, // 9
};
// Output
const double pylith::faults::CohesiveDynDataTri3::_fieldIncrOpenE[] = {
- 9.100000000000, 10.100000000000,
- 9.200000000000, 10.851688943849,
-10.191208845155, 11.487449638489,
- 9.400000000000, 10.400000000000,
- 9.500000000000, 9.848311056151,
- 8.808791154845, 9.512550361511,
--8.600000000000, -9.600000000000,
--8.800000000000, -9.800000000000,
+ 9.100000000000, 7.100000000000,
+ 11.868906669946, 7.109969358633,
+ 12.354802377535, 8.769332161050,
+ 9.400000000000, 7.400000000000,
+ 6.831093330054, 7.590030641367,
+ 6.645197622465, 6.230667838950,
+ -8.600000000000, -9.600000000000,
+ -8.800000000000, -9.800000000000,
};
const double pylith::faults::CohesiveDynDataTri3::_slipOpenE[] = {
- 1.303377887698464, 0.0,
- 2.374899276978848, 1.782417690310881,
+ -0.180061282734, 5.337813339891,
+ 2.938664322101, 6.109604755069,
};
// ----------------------------------------------------------------------
Modified: short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTri3d.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTri3d.cc 2011-10-04 00:25:12 UTC (rev 19003)
+++ short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/CohesiveDynDataTri3d.cc 2011-10-04 00:54:54 UTC (rev 19004)
@@ -117,13 +117,11 @@
6.7, 8.7, // 10
6.9, 8.9, // 11
7.1, 9.1, // 12
- 6.8, 8.8, // 13
- 6.0, 8.0, // 14
- 7.2, 9.2, // 15
+ -3.8, 4.8, // 13
+ 3.0, 4.0, // 14
+ 3.2, 4.2, // 15
};
-// :TODO: Make sensible values for Jacobian for DOF on positive and
-// negative sides of the fault. Add semi-random values for other DOF.
const double pylith::faults::CohesiveDynDataTri3d::_jacobian[] = {
1.0, 1.1, // 4x
1.1, 2.1,
@@ -150,78 +148,54 @@
3.1, 4.0,
3.2, 4.1,
6.1, 7.2, // 5x
- 6.0, 7.3,
- 6.9, 7.4,
+ +6.0,-1.0, // 5
+ -1.1,-1.2, // 6
6.8, 7.5,
- 6.7, 7.6,
+ -1.3,-1.4, // 8
6.6, 7.7,
6.5, 7.8,
6.4, 7.9,
6.3, 7.0,
- -0.70710678118654757, +0.70710678118654757, // 13
+ 6.5, 6.6,
6.2, 7.1,
6.1, 7.2,
3.0, 5.1, // 5y
- 3.1, 5.2,
- 3.2, 5.2,
+ -1.0,+6.1, // 5
+ -0.9,-0.8, // 6
3.3, 5.1,
- 3.4, 5.3,
+ -0.7,-0.6, // 8
3.5, 5.0,
3.6, 5.4,
3.7, 5.9,
3.8, 5.5,
- +0.70710678118654757, +0.70710678118654757, // 13
+ 3.9, 5.5,
4.2, 5.6,
4.1, 5.8,
3.0, 2.7, // 6x
- 3.9, 2.7,
- 3.8, 2.8,
+ -1.1,-0.9, // 5
+ +6.2,-2.1, // 6
3.7, 2.6,
- 3.6, 2.9,
+ -2.2,-2.3, // 8
3.5, 2.5,
3.4, 2.1,
3.3, 2.4,
3.2, 2.2,
3.1, 2.3,
- 0.0,+1.0, // 14
+ 2.0, 2.0,
3.0, 2.4,
4.1, 6.1, // 6y
- 4.1, 6.6,
- 4.2, 6.2,
- 4.2, 6.5,
+ -1.2,-0.8, // 5
+ -2.1,+6.3, // 6
4.3, 6.3,
+ -1.4,-1.5, // 8
4.3, 6.4,
4.4, 6.4,
4.4, 6.3,
4.5, 6.5,
4.5, 6.2,
- +1.0, 0.0, // 14
+ 4.6, 7.0,
4.6, 6.1,
- 4.6, 6.6, // 7x
- 5.7, 9.7,
- 5.7, 9.9,
- 5.8, 9.8,
- 5.8, 9.8,
- 5.9, 9.9,
- 5.1, 9.7,
- 5.2, 9.1,
- 5.3, 9.6,
- 5.1, 9.2,
- 5.4, 9.5,
- 5.2, 9.3,
- 5.5, 9.4, // 7y
- 6.3, 9.4,
- 6.6, 9.3,
- 6.4, 9.5,
- 6.7, 9.2,
- 6.5, 9.6,
- 6.8, 9.1,
- 6.6, 9.7,
- 7.9, 8.9,
- 7.7, 8.8,
- 7.1, 8.8,
- 7.8, 8.9,
- 7.2, 8.7, // 8x
+ 7.2, 8.7, // 7x
7.9, 8.1,
7.3, 8.6,
7.1, 8.2,
@@ -232,8 +206,8 @@
7.6, 8.3,
7.4, 8.5,
7.7, 8.6,
- -1.0, 0.0, // 15
- 6.5, 3.3, // 8y
+ 7.8, 8.7,
+ 6.5, 3.3, // 7y
6.4, 3.4,
6.3, 3.8,
6.2, 3.9,
@@ -244,7 +218,31 @@
5.6, 3.4,
5.5, 3.3,
5.4, 3.2,
- 0.0,+1.0, // 15
+ 5.5, 3.3,
+ 4.6, 6.6, // 8x
+ -1.3,-0.7, // 5
+ -2.2,-1.4, // 6
+ 5.8, 9.8,
+ +6.4,-1.1, // 8
+ 5.9, 9.9,
+ 5.1, 9.7,
+ 5.2, 9.1,
+ 5.3, 9.6,
+ 5.1, 9.2,
+ 5.4, 9.5,
+ 5.2, 9.3,
+ 5.5, 9.4, // 8y
+ -1.4,-0.6, // 5
+ -2.3,-1.5, // 6
+ 6.4, 9.5,
+ -1.1,+6.5, // 8
+ 6.5, 9.6,
+ 6.8, 9.1,
+ 6.6, 9.7,
+ 7.9, 8.9,
+ 7.7, 8.8,
+ 7.1, 8.8,
+ 7.8, 8.9,
4.4, 2.0, // 9x
4.3, 2.1,
4.2, 2.2,
@@ -269,97 +267,97 @@
2.7, 3.8,
2.8, 3.7,
2.9, 3.6,
- 1.0, 3.5, // 10x
- 1.1, 4.4,
- 1.2, 4.3,
- 1.3, 4.2,
- 1.4, 4.1,
- 1.5, 4.0,
- 1.6, 4.1,
- 1.7, 4.2,
- 1.8, 4.3,
- +0.70710678118654757, -0.70710678118654757, // 13
- 1.9, 5.4,
- 9.0, 5.5,
- 8.0, 4.7, // 10y
- 7.1, 4.5,
- 6.2, 4.4,
- 6.3, 4.6,
- 6.4, 4.7,
- 6.5, 4.4,
- 4.6, 4.8,
- 4.7, 4.4,
- 4.8, 4.2,
- -0.70710678118654757, -0.70710678118654757, // 13
- 6.1, 4.8,
- 6.2, 4.7,
- 6.3, 5.6, // 11x
- 6.4, 5.5,
- 6.5, 5.4,
- 6.6, 5.3,
- 6.7, 5.1,
- 6.8, 5.2,
- 6.9, 5.3,
- 7.0, 5.9,
- 7.7, 5.8,
- 7.6, 5.7,
- 0.0,-1.0, // 14
- 7.5, 5.5,
- 7.4, 6.4, // 11y
- 7.3, 6.2,
- 7.2, 6.0,
- 7.2, 6.9,
- 7.1, 6.8,
- 7.0, 6.7,
- 7.2, 6.6,
- 7.3, 6.5,
- 7.4, 6.3,
- 7.5, 6.2,
- -1.0, 0.0, // 14
- 8.6, 6.2,
- 8.7, 6.3, // 12x
- 8.8, 6.3,
- 8.9, 7.4,
- 8.0, 7.5,
- 8.6, 7.6,
- 8.5, 7.7,
- 8.4, 7.8,
- 8.0, 7.9,
- 8.3, 7.1,
- 8.0, 7.2,
- 8.2, 7.3,
- +1.0, 0.0, // 15
- 7.2, 8.6, // 12y
- 6.6, 8.5,
- 6.7, 8.4,
- 6.9, 8.2,
- 6.5, 8.3,
- 6.4, 8.5,
- 6.3, 8.6,
- 6.5, 8.8,
- 4.7, 8.7,
- 4.9, 8.5,
- 7.5, 8.3,
- 6.0,-1.0, // 15
+ 6.1, 7.2, // 10x
+ 6.8, 7.5,
+ 6.6, 7.7,
+ 6.5, 7.8,
+ 6.4, 7.9,
+ 6.3, 7.0,
+ +5.0,-1.0, // 10
+ -1.1,-1.2, // 11
+ -1.3,-1.4, // 12
+ 6.5, 6.6,
+ 6.2, 7.1,
+ 6.1, 7.2,
+ 3.0, 5.1, // 10y
+ 3.3, 5.1,
+ 3.5, 5.0,
+ 3.6, 5.4,
+ 3.7, 5.9,
+ 3.8, 5.5,
+ -1.0,+5.1, // 10
+ -0.9,-0.8, // 11
+ -0.7,-0.6, // 12
+ 3.9, 5.5,
+ 4.2, 5.6,
+ 4.1, 5.8,
+ 3.0, 2.7, // 11x
+ 3.7, 2.6,
+ 3.5, 2.5,
+ 3.4, 2.1,
+ 3.3, 2.4,
+ 3.2, 2.2,
+ -1.1,-0.9, // 10
+ +5.2,-2.1, // 11
+ -2.2,-2.3, // 12
+ 3.1, 2.3,
+ 2.0, 2.0,
+ 3.0, 2.4,
+ 4.1, 6.1, // 11y
+ 4.3, 6.3,
+ 4.3, 6.4,
+ 4.4, 6.4,
+ 4.4, 6.3,
+ 4.5, 6.5,
+ -1.2,-0.8, // 10
+ -2.1,+5.3, // 11
+ -1.4,-1.5, // 12
+ 4.5, 6.2,
+ 4.6, 7.0,
+ 4.6, 6.1,
+ 4.6, 6.6, // 12x
+ 5.8, 9.8,
+ 5.9, 9.9,
+ 5.1, 9.7,
+ 5.2, 9.1,
+ 5.3, 9.6,
+ -1.3,-0.7, // 10
+ -2.2,-1.4, // 11
+ +5.4,-1.1, // 12
+ 5.1, 9.2,
+ 5.4, 9.5,
+ 5.2, 9.3,
+ 5.5, 9.4, // 12y
+ 6.4, 9.5,
+ 6.5, 9.6,
+ 6.8, 9.1,
+ 6.6, 9.7,
+ 7.9, 8.9,
+ -1.4,-0.6, // 10
+ -2.3,-1.5, // 11
+ -1.1,+5.5, // 12
+ 7.7, 8.8,
+ 7.1, 8.8,
+ 7.8, 8.9,
3.2, 8.3, // 13x
- -0.70710678118654757, +0.70710678118654757, // 5
+ 3.3, 8.4,
5.4, 9.3,
5.6, 9.7,
3.7, 9.0,
5.9, 9.9,
- +0.70710678118654757, -0.70710678118654757, // 10
+ 6.0, 9.8,
4.4, 4.8,
4.6, 4.7,
4.8, 4.6,
4.9, 4.4,
4.0, 4.2,
4.2, 4.3, // 13y
- +0.70710678118654757, +0.70710678118654757, // 5
+ 4.3, 4.4,
7.5, 3.4,
6.7, 3.5,
6.4, 3.6,
4.6, 3.9,
- -0.70710678118654757, -0.70710678118654757, // 10
+ 4.7, 4.0,
8.9, 2.8,
7.6, 2.7,
6.4, 2.6,
@@ -367,24 +365,24 @@
3.8, 2.3,
4.5, 2.2, // 14x
8.5, 2.4,
- 0.0,+1.0, // 6
+ 0.0, 1.0,
7.4, 3.6,
6.6, 3.5,
4.7, 3.4,
3.8, 3.5,
- 0.0,-1.0, // 11
+ 0.0, 1.0,
5.9, 3.7,
8.7, 4.6,
7.6, 4.5,
6.5, 4.4,
5.5, 4.3, // 14y
4.3, 4.8,
- +1.0, 0.0, // 6
+ 1.0, 0.0,
4.3, 4.7,
6.5, 4.6,
9.6, 4.5,
8.7, 4.3,
- -1.0, 0.0, // 11
+ 1.0, 0.0,
7.9, 4.5,
6.7, 5.3,
5.6, 5.8,
@@ -393,11 +391,11 @@
3.3, 5.5,
4.2, 5.3,
5.4, 5.6,
- -1.0, 6.0, // 8
+ 1.0, 6.0,
0.8, 6.6,
9.8, 6.5,
8.5, 6.5,
- +1.0, 0.0, // 12
+ 1.0, 0.0,
7.5, 7.3,
6.4, 7.6,
5.2, 7.8,
@@ -405,11 +403,11 @@
3.7, 8.6,
3.8, 8.5,
2.9, 8.3,
- 0.0,+1.0, // 8
+ 0.0, 1.0,
2.0, 9.9,
2.7, 9.8,
1.6, 9.7,
- 0.0,-1.0, // 12
+ 0.0, 1.0,
1.5, 5.5,
1.2, 5.4,
1.1, 5.3,
@@ -472,41 +470,40 @@
// ----------------------------------------------------------------------
// Input
const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrSlip[] = {
- 9.1, 10.1,
- 9.2, 10.2, // 5
- 9.3, 10.3, // 6
- 9.4, 10.4,
- 9.5, 10.5, // 8
- 9.6, 10.6,
- 9.7, 10.7, // 10
- 9.9, 10.9, // 11
- 9.1, 10.1, // 12
- 9.8, -10.8, // 13
- 9.0, -10.0, // 14
- 9.2, -10.2, // 15
+ 1.1, 2.1,
+ 1.2, 2.2, // 5
+ 1.3, 2.3, // 6
+ 1.4, 2.4,
+ 1.5, 2.5, // 8
+ 1.6, 2.6,
+ 1.7, 2.7, // 10
+ 1.9, 2.9, // 11
+ 1.1, 2.1, // 12
+ 1.8, 0.8, // 13
+ 1.0, 0.1, // 14
+ 1.2, 0.2, // 15
};
// Output
-// TODO Update
const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrSlipE[] = {
- 9.100000000000, 10.100000000000,
- 4.178047263424, 15.221952736576,
- 9.300000000000, 10.050098043990,
- 9.400000000000, 10.400000000000,
- 9.655679817715, 10.500000000000,
- 9.600000000000, 10.600000000000,
- 14.721952736576, 5.678047263424,
- 9.900000000000, 11.149901956010,
- 8.944320182285, 10.100000000000,
- -5.600000000000, -10.800000000000,
- -4.800000000000, -10.000000000000,
- -6.600000000000, -10.200000000000,
+ 1.100000000000, 2.100000000000,
+ 1.563917511528, 1.836082488472,
+ 1.300000000000, 1.726466384513,
+ 1.400000000000, 2.400000000000,
+ 1.389619276805, 2.500000000000,
+ 1.600000000000, 2.600000000000,
+ 1.336082488472, 3.063917511528,
+ 1.900000000000, 3.473533615487,
+ 1.210380723195, 2.100000000000,
+ 4.520000000000, -1.920000000000,
+ 1.000000000000, -1.600000000000,
+ -0.560000000000, 0.200000000000,
};
const double pylith::faults::CohesiveDynDataTri3d::_slipSlipE[] = {
- 14.204227339325, 0.0,
- -0.499803912020, 0.0,
- -0.311359635429, 0.0,
+ -1.029314160777, 0.000000000000,
+ -1.147067230974, 0.000000000000,
+ 0.220761446391, 0.000000000000,
};
// ----------------------------------------------------------------------
@@ -514,41 +511,40 @@
// ----------------------------------------------------------------------
// Input
const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrOpen[] = {
- 9.1, 10.1,
- 9.2, 10.2, // 5
- 9.3, 10.3, // 6
- 9.4, 10.4,
- 9.5, 10.5, // 8
- 9.6, 10.6,
- 9.7, 10.7, // 10
- 9.9, 10.9, // 11
- 9.1, 10.1, // 12
- 9.8, 10.8, // 13
- 9.0, 10.0, // 14
- 9.2, 10.2, // 15
+ 1.1, 2.1,
+ 1.2, 2.2, // 5
+ 1.3, 2.3, // 6
+ 1.4, 2.4,
+ 1.5, 2.5, // 8
+ 1.6, 2.6,
+ 1.7, 2.7, // 10
+ 1.9, 2.9, // 11
+ 1.1, 2.1, // 12
+-10.8, 0.8, // 13
+-10.0, 0.1, // 14
+ 1.2,-10.2, // 15
};
// Output
const double pylith::faults::CohesiveDynDataTri3d::_fieldIncrOpenE[] = {
- 9.100000000000, 10.100000000000,
- 17.946141606808, 1.453858393192,
- 9.300000000000, 16.358051491522,
- 9.400000000000, 10.400000000000,
- 1.376240123890, 19.299429217321,
- 9.600000000000, 10.600000000000,
- 0.953858393192, 19.446141606808,
- 9.900000000000, 4.841948508478,
- 17.223759876110, 1.300570782679,
- -6.800000000000, -8.800000000000,
- -6.000000000000, -8.000000000000,
- -7.200000000000, -9.200000000000,
+ 1.100000000000, 2.100000000000,
+ 7.276939399405, 4.204545518954,
+ 5.678082695935, 4.684667319277,
+ 1.400000000000, 2.400000000000,
+ 4.440285622520, 4.762452035962,
+ 1.600000000000, 2.600000000000,
+ -4.376939399405, 0.695454481046,
+ -2.478082695935, 0.515332680723,
+ -1.840285622520, -0.162452035962,
+ 3.800000000000, -4.800000000000,
+ -3.000000000000, -4.000000000000,
+ -3.200000000000, -4.200000000000,
};
const double pylith::faults::CohesiveDynDataTri3d::_slipOpenE[] = {
--24.737824157567, 0.0,
- 12.116102983044, 0.0,
- 16.247519752219, 17.598858434641,
-
+ -5.759234657059, 11.428945575657,
+ 4.769334638554, 8.756165391870,
+ -5.880571245040, 4.524904071924,
};
// ----------------------------------------------------------------------
Modified: short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/cohesivedyn.py
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/cohesivedyn.py 2011-10-04 00:25:12 UTC (rev 19003)
+++ short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/data/cohesivedyn.py 2011-10-04 00:54:54 UTC (rev 19004)
@@ -1,6 +1,6 @@
-cell = "tri3"
+cell = "tri3d"
dim = "2d"
-testCase = "slip"
+testCase = "open"
import numpy
@@ -22,6 +22,28 @@
# ----------------------------------------------------------------------
+def globalToFault(v, R):
+ """
+ Convert vector from global coordinate system to fault coordinate system.
+ """
+ (m,ndof) = v.shape
+
+ vF = numpy.dot(C, v.reshape(m*ndof,1))
+ return vF.reshape((m, ndof))
+
+
+# ----------------------------------------------------------------------
+def faultToGlobal(v, R):
+ """
+ Convert vector from fault coordinate system to global coordinate system.
+ """
+ (m,ndof) = v.shape
+
+ vG = numpy.dot(C.transpose(), v.reshape(m*ndof,1))
+ return vG.reshape((m, ndof))
+
+
+# ----------------------------------------------------------------------
if dim == "2d":
if cell == "tri3":
dlagrange1 = numpy.zeros(2)
@@ -34,25 +56,28 @@
fieldT = numpy.array([[8.6, 9.6],
[8.8, 9.8]])
- fieldIncr = numpy.array([[9.6, -10.6],
- [9.8, -10.8]])
- area = numpy.array([1.0, 1.0])
+ fieldIncr = numpy.array([[1.6, 2.6],
+ [1.8, 2.8]])
+ L = numpy.array([[0.5, 0.0, 0.5, 0.0,],
+ [0.0, 0.5, 0.0, 0.5,],
+ [0.5, 0.0, 0.5, 0.0,],
+ [0.0, 0.5, 0.0, 0.5,],]);
C = numpy.array([[0.0, -1.0, 0.0, 0.0,],
[-1.0, 0.0, 0.0, 0.0,],
[0.0, 0.0, 0.0, -1.0,],
[0.0, 0.0, -1.0, 0.0,],]);
jacobianN = numpy.array(
- [[ 1.0, 5.2, 4.2, 5.3,],
- [ 6.2, 1.0, 6.3, 7.2,],
- [ 8.2, 9.2, 1.0, 9.3,],
- [ 10.2, 11.2, 10.3, 1.0,],])
+ [[ 4.0, -1.2, -2.2, -2.3,],
+ [ -1.2, 5.0, -1.3, -3.2,],
+ [ -2.2, -1.3, 4.1, -4.3,],
+ [ -2.3, -3.2, -4.3, 5.1,],])
jacobianP = numpy.array(
- [[ 1.0, 17.5, 16.5, 17.6,],
- [ 18.5, 1.0, 18.6, 19.5,],
- [ 20.5, 21.5, 1.0, 21.6,],
- [ 22.5, 23.5, 22.6, 1.0,],])
+ [[ 5.0, -1.2, -2.2, -2.3,],
+ [ -1.2, 4.0, -1.3, -3.2,],
+ [ -2.2, -1.3, 5.1, -4.3,],
+ [ -2.3, -3.2, -4.3, 4.1,],])
disp = numpy.array([[ 8.1, 9.1,],
[ 8.2, 9.2,],
@@ -64,23 +89,23 @@
[ 8.8, 9.8,],])
if testCase == "slip":
- dispIncr = numpy.array([[ 9.1, 10.1,],
- [ 9.2, 10.2,],
- [ 9.3, 10.3,],
- [ 9.4, 10.4,],
- [ 9.5, 10.5,],
- [ 9.7, 10.7,],
- [ 9.6, -10.6,],
- [ 9.8, -10.8,],])
+ dispIncr = numpy.array([[ 9.1, 7.1,],
+ [ 9.2, 7.2,],
+ [ 9.3, 7.3,],
+ [ 9.4, 7.4,],
+ [ 9.5, 7.5,],
+ [ 9.7, 7.7,],
+ [ 1.6, 2.6,],
+ [ 1.8, 2.8,],])
elif testCase == "open":
- dispIncr = numpy.array([[ 9.1, 10.1,],
- [ 9.2, 10.2,],
- [ 9.3, 10.3,],
- [ 9.4, 10.4,],
- [ 9.5, 10.5,],
- [ 9.7, 10.7,],
- [ 9.6, 10.6,],
- [ 9.8, 10.8,],])
+ dispIncr = numpy.array([[ 9.1, 7.1,],
+ [ 9.2, 7.2,],
+ [ 9.3, 7.3,],
+ [ 9.4, 7.4,],
+ [ 9.5, 7.5,],
+ [ 9.7, 7.7,],
+ [ -10.6, 2.6,],
+ [ -10.8, 2.8,],])
elif cell == "tri3d":
@@ -92,13 +117,20 @@
m = 6
DOF = 2
- fieldT = numpy.array([[6.8, 8.8],
- [6.0, 8.0],
- [7.2, 9.2]])
- fieldIncr = numpy.array([[9.8, -10.8],
- [9.0, -10.0],
- [9.2, -10.2]])
- area = numpy.array([2.0, 1.0, 1.0])
+ fieldT = numpy.array([[-3.8, 4.8],
+ [3.0, 4.0],
+ [3.2, 4.2]])
+ fieldIncr = numpy.array([[1.8, 0.8],
+ [1.0, 0.1],
+ [1.2, 0.2]])
+
+ L = numpy.array([[1.0, 0.0, 0.5, 0.0, 0.5, 0.0],
+ [0.0, 1.0, 0.0, 0.5, 0.0, 0.5],
+ [0.5, 0.0, 0.5, 0.0, 0.0, 0.0],
+ [0.0, 0.5, 0.0, 0.5, 0.0, 0.0],
+ [0.5, 0.0, 0.0, 0.0, 0.5, 0.0],
+ [0.0, 0.5, 0.0, 0.0, 0.0, 0.5]])
+
C = numpy.array([[+0.70710678118654757, -0.70710678118654757, 0.0, 0.0, 0.0, 0.0,],
[-0.70710678118654757, -0.70710678118654757, 0.0, 0.0, 0.0, 0.0,],
[0.0, 0.0, 0.0, -1.0, 0.0, 0.0,],
@@ -107,20 +139,20 @@
[0.0, 0.0, 0.0, 0.0, 0.0, -1.0,],])
jacobianN = numpy.array(
- [[6.0, 7.3, 6.9, 7.4, 6.7, 7.6],
- [3.1, 5.2, 3.2, 5.2, 3.4, 5.3],
- [3.9, 2.7, 3.8, 2.8, 0.0, 0.0],
- [4.1, 6.6, 4.2, 6.2, 0.0, 0.0],
- [7.9, 8.1, 0.0, 0.0, 7.4, 8.5],
- [6.4, 3.4, 0.0, 0.0, 6.1, 3.8]])
+ [[+6.0, -1.0, -1.1, -1.2, -1.3, -1.4],
+ [-1.0, +6.1, -0.9, -0.8, -0.7, -0.6],
+ [-1.1, -0.9, +6.2, -2.1, 0.0, 0.0],
+ [-1.2, -0.8, -2.1, +6.3, 0.0, 0.0],
+ [-1.3, -0.7, 0.0, 0.0, +6.4, -1.1],
+ [-1.4, -0.6, 0.0, 0.0, -1.1, +6.5]])
jacobianP = numpy.array(
- [[1.6, 4.1, 1.7, 4.2, 1.8, 4.3],
- [4.6, 4.8, 4.7, 4.4, 4.8, 4.2],
- [6.9, 5.3, 7.0, 5.9, 0.0, 0.0],
- [7.2, 6.6, 7.3, 6.5, 0.0, 0.0],
- [8.4, 7.8, 0.0, 0.0, 8.3, 7.1],
- [6.3, 8.6, 0.0, 0.0, 4.7, 8.7]])
+ [[+5.0, -1.0, -1.1, -1.2, -1.3, -1.4],
+ [-1.0, +5.1, -0.9, -0.8, -0.7, -0.6],
+ [-1.1, -0.9, +5.2, -2.1, 0.0, 0.0],
+ [-1.2, -0.8, -2.1, +5.3, 0.0, 0.0],
+ [-1.3, -0.7, 0.0, 0.0, +5.4, -1.1],
+ [-1.4, -0.6, 0.0, 0.0, -1.1, +5.5]])
disp = numpy.array([[ 6.1, 8.1,],
[ 6.2, 8.2,],
@@ -131,36 +163,36 @@
[ 6.7, 8.7,],
[ 6.9, 8.9,],
[ 7.1, 9.1,],
- [ 6.8, 8.8,],
- [ 6.0, 8.0,],
- [ 7.2, 9.2,],])
+ [-3.8, 4.8,],
+ [ 3.0, 4.0,],
+ [ 3.2, 4.2,],])
if testCase == "slip":
- dispIncr = numpy.array([[ 9.1, 10.1,],
- [ 9.2, 10.2,],
- [ 9.3, 10.3,],
- [ 9.4, 10.4,],
- [ 9.5, 10.5,],
- [ 9.6, 10.6,],
- [ 9.7, 10.7,],
- [ 9.9, 10.9,],
- [ 9.1, 10.1,],
- [ 9.8, -10.8,],
- [ 9.0, -10.0,],
- [ 9.2, -10.2,],])
+ dispIncr = numpy.array([[ 1.1, 2.1,],
+ [ 1.2, 2.2,],
+ [ 1.3, 2.3,],
+ [ 1.4, 2.4,],
+ [ 1.5, 2.5,],
+ [ 1.6, 2.6,],
+ [ 1.7, 2.7,],
+ [ 1.9, 2.9,],
+ [ 1.1, 2.1,],
+ [ 1.8, 0.8,],
+ [ 1.0, 0.1,],
+ [ 1.2, 0.2,],])
elif testCase == "open":
- dispIncr = numpy.array([[ 9.1, 10.1,],
- [ 9.2, 10.2,],
- [ 9.3, 10.3,],
- [ 9.4, 10.4,],
- [ 9.5, 10.5,],
- [ 9.6, 10.6,],
- [ 9.7, 10.7,],
- [ 9.9, 10.9,],
- [ 9.1, 10.1,],
- [ 9.8, 10.8,],
- [ 9.0, 10.0,],
- [ 9.2, 10.2,],])
+ dispIncr = numpy.array([[ 1.1, 2.1,],
+ [ 1.2, 2.2,],
+ [ 1.3, 2.3,],
+ [ 1.4, 2.4,],
+ [ 1.5, 2.5,],
+ [ 1.6, 2.6,],
+ [ 1.7, 2.7,],
+ [ 1.9, 2.9,],
+ [ 1.1, 2.1,],
+ [-10.8, 0.8,],
+ [-10.0, 0.1,],
+ [ 1.2, -10.2,],])
elif cell == "quad4":
@@ -174,25 +206,28 @@
fieldT = numpy.array([[8.8, 9.8],
[8.0, 9.0]])
- fieldIncr = numpy.array([[-9.8, -10.8],
- [-9.0, -10.0]])
- area = numpy.array([1.0, 1.0])
+ fieldIncr = numpy.array([[1.8, 2.8],
+ [1.0, 2.0]])
+ L = numpy.array([[0.5, 0.0, 0.5, 0.0,],
+ [0.0, 0.5, 0.0, 0.5,],
+ [0.5, 0.0, 0.5, 0.0,],
+ [0.0, 0.5, 0.0, 0.5,],]);
C = numpy.array([[0.0, -1.0, 0.0, 0.0,],
[-1.0, 0.0, 0.0, 0.0,],
[0.0, 0.0, 0.0, -1.0,],
[0.0, 0.0, -1.0, 0.0,],]);
jacobianN = numpy.array(
- [[ 1.0, 8.1, 8.2, 8.3,],
- [ 9.9, 1.0, 10.0, 10.1,],
- [ 11.7, 11.8, 1.0, 11.9,],
- [ 13.5, 13.6, 13.7, 1.0,],])
+ [[ 4.0, -1.2, -2.2, -2.3,],
+ [ -1.2, 5.0, -1.3, -3.2,],
+ [ -2.2, -1.3, 4.1, -4.3,],
+ [ -2.3, -3.2, -4.3, 5.1,],])
jacobianP = numpy.array(
- [[ 1.0, 23.7, 23.8, 23.9,],
- [ 25.5, 1.0, 25.6, 25.7,],
- [ 27.3, 27.4, 1.0, 27.5,],
- [ 29.1, 29.2, 29.3, 1.0,],])
+ [[ 5.0, -1.2, -2.2, -2.3,],
+ [ -1.2, 4.0, -1.3, -3.2,],
+ [ -2.2, -1.3, 5.1, -4.3,],
+ [ -2.3, -3.2, -4.3, 4.1,],])
disp = numpy.array([[ 8.1, 9.1,],
[ 8.2, 9.2,],
@@ -200,41 +235,43 @@
[ 8.4, 9.4,],
[ 8.5, 9.5,],
[ 8.6, 9.6,],
+ [ 8.9, 9.9,],
[ 8.7, 9.7,],
- [ 8.9, 9.9,],
[ 8.8, 9.8,],
[ 8.0, 9.0,],])
if testCase == "slip":
- dispIncr = numpy.array([[ 9.1, 10.1,],
- [ 9.2, 10.2,],
- [ 9.3, 10.3,],
- [ 9.4, 10.4,],
- [ 9.5, 10.5,],
- [ 9.6, 10.6,],
- [ 9.7, 10.7,],
- [ 9.9, 10.9,],
- [ -9.8, -10.8,],
- [ -9.0, -10.0,],])
-
+ dispIncr = numpy.array([[ 1.1, 2.1,],
+ [ 1.2, 2.2,],
+ [ 1.3, 2.3,],
+ [ 1.4, 2.4,],
+ [ 1.5, 2.5,],
+ [ 1.6, 2.6,],
+ [ 1.7, 2.7,],
+ [ 1.9, 2.9,],
+ [ 1.8, 2.8,],
+ [ 1.0, 2.0,],])
elif testCase == "open":
- dispIncr = numpy.array([[ 9.1, 10.1,],
- [ 9.2, 10.2,],
- [ 9.3, 10.3,],
- [ 9.4, 10.4,],
- [ 9.5, 10.5,],
- [ 9.6, 10.6,],
- [ 9.7, 10.7,],
- [ 9.9, 10.9,],
- [ 9.8, 10.8,],
- [ 9.0, 10.0,],])
+ dispIncr = numpy.array([[ 1.1, 2.1,],
+ [ 1.2, 2.2,],
+ [ 1.3, 2.3,],
+ [ 1.4, 2.4,],
+ [ 1.5, 2.5,],
+ [ 1.6, 2.6,],
+ [ 1.7, 2.7,],
+ [ 1.9, 2.9,],
+ [ -10.8, 2.8,],
+ [ -10.0, 2.0,],])
+
# ------------------------------------------------------------------
fieldTpdt = fieldT + fieldIncr
- tractionShear = abs(fieldTpdt[:,0]) / area
- tractionNormal = fieldTpdt[:,1] / area
+ fieldTpdt = globalToFault(fieldTpdt, C)
+ tractionShear = abs(fieldTpdt[:,0])
+ tractionNormal = fieldTpdt[:,1]
+
print "tractionShear",tractionShear
print "tractionNormal",tractionNormal
@@ -242,38 +279,35 @@
print "friction",friction
- lagrangeTpdt0 = friction * fieldTpdt[:,0] / tractionShear
-
- lagrangeIncr0 = lagrangeTpdt0 - fieldT[:,0]
-
- print "lagrangeIncr0",lagrangeIncr0
-
- dlagrange0 = (tractionShear - friction) * fieldTpdt[:,0] / tractionShear
-
+ dlagrange0 = (friction - tractionShear) * fieldTpdt[:,0] / tractionShear
+
print "dlagrange0",dlagrange0
if testCase == "slip":
dLagrange = numpy.vstack((dlagrange0, dlagrange1))
dLagrange = numpy.transpose(dLagrange)
- dLagrange = numpy.reshape(dLagrange, m)
+ dLagrange = faultToGlobal(dLagrange, C).reshape(m)
elif testCase == "open":
dLagrange = numpy.reshape(disp+dispIncr, n)
- dLagrange = dLagrange[indexL]
+ dLagrange = -dLagrange[indexL]
print "dLagrange \n", dLagrange
- RHS = numpy.dot(numpy.transpose(C),dLagrange)
- duN = -numpy.dot(inv(jacobianN),RHS)
- duP = numpy.dot(inv(jacobianP),RHS)
+ RHS = numpy.dot(numpy.transpose(L),dLagrange)
+ print "RHS",RHS
+ duN = numpy.dot(inv(jacobianN),RHS)
+ duP = -numpy.dot(inv(jacobianP),RHS)
dispRel = duP - duN
- slipVertex = numpy.dot(C,dispRel)
+ slipVertex = dispRel
slipVertex = numpy.reshape(slipVertex, (m/DOF,DOF))
+ slipVertex = globalToFault(slipVertex, C)
if testCase == "slip":
slipVertex[:,1] = 0
mask = slipVertex[:,1] < 0.0
slipVertex[mask,1] = 0
+ slipVertex = faultToGlobal(slipVertex, C)
slipVertex = numpy.reshape(slipVertex, m)
print "duN \n", duN
@@ -282,14 +316,13 @@
dispIncrE = dispIncr
dispIncrE = numpy.reshape(dispIncrE, n)
- dispIncrE[indexL] = dispIncrE[indexL] - dLagrange
- dispIncrE[indexN] = dispIncrE[indexN] - \
- 0.5*numpy.dot(C.transpose(), slipVertex)
- dispIncrE[indexP] = dispIncrE[indexP] + \
- 0.5*numpy.dot(C.transpose(), slipVertex)
+ dispIncrE[indexL] = dispIncrE[indexL] + dLagrange
+ dispIncrE[indexN] = dispIncrE[indexN] - 0.5*slipVertex
+ dispIncrE[indexP] = dispIncrE[indexP] + 0.5*slipVertex
+ dispIncrE = numpy.reshape(dispIncrE, (n/DOF,DOF))
- dispIncrE = numpy.reshape(dispIncrE, (n/DOF,DOF))
slipVertex = numpy.reshape(slipVertex, (m/DOF,DOF))
+ slipVertex = globalToFault(slipVertex, C)
print "dispIncrE\n", printdata(dispIncrE)
print "slipVertexE\n", printdata(slipVertex)
@@ -310,32 +343,50 @@
fieldT = numpy.array([[7.7, 8.7, 9.7],
[7.9, 8.9, 9.9],
[7.1, 8.1, 9.1]])
- fieldIncr = numpy.array([[8.7, 9.7, -10.7],
- [8.9, 9.9, -10.9],
- [8.1, 9.1, -10.1]])
+ fieldIncr = numpy.array([[9.7, 2.7, 3.7],
+ [9.9, 2.9, 3.9],
+ [9.1, 2.1, 3.1]])
area = numpy.array([1.0/3.0, 1.0/3.0, 1.0/3.0])
+ L = numpy.array([[1.0/9.0,0,0, 1.0/9.0,0,0, 1.0/9.0,0,0,],
+ [0,1.0/9.0,0, 0,1.0/9.0,0, 0,1.0/9.0,0,],
+ [0,0,1.0/9.0, 0,0,1.0/9.0, 0,0,1.0/9.0,],
+ [1.0/9.0,0,0, 1.0/9.0,0,0, 1.0/9.0,0,0,],
+ [0,1.0/9.0,0, 0,1.0/9.0,0, 0,1.0/9.0,0,],
+ [0,0,1.0/9.0, 0,0,1.0/9.0, 0,0,1.0/9.0,],
+ [1.0/9.0,0,0, 1.0/9.0,0,0, 1.0/9.0,0,0,],
+ [0,1.0/9.0,0, 0,1.0/9.0,0, 0,1.0/9.0,0,],
+ [0,0,1.0/9.0, 0,0,1.0/9.0, 0,0,1.0/9.0,]])
+
+ Cv = numpy.array([[ 0, -1, 0,],
+ [ 0, 0, +1,],
+ [ -1, 0, 0,],])
+ Zv = numpy.zeros([3,3])
+ C = numpy.vstack( (numpy.hstack((Cv, Zv, Zv)),
+ numpy.hstack((Zv, Cv, Zv)),
+ numpy.hstack((Zv, Zv, Cv)) ) )
+
jacobianN = numpy.array(
- [[1.0, 10.0, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7],
- [13.1, 1.0, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8],
- [16.2, 16.3, 1.0, 16.4, 16.5, 16.6, 16.7, 16.8, 16.9],
- [19.3, 19.4, 19.5, 1.0, 19.6, 19.7, 19.8, 19.9, 20.0],
- [22.4, 22.5, 22.6, 22.7, 1.0, 22.8, 22.9, 23.0, 23.1],
- [25.5, 25.6, 25.7, 25.8, 25.9, 1.0, 26.0, 26.1, 26.2],
- [28.6, 28.7, 28.8, 28.9, 29.0, 29.1, 1.0, 29.2, 29.3],
- [31.7, 31.8, 31.9, 32.0, 32.1, 32.2, 32.3, 1.0, 32.4],
- [34.8, 34.9, 35.0, 35.1, 35.2, 35.3, 35.4, 35.5, 1.0]])
+ [[ 4.0, -1.1, -1.2, -1.3, -1.4, -1.5, -1.6, -1.7, -1.8],
+ [-1.1, 4.1, -2.3, -2.4, -2.5, -2.6, -2.7, -2.8, -2.9],
+ [-1.2, -2.3, 4.2, -1.0, -1.1, -1.2, -1.3, -1.4, -1.5],
+ [-1.3, -2.4, -1.0, 4.3, -0.2, -0.3, -0.4, -0.5, -0.6],
+ [-1.4, -2.5, -1.1, -0.2, 4.4, -0.9, -0.8, -0.7, -0.5],
+ [-1.5, -2.6, -1.2, -0.3, -0.9, 4.5, -1.1, -1.2, -1.3],
+ [-1.6, -2.7, -1.3, -0.4, -0.8, -1.1, 4.6, -1.8, -1.5],
+ [-1.7, -2.8, -1.4, -0.5, -0.7, -1.2, -1.8, 4.7, -1.1],
+ [-1.8, -2.9, -1.5, -0.6, -0.5, -1.3, -1.5, -1.1, 4.8]])
jacobianP = numpy.array(
- [[ 1.0, 48.7, 48.8, 48.9, 49.0, 49.1, 49.2, 49.3, 49.4,],
- [ 51.8, 1.0, 51.9, 52.0, 52.1, 52.2, 52.3, 52.4, 52.5,],
- [ 54.9, 55.0, 1.0, 55.1, 55.2, 55.3, 55.4, 55.5, 55.6,],
- [ 58.0, 58.1, 58.2, 1.0, 58.3, 58.4, 58.5, 58.6, 58.7,],
- [ 61.1, 61.2, 61.3, 61.4, 1.0, 61.5, 61.6, 61.7, 61.8,],
- [ 64.2, 64.3, 64.4, 64.5, 64.6, 1.0, 64.7, 64.8, 64.9,],
- [ 67.3, 67.4, 67.5, 67.6, 67.7, 67.8, 1.0, 67.9, 68.0,],
- [ 70.4, 70.5, 70.6, 70.7, 70.8, 70.9, 71.0, 1.0, 71.1,],
- [ 73.5, 73.6, 73.7, 73.8, 73.9, 74.0, 74.1, 74.2, 1.0,],])
+ [[ 5.0, -1.1, -1.2, -1.3, -1.4, -1.5, -1.6, -1.7, -1.8],
+ [-1.1, 5.1, -2.3, -2.4, -2.5, -2.6, -2.7, -2.8, -2.9],
+ [-1.2, -2.3, 5.2, -1.0, -1.1, -1.2, -1.3, -1.4, -1.5],
+ [-1.3, -2.4, -1.0, 5.3, -0.2, -0.3, -0.4, -0.5, -0.6],
+ [-1.4, -2.5, -1.1, -0.2, 5.4, -0.9, -0.8, -0.7, -0.5],
+ [-1.5, -2.6, -1.2, -0.3, -0.9, 5.5, -1.1, -1.2, -1.3],
+ [-1.6, -2.7, -1.3, -0.4, -0.8, -1.1, 5.6, -1.8, -1.5],
+ [-1.7, -2.8, -1.4, -0.5, -0.7, -1.2, -1.8, 5.7, -1.1],
+ [-1.8, -2.9, -1.5, -0.6, -0.5, -1.3, -1.5, -1.1, 5.8]])
disp = numpy.array([[ 7.1, 8.1, 9.1,],
[ 7.2, 8.2, 9.2,],
@@ -350,29 +401,29 @@
[ 7.1, 8.1, 9.1,],])
if testCase == "slip":
- dispIncr = numpy.array([[ 8.1, 9.1, 10.1,],
- [ 8.2, 9.2, 10.2,],
- [ 8.3, 9.3, 10.3,],
- [ 8.4, 9.4, 10.4,],
- [ 8.5, 9.5, 10.5,],
- [ 8.6, 9.6, 10.6,],
- [ 8.8, 9.8, 10.8,],
- [ 8.0, 9.0, 10.0,],
- [ 8.7, 9.7, -10.7,],
- [ 8.9, 9.9, -10.9,],
- [ 8.1, 9.1, -10.1,],])
+ dispIncr = numpy.array([[ 1.1, 2.1, 3.1,],
+ [ 1.2, 2.2, 3.2,],
+ [ 1.3, 2.3, 3.3,],
+ [ 1.4, 2.4, 3.4,],
+ [ 1.5, 2.5, 3.5,],
+ [ 1.6, 2.6, 3.6,],
+ [ 1.8, 2.8, 3.8,],
+ [ 1.0, 2.0, 3.0,],
+ [ 9.7, 2.7, 3.7,],
+ [ 9.9, 2.9, 3.9,],
+ [ 9.1, 2.1, 3.1,],])
elif testCase == "open":
- dispIncr = numpy.array([[ 8.1, 9.1, 10.1,],
- [ 8.2, 9.2, 10.2,],
- [ 8.3, 9.3, 10.3,],
- [ 8.4, 9.4, 10.4,],
- [ 8.5, 9.5, 10.5,],
- [ 8.6, 9.6, 10.6,],
- [ 8.8, 9.8, 10.8,],
- [ 8.0, 9.0, 10.0,],
- [ 8.7, 9.7, 10.7,],
- [ 8.9, 9.9, 10.9,],
- [ 8.1, 9.1, 10.1,],])
+ dispIncr = numpy.array([[ 1.1, 2.1, 3.1,],
+ [ 1.2, 2.2, 3.2,],
+ [ 1.3, 2.3, 3.3,],
+ [ 1.4, 2.4, 3.4,],
+ [ 1.5, 2.5, 3.5,],
+ [ 1.6, 2.6, 3.6,],
+ [ 1.8, 2.8, 3.8,],
+ [ 1.0, 2.0, 3.0,],
+ [-20.7, 2.7, 3.7,],
+ [-20.9, 2.9, 3.9,],
+ [-20.1, 2.1, 3.1,],])
elif cell == "hex8":
@@ -490,9 +541,11 @@
# ------------------------------------------------------------------
fieldTpdt = fieldT + fieldIncr
- tractionShear = (fieldTpdt[:,0]**2 + fieldTpdt[:,1]**2)**0.5 / area
- tractionNormal = fieldTpdt[:,2] / area
+ fieldTpdt = globalToFault(fieldTpdt, C)
+ tractionShear = (fieldTpdt[:,0]**2 + fieldTpdt[:,1]**2)**0.5
+ tractionNormal = fieldTpdt[:,2]
+
print "tractionShear",tractionShear
print "tractionNormal",tractionNormal
@@ -500,61 +553,37 @@
print "friction",friction
- lagrangeTpdt0 = friction * fieldTpdt[:,0] / tractionShear
- lagrangeTpdt1 = friction * fieldTpdt[:,1] / tractionShear
-
- lagrangeIncr0 = lagrangeTpdt0 - fieldT[:,0]
- lagrangeIncr1 = lagrangeTpdt1 - fieldT[:,1]
-
- print "lagrangeIncr0",lagrangeIncr0
- print "lagrangeIncr1",lagrangeIncr1
-
- dlagrange0 = (tractionShear - friction) * fieldTpdt[:,0] / tractionShear
- dlagrange1 = (tractionShear - friction) * fieldTpdt[:,1] / tractionShear
-
+ dlagrange0 = (friction - tractionShear) * fieldTpdt[:,0] / tractionShear
+ dlagrange1 = (friction - tractionShear) * fieldTpdt[:,1] / tractionShear
+
print "dlagrange0",dlagrange0
print "dlagrange1",dlagrange1
- D = numpy.array([[ 0, -1, 0,],
- [ 0, 0, +1,],
- [ -1, 0, 0,],])
-
- Z = numpy.zeros([3,3])
-
- if cell == "tet4":
- C1 = numpy.hstack((D, Z, Z))
- C2 = numpy.hstack((Z, D, Z))
- C3 = numpy.hstack((Z, Z, D))
- C = numpy.vstack((C1, C2, C3))
- elif cell == "hex8":
- C1 = numpy.hstack((D, Z, Z, Z))
- C2 = numpy.hstack((Z, D, Z, Z))
- C3 = numpy.hstack((Z, Z, D, Z))
- C4 = numpy.hstack((Z, Z, Z, D))
- C = numpy.vstack((C1, C2, C3, C4))
-
if testCase == "slip":
dLagrange = numpy.vstack((dlagrange0, dlagrange1, dlagrange2))
dLagrange = numpy.transpose(dLagrange)
- dLagrange = numpy.reshape(dLagrange, m)
+ dLagrange = faultToGlobal(dLagrange, C).reshape(m)
elif testCase == "open":
dLagrange = numpy.reshape(disp+dispIncr, n)
- dLagrange = dLagrange[indexL]
+ dLagrange = -dLagrange[indexL]
print "dLagrange \n", dLagrange
- RHS = numpy.dot(numpy.transpose(C),dLagrange)
- duN = -numpy.dot(inv(jacobianN),RHS)
- duP = numpy.dot(inv(jacobianP),RHS)
+ RHS = numpy.dot(numpy.transpose(L),dLagrange)
+ print "RHS",RHS
+ duN = numpy.dot(inv(jacobianN),RHS)
+ duP = -numpy.dot(inv(jacobianP),RHS)
dispRel = duP - duN
- slipVertex = numpy.dot(C,dispRel)
+ slipVertex = dispRel
slipVertex = numpy.reshape(slipVertex, (m/DOF,DOF))
+ slipVertex = globalToFault(slipVertex, C)
if testCase == "slip":
- slipVertex[:,2] = 0
+ slipVertex[:,2] = 0
mask = slipVertex[:,2] < 0.0
slipVertex[mask,2] = 0
+ slipVertex = faultToGlobal(slipVertex, C)
slipVertex = numpy.reshape(slipVertex, m)
print "duN \n", duN
@@ -563,15 +592,13 @@
dispIncrE = dispIncr
dispIncrE = numpy.reshape(dispIncrE, n)
- dispIncrE[indexL] = dispIncrE[indexL] - dLagrange
- dispIncrE[indexN] = dispIncrE[indexN] - \
- 0.5*numpy.dot(C.transpose(), slipVertex)
- dispIncrE[indexP] = dispIncrE[indexP] + \
- 0.5*numpy.dot(C.transpose(), slipVertex)
+ dispIncrE[indexL] = dispIncrE[indexL] + dLagrange
+ dispIncrE[indexN] = dispIncrE[indexN] - 0.5*slipVertex
+ dispIncrE[indexP] = dispIncrE[indexP] + 0.5*slipVertex
+ dispIncrE = numpy.reshape(dispIncrE, (n/DOF,DOF))
- dispIncrE = numpy.reshape(dispIncrE, (n/DOF,DOF))
slipVertex = numpy.reshape(slipVertex, (m/DOF,DOF))
+ slipVertex = globalToFault(slipVertex, C)
print "dispIncrE\n", printdata(dispIncrE)
print "slipVertexE\n", printdata(slipVertex)
-
More information about the CIG-COMMITS
mailing list