[cig-commits] r18390 - in short/3D/PyLith/trunk: . libsrc/problems libsrc/topology

knepley at geodynamics.org knepley at geodynamics.org
Tue May 17 14:38:42 PDT 2011


Author: knepley
Date: 2011-05-17 14:38:41 -0700 (Tue, 17 May 2011)
New Revision: 18390

Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/libsrc/problems/Solver.cc
   short/3D/PyLith/trunk/libsrc/topology/RefineVol8Face4Edges2.cc
Log:
Small merge


Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2011-05-17 16:05:29 UTC (rev 18389)
+++ short/3D/PyLith/trunk/TODO	2011-05-17 21:38:41 UTC (rev 18390)
@@ -27,6 +27,15 @@
 
   DARWIN:
 
+  The initial problem is solved, but now with 3 procs we have this problem:
+
+    cd examples/3d/hex8
+    pylith step01.cfg --mesh_generator.refiner=pylith.topology.RefineUniform --nodes=3
+
+    mpinemesis: /home/brad/src/cig/pylith/libsrc/topology/RefineVol8Face4Edges2.cc:520: void ALE::RefineVol8Face4Edges2::overlapAddNewVertices(const ALE::Obj<ALE::IMesh<int, double, ALE::LabelSifter<int, int, ALE::malloc_allocator<ALE::NewSifterDef::Arrow<int, int> > > >, ALE::malloc_allocator<ALE::IMesh<int, double, ALE::LabelSifter<int, int, ALE::malloc_allocator<ALE::NewSifterDef::Arrow<int, int> > > > > >&, const ALE::MeshOrder&, const ALE::Obj<ALE::IMesh<int, double, ALE::LabelSifter<int, int, ALE::malloc_allocator<ALE::NewSifterDef::Arrow<int, int> > > >, ALE::malloc_allocator<ALE::IMesh<int, double, ALE::LabelSifter<int, int, ALE::malloc_allocator<ALE::NewSifterDef::Arrow<int, int> > > > > >&, const ALE::MeshOrder&): Assertion `k == 3' failed.
+
+  That was solved, but now
+
     RuntimeError: Error while preparing for writing data to VTK file output/step03-lower_crust.vtk at time 0.
     [1]Multiple indices for local point 977 remote point 666 from 0 with index 314
 

Modified: short/3D/PyLith/trunk/libsrc/problems/Solver.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/Solver.cc	2011-05-17 16:05:29 UTC (rev 18389)
+++ short/3D/PyLith/trunk/libsrc/problems/Solver.cc	2011-05-17 21:38:41 UTC (rev 18390)
@@ -38,7 +38,9 @@
 typedef pylith::topology::Mesh::RealSection RealSection;
 
 EXTERN_C_BEGIN
-PetscErrorCode  MyMatGetSubMatrix(Mat mat, IS isrow, IS iscol, MatReuse reuse, Mat *newmat) { // MyMatGetSubMatrix
+#undef __FUNCT__
+#define __FUNCT__ "MyMatGetSubMatrix"
+PetscErrorCode  MyMatGetSubMatrix(Mat mat, IS isrow, IS iscol, MatReuse reuse, Mat *newmat) {
   FaultPreconCtx *ctx;
   IS              faultIS;
   PetscBool       isFaultRow, isFaultCol;

Modified: short/3D/PyLith/trunk/libsrc/topology/RefineVol8Face4Edges2.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/RefineVol8Face4Edges2.cc	2011-05-17 16:05:29 UTC (rev 18389)
+++ short/3D/PyLith/trunk/libsrc/topology/RefineVol8Face4Edges2.cc	2011-05-17 21:38:41 UTC (rev 18390)
@@ -308,10 +308,9 @@
   const Obj<mesh_type::recv_overlap_type>& oldRecvOverlap = oldMesh->getRecvOverlap();
   assert(!oldRecvOverlap.isNull());
 
-
   // Check edges in edgeToVertex for both endpoints sent to same process
   //   Put it in section with point being the lowest numbered vertex and value (other endpoint, new vertex)
-  //     Notice that points are converted to the new numbering with refined
+  //     Notice that points are converted to the new numbering with refined cells
   Obj<ALE::Section<point_type, EdgeType> > newVerticesSection = new ALE::Section<point_type, EdgeType>(oldMesh->comm());
   assert(!newVerticesSection.isNull());
   std::map<EdgeType, std::vector<int> > bndryEdgeToRank;
@@ -353,7 +352,7 @@
     
     for(std::map<EdgeType, std::vector<int> >::const_iterator e_iter = bndryEdgeToRank.begin(); e_iter != bndryEdgeToRank.end() && v < dim; ++e_iter) {
       if (std::min(e_iter->first.first, e_iter->first.second)+localOffset == p) {
-	values[v++] = EdgeType(std::max(e_iter->first.first, e_iter->first.second)+localOffset, _edgeToVertex[e_iter->first]);
+        values[v++] = EdgeType(std::max(e_iter->first.first, e_iter->first.second)+localOffset, _edgeToVertex[e_iter->first]);
       } // if
     } // for
     newVerticesSection->updatePoint(p, values);
@@ -362,7 +361,7 @@
 
   // Check faces in faceToVertex for all corners sent to same process
   //   Put it in section with point being the lowest numbered vertex and value (other endpoints, new vertex)
-  //     Notice that points are converted to the new numbering with refined
+  //     Notice that points are converted to the new numbering with refined cells
   Obj<ALE::Section<point_type, FaceType> > newFaceVerticesSection = new ALE::Section<point_type, FaceType>(oldMesh->comm());
   assert(!newFaceVerticesSection.isNull());
   std::map<FaceType, std::vector<int>, FaceCmp<point_type>  > bndryFaceToRank;
@@ -393,7 +392,7 @@
         assert(!nextRanksSeq.isNull());
         std::set<int> nextRanks(nextRanksSeq->begin(), nextRanksSeq->end());
 
-	ranks.clear();
+        ranks.clear();
         std::set_intersection(curRanks.begin(), curRanks.end(), nextRanks.begin(), nextRanks.end(),
                               std::insert_iterator<std::set<int> >(ranks, ranks.begin()));
         curRanks = ranks;
@@ -496,7 +495,7 @@
     const point_type localPoint = _faceToVertex[f_iter->first];
     
     for(std::vector<int>::const_iterator r_iter = f_iter->second.begin(); r_iter != f_iter->second.end(); ++r_iter) {
-      FaceType  remoteVertices(-1);
+      FaceType  remoteVertices(-1); // These are the remote vertices on process 'rank' for this face
       const int rank = *r_iter;
 
       for(int i = 0; i < 4; ++i) {
@@ -507,6 +506,7 @@
             break;
           } // if
         } // for
+        assert(remoteVertices.points[i] >= 0);
       }
       const point_type remoteMin   = std::min(std::min(std::min(remoteVertices.points[0], remoteVertices.points[1]), remoteVertices.points[2]), remoteVertices.points[3]);
       const int        remoteSize  = overlapFaceVertices->getFiberDimension(overlap_point_type(rank, remoteMin));



More information about the CIG-COMMITS mailing list