[bos #24169] [CEA 24168] Error in AffectedElemGroupsInRegion

This commit is contained in:
eap 2021-04-23 14:10:04 +03:00
parent 2283860a0a
commit a11ec0f515
4 changed files with 10 additions and 5 deletions

View File

@ -1438,7 +1438,7 @@ int SMDS_Mesh::GetElementsByNodes(const std::vector<const SMDS_MeshNode *>& node
}
foundElems.clear();
if ( n0 )
if ( n0 && minNbInverse > 0 )
{
foundElems.reserve( minNbInverse );
SMDS_ElemIteratorPtr eIt = n0->GetInverseElementIterator( type );

View File

@ -10241,7 +10241,8 @@ namespace // automatically find theAffectedElems for DoubleNodes()
if ( maxX < 0 )
{
_elems[0]->setIsMarked( false );
_elems[1]->setIsMarked( true );
if ( _elems[1] )
_elems[1]->setIsMarked( true );
}
}
@ -10413,7 +10414,11 @@ namespace // automatically find theAffectedElems for DoubleNodes()
{
fissure.reserve( theElemsOrNodes.size() );
for ( ; elIt != theElemsOrNodes.end(); ++elIt )
{
fissure.push_back( std::move( FissureBorder( *elIt, elemsByFacet )));
if ( !fissure.back()._elems[1] )
fissure.pop_back();
}
}
if ( fissure.empty() )
return;
@ -10920,7 +10925,7 @@ namespace {
\brief Identify the elements that will be affected by node duplication (actual duplication is not performed).
This method is the first step of DoubleNodeElemGroupsInRegion.
\param theElems - list of groups of elements (edges or faces) to be replicated
\param theNodesNot - list of groups of nodes not to replicated
\param theNodesNot - list of groups of nodes not to replicate
\param theShape - shape to detect affected elements (element which geometric center
located on or inside shape). If the shape is null, detection is done on faces orientations
(select elements with a gravity center on the side given by faces normals).

View File

@ -100,7 +100,7 @@ class SMESH_EXPORT SMESH_MesherHelper
* \brief Load nodes bound to face into a map of node columns
* \param theParam2ColumnMap - map of node columns to fill
* \param theFace - the face on which nodes are searched for
* \param theBaseSide - the edges holding nodes on which columns' bases
* \param theBaseSide - the edges holding nodes on which columns base
* \param theMesh - the mesh containing nodes
* \retval bool - false if something is wrong
*

View File

@ -6671,7 +6671,7 @@ SMESH_MeshEditor_i::DoubleNodeElemGroupsInRegion(const SMESH::ListOfGroups& theE
duplication is not performed.
This method is the first step of DoubleNodeElemGroupsInRegion.
\param theElems - list of groups of elements (edges or faces) to be replicated
\param theNodesNot - list of groups of nodes not to replicated
\param theNodesNot - list of groups of nodes not to replicate
\param theShape - shape to detect affected elements (element which geometric center
located on or inside shape).
The replicated nodes should be associated to affected elements.