[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