[cig-commits] r16303 - in short/3D/PyLith/trunk: . libsrc/faults libsrc/friction unittests/libtests/bc/data unittests/libtests/faults unittests/libtests/faults/data

brad at geodynamics.org brad at geodynamics.org
Sun Feb 21 19:00:21 PST 2010


Author: brad
Date: 2010-02-21 19:00:20 -0800 (Sun, 21 Feb 2010)
New Revision: 16303

Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc
   short/3D/PyLith/trunk/libsrc/friction/FrictionModel.cc
   short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_initialtract.spatialdb
   short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4_initialtract.spatialdb
Log:
Implemented weighted average of initial tractions for fault friction. Tet4 and Hex8 unit tests need updating for slip case.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/TODO	2010-02-22 03:00:20 UTC (rev 16303)
@@ -6,6 +6,8 @@
   Better PETSc settings or Laplacian based preconditioner
 
 * Drucker-Prager elastoplastic
+  Add isJacobianSymmetric() to Integrator (default is true, need to query material model).
+  Need to pass hint when creating Jacobian.
 
 * Friction
 
@@ -35,9 +37,6 @@
 FRICTION
 ----------------------------------------------------------------------
 
-Initial tractions
-  Integrate over fault surface (should be current implementation)
-
 6. Other fault constitutive models [Surendra]
   Rate- and state-friction with aging law
   Rate- and state-friction with slip law (only if desired)

Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc	2010-02-22 03:00:20 UTC (rev 16303)
@@ -46,6 +46,7 @@
 typedef pylith::topology::Mesh::SieveMesh SieveMesh;
 typedef pylith::topology::Mesh::RealSection RealSection;
 typedef pylith::topology::SubMesh::SieveMesh SieveSubMesh;
+typedef pylith::topology::Mesh::RestrictVisitor RestrictVisitor;
 
 // ----------------------------------------------------------------------
 // Default constructor.
@@ -930,106 +931,164 @@
   assert(0 != _normalizer);
   assert(0 != _quadrature);
 
+  // If no initial tractions specified, leave method
+  if (0 == _dbInitialTract)
+    return;
+
+  assert(0 != _normalizer);
   const double pressureScale = _normalizer->pressureScale();
   const double lengthScale = _normalizer->lengthScale();
 
+  // Get quadrature information
+  const int numQuadPts = _quadrature->numQuadPts();
+  const int numBasis = _quadrature->numBasis();
   const int spaceDim = _quadrature->spaceDim();
-  const int numQuadPts = _quadrature->numQuadPts();
+  const double_array& quadWts = _quadrature->quadWts();
+  assert(quadWts.size() == numQuadPts);
 
-  if (0 != _dbInitialTract) { // Setup initial values, if provided.
-    // Create section to hold initial tractions.
-    _fields->add("initial traction", "initial_traction");
-    topology::Field<topology::SubMesh>& traction = _fields->get(
-      "initial traction");
-    topology::Field<topology::SubMesh>& slip = _fields->get("slip");
-    traction.cloneSection(slip);
-    traction.scale(pressureScale);
-    const ALE::Obj<RealSection>& tractionSection = traction.section();
-    assert(!tractionSection.isNull());
+  double_array quadPtsGlobal(numQuadPts*spaceDim);
 
-    _dbInitialTract->open();
-    switch (spaceDim) { // switch
-    case 1: {
-      const char* valueNames[] = { "traction-normal" };
-      _dbInitialTract->queryVals(valueNames, 1);
-      break;
-    } // case 1
-    case 2: {
-      const char* valueNames[] = { "traction-shear", "traction-normal" };
-      _dbInitialTract->queryVals(valueNames, 2);
-      break;
-    } // case 2
-    case 3: {
-      const char* valueNames[] = { "traction-shear-leftlateral",
-          "traction-shear-updip", "traction-normal" };
-      _dbInitialTract->queryVals(valueNames, 3);
-      break;
-    } // case 3
-    default:
-      std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
-      assert(0);
-      throw std::logic_error("Bad spatial dimension in Neumann.");
-    } // switch
+  // Create section to hold initial tractions.
+  _fields->add("initial traction", "initial_traction");
+  topology::Field<topology::SubMesh>& traction = 
+    _fields->get("initial traction");
+  topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+  traction.cloneSection(slip);
+  traction.scale(pressureScale);
+  const ALE::Obj<RealSection>& tractionSection = traction.section();
+  assert(!tractionSection.isNull());
+  double_array tractionCell(numBasis*spaceDim);
+  double_array tractionQuadPt(spaceDim);
+  topology::Mesh::UpdateAddVisitor tractionVisitor(*tractionSection,
+        &tractionCell[0]);
 
-    // Get 'fault' vertices.
-    const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
-    assert(!faultSieveMesh.isNull());
-    const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
-        faultSieveMesh->depthStratum(0);
-    assert(!vertices.isNull());
-    const SieveSubMesh::label_sequence::iterator verticesBegin =
-        vertices->begin();
-    const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+  assert(0 != _dbInitialTract);
+  _dbInitialTract->open();
+  switch (spaceDim) { // switch
+  case 1: {
+    const char* valueNames[] = { "traction-normal" };
+    _dbInitialTract->queryVals(valueNames, 1);
+    break;
+  } // case 1
+  case 2: {
+    const char* valueNames[] = { "traction-shear", "traction-normal" };
+    _dbInitialTract->queryVals(valueNames, 2);
+    break;
+  } // case 2
+  case 3: {
+    const char* valueNames[] = { "traction-shear-leftlateral",
+				 "traction-shear-updip", "traction-normal" };
+    _dbInitialTract->queryVals(valueNames, 3);
+    break;
+  } // case 3
+  default:
+    std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
+    assert(0);
+    throw std::logic_error("Bad spatial dimension in Neumann.");
+  } // switch
+  
+  // Get cells associated with fault
+  const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+  assert(!faultSieveMesh.isNull());
+  const ALE::Obj<SieveSubMesh::label_sequence>& cells = 
+    faultSieveMesh->heightStratum(0);
+  assert(!cells.isNull());
+  const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+  const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+  const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
+    faultSieveMesh->depthStratum(0);
+  assert(!vertices.isNull());
+  const SieveSubMesh::label_sequence::iterator verticesBegin =
+    vertices->begin();
+  const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
 
-    const int numBasis = _quadrature->numBasis();
-    const int spaceDim = _quadrature->spaceDim();
+  const spatialdata::geocoords::CoordSys* cs = _faultMesh->coordsys();
+  assert(0 != cs);
 
-    // Containers for database query results and quadrature coordinates in
-    // reference geometry.
-    double_array tractionVertex(spaceDim);
-    double_array coordsVertex(spaceDim);
+#if !defined(PRECOMPUTE_GEOMETRY)
+  double_array coordinatesCell(numBasis*spaceDim);
+  const ALE::Obj<RealSection>& coordinates =
+    faultSieveMesh->getRealSection("coordinates");
+  RestrictVisitor coordsVisitor(*coordinates,
+        coordinatesCell.size(), &coordinatesCell[0]);
+#endif
 
-    // Get sections.
-    const ALE::Obj<RealSection>& coordinates = faultSieveMesh->getRealSection(
-      "coordinates");
-    assert(!coordinates.isNull());
-    const spatialdata::geocoords::CoordSys* cs = _faultMesh->coordsys();
+  for (SieveSubMesh::label_sequence::iterator c_iter=cellsBegin;
+       c_iter != cellsEnd;
+       ++c_iter) {
+    // Compute geometry information for current cell
+#if defined(PRECOMPUTE_GEOMETRY)
+    _quadrature->retrieveGeometry(*c_iter);
+#else
+    coordsVisitor.clear();
+    faultSieveMesh->restrictClosure(*c_iter, coordsVisitor);
+    _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
 
-    const double lengthScale = _normalizer->lengthScale();
-
-    // Loop over vertices in fault mesh and perform queries.
-    for (SieveSubMesh::label_sequence::iterator v_iter = verticesBegin; v_iter
-        != verticesEnd; ++v_iter) {
-      coordinates->restrictPoint(*v_iter, &coordsVertex[0], coordsVertex.size());
-      // Dimensionalize coordinates
-      _normalizer->dimensionalize(&coordsVertex[0], coordsVertex.size(),
+    const double_array& quadPtsNonDim = _quadrature->quadPts();
+    quadPtsGlobal = quadPtsNonDim;
+    _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
         lengthScale);
+    tractionCell = 0.0;
 
-      tractionVertex = 0.0;
-      const int err = _dbInitialTract->query(&tractionVertex[0], spaceDim,
-        &coordsVertex[0], spaceDim, cs);
+    // Loop over quadrature points in cell and query database
+    for (int iQuadPt=0, index=0;
+        iQuadPt < numQuadPts;
+        ++iQuadPt, index+=spaceDim) {
+
+      tractionQuadPt = 0.0;
+      int err = _dbInitialTract->query(&tractionQuadPt[0], spaceDim,
+          &quadPtsGlobal[index], spaceDim, cs);
       if (err) {
         std::ostringstream msg;
-        msg << "Could not find initial tractions at (";
+        msg << "Could not find parameters for physical properties at \n" << "(";
         for (int i = 0; i < spaceDim; ++i)
-          msg << " " << coordsVertex[i];
-        msg << ") for dynamic fault interface " << label() << "\n"
-            << "using spatial database " << _dbInitialTract->label() << ".";
+          msg << "  " << quadPtsGlobal[index + i];
+        msg << ") in friction model " << label() << "\n"
+            << "using spatial database '" << _dbInitialTract->label() << "'.";
         throw std::runtime_error(msg.str());
       } // if
+      tractionQuadPt /= pressureScale;
 
-      _normalizer->nondimensionalize(&tractionVertex[0], tractionVertex.size(),
-        pressureScale);
+      // Get cell geometry information that depends on cell
+      const double_array& basis = _quadrature->basis();
+      const double_array& jacobianDet = _quadrature->jacobianDet();
 
-      // Update section
-      assert(tractionVertex.size() == tractionSection->getFiberDimension(*v_iter));
-      tractionSection->updatePoint(*v_iter, &tractionVertex[0]);
+      // Compute properties weighted by area
+      const double wt = quadWts[iQuadPt] * jacobianDet[iQuadPt];
+      for (int iBasis = 0; iBasis < numBasis; ++iBasis) {
+        const double dArea = wt * basis[iQuadPt*numBasis+iBasis];
+        for (int iDim = 0; iDim < spaceDim; ++iDim)
+          tractionCell[iBasis*spaceDim+iDim] += tractionQuadPt[iDim] * dArea;
+      } // for
     } // for
+    tractionVisitor.clear();
+    faultSieveMesh->updateClosure(*c_iter, tractionVisitor);
+  } // for
+  // Close properties database
+  _dbInitialTract->close();
 
-    _dbInitialTract->close();
+  traction.complete(); // Assemble contributions
 
-    //traction.view("INITIAL TRACTIONS"); // DEBUGGING
-  } // if
+  // Loop over vertices and divide by area to get weighted values and
+  // nondimensionalize properties.
+  const ALE::Obj<RealSection>& areaSection = _fields->get("area").section();
+  assert(!areaSection.isNull());
+
+  double_array tractionVertex(spaceDim);
+  double areaVertex = 0.0;
+  for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+       v_iter != verticesEnd;
+       ++v_iter) {
+    tractionSection->restrictPoint(*v_iter,
+        &tractionVertex[0], tractionVertex.size());
+    areaSection->restrictPoint(*v_iter, &areaVertex, 1);
+    assert(areaVertex > 0.0);
+    tractionVertex /= areaVertex;
+    tractionSection->updatePoint(*v_iter, &tractionVertex[0]);
+  } // for
+
+  traction.view("INITIAL TRACTIONS"); // DEBUGGING
 } // _getInitialTractions
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/libsrc/friction/FrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/friction/FrictionModel.cc	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/libsrc/friction/FrictionModel.cc	2010-02-22 03:00:20 UTC (rev 16303)
@@ -186,6 +186,8 @@
     quadrature->computeGeometry(coordinatesCell, *c_iter);
 #endif
 
+    propertiesCell = 0.0;
+
     const double_array& quadPtsNonDim = quadrature->quadPts();
     quadPtsGlobal = quadPtsNonDim;
     _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
@@ -218,11 +220,11 @@
         const double dArea = wt * basis[iQuadPt*numBasis+iBasis];
         for (int iProp = 0; iProp < numDBProperties; ++iProp)
           propertiesCell[iBasis*numDBProperties+iProp]
-              = propertiesQuadPt[iProp] * dArea;
+              += propertiesQuadPt[iProp] * dArea;
       } // for
-      propertiesVisitor.clear();
-      faultSieveMesh->updateClosure(*c_iter, propertiesVisitor);
     } // for
+    propertiesVisitor.clear();
+    faultSieveMesh->updateClosure(*c_iter, propertiesVisitor);
   } // for
   // Close properties database
   _dbProperties->close();
@@ -299,6 +301,8 @@
       _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
           lengthScale);
 
+      stateVarsCell = 0.0;
+
       // Loop over quadrature points in cell and query database
       for (int iQuadPt=0, index=0;
           iQuadPt < numQuadPts;
@@ -326,11 +330,11 @@
           const double dArea = wt * basis[iQuadPt*numBasis+iBasis];
           for (int iVar = 0; iVar < numDBStateVars; ++iVar)
             stateVarsCell[iBasis*numDBStateVars+iVar]
-                = stateVarsDBQuery[iVar] * dArea;
+                += stateVarsDBQuery[iVar] * dArea;
         } // for
-        stateVarsVisitor.clear();
+      } // for
+      stateVarsVisitor.clear();
       faultSieveMesh->updateClosure(*c_iter, stateVarsVisitor);
-      } // for
     } // for
     // Close database
     _dbInitialState->close();

Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc	2010-02-22 03:00:20 UTC (rev 16303)
@@ -38,10 +38,10 @@
   1.0, 1.0, 1.0, 1.0
 };
 const double pylith::bc::NeumannDataHex8::_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,
+  0.62200847,  0.16666667,  0.0446582,   0.16666667,
+  0.16666667,  0.62200847,  0.16666667,   0.0446582,
+  0.0446582,   0.16666667,  0.62200847,  0.16666667,
+  0.16666667,   0.0446582,  0.16666667,  0.62200847,
 };
 const double pylith::bc::NeumannDataHex8::_basisDerivRef[] = {
   -0.39433757, -0.39433757,

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am	2010-02-22 03:00:20 UTC (rev 16303)
@@ -48,8 +48,8 @@
 	TestFaultCohesiveDyn.cc \
 	TestFaultCohesiveDynTri3.cc \
 	TestFaultCohesiveDynQuad4.cc \
+	TestFaultCohesiveDynTet4.cc \
 	TestFaultCohesiveDynHex8.cc \
-	TestFaultCohesiveDynTet4.cc \
 	test_faults.cc
 
 
@@ -80,8 +80,8 @@
 	TestFaultCohesiveDyn.hh \
 	TestFaultCohesiveDynTri3.hh \
 	TestFaultCohesiveDynQuad4.hh \
-	TestFaultCohesiveDynHex8.hh \
-	TestFaultCohesiveDynTet4.hh
+	TestFaultCohesiveDynTet4.hh \
+	TestFaultCohesiveDynHex8.hh 
 
 # Source files associated with testing data
 testfaults_SOURCES += \
@@ -142,8 +142,8 @@
 	data/CohesiveDynData.cc \
 	data/CohesiveDynDataTri3.cc \
 	data/CohesiveDynDataQuad4.cc \
-	data/CohesiveDynDataHex8.cc \
-	data/CohesiveDynDataTet4.cc
+	data/CohesiveDynDataTet4.cc \
+	data/CohesiveDynDataHex8.cc
 
 noinst_HEADERS += \
 	data/CohesiveData.hh \
@@ -203,8 +203,8 @@
 	data/CohesiveDynData.hh \
 	data/CohesiveDynDataTri3.hh \
 	data/CohesiveDynDataQuad4.hh \
-	data/CohesiveDynDataHex8.hh \
-	data/CohesiveDynDataTet4.hh
+	data/CohesiveDynDataTet4.hh \
+	data/CohesiveDynDataHex8.hh 
 
 AM_CPPFLAGS = \
 	$(PYTHON_EGG_CPPFLAGS) -I$(PYTHON_INCDIR) \

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataHex8.cc	2010-02-22 03:00:20 UTC (rev 16303)
@@ -54,10 +54,10 @@
 };
 
 const double pylith::faults::CohesiveDynDataHex8::_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,
+  0.62200847,  0.16666667,  0.0446582,   0.16666667,
+  0.16666667,  0.62200847,  0.16666667,   0.0446582,
+  0.0446582,   0.16666667,  0.62200847,  0.16666667,
+  0.16666667,   0.0446582,  0.16666667,  0.62200847,
 };
 
 const double pylith::faults::CohesiveDynDataHex8::_basisDeriv[] = {
@@ -1340,10 +1340,10 @@
 };
 
 const double pylith::faults::CohesiveDynDataHex8::_initialTractions[] = {
-  1.0, 2.0, -3.0,
-  1.1, 2.1, -3.1,
-  1.2, 2.2, -3.2,
-  1.3, 2.3, -3.3,
+  1.063397471, 2.063397471, -3.063397471, 
+  1.121132498, 2.121132498, -3.121132498, 
+  1.178867525, 2.178867525, -3.178867525,
+  1.236602552, 2.236602552, -3.236602552
 };
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataQuad4.cc	2010-02-22 03:00:20 UTC (rev 16303)
@@ -317,8 +317,8 @@
 };
 
 const double pylith::faults::CohesiveDynDataQuad4::_initialTractions[] = {
-  1.0, -2.0,
-  1.1, -2.1,
+  1.05, -2.05,
+  1.05, -2.05,
 };
 
 
@@ -375,14 +375,14 @@
   9.6, 10.6,
   9.7, 10.7, // 8
   9.9, 10.9, // 9
-  -7.0, -10.8, // 10
-  -6.14, -10.0, // 11
+  -8.8+3.05*0.6, -10.8, // 10
+  -8.0+3.05*0.6, -10.0, // 11
 };
 
 // :TODO: Update slip values based on changes in Lagrange multiplier values
 const double pylith::faults::CohesiveDynDataQuad4::_slipSlipE[] = {
-  33.6, 0.0,
-  30.28, 0.0,
+  33.54, 0.0,
+  30.34, 0.0,
 };
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTet4.cc	2010-02-22 03:00:20 UTC (rev 16303)
@@ -471,9 +471,9 @@
 };
 
 const double pylith::faults::CohesiveDynDataTet4::_initialTractions[] = {
-  1.0, 2.0, -3.0,
   1.1, 2.1, -3.1,
-  1.2, 2.2, -3.2,
+  1.1, 2.1, -3.1,
+  1.1, 2.1, -3.1,
 };
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.cc	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDynDataTri3.cc	2010-02-22 03:00:20 UTC (rev 16303)
@@ -247,8 +247,8 @@
 };
 
 const double pylith::faults::CohesiveDynDataTri3::_initialTractions[] = {
-  1.0, -2.0,
-  1.1, -2.1,
+  1.05, -2.05,
+  1.05, -2.05,
 };
 
 
@@ -299,14 +299,14 @@
   9.4, 10.4,
   9.5, 10.5, // 6
   9.7, 10.7, // 7
-  -6.8, -10.6, // 8
-  -6.94, -10.8, // 9
+  -8.6+3.05*0.6, -10.6, // 8
+  -8.8+3.05*0.6, -10.8, // 9
 };
 
 // :TODO: Update slip values based on changes in Lagrange multiplier values
 const double pylith::faults::CohesiveDynDataTri3::_slipSlipE[] = {
-  32.8, 0.0,
-  33.48, 0.0,
+  32.74, 0.0,
+  33.54, 0.0,
 };
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_initialtract.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_initialtract.spatialdb	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8_initialtract.spatialdb	2010-02-22 03:00:20 UTC (rev 16303)
@@ -4,14 +4,14 @@
   value-names =  traction-shear-leftlateral traction-shear-updip traction-normal
   value-units =  Pa   Pa  Pa
   num-locs = 4
-  data-dim = 1
+  data-dim = 2
   space-dim = 3
   cs-data = cartesian {
     to-meters = 1.0
     space-dim = 3
   }
 }
-         0.0   -1.0000   -1.0000    1.0000    2.0000   -3.0000
-         0.0    1.0000   -1.0000    1.1000    2.1000   -3.1000
-         0.0   -1.0000    1.0000    1.2000    2.2000   -3.2000
-         0.0    1.0000    1.0000    1.3000    2.3000   -3.3000
+0.0  -0.57735027  -0.57735027    1.0000    2.0000   -3.0000
+0.0   0.57735027  -0.57735027    1.1000    2.1000   -3.1000
+0.0  -0.57735027   0.57735027    1.2000    2.2000   -3.2000
+0.0   0.57735027   0.57735027    1.3000    2.3000   -3.3000

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4_initialtract.spatialdb
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4_initialtract.spatialdb	2010-02-22 00:44:15 UTC (rev 16302)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4_initialtract.spatialdb	2010-02-22 03:00:20 UTC (rev 16303)
@@ -4,7 +4,7 @@
   value-names =  traction-shear-leftlateral traction-shear-updip traction-normal
   value-units =  Pa   Pa  Pa
   num-locs = 3
-  data-dim = 1
+  data-dim = 2
   space-dim = 3
   cs-data = cartesian {
     to-meters = 1.0
@@ -12,5 +12,5 @@
   }
 }
 0.0  -1.0  0.0  1.0  2.0  -3.0
-0.0    0.0  1.0  1.1  2.1  -3.1
-0.0    1.0  0.0  1.2  2.2  -3.2
+0.0   0.0  1.0  1.1  2.1  -3.1
+0.0   1.0  0.0  1.2  2.2  -3.2



More information about the CIG-COMMITS mailing list