[cig-commits] r19527 - in short/3D/PyLith/branches/v1.6-stable/libsrc/pylith: faults topology

brad at geodynamics.org brad at geodynamics.org
Mon Jan 30 20:36:06 PST 2012


Author: brad
Date: 2012-01-30 20:36:06 -0800 (Mon, 30 Jan 2012)
New Revision: 19527

Modified:
   short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/faults/CohesiveTopology.cc
   short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/topology/MeshRefiner.cc
Log:
Patch from trunk.

Modified: short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/faults/CohesiveTopology.cc	2012-01-31 03:37:58 UTC (rev 19526)
+++ short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/faults/CohesiveTopology.cc	2012-01-31 04:36:06 UTC (rev 19527)
@@ -766,6 +766,8 @@
   logger.stagePush("FaultCreation");
 
   // Convert fault to an IMesh
+  //   In general, renumbering[global point number] = local point number
+  //   fRenumbering[mesh point] = fault mesh point
   SieveSubMesh::renumbering_type& fRenumbering =
     faultSieveMesh->getRenumbering();
   const SieveSubMesh::renumbering_type::const_iterator fRenumberingEnd = 
@@ -882,15 +884,27 @@
   SieveMesh::renumbering_type& renumbering = sieveMesh->getRenumbering();
   SieveMesh::renumbering_type gRenumbering;
 
-  const SieveMesh::renumbering_type::const_iterator renumberingEnd =
-    renumbering.end();
-  for (SieveMesh::renumbering_type::const_iterator r_iter = renumbering.begin();
-       r_iter != renumberingEnd;
-       ++r_iter) {
-    if (fRenumbering.find(r_iter->second) != fRenumbering.end()) {
-      gRenumbering[r_iter->first] = fRenumbering[r_iter->second];
-    } // if
-  } // for
+  if (renumbering.size()) {
+    //std::cout << "Using renumbering to construct Fault Overlap" << std::endl;
+    const SieveMesh::renumbering_type::const_iterator renumberingEnd =
+      renumbering.end();
+    for (SieveMesh::renumbering_type::const_iterator r_iter = renumbering.begin();
+         r_iter != renumberingEnd;
+         ++r_iter)
+      if (fRenumbering.find(r_iter->second) != fRenumbering.end())
+        gRenumbering[r_iter->first] = fRenumbering[r_iter->second];
+  } else {
+    //std::cout << "Using new numbering to construct Fault Overlap" << std::endl;
+    const SieveMesh::sieve_type::chart_type& chart = sieveMesh->getSieve()->getChart();
+    const ALE::Obj<SieveMesh::numbering_type>& globalNumbering = 
+      sieveMesh->getFactory()->getNumbering(sieveMesh, -1);
+    assert(!globalNumbering.isNull());
+    for(SieveMesh::point_type p = chart.min(); p < chart.max(); ++p) {
+      if (fRenumbering.find(p) != fRenumbering.end()) {
+        gRenumbering[globalNumbering->getIndex(p)] = fRenumbering[p];
+      } // if
+    } // for
+  } // if/else
 
   ALE::SetFromMap<SieveMesh::renumbering_type> globalPoints(gRenumbering);
   ALE::OverlapBuilder<>::constructOverlap(globalPoints, gRenumbering,

Modified: short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/topology/MeshRefiner.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/topology/MeshRefiner.cc	2012-01-31 03:37:58 UTC (rev 19526)
+++ short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/topology/MeshRefiner.cc	2012-01-31 04:36:06 UTC (rev 19527)
@@ -803,6 +803,9 @@
   newRecvOverlap->assemble();
 
 
+  // Clear out renumbering
+  newMesh->getRenumbering().clear();
+
   // Verify size of new send/recv overlaps are at least as big as the
   // original ones.
   PetscErrorCode err = 0;



More information about the CIG-COMMITS mailing list