Fix a bug reported in SALOME Forum

http://www.salome-platform.org/forum/forum_10/862626562

Fix LoadNodeColumns() for the base EDGE w/o viscous layers but on
which the mesh is squeezed by viscous layers on adjacent EDGEs
This commit is contained in:
eap 2013-03-07 08:50:01 +00:00
parent 19ddff45f9
commit fd24bd006b

View File

@ -2015,7 +2015,6 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
if ( theParam2ColumnMap.empty() ) if ( theParam2ColumnMap.empty() )
{ {
// get data of edges for normalization of params // get data of edges for normalization of params
vector< double > length; vector< double > length;
double fullLen = 0; double fullLen = 0;
list<TopoDS_Edge>::const_iterator edge; list<TopoDS_Edge>::const_iterator edge;
@ -2039,8 +2038,8 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
map< double, const SMDS_MeshNode*>::iterator u_n = sortedBaseNN.begin(); map< double, const SMDS_MeshNode*>::iterator u_n = sortedBaseNN.begin();
if ( theProxyMesh ) // from sortedBaseNN remove nodes not shared by faces of faceSubMesh if ( theProxyMesh ) // from sortedBaseNN remove nodes not shared by faces of faceSubMesh
{ {
const SMDS_MeshNode* n1 = sortedBaseNN.begin()->second; const SMDS_MeshNode* n1 = (++sortedBaseNN.begin())->second;
const SMDS_MeshNode* n2 = sortedBaseNN.rbegin()->second; const SMDS_MeshNode* n2 = (++sortedBaseNN.rbegin())->second;
bool allNodesAreProxy = ( n1 != theProxyMesh->GetProxyNode( n1 ) && bool allNodesAreProxy = ( n1 != theProxyMesh->GetProxyNode( n1 ) &&
n2 != theProxyMesh->GetProxyNode( n2 )); n2 != theProxyMesh->GetProxyNode( n2 ));
if ( allNodesAreProxy ) if ( allNodesAreProxy )
@ -2052,7 +2051,7 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
while ( ++u_n != sortedBaseNN.end() && !isNodeInSubMesh( u_n->second, faceSubMesh )); while ( ++u_n != sortedBaseNN.end() && !isNodeInSubMesh( u_n->second, faceSubMesh ));
sortedBaseNN.erase( sortedBaseNN.begin(), u_n ); sortedBaseNN.erase( sortedBaseNN.begin(), u_n );
} }
else if ( u_n = --sortedBaseNN.end(), !isNodeInSubMesh( u_n->second, faceSubMesh )) if ( u_n = --sortedBaseNN.end(), !isNodeInSubMesh( u_n->second, faceSubMesh ))
{ {
while ( u_n != sortedBaseNN.begin() && !isNodeInSubMesh( (--u_n)->second, faceSubMesh )); while ( u_n != sortedBaseNN.begin() && !isNodeInSubMesh( (--u_n)->second, faceSubMesh ));
sortedBaseNN.erase( ++u_n, sortedBaseNN.end() ); sortedBaseNN.erase( ++u_n, sortedBaseNN.end() );