[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