From 8c9a971309bd09be8c62a445303930dcff75ee3b Mon Sep 17 00:00:00 2001 From: prascle Date: Thu, 12 May 2011 12:50:51 +0000 Subject: [PATCH 1/1] PR: debug generate flat elements --- src/SMDS/SMDS_UnstructuredGrid.cxx | 17 ++++++++++++++--- src/SMESH/SMESH_MeshEditor.cxx | 14 ++++++++++++-- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/SMDS/SMDS_UnstructuredGrid.cxx b/src/SMDS/SMDS_UnstructuredGrid.cxx index 0a2778445..8732afeca 100644 --- a/src/SMDS/SMDS_UnstructuredGrid.cxx +++ b/src/SMDS/SMDS_UnstructuredGrid.cxx @@ -314,8 +314,8 @@ int SMDS_UnstructuredGrid::CellIdToDownId(int vtkCellId) { if((vtkCellId < 0) || (vtkCellId >= _cellIdToDownId.size())) { - std::cerr << "SMDS_UnstructuredGrid::CellIdToDownId problem vtkCellId=" - << vtkCellId << " max="<< _cellIdToDownId.size() << std::endl; + //MESSAGE("SMDS_UnstructuredGrid::CellIdToDownId structure not up to date: vtkCellId=" + // << vtkCellId << " max="<< _cellIdToDownId.size()); return -1; } return _cellIdToDownId[vtkCellId]; @@ -768,6 +768,11 @@ int SMDS_UnstructuredGrid::GetParentVolumes(int* volVtkIds, int vtkId) if (dim == 1) { int downId = this->CellIdToDownId(vtkId); + if (downId < 0) + { + MESSAGE("Downward structure not up to date: new edge not taken into account"); + return 0; + } nbFaces = _downArray[vtkType]->getNumberOfUpCells(downId); const int *upCells = _downArray[vtkType]->getUpCells(downId); const unsigned char* upTypes = _downArray[vtkType]->getUpTypes(downId); @@ -783,7 +788,13 @@ int SMDS_UnstructuredGrid::GetParentVolumes(int* volVtkIds, int vtkId) nbFaces = 1; faces[0] = vtkId; cellTypes[0] = this->GetCellType(vtkId); - downCellId[0] = this->CellIdToDownId(vtkId); + int downId = this->CellIdToDownId(vtkId); + if (downId < 0) + { + MESSAGE("Downward structure not up to date: new face not taken into account"); + return 0; + } + downCellId[0] = downId; } int nbvol =0; diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index be3ac4cc9..49f9c1b3a 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -10969,7 +10969,11 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vectorGetCellType(vtkId); int downId = grid->CellIdToDownId(vtkId); if (downId < 0) - continue; + { + MESSAGE("doubleNodesOnGroupBoundaries: internal algorithm problem"); + continue; // not OK at this stage of the algorithm: + //no cells created after BuildDownWardConnectivity + } DownIdType aCell(downId, vtkType); if (celldom.count(vtkId)) continue; @@ -11047,6 +11051,11 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vectorGetCellType(vtkId); int downId = grid->CellIdToDownId(vtkId); if (downId < 0) - continue; + continue; // new cells: not to be modified DownIdType aCell(downId, vtkType); int volParents[1000]; int nbvol = grid->GetParentVolumes(volParents, vtkId); -- 2.30.2