From 5e2c97c386dc03e51e072c7f9909803a86307872 Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 12 Apr 2018 14:36:22 +0300 Subject: [PATCH 1/1] Fix regressions of tests mostly connected to 23418: [CEA] Mesh: Minimization of memory usage of SMESH --- src/SMDS/SMDS_ElementFactory.hxx | 3 ++- src/SMDS/SMDS_MeshCell.cxx | 15 +++++++++------ src/SMESH/SMESH_MeshEditor.cxx | 6 +++++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/SMDS/SMDS_ElementFactory.hxx b/src/SMDS/SMDS_ElementFactory.hxx index 3dbc1ab17..18c3d9461 100644 --- a/src/SMDS/SMDS_ElementFactory.hxx +++ b/src/SMDS/SMDS_ElementFactory.hxx @@ -352,7 +352,8 @@ typedef _Range< bool > _UsedRange; // range of used elements typedef _RangeSet< _ShapeIDRange > TSubIDRangeSet; typedef _RangeSet< _UsedRange > TUsedRangeSet; typedef boost::dynamic_bitset<> TBitSet; -typedef float TParam; +//typedef float TParam; +typedef double TParam; //------------------------------------------------------------------------------------ /*! diff --git a/src/SMDS/SMDS_MeshCell.cxx b/src/SMDS/SMDS_MeshCell.cxx index 5407af69d..4aaeed25a 100644 --- a/src/SMDS/SMDS_MeshCell.cxx +++ b/src/SMDS/SMDS_MeshCell.cxx @@ -422,12 +422,15 @@ namespace void SMDS_MeshCell::InitStaticMembers() { - initCellProps(); - initVtkTypes(); - initToVtkInterlaces(); - initReverseInterlaces(); - initQuadInterlace(); - initFromVtkInterlaces(); + if ( theCellProps.empty() ) + { + initCellProps(); + initVtkTypes(); + initToVtkInterlaces(); + initReverseInterlaces(); + initQuadInterlace(); + initFromVtkInterlaces(); + } } void SMDS_MeshCell::init( SMDSAbs_EntityType theEntity, int theNbNodes, ... ) diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index e9dbc5a32..d06ce7306 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -7168,8 +7168,11 @@ void SMESH_MeshEditor::MergeNodes (TListOfListOfNodes & theGroupsOfNodes, const SMDS_MeshNode* nToKeep = nnIt->second; TNodeNodeMap::iterator nnIt_i = nodeNodeMap.find( nToKeep ); while ( nnIt_i != nodeNodeMap.end() && nnIt_i->second != nnIt->second ) + { nToKeep = nnIt_i->second; - nnIt->second = nToKeep; + nnIt->second = nToKeep; + nnIt_i = nodeNodeMap.find( nToKeep ); + } } if ( theAvoidMakingHoles ) @@ -8526,6 +8529,7 @@ SMESH_MeshEditor::SewFreeBorder (const SMDS_MeshNode* theBordFirstNode, for ( ; groupIt != nodeGroupsToMerge.end(); groupIt++ ) { const list& nodes = *groupIt; + if ( nodes.front()->IsNull() ) continue; SMDS_ElemIteratorPtr segIt = nodes.front()->GetInverseElementIterator( SMDSAbs_Edge ); while ( segIt->more() ) segments.insert( segIt->next() ); -- 2.30.2