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

knepley at geodynamics.org knepley at geodynamics.org
Mon Jun 25 10:41:06 PDT 2007


Author: knepley
Date: 2007-06-25 10:41:05 -0700 (Mon, 25 Jun 2007)
New Revision: 7480

Modified:
   short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
   short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.hh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.cc
   short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8h.mesh
   short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4i.mesh
Log:
Really crappy fix for fault orientation. Must be redone


Modified: short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -33,8 +33,25 @@
   // Create set with vertices on fault
   const int_section_type::chart_type& chart = groupField->getChart();
   std::set<Mesh::point_type> faultVertices; // Vertices on fault
+  const ALE::Obj<sieve_type>& sieve = mesh->getSieve();
+  *fault = new Mesh(mesh->comm(), mesh->getDimension()-1, mesh->debug());
+  const ALE::Obj<sieve_type> faultSieve = new sieve_type(sieve->comm(), 
+                                                         sieve->debug());
+  const int  numCells   = mesh->heightStratum(0)->size();
+  int        numCorners = 0;
+  int        faceSize   = 0;
+  int       *indices    = NULL;
+  int        oppositeVertex;
+  PointArray origVertices;
+  PointArray faceVertices;
+  PointArray neighborVertices;
 
-  const int numCells = mesh->heightStratum(0)->size();
+  if (!(*fault)->commRank()) {
+    numCorners = sieve->nCone(*mesh->heightStratum(0)->begin(), mesh->depth())->size();
+    faceSize   = _numFaceVertices(*mesh->heightStratum(0)->begin(), mesh, -1);
+    indices    = new int[faceSize];
+  }
+
   for(int_section_type::chart_type::iterator c_iter = chart.begin();
       c_iter != chart.end();
       ++c_iter) {
@@ -42,10 +59,6 @@
     faultVertices.insert(*c_iter);
   } // for
 
-  const ALE::Obj<sieve_type>& sieve = mesh->getSieve();
-  *fault = new Mesh(mesh->comm(), mesh->debug());
-  const ALE::Obj<sieve_type> faultSieve = new sieve_type(sieve->comm(), 
-						    sieve->debug());
   const std::set<Mesh::point_type>::const_iterator fvBegin = 
     faultVertices.begin();
   const std::set<Mesh::point_type>::const_iterator fvEnd = 
@@ -53,7 +66,7 @@
 
   int f = sieve->base()->size() + sieve->cap()->size();
   int debug = mesh->debug();
-  ALE::Obj<PointArray> face = new PointArray();
+  ALE::Obj<std::set<Mesh::point_type> > face = new std::set<Mesh::point_type>();
   std::set<Mesh::point_type> faultCells;
   
   // Create a sieve which captures the fault
@@ -70,50 +83,78 @@
     for(sieveAlg::supportArray::iterator c_iter = cBegin;
 	c_iter != cEnd;
 	++c_iter) {
-      const unsigned int faceSize = _numFaceVertices(*c_iter, mesh);
+      const unsigned int faceSize = _numFaceVertices(*c_iter, mesh, -1);
 
-      if (debug)
-	std::cout << "  Checking cell " << *c_iter << std::endl;
-      if (faultCells.find(*c_iter) != faultCells.end())
-	continue;
+      if (debug) std::cout << "  Checking cell " << *c_iter << std::endl;
+      if (faultCells.find(*c_iter) != faultCells.end())	continue;
       const ALE::Obj<sieveAlg::coneArray>& cone =
         sieveAlg::nCone(mesh, *c_iter, mesh->height());
       const sieveAlg::coneArray::iterator vBegin = cone->begin();
       const sieveAlg::coneArray::iterator vEnd   = cone->end();
-      
+
       face->clear();
       for(sieveAlg::coneArray::iterator v_iter = vBegin;
 	  v_iter != vEnd;
 	  ++v_iter) {
-	if (faultVertices.find(*v_iter) != fvEnd) {
-	  if (debug)
-	    std::cout << "    contains fault vertex " << *v_iter << std::endl;
-	  face->insert(face->end(), *v_iter);
-	} // if
+        if (faultVertices.find(*v_iter) != fvEnd) {
+          if (debug) std::cout << "    contains fault vertex " << *v_iter << std::endl;
+          face->insert(face->end(), *v_iter);
+        } // if
       } // for
       if (face->size() > faceSize)
-	throw ALE::Exception("Invalid fault mesh: Too many vertices of an "
-			     "element on the fault");
+        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 (preFace->size() > 1)
+        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;
+        } else if (preFace->size() == 1) {
+          const Mesh::point_type faultFace = *preFace->begin();
+
+          if (*c_iter < *faultSieve->support(faultFace)->begin()) {
+            if (debug) std::cout << "  Reversing face " << faultFace << std::endl;
+            faceVertices.clear();
+            const ALE::Obj<sieve_type::traits::coneSequence>& cone = faultSieve->cone(faultFace);
+            for(sieve_type::traits::coneSequence::iterator v_iter = cone->begin();
+                v_iter != cone->end(); ++v_iter) {
+              faceVertices.insert(faceVertices.begin(), *v_iter);
+            }
+            faultSieve->clearCone(faultFace);
+            int color = 0;
+            for(PointArray::const_iterator v_iter = faceVertices.begin();
+                v_iter != faceVertices.end(); ++v_iter) {
+              faultSieve->addArrow(*v_iter, faultFace, color++);
+            } // for
+          }
+          faultSieve->addArrow(faultFace, *c_iter);
+        } else if (preFace->size() == 0) {
+          if (debug) std::cout << "  Adding face " << f << std::endl;
+          // Give the face an orientation
+          const ALE::Obj<sieve_type::traits::coneSequence>& cone = sieve->cone(*c_iter);
+
+          origVertices.clear();
+          faceVertices.clear();
+          int v = 0;
+          for(sieve_type::traits::coneSequence::iterator v_iter = cone->begin();
+              v_iter != cone->end(); ++v_iter, ++v) {
+            if (face->find(*v_iter) != face->end()) {
+              if (debug) std::cout << "    vertex " << *v_iter << std::endl;
+              indices[origVertices.size()] = v;
+              origVertices.insert(origVertices.end(), *v_iter);
+            } else {
+              if (debug) std::cout << "    vertex " << *v_iter << std::endl;
+              oppositeVertex = v;
+            } // if/else
+          }
+          _faceOrientation(*c_iter, mesh, numCorners, indices, oppositeVertex, &origVertices, &faceVertices);
           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;
+          for(PointArray::const_iterator f_iter = faceVertices.begin();
+              f_iter != faceVertices.end(); ++f_iter) {
+            if (debug) std::cout << "    vertex " << *f_iter << std::endl;
             faultSieve->addArrow(*f_iter, f, color++);
           } // for
           faultSieve->addArrow(f, *c_iter);
@@ -126,9 +167,112 @@
   (*fault)->setSieve(faultSieve);
   (*fault)->stratify();
   faultCells.clear();
-  if (debug)
-    (*fault)->view("Fault mesh");
+  if (debug) (*fault)->view("Fault mesh");
+  // Orient the fault sieve
+  int numFaultCorners = 0;
+  PointArray flippedFaces;
 
+  if (!(*fault)->commRank()) {
+    numFaultCorners = faultSieve->nCone(*(*fault)->heightStratum(1)->begin(), (*fault)->depth()-1)->size();
+    if (debug) std::cout << "  Fault corners " << numFaultCorners << std::endl;
+  }
+  const ALE::Obj<Mesh::label_sequence>& fFaces = (*fault)->heightStratum(1);
+  int faultFaceSize = _numFaceVertices(*fFaces->begin(), (*fault), (*fault)->depth()-1);
+  if (debug) std::cout << "  Fault face size " << faultFaceSize << std::endl;
+  for(Mesh::label_sequence::iterator e_iter = fFaces->begin(); e_iter != fFaces->end(); ++e_iter) {
+    if (debug) std::cout << "  Checking fault face " << *e_iter << std::endl;
+    const Obj<sieve_type::traits::coneSequence>& vertices  = faultSieve->cone(*e_iter);
+    sieve_type::traits::coneSequence::iterator vEnd = vertices->end();
+    std::set<Mesh::point_type> facesSeen;
+
+    for(sieve_type::traits::coneSequence::iterator v_iter = vertices->begin(); v_iter != vEnd; ++v_iter) {
+      const Obj<sieve_type::traits::supportSequence>& neighbors = faultSieve->support(*v_iter);
+      sieve_type::traits::supportSequence::iterator nEnd = neighbors->end();
+
+      for(sieve_type::traits::supportSequence::iterator n_iter = neighbors->begin(); n_iter != nEnd; ++n_iter) {
+        if (facesSeen.find(*n_iter) != facesSeen.end()) continue;
+        facesSeen.insert(*n_iter);
+        if (debug) std::cout << "  Checking fault neighbor " << *n_iter << std::endl;
+        if (*e_iter >= *n_iter) continue;
+        const ALE::Obj<sieve_type::coneSet>& meet = faultSieve->nMeet(*e_iter, *n_iter, 1);
+
+        for(sieve_type::coneSet::iterator c_iter = meet->begin(); c_iter != meet->end(); ++c_iter) {
+          if (debug) std::cout << "    meet " << *c_iter << std::endl;
+        }
+        if ((int) meet->size() == faultFaceSize) {
+          if (debug) std::cout << "    Found neighboring fault face " << *n_iter << std::endl;
+          // Give the faces an orientation
+          const ALE::Obj<sieve_type::traits::coneSequence>& eCone = faultSieve->cone(*e_iter);
+
+          origVertices.clear();
+          faceVertices.clear();
+          int v = 0;
+          for(sieve_type::traits::coneSequence::iterator v_iter = eCone->begin(); v_iter != eCone->end(); ++v_iter, ++v) {
+            if (meet->find(*v_iter) != meet->end()) {
+              indices[origVertices.size()] = v;
+              origVertices.insert(origVertices.end(), *v_iter);
+              if (debug) std::cout << "    vertex " << *v_iter << std::endl;
+            } else {
+              oppositeVertex = v;
+              if (debug) std::cout << "    vertex " << *v_iter << " opposite vertex " << oppositeVertex << std::endl;
+            } // if/else
+          }
+          bool eOrient = _faceOrientation(*e_iter, (*fault), numFaultCorners, indices, oppositeVertex, &origVertices, &faceVertices);
+          const ALE::Obj<sieve_type::traits::coneSequence>& nCone = faultSieve->cone(*n_iter);
+
+          origVertices.clear();
+          neighborVertices.clear();
+          v = 0;
+          for(sieve_type::traits::coneSequence::iterator v_iter = nCone->begin(); v_iter != nCone->end(); ++v_iter, ++v) {
+            if (meet->find(*v_iter) != meet->end()) {
+              indices[origVertices.size()] = v;
+              origVertices.insert(origVertices.end(), *v_iter);
+              if (debug) std::cout << "    vertex " << *v_iter << std::endl;
+            } else {
+              oppositeVertex = v;
+              if (debug) std::cout << "    vertex " << *v_iter << " opposite vertex " << oppositeVertex << std::endl;
+            } // if/else
+          }
+          bool nOrient = _faceOrientation(*n_iter, (*fault), numFaultCorners, indices, oppositeVertex, &origVertices, &neighborVertices);
+          if (faultFaceSize > 1) {
+            for(PointArray::iterator v_iter = faceVertices.begin(); v_iter != faceVertices.end(); ++v_iter) {
+              if (debug) std::cout << "  face vertex " << *v_iter << std::endl;
+            }
+            for(PointArray::iterator v_iter = neighborVertices.begin(); v_iter != neighborVertices.end(); ++v_iter) {
+              if (debug) std::cout << "  neighbor vertex " << *v_iter << std::endl;
+            }
+            if (*faceVertices.begin() == *neighborVertices.begin()) {
+              if (debug) std::cout << "  Scheduling fault face " << *n_iter << " to be flipped" << std::endl;
+              flippedFaces.push_back(*n_iter);
+            }
+          } else {
+            if (nOrient == eOrient) {
+              if (debug) std::cout << "  Scheduling fault face " << *n_iter << " to be flipped" << std::endl;
+              flippedFaces.push_back(*n_iter);
+            }
+          }
+        }
+      }
+    }
+  }
+  for(PointArray::const_iterator f_iter = flippedFaces.begin(); f_iter != flippedFaces.end(); ++f_iter) {
+    if (debug) std::cout << "  Reversing fault face " << *f_iter << std::endl;
+    faceVertices.clear();
+    const ALE::Obj<sieve_type::traits::coneSequence>& cone = faultSieve->cone(*f_iter);
+    for(sieve_type::traits::coneSequence::iterator v_iter = cone->begin();
+        v_iter != cone->end(); ++v_iter) {
+      faceVertices.insert(faceVertices.begin(), *v_iter);
+    }
+    faultSieve->clearCone(*f_iter);
+    int color = 0;
+    for(PointArray::const_iterator v_iter = faceVertices.begin();
+        v_iter != faceVertices.end(); ++v_iter) {
+      faultSieve->addArrow(*v_iter, *f_iter, color++);
+    } // for
+  }
+  flippedFaces.clear();
+  if (debug) (*fault)->view("Oriented Fault mesh");
+
   // Add new shadow vertices and possibly Lagrange multipler vertices
   const ALE::Obj<Mesh::label_sequence>& fVertices = (*fault)->depthStratum(0);
   const ALE::Obj<Mesh::label_sequence>& vertices = mesh->depthStratum(0);
@@ -169,20 +313,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;
+  int firstCohesiveCell = newPoint;
   PointArray newVertices;
-  int        oppositeVertex;
-  int        numCorners = 0;
-  int        faceSize   = 0;
-  int       *indices    = NULL;
-  int        firstCohesiveCell;
 
-  if (!(*fault)->commRank()) {
-    numCorners = sieve->nCone(*mesh->heightStratum(0)->begin(), mesh->depth())->size();
-    faceSize   = _numFaceVertices(*mesh->heightStratum(0)->begin(), mesh);
-    indices    = new int[faceSize];
-    firstCohesiveCell = newPoint;
-  }
   for(Mesh::label_sequence::iterator f_iter = faces->begin();
       f_iter != faces->end();
       ++f_iter, ++newPoint) {
@@ -190,18 +323,59 @@
       std::cout << "Considering fault face " << *f_iter << std::endl;
     const ALE::Obj<sieve_type::traits::supportSequence>& cells =
       faultSieve->support(*f_iter);
-    Mesh::point_type cell = std::max(*cells->begin(), *(++cells->begin()));
+    Mesh::point_type cell = *cells->begin();
     const ALE::Obj<sieve_type::traits::coneSequence>& cone = sieve->cone(cell);
     
-    if (debug)
-      std::cout << "  Replacing cell " << cell << std::endl;
+    if (debug) std::cout << "  Checking orientation against cell " << cell << std::endl;
     origVertices.clear();
-    newVertices.clear();
+    faceVertices.clear();
     int v = 0;
-    for(sieve_type::traits::coneSequence::iterator v_iter = cone->begin();
-        v_iter != cone->end();
-        ++v_iter, ++v) {
+    for(sieve_type::traits::coneSequence::iterator v_iter = cone->begin(); v_iter != cone->end(); ++v_iter, ++v) {
       if (vertexRenumber.find(*v_iter) != vertexRenumber.end()) {
+        if (debug) std::cout << "    vertex " << vertexRenumber[*v_iter] << std::endl;
+        indices[origVertices.size()] = v;
+        origVertices.insert(origVertices.end(), *v_iter);
+      } else {
+        if (debug) std::cout << "    vertex " << *v_iter << " opposite vertex " << v << std::endl;
+        oppositeVertex = v;
+      } // if/else
+    }
+    _faceOrientation(cell, mesh, numCorners, indices, oppositeVertex, &origVertices, &faceVertices);
+    const ALE::Obj<sieve_type::traits::coneSequence>& faceCone = faultSieve->cone(*f_iter);
+    bool found = true;
+
+    v = 0;
+    for(sieve_type::traits::coneSequence::iterator v_iter = faceCone->begin(); v_iter != faceCone->end(); ++v_iter, ++v) {
+      if (debug) std::cout << "    Checking " << *v_iter << " against " << faceVertices[v] << std::endl;
+      if (faceVertices[v] != *v_iter) {
+        found = false;
+        break;
+      }
+    }
+    if (found) {
+      if (debug) std::cout << "  Choosing other cell" << std::endl;
+      cell = *(++cells->begin());
+    } else {
+      found = true;
+      v = 0;
+      for(sieve_type::traits::coneSequence::reverse_iterator v_iter = faceCone->rbegin(); v_iter != faceCone->rend(); ++v_iter, ++v) {
+        if (debug) std::cout << "    Checking " << *v_iter << " against " << faceVertices[v] << std::endl;
+        if (faceVertices[v] != *v_iter) {
+          found = false;
+          break;
+        }
+      }
+      if (!found) std::cout << "ERROR: Invalid orientation " << cell << std::endl;
+    }
+    if (debug) std::cout << "  Replacing cell " << cell << std::endl;
+    const ALE::Obj<sieve_type::traits::coneSequence>& cCone = sieve->cone(cell);
+
+    origVertices.clear();
+    newVertices.clear();
+    v = 0;
+    for(sieve_type::traits::coneSequence::iterator v_iter = cCone->begin();
+        v_iter != cCone->end(); ++v_iter, ++v) {
+      if (vertexRenumber.find(*v_iter) != vertexRenumber.end()) {
         if (debug)
           std::cout << "    vertex " << vertexRenumber[*v_iter] << std::endl;
         indices[origVertices.size()] = v;
@@ -217,43 +391,45 @@
     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();
-    PointArray faceVertices;
-	if (debug) {
-      int v = 0;
+    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();
+// 	if (debug) {
+//       int v = 0;
 
-	  std::cout << "  Original Vertices: " << std::endl << "    ";
-      for(PointArray::iterator v_iter = origVertices.begin(); v_iter != origVertices.end(); ++v_iter, ++v) {
-        std::cout << " " << *v_iter << "(" << indices[v] << ")";
-      }
-	  std::cout << std::endl << "  Opposite Vertex: " << oppositeVertex << std::endl;
-    }
-    _faceOrientation(cell, mesh, numCorners, indices, oppositeVertex, &origVertices, &faceVertices);
-    const PointArray::iterator fBegin = faceVertices.begin();
-    const PointArray::iterator fEnd   = faceVertices.end();
+// 	  std::cout << "  Original Vertices: " << std::endl << "    ";
+//       for(PointArray::iterator v_iter = origVertices.begin(); v_iter != origVertices.end(); ++v_iter, ++v) {
+//         std::cout << " " << *v_iter << "(" << indices[v] << ")";
+//       }
+// 	  std::cout << std::endl << "  Opposite Vertex: " << oppositeVertex << std::endl;
+//     }
+//     faceVertices.clear();
+//     _faceOrientation(cell, mesh, numCorners, indices, oppositeVertex, &origVertices, &faceVertices);
+//     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(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
+    //for(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
+    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(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
+    //for(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
+    for(sieve_type::traits::coneSequence::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(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
+      //for(PointArray::iterator v_iter = fBegin; v_iter != fEnd; ++v_iter) {
+      for(sieve_type::traits::coneSequence::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++);
@@ -300,7 +476,8 @@
 // ----------------------------------------------------------------------
 unsigned int
 pylith::faults::CohesiveTopology::_numFaceVertices(const Mesh::point_type& cell,
-						   const ALE::Obj<Mesh>& mesh)
+                                                   const ALE::Obj<Mesh>& mesh,
+                                                   const int depth = -1)
 { // _numFaceVertices
 
   /** :QUESTION:
@@ -311,11 +488,15 @@
   const int cellDim = mesh->getDimension();
 
   const ALE::Obj<sieve_type>& sieve = mesh->getSieve();
-  unsigned int numCorners = sieve->nCone(cell, mesh->depth())->size();
+  int meshDepth = (depth < 0) ? mesh->depth() : depth;
+  unsigned int numCorners = sieve->nCone(cell, meshDepth)->size();
 
   unsigned int numFaceVertices = 0;
   switch (cellDim)
     { // switch
+    case 0 :
+      numFaceVertices = 0;
+      break;
     case 1 :
       numFaceVertices = 1;
       break;
@@ -407,22 +588,22 @@
     if ((sortedIndices[0] == 0) && (sortedIndices[1] == 1) && (sortedIndices[2] == 2) && (sortedIndices[3] == 3)) {
       if (debug) std::cout << "Bottom quad" << std::endl;
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 0) {
+        if (indices[i] == 3) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 1) {
+        if (indices[i] == 2) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 2) {
+        if (indices[i] == 1) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 3) {
+        if (indices[i] == 0) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
@@ -431,22 +612,22 @@
     if ((sortedIndices[0] == 4) && (sortedIndices[1] == 5) && (sortedIndices[2] == 6) && (sortedIndices[3] == 7)) {
       if (debug) std::cout << "Top quad" << std::endl;
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 4) {
+        if (indices[i] == 5) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 7) {
+        if (indices[i] == 6) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 6) {
+        if (indices[i] == 7) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 5) {
+        if (indices[i] == 4) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
@@ -455,22 +636,22 @@
     if ((sortedIndices[0] == 0) && (sortedIndices[1] == 1) && (sortedIndices[2] == 4) && (sortedIndices[3] == 5)) {
       if (debug) std::cout << "Front quad" << std::endl;
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 0) {
+        if (indices[i] == 1) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 4) {
+        if (indices[i] == 5) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 5) {
+        if (indices[i] == 4) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 1) {
+        if (indices[i] == 0) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
@@ -479,22 +660,22 @@
     if ((sortedIndices[0] == 2) && (sortedIndices[1] == 3) && (sortedIndices[2] == 6) && (sortedIndices[3] == 7)) {
       if (debug) std::cout << "Back quad" << std::endl;
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 3) {
+        if (indices[i] == 7) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 2) {
+        if (indices[i] == 6) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 6) {
+        if (indices[i] == 2) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 7) {
+        if (indices[i] == 3) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
@@ -503,22 +684,22 @@
     if ((sortedIndices[0] == 1) && (sortedIndices[1] == 2) && (sortedIndices[2] == 5) && (sortedIndices[3] == 6)) {
       if (debug) std::cout << "Right quad" << std::endl;
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 1) {
+        if (indices[i] == 2) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 5) {
+        if (indices[i] == 6) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 6) {
+        if (indices[i] == 5) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 2) {
+        if (indices[i] == 1) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
@@ -527,30 +708,29 @@
     if ((sortedIndices[0] == 0) && (sortedIndices[1] == 3) && (sortedIndices[2] == 4) && (sortedIndices[3] == 7)) {
       if (debug) std::cout << "Left quad" << std::endl;
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 0) {
+        if (indices[i] == 4) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 3) {
+        if (indices[i] == 7) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 7) {
+        if (indices[i] == 3) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
       for(int i = 0; i < 4; ++i) {
-        if (indices[i] == 4) {
+        if (indices[i] == 0) {
           faceVertices->push_back((*origVertices)[i]); break;
         }
       }
     }
-    return false;
+    return true;
   }
-  // We reverse a positive orientation because our indices are from the "shadow" face side
-  if (posOrient) {
+  if (!posOrient) {
     if (debug) std::cout << "  Reversing initial face orientation" << std::endl;
     faceVertices->insert(faceVertices->end(), (*origVertices).rbegin(), (*origVertices).rend());
   } else {

Modified: short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.hh	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.hh	2007-06-25 17:41:05 UTC (rev 7480)
@@ -63,7 +63,8 @@
    */
   static
   unsigned int _numFaceVertices(const Mesh::point_type& cell,
-				const ALE::Obj<Mesh>& mesh);
+                                const ALE::Obj<Mesh>& mesh,
+                                const int depth);
 
   /** Determine a face orientation
    *    We should really have an interpolated mesh, instead of

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -22,7 +22,7 @@
  *
  * Cells are 0-1,16 and vertices are 4-15.
  *
- *       2,3,4,5 -------- 6,7,8,9 -- 14,15,16,17 -------- 10,11,12,13
+ *       2,3,4,5 -------- 14,15,16,17 -- 6,7,8,9 -------- 10,11,12,13
  *
  *                        ^^^^^^^^^^^^^^^^^^^^^^ Cohesive element
  *
@@ -64,8 +64,8 @@
 };
 
 const int pylith::faults::CohesiveDataHex8::_cells[] = {
-  2,  3,  5,  4,  6,  7,  9,  8,
- 14, 15, 17, 16, 10, 11, 13, 12,
+  2,  3,  5,  4, 14, 15, 17, 16,
+  6,  7,  9,  8, 10, 11, 13, 12,
   6,  7,  9,  8, 14, 15, 17, 16,
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8Lagrange.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -68,8 +68,8 @@
 };
 
 const int pylith::faults::CohesiveDataHex8Lagrange::_cells[] = {
-  2,  3,  5,  4,  6,  7,  9,  8,
- 14, 16, 20, 18, 10, 11, 13, 12,
+  2,  3,  5,  4, 14, 16, 20, 18,
+  6,  7,  9,  8, 10, 11, 13, 12,
   6,  7,  9,  8, 14, 16, 20, 18, 15, 17, 21, 19
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8b.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -64,8 +64,8 @@
 };
 
 const int pylith::faults::CohesiveDataHex8b::_cells[] = {
-  2,  6,  7,  3,  4,  8,  9,  5,
- 14, 10, 11, 15, 16, 12, 13, 17,
+  2, 14, 15,  3,  4, 16, 17,  5,
+  6, 10, 11,  7,  8, 12, 13,  9,
   6,  7,  9,  8, 14, 15, 17, 16,
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8c.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -66,7 +66,7 @@
 const int pylith::faults::CohesiveDataHex8c::_cells[] = {
   6,  8,  9,  7,  2,  4,  5,  3,
  10, 12, 13, 11, 14, 16, 17, 15,
-  6,  7,  9,  8, 14, 15, 17, 16,
+  7,  9,  8,  6, 15, 17, 16, 14,
 };
 
 const int pylith::faults::CohesiveDataHex8c::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8d.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -66,7 +66,7 @@
 const int pylith::faults::CohesiveDataHex8d::_cells[] = {
   4,  8,  6,  2,  5,  9,  7,  3,
  16, 12, 10, 14, 17, 13, 11, 15,
-  8,  6,  7,  9, 16, 14, 15, 17,
+  6,  7,  9,  8, 14, 15, 17, 16,
 };
 
 const int pylith::faults::CohesiveDataHex8d::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8e.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -66,7 +66,7 @@
 const int pylith::faults::CohesiveDataHex8e::_cells[] = {
   5,  9,  8,  4,  3,  7,  6,  2,
  17, 13, 12, 16, 15, 11, 10, 14,
-  9,  8,  6,  7, 17, 16, 14, 15,
+  8,  6,  7,  9, 16, 14, 15, 17,
 };
 
 const int pylith::faults::CohesiveDataHex8e::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8f.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -64,8 +64,8 @@
 };
 
 const int pylith::faults::CohesiveDataHex8f::_cells[] = {
-  3,  7,  9,  5,  2,  6,  8,  4,
- 15, 11, 13, 17, 14, 10, 12, 16,
+  3, 15, 17,  5,  2, 14, 16,  4,
+  7, 11, 13,  9,  6, 10, 12,  8,
   7,  9,  8,  6, 15, 17, 16, 14,
 };
 

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8g.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -75,10 +75,10 @@
 };
 
 const int pylith::faults::CohesiveDataHex8g::_cells[] = {
-   4, 10, 11,  5,  6, 12, 13,  7,
-   6, 12, 13,  7,  8, 14, 15,  9,
-  22, 16, 17, 23, 24, 18, 19, 25,
-  24, 18, 19, 25, 26, 20, 21, 27,
+   4, 22, 23,  5,  6, 24, 25,  7,
+   6, 24, 25,  7,  8, 26, 27,  9,
+  10, 16, 17, 11, 12, 18, 19, 13,
+  12, 18, 19, 13, 14, 20, 21, 15,
   10, 11, 13, 12, 22, 23, 25, 24,
   12, 13, 15, 14, 24, 25, 27, 26,
 };

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataHex8h.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -80,7 +80,7 @@
   23, 17, 19, 25, 22, 16, 18, 24,
   15, 14,  8,  9, 13, 12,  6,  7,
   11, 13, 12, 10, 23, 25, 24, 22,
-  15, 14, 12, 13, 27, 26, 24, 25, 
+  13, 15, 14, 12, 25, 27, 26, 24, 
 };
 
 const int pylith::faults::CohesiveDataHex8h::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataQuad4f.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -38,7 +38,7 @@
  *
  * Cells are 0-3,16-17 vertices are 4-15.
  *
- *      10 --------11--15 --------12
+ *      10 --------15--11 --------12
  *       |          |   |          |
  *       |          |   |          |
  *       |          |   |          |
@@ -47,7 +47,7 @@
  *       |          |   |          |
  *       |          |   |          |
  *       |          |   |          |
- *       5 -------- 7--14 -------- 9
+ *       5 --------14---7 -------- 9
  *       |          |   |          |
  *       |          |   |          |
  *       |          |   |          |
@@ -56,7 +56,7 @@
  *       |          |   |          |
  *       |          |   |          |
  *       |          |   |          |
- *       4 -------- 6--13 -------- 8
+ *       4 --------13---6 -------- 8
  */
 
 #include "CohesiveDataQuad4f.hh"
@@ -94,12 +94,12 @@
 };
 
 const int pylith::faults::CohesiveDataQuad4f::_cells[] = {
-  5,  7, 11, 10,
- 14,  9, 12, 15,
- 13,  8,  9, 14,
-  4,  6,  7,  5,
-  6,  7, 13, 14,
-  7, 11, 14, 15,
+  5, 14, 15, 10,
+  7,  9, 12, 11,
+  6,  8,  9,  7,
+  4, 13, 14,  5,
+  7,  6, 14, 13,
+ 11,  7, 15, 14,
 };
 
 const int pylith::faults::CohesiveDataQuad4f::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -57,7 +57,7 @@
 const int pylith::faults::CohesiveDataTet4::_cells[] = {
   3,  4,  5,  2,
   7,  9,  8,  6,
-  3,  5,  4,  7,  9,  8
+  5,  4,  3,  9,  8,  7
 };
 
 const int pylith::faults::CohesiveDataTet4::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4Lagrange.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -60,7 +60,7 @@
 const int pylith::faults::CohesiveDataTet4Lagrange::_cells[] = {
   3,  4,  5,  2,
   7, 11,  9,  6,
-  3,  5,  4,  7,  11,  9,  8, 12, 10
+  5,  4,  3,  11,  9,  7,  12, 10,  8
 };
 
 const int pylith::faults::CohesiveDataTet4Lagrange::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4c.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -57,7 +57,7 @@
 const int pylith::faults::CohesiveDataTet4c::_cells[] = {
   5,  4,  2,  3,
   6,  8,  9,  7,
-  3,  5,  4,  7, 9,  8
+  5,  4,  3,  9,  8,  7
 };
 
 const int pylith::faults::CohesiveDataTet4c::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4f.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -57,7 +57,7 @@
 const int pylith::faults::CohesiveDataTet4f::_cells[] = {
   3,  5,  4,  6,
   7,  8,  9,  2,
-  3,  4,  5,  7,  8,  9
+  4,  5,  3,  8,  9,  7
 };
 
 const int pylith::faults::CohesiveDataTet4f::_materialIds[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTet4i.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -64,12 +64,12 @@
  10, 12, 11,  9,
  13,  9, 12, 10,
   4,  5,  8,  7,
-  5,  7,  6, 10, 12, 11,
-  7, 5,  8,  12, 10, 13,
+  7,  6,  5, 12, 11, 10,
+  5,  8,  7, 10, 13, 12,
 };
 
 const int pylith::faults::CohesiveDataTet4i::_materialIds[] = {
-  0,  0, 0, 0,
+  0, 0, 0, 0,
   1, 1
 };
 
@@ -80,7 +80,7 @@
 
 const int pylith::faults::CohesiveDataTet4i::_groups[] = {
   5, 6, 7, 8, 10, 11, 12, 13,
-  0, 5
+  4, 9
 };
 
 const char* pylith::faults::CohesiveDataTet4i::_groupNames[] = {

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.cc	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/CohesiveDataTri3e.cc	2007-06-25 17:41:05 UTC (rev 7480)
@@ -18,14 +18,14 @@
  *         9
  *        / \
  *       /   \
- *      /     \
+ *      /  2  \
  *     /       \
  *    8---------5
  *     \       /|\
- *      \     / | \
+ *      \  3  / | \
  *       \   /  |  \
  *        \ /   |   \
- *         4    |    7
+ *         4  0 | 1  7
  *          \   |   /
  *           \  |  /
  *            \ | /

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8h.mesh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8h.mesh	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/hex8h.mesh	2007-06-25 17:41:05 UTC (rev 7480)
@@ -30,7 +30,7 @@
     num-corners = 8
     simplices = {
              0       0  6  7  1  2  8  9  3
-             1      15 14 16 17  9  6 10 11
+             1      15 14 16 17  9  8 10 11
              2       7 13 15  9  6 12 14  8
              3      11 10  4  5  9  8  2  3
     }

Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4i.mesh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4i.mesh	2007-06-25 16:58:30 UTC (rev 7479)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/tet4i.mesh	2007-06-25 17:41:05 UTC (rev 7480)
@@ -41,7 +41,7 @@
     }
   }
   group = {
-    name = end points
+    name = output
     type = vertices
     count = 2
     indices = {



More information about the cig-commits mailing list