[cig-commits] r19526 - in short/3D/PyLith/trunk/libsrc/pylith: faults topology
knepley at geodynamics.org
knepley at geodynamics.org
Mon Jan 30 19:37:58 PST 2012
Author: knepley
Date: 2012-01-30 19:37:58 -0800 (Mon, 30 Jan 2012)
New Revision: 19526
Modified:
short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
short/3D/PyLith/trunk/libsrc/pylith/topology/MeshRefiner.cc
Log:
Clear out renumbering when refining mesh, use globalNumbering to construct fault overlap
Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc 2012-01-31 03:11:58 UTC (rev 19525)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc 2012-01-31 03:37:58 UTC (rev 19526)
@@ -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,14 +884,29 @@
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 (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];
+ }
+ }
+ }
+
ALE::SetFromMap<SieveMesh::renumbering_type> globalPoints(gRenumbering);
ALE::OverlapBuilder<>::constructOverlap(globalPoints, gRenumbering,
sendParallelMeshOverlap,
Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/MeshRefiner.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/MeshRefiner.cc 2012-01-31 03:11:58 UTC (rev 19525)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/MeshRefiner.cc 2012-01-31 03:37:58 UTC (rev 19526)
@@ -802,6 +802,9 @@
newSendOverlap->assemble();
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