mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-03-01 11:15:37 +05:00
21948: EDF SMESH : Memory is not freed when deleting a mesh
Optimize for groups in large meshes
This commit is contained in:
parent
dcf5dee894
commit
47709d42f2
@ -567,12 +567,12 @@ vtkUnstructuredGrid* SMESH_VisualObjDef::GetUnstructuredGrid()
|
|||||||
bool SMESH_VisualObjDef::IsValid() const
|
bool SMESH_VisualObjDef::IsValid() const
|
||||||
{
|
{
|
||||||
//MESSAGE("SMESH_VisualObjDef::IsValid");
|
//MESSAGE("SMESH_VisualObjDef::IsValid");
|
||||||
return GetNbEntities(SMDSAbs_Node) > 0 ||
|
return ( GetNbEntities(SMDSAbs_0DElement) > 0 ||
|
||||||
GetNbEntities(SMDSAbs_0DElement) > 0 ||
|
GetNbEntities(SMDSAbs_Ball ) > 0 ||
|
||||||
GetNbEntities(SMDSAbs_Ball) > 0 ||
|
GetNbEntities(SMDSAbs_Edge ) > 0 ||
|
||||||
GetNbEntities(SMDSAbs_Edge) > 0 ||
|
GetNbEntities(SMDSAbs_Face ) > 0 ||
|
||||||
GetNbEntities(SMDSAbs_Face) > 0 ||
|
GetNbEntities(SMDSAbs_Volume ) > 0 ||
|
||||||
GetNbEntities(SMDSAbs_Volume) > 0 ;
|
GetNbEntities(SMDSAbs_Node ) > 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -659,6 +659,8 @@ SMESH_MeshObj::~SMESH_MeshObj()
|
|||||||
{
|
{
|
||||||
if ( MYDEBUG )
|
if ( MYDEBUG )
|
||||||
MESSAGE("SMESH_MeshObj - this = "<<this<<"\n");
|
MESSAGE("SMESH_MeshObj - this = "<<this<<"\n");
|
||||||
|
if ( myEmptyGrid )
|
||||||
|
myEmptyGrid->Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -995,11 +997,16 @@ int SMESH_GroupObj::GetEntities( const SMDSAbs_ElementType theType, TEntityList&
|
|||||||
theResList.clear();
|
theResList.clear();
|
||||||
SMDS_Mesh* aMesh = myMeshObj->GetMesh();
|
SMDS_Mesh* aMesh = myMeshObj->GetMesh();
|
||||||
|
|
||||||
if ( myGroupServer->Size() == 0 || aMesh == 0 )
|
if ( aMesh == 0 )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
SMDSAbs_ElementType aGrpType = SMDSAbs_ElementType(myGroupServer->GetType());
|
SMDSAbs_ElementType aGrpType = SMDSAbs_ElementType(myGroupServer->GetType());
|
||||||
|
if ( aGrpType != theType && theType != SMDSAbs_Node )
|
||||||
|
return 0;
|
||||||
|
|
||||||
SMESH::long_array_var anIds = myGroupServer->GetListOfID();
|
SMESH::long_array_var anIds = myGroupServer->GetListOfID();
|
||||||
|
if ( anIds->length() == 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
if ( aGrpType == theType )
|
if ( aGrpType == theType )
|
||||||
return getPointers( theType, anIds, aMesh, theResList );
|
return getPointers( theType, anIds, aMesh, theResList );
|
||||||
@ -1007,7 +1014,7 @@ int SMESH_GroupObj::GetEntities( const SMDSAbs_ElementType theType, TEntityList&
|
|||||||
return getNodesFromElems( anIds, aMesh, theResList );
|
return getNodesFromElems( anIds, aMesh, theResList );
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user