[cig-commits] r7153 - in short/3D/PyLith/trunk: libsrc/faults unittests/libtests/faults unittests/libtests/faults/data

knepley at geodynamics.org knepley at geodynamics.org
Tue Jun 12 05:30:46 PDT 2007


Author: knepley
Date: 2007-06-12 05:30:46 -0700 (Tue, 12 Jun 2007)
New Revision: 7153

Modified:
   short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.cc
Log:
I think that line and triangular cohesive cell tests are correct


Modified: short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2007-06-12 06:14:25 UTC (rev 7152)
+++ short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2007-06-12 12:30:46 UTC (rev 7153)
@@ -96,31 +96,31 @@
 	throw ALE::Exception("Invalid fault mesh: Too many vertices of an "
 			     "element on the fault");
       if (face->size() == faceSize) {
-	if (debug)
-	  std::cout << "  Contains a face on the fault" << std::endl;
-	const ALE::Obj<sieve_type::supportSet> preFace = 
-	  faultSieve->nJoin1(face);
+        if (debug)
+          std::cout << "  Contains a face on the fault" << std::endl;
+        const ALE::Obj<sieve_type::supportSet> preFace = 
+          faultSieve->nJoin1(face);
 	
-	if (preFace->size() > 1)
-	  throw ALE::Exception("Invalid fault sieve: Multiple faces from "
-			       "vertex set");
-	else if (preFace->size() == 1)
-	  faultSieve->addArrow(*preFace->begin(), *c_iter);
-	else if (preFace->size() == 0) {
-	  if (debug)
-	    std::cout << "  Adding face " << f << std::endl;
-	  int color = 0;
-	  for(PointArray::const_iterator f_iter = face->begin();
-	      f_iter != face->end();
-	      ++f_iter) {
-	    if (debug)
-	      std::cout << "    vertex " << *f_iter << std::endl;
-	    faultSieve->addArrow(*f_iter, f, color++);
-	  } // for
-	  faultSieve->addArrow(f, *c_iter);
-	  f++;
-	} // if/else
-	faultCells.insert(*c_iter);
+        if (preFace->size() > 1)
+          throw ALE::Exception("Invalid fault sieve: Multiple faces from "
+                               "vertex set");
+        else if (preFace->size() == 1)
+          faultSieve->addArrow(*preFace->begin(), *c_iter);
+        else if (preFace->size() == 0) {
+          if (debug)
+            std::cout << "  Adding face " << f << std::endl;
+          int color = 0;
+          for(PointArray::const_iterator f_iter = face->begin();
+              f_iter != face->end();
+              ++f_iter) {
+            if (debug)
+              std::cout << "    vertex " << *f_iter << std::endl;
+            faultSieve->addArrow(*f_iter, f, color++);
+          } // for
+          faultSieve->addArrow(f, *c_iter);
+          f++;
+        } // if/else
+        faultCells.insert(*c_iter);
       } // if
     } // for
   } // for
@@ -140,10 +140,10 @@
   for(Mesh::label_sequence::iterator v_iter = fVertices->begin();
       v_iter != fVertices->end();
       ++v_iter, ++newPoint) {
+    vertexRenumber[*v_iter] = newPoint;
     if (debug) 
       std::cout << "Duplicating " << *v_iter << " to "
 		<< vertexRenumber[*v_iter] << std::endl;
-    vertexRenumber[*v_iter] = newPoint;
 
     for(std::set<std::string>::const_iterator name = groupNames->begin();
        name != groupNames->end(); ++name) {
@@ -162,7 +162,9 @@
   // Split the mesh along the fault sieve and create cohesive elements
   const ALE::Obj<Mesh::label_sequence>& faces = (*fault)->depthStratum(1);
   const ALE::Obj<Mesh::label_type>& material = mesh->getLabel("material-id");
+  PointArray origVertices;
   PointArray newVertices;
+  int        oppositeVertex;
   
   for(Mesh::label_sequence::iterator f_iter = faces->begin();
       f_iter != faces->end();
@@ -176,50 +178,66 @@
     
     if (debug)
       std::cout << "  Replacing cell " << cell << std::endl;
+    origVertices.clear();
     newVertices.clear();
+    int v = 0;
     for(sieve_type::traits::coneSequence::iterator v_iter = cone->begin();
-	v_iter != cone->end();
-	++v_iter) {
+        v_iter != cone->end();
+        ++v_iter, ++v) {
       if (vertexRenumber.find(*v_iter) != vertexRenumber.end()) {
-	if (debug)
-	  std::cout << "    vertex " << vertexRenumber[*v_iter] << std::endl;
-	newVertices.insert(newVertices.end(), vertexRenumber[*v_iter]);
+        if (debug)
+          std::cout << "    vertex " << vertexRenumber[*v_iter] << std::endl;
+        newVertices.insert(newVertices.end(), vertexRenumber[*v_iter]);
+        origVertices.insert(origVertices.end(), *v_iter);
       } else {
-	if (debug)
-	  std::cout << "    vertex " << *v_iter << std::endl;
-	newVertices.insert(newVertices.end(), *v_iter);
+        if (debug)
+          std::cout << "    vertex " << *v_iter << std::endl;
+        newVertices.insert(newVertices.end(), *v_iter);
+        oppositeVertex = v;
       } // if/else
     } // for
     sieve->clearCone(cell);
     int color = 0;
     for(PointArray::const_iterator v_iter = newVertices.begin();
-	v_iter != newVertices.end();
-	++v_iter) {
+        v_iter != newVertices.end();
+        ++v_iter) {
       sieve->addArrow(*v_iter, cell, color++);
     } // for
     // Adding cohesive cell (not interpolated)
-    const ALE::Obj<sieve_type::traits::coneSequence>& fCone  = faultSieve->cone(*f_iter);
-    const sieve_type::traits::coneSequence::iterator  fBegin = fCone->begin();
-    const sieve_type::traits::coneSequence::iterator  fEnd   = fCone->end();
+    //const ALE::Obj<sieve_type::traits::coneSequence>& fCone  = faultSieve->cone(*f_iter);
+    //const sieve_type::traits::coneSequence::iterator  fBegin = fCone->begin();
+    //const sieve_type::traits::coneSequence::iterator  fEnd   = fCone->end();
+    PointArray faceVertices;
+	if (debug) {
+	  std::cout << "  Original Vertices: " << std::endl << "    ";
+      for(PointArray::iterator v_iter = origVertices.begin(); v_iter != origVertices.end(); ++v_iter) {
+        std::cout << " " << *v_iter;
+      }
+	  std::cout << std::endl << "  Opposite Vertex: " << oppositeVertex << std::endl;
+    }
+    if (oppositeVertex%2) {
+      faceVertices.insert(faceVertices.end(), origVertices.begin(), origVertices.end());
+    } else {
+      faceVertices.insert(faceVertices.end(), origVertices.rbegin(), origVertices.rend());
+    }
+    const PointArray::iterator fBegin = faceVertices.begin();
+    const PointArray::iterator fEnd   = faceVertices.end();
     color = 0;
 
 	if (debug)
 	  std::cout << "  Creating cohesive cell " << newPoint << std::endl;
-    for(sieve_type::traits::coneSequence::iterator v_iter = fBegin; v_iter != fEnd;
-        ++v_iter) {
+    for(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
       if (debug)
         std::cout << "    vertex " << *v_iter << std::endl;
       sieve->addArrow(*v_iter, newPoint, color++);
     }
-    for(sieve_type::traits::coneSequence::iterator v_iter = fBegin; v_iter != fEnd;
-        ++v_iter) {
+    for(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
       if (debug)
         std::cout << "    shadow vertex " << vertexRenumber[*v_iter] << std::endl;
       sieve->addArrow(vertexRenumber[*v_iter], newPoint, color++);
     }
     if (constraintCell) {
-      for(sieve_type::traits::coneSequence::iterator v_iter = fBegin; v_iter != fEnd;
-          ++v_iter) {
+      for(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
         if (debug)
           std::cout << "    Lagrange vertex " << vertexRenumber[*v_iter]+1 << std::endl;
         sieve->addArrow(vertexRenumber[*v_iter]+1, newPoint, color++);

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc	2007-06-12 06:14:25 UTC (rev 7152)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc	2007-06-12 12:30:46 UTC (rev 7153)
@@ -467,6 +467,7 @@
 
   int iCell = 0;
   i = 0;
+  mesh->view(data.filename);
   for(Mesh::label_sequence::iterator c_iter = cells->begin();
       c_iter != cells->end();
       ++c_iter) {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.cc	2007-06-12 06:14:25 UTC (rev 7152)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3.cc	2007-06-12 12:30:46 UTC (rev 7153)
@@ -72,7 +72,7 @@
 const int pylith::faults::CohesiveDataTri3::_cells[] = {
   2,  4,  3,
   6,  7,  5,
-  3,  4,  6, 7
+  4,  3,  7, 6
 };
 
 const int pylith::faults::CohesiveDataTri3::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.cc	2007-06-12 06:14:25 UTC (rev 7152)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3Lagrange.cc	2007-06-12 12:30:46 UTC (rev 7153)
@@ -74,7 +74,7 @@
 const int pylith::faults::CohesiveDataTri3Lagrange::_cells[] = {
   2,  4,  3,
   6,  8,  5,
-  3,  4,  6,  8,  7,  9
+  4,  3,  8,  6,  9,  7
 };
 
 const int pylith::faults::CohesiveDataTri3Lagrange::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.cc	2007-06-12 06:14:25 UTC (rev 7152)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3b.cc	2007-06-12 12:30:46 UTC (rev 7153)
@@ -72,7 +72,7 @@
 const int pylith::faults::CohesiveDataTri3b::_cells[] = {
   4,  3,  2,
   7,  5,  6,
-  3,  4,  6, 7
+  4,  3,  7, 6
 };
 
 const int pylith::faults::CohesiveDataTri3b::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.cc	2007-06-12 06:14:25 UTC (rev 7152)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3c.cc	2007-06-12 12:30:46 UTC (rev 7153)
@@ -72,7 +72,7 @@
 const int pylith::faults::CohesiveDataTri3c::_cells[] = {
   3,  2,  4,
   5,  6,  7,
-  3,  4,  6, 7
+  4,  3,  7, 6
 };
 
 const int pylith::faults::CohesiveDataTri3c::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.cc	2007-06-12 06:14:25 UTC (rev 7152)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3d.cc	2007-06-12 12:30:46 UTC (rev 7153)
@@ -93,8 +93,8 @@
  10, 11,  7,
   8,  4,  5,
  12, 10,  9,
-  5,  6, 10, 11,
-  8,  5, 12, 10,
+  6,  5, 11, 10,
+  5,  8, 10, 12,
 };
 
 const int pylith::faults::CohesiveDataTri3d::_materialIds[] = {



More information about the cig-commits mailing list