[cig-commits] r18398 - short/3D/PyLith/trunk/libsrc/topology

knepley at geodynamics.org knepley at geodynamics.org
Fri May 20 09:13:39 PDT 2011


Author: knepley
Date: 2011-05-20 09:13:38 -0700 (Fri, 20 May 2011)
New Revision: 18398

Modified:
   short/3D/PyLith/trunk/libsrc/topology/CellRefinerHex8.cc
   short/3D/PyLith/trunk/libsrc/topology/MeshRefiner.cc
   short/3D/PyLith/trunk/libsrc/topology/RefineVol8Face4Edges2.cc
Log:
Fixed multiple-process bug in mesh refinement (was bug in CellRefinerHex8)


Modified: short/3D/PyLith/trunk/libsrc/topology/CellRefinerHex8.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/CellRefinerHex8.cc	2011-05-20 16:11:20 UTC (rev 18397)
+++ short/3D/PyLith/trunk/libsrc/topology/CellRefinerHex8.cc	2011-05-20 16:13:38 UTC (rev 18398)
@@ -791,36 +791,36 @@
 	cone[4] < cone[6] &&
 	cone[4] < cone[7]) {
       if (cone[5] < cone[7]) {
-	_faces[5] = FaceType(cone[4], cone[5], cone[6], cone[7]);
+	_faces[1] = FaceType(cone[4], cone[5], cone[6], cone[7]);
       } else {
-	_faces[5] = FaceType(cone[4], cone[7], cone[6], cone[5]);
+	_faces[1] = FaceType(cone[4], cone[7], cone[6], cone[5]);
       } // if/else
     
     } else if (cone[5] < cone[4] &&
 	       cone[5] < cone[6] &&
 	       cone[5] < cone[7]) {
       if (cone[4] < cone[6]) {
-	_faces[5] = FaceType(cone[5], cone[4], cone[7], cone[6]);
+	_faces[1] = FaceType(cone[5], cone[4], cone[7], cone[6]);
       } else {
-	_faces[5] = FaceType(cone[5], cone[6], cone[7], cone[4]);
+	_faces[1] = FaceType(cone[5], cone[6], cone[7], cone[4]);
       } // if/else
     
     } else if (cone[6] < cone[4] && 
 	       cone[6] < cone[5] &&
 	       cone[6] < cone[7]) {
       if (cone[5] < cone[7]) {
-	_faces[5] = FaceType(cone[6], cone[5], cone[4], cone[7]);
+	_faces[1] = FaceType(cone[6], cone[5], cone[4], cone[7]);
       } else {
-	_faces[5] = FaceType(cone[6], cone[7], cone[4], cone[5]);
+	_faces[1] = FaceType(cone[6], cone[7], cone[4], cone[5]);
       } // if/else
     
     } else if (cone[7] < cone[4] &&
 	       cone[7] < cone[5] &&
 	       cone[7] < cone[6]) {
       if (cone[4] < cone[6]) {
-	_faces[5] = FaceType(cone[7], cone[4], cone[5], cone[6]);
+	_faces[1] = FaceType(cone[7], cone[4], cone[5], cone[6]);
       } else {
-	_faces[5] = FaceType(cone[7], cone[6], cone[5], cone[4]);
+	_faces[1] = FaceType(cone[7], cone[6], cone[5], cone[4]);
       } // if/else
     } else {
       assert(0);

Modified: short/3D/PyLith/trunk/libsrc/topology/MeshRefiner.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/MeshRefiner.cc	2011-05-20 16:11:20 UTC (rev 18397)
+++ short/3D/PyLith/trunk/libsrc/topology/MeshRefiner.cc	2011-05-20 16:13:38 UTC (rev 18398)
@@ -303,7 +303,20 @@
   _orderNewMesh->verticesCensored(newNumCellsNormal+newNumVerticesNormal, newNumCellsNormal+newNumVerticesNormal+newNumVerticesCensored);
   _orderNewMesh->cellsCensored(newNumCellsNormal+newNumVerticesNormal+newNumVerticesCensored,
 			       newNumCellsNormal+newNumVerticesNormal+newNumVerticesCensored+newNumCellsCensored);
-  
+#if 0
+  PetscErrorCode err;
+  int oldNumCellsNormal   = _orderOldMesh->cellsNormal().max();
+  int oldNumCellsCensored = _orderOldMesh->cellsCensored().max() - _orderOldMesh->cellsCensored().min();
+  err = PetscSynchronizedPrintf(mesh->comm(), "[%d]Old normal cells    [%d, %d)\n", mesh->commRank(), 0, oldNumCellsNormal);
+  err = PetscSynchronizedPrintf(mesh->comm(), "[%d]Old fault  cells    [%d, %d)\n", mesh->commRank(), oldNumCellsNormal+oldNumVerticesNormal+oldNumVerticesCensored, oldNumCellsNormal+oldNumVerticesNormal+oldNumVerticesCensored+oldNumCellsCensored);
+  err = PetscSynchronizedPrintf(mesh->comm(), "[%d]Old normal vertices [%d, %d)\n", mesh->commRank(), oldNumCellsNormal, oldNumCellsNormal+oldNumVerticesNormal);
+  err = PetscSynchronizedPrintf(mesh->comm(), "[%d]Old fault  vertices [%d, %d)\n", mesh->commRank(), oldNumCellsNormal+oldNumVerticesNormal, oldNumCellsNormal+oldNumVerticesNormal+oldNumVerticesCensored);
+  err = PetscSynchronizedPrintf(mesh->comm(), "[%d]New normal cells    [%d, %d)\n", mesh->commRank(), 0, newNumCellsNormal);
+  err = PetscSynchronizedPrintf(mesh->comm(), "[%d]New fault  cells    [%d, %d)\n", mesh->commRank(), newNumCellsNormal+newNumVerticesNormal+newNumVerticesCensored, newNumCellsNormal+newNumVerticesNormal+newNumVerticesCensored+newNumCellsCensored);
+  err = PetscSynchronizedPrintf(mesh->comm(), "[%d]New normal vertices [%d, %d)\n", mesh->commRank(), newNumCellsNormal, newNumCellsNormal+newNumVerticesNormal);
+  err = PetscSynchronizedPrintf(mesh->comm(), "[%d]New fault  vertices [%d, %d)\n", mesh->commRank(), newNumCellsNormal+newNumVerticesNormal, newNumCellsNormal+newNumVerticesNormal+newNumVerticesCensored);
+  err = PetscSynchronizedFlush(mesh->comm());
+#endif
   // Allocate chart for new sieve.
   const Obj<mesh_type::sieve_type>& newSieve = newMesh->getSieve();
   assert(!newSieve.isNull());

Modified: short/3D/PyLith/trunk/libsrc/topology/RefineVol8Face4Edges2.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/RefineVol8Face4Edges2.cc	2011-05-20 16:11:20 UTC (rev 18397)
+++ short/3D/PyLith/trunk/libsrc/topology/RefineVol8Face4Edges2.cc	2011-05-20 16:13:38 UTC (rev 18398)
@@ -399,6 +399,7 @@
         minVertex = std::min(nextVertex, minVertex);
       }
       if (ranks.size()) {
+        assert(f_iter->second >= orderNewMesh.verticesNormal().min() && f_iter->second < orderNewMesh.verticesNormal().max());
         newFaceVerticesSection->addFiberDimension(minVertex+localOffset, 1);
         for(std::set<int>::const_iterator r_iter = ranks.begin(); r_iter != ranks.end(); ++r_iter) {
           bndryFaceToRank[f_iter->first].push_back(*r_iter);
@@ -532,6 +533,7 @@
           break;
         } // if
       } // for
+      assert(localPoint >= orderNewMesh.verticesNormal().min() && localPoint < orderNewMesh.verticesNormal().max());
       newSendOverlap->addArrow(localPoint, rank, remotePoint);
       newRecvOverlap->addArrow(rank, localPoint, remotePoint);
     } // for



More information about the CIG-COMMITS mailing list