[cig-commits] r8337 - in short/3D/PyLith/trunk/libsrc: faults meshio
knepley at geodynamics.org
knepley at geodynamics.org
Tue Nov 27 17:52:16 PST 2007
Author: knepley
Date: 2007-11-27 17:52:16 -0800 (Tue, 27 Nov 2007)
New Revision: 8337
Modified:
short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
short/3D/PyLith/trunk/libsrc/meshio/SolutionIOVTK.cc
Log:
Better debugging for cohesive cells
Modified: short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc 2007-11-27 16:41:10 UTC (rev 8336)
+++ short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.cc 2007-11-28 01:52:16 UTC (rev 8337)
@@ -792,79 +792,26 @@
}
// More checking
- const ALE::Obj<real_section_type>& problemNodes = mesh->getRealSection("problemNodes");
+ const ALE::Obj<real_section_type>& replacedCells = mesh->getRealSection("replacedCells");
PointSet cellNeighbors;
- problemNodes->setFiberDimension(mesh->depthStratum(0), 1);
- problemNodes->allocatePoint();
- for(PointSet::const_iterator v_iter = faultVertices.begin(); v_iter != faultVertices.end(); ++v_iter) {
- const double one = 1.0;
+ replacedCells->setFiberDimension(mesh->heightStratum(0), 1);
+ replacedCells->allocatePoint();
+ for(PointSet::const_iterator c_iter = noReplaceCells.begin(); c_iter != noReplaceCells.end(); ++c_iter) {
+ const double minusOne = -1.0;
- problemNodes->updatePoint(*v_iter, &one);
+ replacedCells->updatePoint(*c_iter, &minusOne);
}
for(PointSet::const_iterator c_iter = replaceCells.begin(); c_iter != replaceCells.end(); ++c_iter) {
- if (replaceCellsBase.find(*c_iter) != replaceCellsBase.end()) continue;
- const ALE::Obj<sieve_type::traits::coneSequence>& vertices = sieve->cone(*c_iter);
- const sieve_type::traits::coneSequence::iterator vBegin = vertices->begin();
- const sieve_type::traits::coneSequence::iterator vEnd = vertices->end();
- cellNeighbors.clear();
+ if (replaceCellsBase.find(*c_iter) != replaceCellsBase.end()) {
+ const double one = 1.0;
- for(sieve_type::traits::coneSequence::iterator v_iter = vBegin; v_iter != vEnd; ++v_iter) {
- const ALE::Obj<sieve_type::traits::supportSequence>& neighbors = sieve->support(*v_iter);
- const sieve_type::traits::supportSequence::iterator nBegin = neighbors->begin();
- const sieve_type::traits::supportSequence::iterator nEnd = neighbors->end();
-
- for(sieve_type::traits::supportSequence::iterator n_iter = nBegin; n_iter != nEnd; ++n_iter) {
- const ALE::Obj<sieve_type::coneSet>& preFace = sieve->nMeet(*c_iter, *n_iter, depth);
-
- if (preFace->size() == faceSize) {
- cellNeighbors.insert(*n_iter);
- if (noReplaceCells.find(*n_iter) != noReplaceCells.end()) {
- const ALE::Obj<real_section_type>& coordinates = mesh->getRealSection("coordinates");
- const int dim = mesh->getDimension();
- int c = 0;
-
- std::cout << "Cell " << *c_iter << " in replaceCells has neighbor " << *n_iter << " in noReplaceCells" << std::endl;
- const double *coordsA = mesh->restrict(coordinates, *c_iter);
- const ALE::Obj<sieve_type::traits::coneSequence>& verticesA = sieve->cone(*c_iter);
-
- std::cout << "Cell " << *c_iter << std::endl;
- for(sieve_type::traits::coneSequence::iterator v_iter = verticesA->begin(); v_iter != verticesA->end(); ++v_iter, ++c) {
- std::cout << "Corner " << *v_iter << ":";
- for(int d = 0; d < dim; ++d) {
- std::cout << " " << coordsA[c*dim+d];
- }
- if (faultVertices.find(*v_iter) != faultVertices.end()) {
- const double ten = 10.0;
-
- problemNodes->updatePoint(*v_iter, &ten);
- std::cout << " on fault";
- }
- std::cout << std::endl;
- }
- const double *coordsB = mesh->restrict(coordinates, *n_iter);
- const ALE::Obj<sieve_type::traits::coneSequence>& verticesB = sieve->cone(*n_iter);
-
- std::cout << "Cell " << *n_iter << std::endl;
- c = 0;
- for(sieve_type::traits::coneSequence::iterator v_iter = verticesB->begin(); v_iter != verticesB->end(); ++v_iter, ++c) {
- std::cout << "Corner " << *v_iter << ":";
- for(int d = 0; d < dim; ++d) {
- std::cout << " " << coordsB[c*dim+d];
- }
- if (faultVertices.find(*v_iter) != faultVertices.end()) {
- const double ten = 10.0;
-
- problemNodes->updatePoint(*v_iter, &ten);
- std::cout << " on fault";
- }
- std::cout << std::endl;
- }
- //throw ALE::Exception("Invalid division along fault");
- }
- }
- }
+ replacedCells->updatePoint(*c_iter, &one);
+ continue;
}
+ const double ten = 10.0;
+
+ replacedCells->updatePoint(*c_iter, &ten);
// There should be a way to check for boundary elements
if (mesh->getDimension() == 1) {
if (cellNeighbors.size() > 2) {
Modified: short/3D/PyLith/trunk/libsrc/meshio/SolutionIOVTK.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/SolutionIOVTK.cc 2007-11-27 16:41:10 UTC (rev 8336)
+++ short/3D/PyLith/trunk/libsrc/meshio/SolutionIOVTK.cc 2007-11-28 01:52:16 UTC (rev 8337)
@@ -144,8 +144,10 @@
buffer.str("");
buffer << name << "_verify_t" << t;
err = SectionView_Sieve_Ascii(mesh, field, buffer.str().c_str(), _viewer, -4);
- if (mesh->hasRealSection("problemNodes")) {
- err = SectionView_Sieve_Ascii(mesh, mesh->getRealSection("problemNodes"), "problemNodes", _viewer);
+ if (mesh->hasRealSection("replacedCells")) {
+ err = PetscViewerPushFormat(_viewer, PETSC_VIEWER_ASCII_VTK_CELL);
+ err = SectionView_Sieve_Ascii(mesh, mesh->getRealSection("replacedCells"), "replacedCells", _viewer);
+ err = PetscViewerPopFormat(_viewer);
}
} catch (const std::exception& err) {
std::ostringstream msg;
More information about the cig-commits
mailing list