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

knepley at geodynamics.org knepley at geodynamics.org
Tue Apr 17 12:21:14 PDT 2007


Author: knepley
Date: 2007-04-17 12:21:14 -0700 (Tue, 17 Apr 2007)
New Revision: 6592

Modified:
   short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
Log:
Now correctly adding cohesive elements


Modified: short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2007-04-17 18:47:48 UTC (rev 6591)
+++ short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2007-04-17 19:21:14 UTC (rev 6592)
@@ -56,7 +56,7 @@
     for(sieve_type::traits::supportSequence::iterator c_iter = cBegin;
 	c_iter != cEnd;
 	++c_iter) {
-      const unsigned int faceSize = 3; //_numFaceVertices(*c_iter, mesh);
+      const unsigned int faceSize = _numFaceVertices(*c_iter, mesh);
 
       if (debug)
 	std::cout << "  Checking cell " << *c_iter << std::endl;
@@ -109,7 +109,6 @@
       } // if
     } // for
   } // for
-  faultSieve->view("Fault sieve");
   fault->setSieve(faultSieve);
   fault->stratify();
   faultCells.clear();
@@ -119,7 +118,7 @@
   // Add new shadow vertices
   const ALE::Obj<Mesh::label_sequence>& fVertices = fault->depthStratum(0);
   const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
-  Mesh::point_type newVertex = *vertices->begin() + vertices->size();
+  Mesh::point_type newPoint = sieve->base()->size() + sieve->cap()->size();
   std::map<int,int> vertexRenumber;
   
   for(Mesh::label_sequence::iterator v_iter = fVertices->begin();
@@ -128,7 +127,7 @@
     if (debug) 
       std::cout << "Duplicating " << *v_iter << " to "
 		<< vertexRenumber[*v_iter] << std::endl;
-    vertexRenumber[*v_iter] = newVertex++;
+    vertexRenumber[*v_iter] = newPoint++;
   } // for
 
   // Split the mesh along the fault sieve and create cohesive elements
@@ -137,7 +136,7 @@
   
   for(Mesh::label_sequence::iterator f_iter = faces->begin();
       f_iter != faces->end();
-      ++f_iter) {
+      ++f_iter, ++newPoint) {
     if (debug)
       std::cout << "Considering fault face " << *f_iter << std::endl;
     const ALE::Obj<sieve_type::traits::supportSequence>& cells =
@@ -168,7 +167,28 @@
 	++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();
+    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) {
+      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) {
+      if (debug)
+        std::cout << "    vertex " << vertexRenumber[*v_iter] << std::endl;
+      sieve->addArrow(vertexRenumber[*v_iter], newPoint, color++);
+    }
   } // for
+  mesh->view("Mesh with Cohesive Elements");
 
   // Fix coordinates
   const ALE::Obj<real_section_type>& coordinates = 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc	2007-04-17 18:47:48 UTC (rev 6591)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesive.cc	2007-04-17 19:21:14 UTC (rev 6592)
@@ -31,6 +31,7 @@
 void
 pylith::faults::TestFaultCohesive::testAdjustTopologyLine(void)
 { // testAdjustTopologyLine
+  // Also have "data/meshTri3A_orig.txt"
   const char* filename = "data/meshTet4A_orig.txt";
   _testAdjustTopology(filename);
 } // testAdjustTopologyLine



More information about the cig-commits mailing list