[cig-commits] r18966 - in short/3D/PyLith/branches/v1.6-revisedfault: libsrc/pylith/faults unittests/libtests/faults

brad at geodynamics.org brad at geodynamics.org
Fri Sep 23 10:57:20 PDT 2011


Author: brad
Date: 2011-09-23 10:57:19 -0700 (Fri, 23 Sep 2011)
New Revision: 18966

Modified:
   short/3D/PyLith/branches/v1.6-revisedfault/libsrc/pylith/faults/FaultCohesiveLagrange.cc
   short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/TestFaultCohesiveKin.cc
Log:
Updated unit test for fault tractions.

Modified: short/3D/PyLith/branches/v1.6-revisedfault/libsrc/pylith/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2011-09-23 17:26:45 UTC (rev 18965)
+++ short/3D/PyLith/branches/v1.6-revisedfault/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2011-09-23 17:57:19 UTC (rev 18966)
@@ -1994,6 +1994,10 @@
   const ALE::Obj<RealSection>& dispTSection = dispT.section();
   assert(!dispTSection.isNull());
 
+  const ALE::Obj<RealSection>& orientationSection =
+    _fields->get("orientation").section();
+  assert(!orientationSection.isNull());
+
   // Allocate buffer for tractions field (if necessary).
   const ALE::Obj<RealSection>& tractionsSection = tractions->section();
   if (tractionsSection.isNull()) {
@@ -2016,16 +2020,20 @@
     const int v_fault = _cohesiveVertices[iVertex].fault;
 
     assert(spaceDim == dispTSection->getFiberDimension(v_lagrange));
-    assert(spaceDim == tractionsSection->getFiberDimension(v_fault));
-
     const double* dispTVertex = dispTSection->restrictPoint(v_lagrange);
     assert(0 != dispTVertex);
 
-    // :TODO: FIX THIS (orientation: global to fault)
-    for (int i = 0; i < spaceDim; ++i)
-      tractionsVertex[i] = dispTVertex[i];
+    assert(spaceDim*spaceDim == orientationSection->getFiberDimension(v_fault));
+    const double* orientationVertex = orientationSection->restrictPoint(v_fault);
+    assert(orientationVertex);
 
-    assert(tractionsVertex.size() == tractionsSection->getFiberDimension(v_fault));
+    tractionsVertex = 0.0;
+    for (int i=0; i < spaceDim; ++i)
+      for (int j=0; j < spaceDim; ++j)
+	tractionsVertex[i] += orientationVertex[i*spaceDim+j] * dispTVertex[j];
+
+    assert(tractionsVertex.size() == 
+	   tractionsSection->getFiberDimension(v_fault));
     tractionsSection->updatePoint(v_fault, &tractionsVertex[0]);
   } // for
 

Modified: short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/TestFaultCohesiveKin.cc	2011-09-23 17:26:45 UTC (rev 18965)
+++ short/3D/PyLith/branches/v1.6-revisedfault/unittests/libtests/faults/TestFaultCohesiveKin.cc	2011-09-23 17:57:19 UTC (rev 18966)
@@ -725,7 +725,6 @@
 { // testCalcTractionsChange
   CPPUNIT_ASSERT(_data);
   CPPUNIT_ASSERT(_data->fieldT);
-  CPPUNIT_ASSERT(_data->area);
 
   topology::Mesh mesh;
   FaultCohesiveKin fault;
@@ -805,9 +804,20 @@
     const double* dispVertex = dispSection->restrictPoint(meshVertex);
     CPPUNIT_ASSERT(0 != dispVertex);
 
-    const double scale = 1.0 / _data->area[iVertex];
+    const double* orientationVertex = 
+      &_data->orientation[iVertex*spaceDim*spaceDim];
+
     for (int iDim=0; iDim < spaceDim; ++iDim) {
-      const double tractionE = dispVertex[iDim] * scale;
+      double tractionE = 0.0;
+      for (int jDim=0; jDim < spaceDim; ++jDim)
+	tractionE += orientationVertex[iDim*spaceDim+jDim] * dispVertex[jDim];
+#if 0 // DEBUGGING
+      std::cout << "vertex: " << *v_iter
+		<< ", iDim: " << iDim
+		<< ", tractionE: " << tractionE
+		<< ", traction: " << tractionsVertex[iDim]
+		<< std::endl;
+#endif
       if (tractionE > 1.0) 
 	CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, tractionsVertex[iDim]/tractionE,
 				     tolerance);



More information about the CIG-COMMITS mailing list