From: prascle Date: Thu, 12 May 2011 12:50:51 +0000 (+0000) Subject: PR: debug generate flat elements X-Git-Tag: V6_3_0b2~17 X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=commitdiff_plain;h=8c9a971309bd09be8c62a445303930dcff75ee3b;hp=d2dabee7082fb335c123165748857cbe3295c187 PR: debug generate flat elements --- 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);