[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