[cig-commits] r12973 - short/3D/PyLith/trunk/libsrc/faults

knepley at geodynamics.org knepley at geodynamics.org
Tue Sep 30 12:04:01 PDT 2008


Author: knepley
Date: 2008-09-30 12:04:01 -0700 (Tue, 30 Sep 2008)
New Revision: 12973

Modified:
   short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
Log:
Fixed overlap construction for the fault


Modified: short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2008-09-30 18:24:00 UTC (rev 12972)
+++ short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc	2008-09-30 19:04:01 UTC (rev 12973)
@@ -482,6 +482,7 @@
     indices         = new int[faceSize];
     numFaultCorners = ifault->getNumCellCorners(p, ifault->depth(p));
   }
+  ifault->view("Serial fault mesh");
 
   // Add new shadow vertices and possibly Lagrange multipler vertices
   const Obj<Mesh::label_sequence>&   fVertices       = ifault->depthStratum(0);
@@ -855,6 +856,7 @@
   const ALE::Obj<sieve_type> ifaultSieve = new sieve_type(sieve->comm(), sieve->debug());
   ALE::Obj<ALE::Mesh> fault = new ALE::Mesh(mesh->comm(), mesh->getDimension()-1, mesh->debug());
   ALE::Obj<ALE::Mesh::sieve_type> faultSieve = new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  Mesh::renumbering_type& fRenumbering = (*ifault)->getRenumbering();
   cohesiveToFault->clear();
 
   const ALE::Obj<Mesh::label_sequence>& cohesiveCells = mesh->getLabelStratum("material-id", materialId);
@@ -884,6 +886,7 @@
       // Use first vertices (negative side of the fault) for fault mesh
       for(int i = 0; i < faceSize; ++i) {
         faultSieve->addArrow(cone[i], face, color++);
+        fRenumbering[cone[i]] = cone[i];
       }
     } else {
       const int faceSize = coneSize / 3;
@@ -892,6 +895,7 @@
       // Use last vertices (contraints) for fault mesh
       for(int i = 2*faceSize; i < 3*faceSize; ++i) {
         faultSieve->addArrow(cone[i], face, color++);
+        fRenumbering[cone[i]] = cone[i];
       }
     } // if/else
     (*cohesiveToFault)[*c_iter] = face;
@@ -936,15 +940,18 @@
     fCoordinates->updatePoint(*v_iter, coordinates->restrictPoint(*v_iter));
   }
 #endif
+  (*ifault)->view("Parallel fault mesh");
 
   // Create the parallel overlap
   //   Can I figure this out in a nicer way?
   Obj<Mesh::send_overlap_type> sendParallelMeshOverlap = (*ifault)->getSendOverlap();
   Obj<Mesh::recv_overlap_type> recvParallelMeshOverlap = (*ifault)->getRecvOverlap();
-  ALE::SetFromMap<std::map<Mesh::point_type,Mesh::point_type> > globalPoints((*ifault)->getRenumbering());
+  ALE::SetFromMap<Mesh::renumbering_type> globalPoints(fRenumbering);
 
-  ALE::OverlapBuilder<>::constructOverlap(globalPoints, (*ifault)->getRenumbering(), sendParallelMeshOverlap, recvParallelMeshOverlap);
+  ALE::OverlapBuilder<>::constructOverlap(globalPoints, fRenumbering, sendParallelMeshOverlap, recvParallelMeshOverlap);
   (*ifault)->setCalculatedOverlap(true);
+  sendParallelMeshOverlap->view("Send parallel fault overlap");
+  recvParallelMeshOverlap->view("Recv parallel fault overlap");
 }
 
 // ----------------------------------------------------------------------



More information about the cig-commits mailing list