PR: correction bug EDF 2299.

This commit is contained in:
prascle 2012-09-08 14:40:53 +00:00
parent db07298a81
commit 61bc7f8f5f

View File

@ -11151,8 +11151,6 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vector<TIDSorted
{ {
int oldId = *itn; int oldId = *itn;
//MESSAGE(" node " << oldId); //MESSAGE(" node " << oldId);
std::set<int> cells;
cells.clear();
vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId); vtkCellLinks::Link l = grid->GetCellLinks()->GetLink(oldId);
for (int i=0; i<l.ncells; i++) for (int i=0; i<l.ncells; i++)
{ {
@ -11169,8 +11167,8 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vector<TIDSorted
//no cells created after BuildDownWardConnectivity //no cells created after BuildDownWardConnectivity
} }
DownIdType aCell(downId, vtkType); DownIdType aCell(downId, vtkType);
if (celldom.count(vtkId)) if (!cellDomains.count(aCell))
continue; cellDomains[aCell] = emptyMap; // create an empty entry for cell
cellDomains[aCell][idomain] = vtkId; cellDomains[aCell][idomain] = vtkId;
celldom[vtkId] = idomain; celldom[vtkId] = idomain;
//MESSAGE(" cell " << vtkId << " domain " << idomain); //MESSAGE(" cell " << vtkId << " domain " << idomain);
@ -11204,16 +11202,18 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vector<TIDSorted
std::set<int> oldNodes; std::set<int> oldNodes;
oldNodes.clear(); oldNodes.clear();
grid->GetNodeIds(oldNodes, face.cellId, face.cellType); grid->GetNodeIds(oldNodes, face.cellId, face.cellType);
// bool isMultipleDetected = false;
std::set<int>::iterator itn = oldNodes.begin(); std::set<int>::iterator itn = oldNodes.begin();
for (; itn != oldNodes.end(); ++itn) for (; itn != oldNodes.end(); ++itn)
{ {
int oldId = *itn; int oldId = *itn;
//MESSAGE(" node " << oldId); //MESSAGE("-+-+-a node " << oldId);
if (!nodeDomains.count(oldId)) if (!nodeDomains.count(oldId))
nodeDomains[oldId] = emptyMap; // create an empty entry for node nodeDomains[oldId] = emptyMap; // create an empty entry for node
if (nodeDomains[oldId].empty()) if (nodeDomains[oldId].empty())
{
nodeDomains[oldId][idomain] = oldId; // keep the old node in the first domain nodeDomains[oldId][idomain] = oldId; // keep the old node in the first domain
//MESSAGE("-+-+-b oldNode " << oldId << " domain " << idomain);
}
std::map<int, int>::iterator itdom = domvol.begin(); std::map<int, int>::iterator itdom = domvol.begin();
for (; itdom != domvol.end(); ++itdom) for (; itdom != domvol.end(); ++itdom)
{ {
@ -11225,7 +11225,6 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vector<TIDSorted
{ {
vector<int> orderedDoms; vector<int> orderedDoms;
//MESSAGE("multiple node " << oldId); //MESSAGE("multiple node " << oldId);
// isMultipleDetected =true;
if (mutipleNodes.count(oldId)) if (mutipleNodes.count(oldId))
orderedDoms = mutipleNodes[oldId]; orderedDoms = mutipleNodes[oldId];
else else
@ -11245,13 +11244,8 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vector<TIDSorted
SMDS_MeshNode *newNode = meshDS->AddNode(coords[0], coords[1], coords[2]); SMDS_MeshNode *newNode = meshDS->AddNode(coords[0], coords[1], coords[2]);
int newId = newNode->getVtkId(); int newId = newNode->getVtkId();
nodeDomains[oldId][idom] = newId; // cloned node for other domains nodeDomains[oldId][idom] = newId; // cloned node for other domains
//MESSAGE(" newNode " << newId << " oldNode " << oldId << " size=" <<nodeDomains[oldId].size()); //MESSAGE("-+-+-c oldNode " << oldId << " domain " << idomain << " newNode " << newId << " domain " << idom << " size=" <<nodeDomains[oldId].size());
} }
// if (nodeDomains[oldId].size() >= 3)
// {
// //MESSAGE("confirm multiple node " << oldId);
// isMultipleDetected =true;
// }
} }
} }
} }