Salome HOME
projects
/
modules
/
smesh.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
dfdbed8
)
23544: SMESH's performance issues
author
eap
<eap@opencascade.com>
Tue, 10 Apr 2018 16:14:21 +0000
(19:14 +0300)
committer
eap
<eap@opencascade.com>
Tue, 10 Apr 2018 16:14:21 +0000
(19:14 +0300)
src/SMDS/SMDS_MeshCell.cxx
patch
|
blob
|
history
src/SMDS/SMDS_MeshGroup.cxx
patch
|
blob
|
history
src/SMDS/SMDS_MeshGroup.hxx
patch
|
blob
|
history
src/SMDS/SMDS_SpacePosition.hxx
patch
|
blob
|
history
diff --git
a/src/SMDS/SMDS_MeshCell.cxx
b/src/SMDS/SMDS_MeshCell.cxx
index ae6d99fad98b3b3fbcfe4c2f77213fa993cdd619..7ee9c920811b5e1cfd7ed65c6c765833bb89e53a 100644
(file)
--- a/
src/SMDS/SMDS_MeshCell.cxx
+++ b/
src/SMDS/SMDS_MeshCell.cxx
@@
-41,6
+41,7
@@
namespace
SMDSAbs_ElementType myType;
SMDSAbs_GeometryType myGeom;
bool myIsPoly;
SMDSAbs_ElementType myType;
SMDSAbs_GeometryType myGeom;
bool myIsPoly;
+ bool myIsQuadratic;
int myNbCornerNodes;
int myNbNodes;
int myNbEdges;
int myNbCornerNodes;
int myNbNodes;
int myNbEdges;
@@
-65,12
+66,12
@@
namespace
myType = Type;
myGeom = Geom;
myIsPoly = IsPoly;
myType = Type;
myGeom = Geom;
myIsPoly = IsPoly;
+ myIsQuadratic = ( NbNodes > NbCornerNodes );
myNbCornerNodes = NbCornerNodes;
myNbNodes = NbNodes;
myNbEdges = NbEdges;
myNbFaces = NbFaces;
}
myNbCornerNodes = NbCornerNodes;
myNbNodes = NbNodes;
myNbEdges = NbEdges;
myNbFaces = NbFaces;
}
- bool IsQuadratic() const { return myNbNodes > myNbCornerNodes; }
};
//! return vector a CellProps
};
//! return vector a CellProps
@@
-259,7
+260,7
@@
bool SMDS_MeshCell::ChangeNodes(const SMDS_MeshNode* nodes[], const int theNbNod
///////////////////////////////////////////////////////////////////////////////
int SMDS_MeshCell::NbNodes() const
{
///////////////////////////////////////////////////////////////////////////////
int SMDS_MeshCell::NbNodes() const
{
- if ( Get
EntityType() == SMDSEntity_Polyhedra
)
+ if ( Get
VtkType() == VTK_POLYHEDRON
)
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbNodes();
vtkIdType *pts, npts;
getGrid()->GetCellPoints( GetVtkID(), npts, pts );
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbNodes();
vtkIdType *pts, npts;
getGrid()->GetCellPoints( GetVtkID(), npts, pts );
@@
-268,7
+269,7
@@
int SMDS_MeshCell::NbNodes() const
int SMDS_MeshCell::NbFaces() const
{
int SMDS_MeshCell::NbFaces() const
{
- if ( Get
EntityType() == SMDSEntity_Polyhedra
)
+ if ( Get
VtkType() == VTK_POLYHEDRON
)
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbFaces();
return getCellProps( GetVtkType() ).myNbFaces;
}
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbFaces();
return getCellProps( GetVtkType() ).myNbFaces;
}
@@
-290,13
+291,13
@@
int SMDS_MeshCell::NbEdges() const
int SMDS_MeshCell::NbCornerNodes() const
{
int SMDS_MeshCell::NbCornerNodes() const
{
- switch ( Get
Entity
Type() )
+ switch ( Get
Vtk
Type() )
{
{
- case
SMDSEntity_Polyhedra
:
+ case
VTK_POLYHEDRON
:
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbCornerNodes();
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbCornerNodes();
- case
SMDSEntity_Polygon
:
+ case
VTK_POLYGON
:
return NbNodes();
return NbNodes();
- case
SMDSEntity_Quad_Polygon
:
+ case
VTK_QUADRATIC_POLYGON
:
return NbNodes() / 2;
default:;
}
return NbNodes() / 2;
default:;
}
@@
-308,7
+309,7
@@
int SMDS_MeshCell::NbCornerNodes() const
///////////////////////////////////////////////////////////////////////////////
SMDS_ElemIteratorPtr SMDS_MeshCell::nodesIterator() const
{
///////////////////////////////////////////////////////////////////////////////
SMDS_ElemIteratorPtr SMDS_MeshCell::nodesIterator() const
{
- if ( Get
EntityType() == SMDSEntity_Polyhedra
)
+ if ( Get
VtkType() == VTK_POLYHEDRON
)
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::nodesIterator();
return boost::make_shared< SMDS_VtkCellIterator<> >( GetMesh(), GetVtkID(), GetEntityType());
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::nodesIterator();
return boost::make_shared< SMDS_VtkCellIterator<> >( GetMesh(), GetVtkID(), GetEntityType());
@@
-319,7
+320,7
@@
SMDS_ElemIteratorPtr SMDS_MeshCell::nodesIterator() const
///////////////////////////////////////////////////////////////////////////////
SMDS_NodeIteratorPtr SMDS_MeshCell::nodeIterator() const
{
///////////////////////////////////////////////////////////////////////////////
SMDS_NodeIteratorPtr SMDS_MeshCell::nodeIterator() const
{
- if ( Get
EntityType() == SMDSEntity_Polyhedra
)
+ if ( Get
VtkType() == VTK_POLYHEDRON
)
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::nodeIterator();
return SMDS_NodeIteratorPtr
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::nodeIterator();
return SMDS_NodeIteratorPtr
@@
-340,7
+341,7
@@
SMDS_NodeIteratorPtr SMDS_MeshCell::nodesIteratorToUNV() const
SMDSAbs_ElementType SMDS_MeshCell::GetType() const
{
SMDSAbs_ElementType SMDS_MeshCell::GetType() const
{
- return
ElemType( GetEntityType() )
;
+ return
getCellProps( GetVtkType() ).myType
;
}
SMDSAbs_EntityType SMDS_MeshCell::GetEntityType() const
}
SMDSAbs_EntityType SMDS_MeshCell::GetEntityType() const
@@
-365,12
+366,12
@@
bool SMDS_MeshCell::IsPoly() const
bool SMDS_MeshCell::IsQuadratic() const
{
bool SMDS_MeshCell::IsQuadratic() const
{
- return getCellProps( GetVtkType() ).
IsQuadratic()
;
+ return getCellProps( GetVtkType() ).
myIsQuadratic
;
}
const SMDS_MeshNode* SMDS_MeshCell::GetNode(const int ind) const
{
}
const SMDS_MeshNode* SMDS_MeshCell::GetNode(const int ind) const
{
- if ( Get
EntityType() == SMDSEntity_Polyhedra
)
+ if ( Get
VtkType() == VTK_POLYHEDRON
)
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::GetNode( ind );
vtkIdType npts, *pts;
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::GetNode( ind );
vtkIdType npts, *pts;
@@
-381,7
+382,7
@@
const SMDS_MeshNode* SMDS_MeshCell::GetNode(const int ind) const
int SMDS_MeshCell::GetNodeIndex( const SMDS_MeshNode* node ) const
{
int SMDS_MeshCell::GetNodeIndex( const SMDS_MeshNode* node ) const
{
- if ( Get
EntityType() == SMDSEntity_Polyhedra
)
+ if ( Get
VtkType() == VTK_POLYHEDRON
)
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::GetNodeIndex( node );
vtkIdType npts, *pts;
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::GetNodeIndex( node );
vtkIdType npts, *pts;
@@
-767,7
+768,7
@@
bool SMDS_MeshCell::IsPoly( SMDSAbs_EntityType entityType )
bool SMDS_MeshCell::IsQuadratic( SMDSAbs_EntityType entityType )
{
bool SMDS_MeshCell::IsQuadratic( SMDSAbs_EntityType entityType )
{
- return getCellProps( entityType ).
IsQuadratic()
;
+ return getCellProps( entityType ).
myIsQuadratic
;
}
int SMDS_MeshCell::NbCornerNodes( SMDSAbs_EntityType entityType )
}
int SMDS_MeshCell::NbCornerNodes( SMDSAbs_EntityType entityType )
diff --git
a/src/SMDS/SMDS_MeshGroup.cxx
b/src/SMDS/SMDS_MeshGroup.cxx
index 80e7c6080496b14e5f4204a5b896f620095f21d5..e2f5fbccfa3750effcc0dc1a29fc7f709339be65 100644
(file)
--- a/
src/SMDS/SMDS_MeshGroup.cxx
+++ b/
src/SMDS/SMDS_MeshGroup.cxx
@@
-45,7
+45,7
@@
SMDS_MeshGroup::SMDS_MeshGroup(const SMDS_Mesh * theMesh,
const SMDSAbs_ElementType theType)
SMDS_MeshGroup::SMDS_MeshGroup(const SMDS_Mesh * theMesh,
const SMDSAbs_ElementType theType)
- : SMDS_ElementHolder( theMesh ), myType(
theType), myTic(0
)
+ : SMDS_ElementHolder( theMesh ), myType(
theType ), myTic( 0
)
{
}
{
}
@@
-69,15
+69,15
@@
void SMDS_MeshGroup::Clear()
bool SMDS_MeshGroup::Add(const SMDS_MeshElement * theElem)
{
// the type of the group is determined by the first element added
bool SMDS_MeshGroup::Add(const SMDS_MeshElement * theElem)
{
// the type of the group is determined by the first element added
- if (
myElements.empty()
) {
+ if (
myElements.empty()
) {
myType = theElem->GetType();
}
myType = theElem->GetType();
}
- else if (
theElem->GetType() != myType
) {
+ else if (
theElem->GetType() != myType
) {
MESSAGE("SMDS_MeshGroup::Add : Type Mismatch "<<theElem->GetType()<<"!="<<myType);
return false;
}
MESSAGE("SMDS_MeshGroup::Add : Type Mismatch "<<theElem->GetType()<<"!="<<myType);
return false;
}
- myElements.insert(
theElem
);
+ myElements.insert(
theElem
);
++myTic;
return true;
++myTic;
return true;
@@
-88,12
+88,12
@@
bool SMDS_MeshGroup::Add(const SMDS_MeshElement * theElem)
//purpose :
//=======================================================================
//purpose :
//=======================================================================
-bool SMDS_MeshGroup::Remove(
const SMDS_MeshElement * theElem
)
+bool SMDS_MeshGroup::Remove(
const SMDS_MeshElement * theElem
)
{
TElementSet::iterator found = myElements.find(theElem);
if ( found != myElements.end() ) {
{
TElementSet::iterator found = myElements.find(theElem);
if ( found != myElements.end() ) {
- myElements.erase(
found
);
- if (
myElements.empty()
) myType = SMDSAbs_All;
+ myElements.erase(
found
);
+ if (
myElements.empty()
) myType = SMDSAbs_All;
++myTic;
return true;
}
++myTic;
return true;
}
@@
-102,12
+102,12
@@
bool SMDS_MeshGroup::Remove(const SMDS_MeshElement * theElem)
//=======================================================================
//function : Contains
//=======================================================================
//function : Contains
-//purpose :
+//purpose :
//=======================================================================
bool SMDS_MeshGroup::Contains(const SMDS_MeshElement * theElem) const
{
//=======================================================================
bool SMDS_MeshGroup::Contains(const SMDS_MeshElement * theElem) const
{
- return myElements.find(
theElem
) != myElements.end();
+ return myElements.find(
theElem
) != myElements.end();
}
//=======================================================================
}
//=======================================================================
@@
-152,6
+152,5
@@
void SMDS_MeshGroup::operator=( SMDS_MeshGroup && other )
void SMDS_MeshGroup::tmpClear()
{
void SMDS_MeshGroup::tmpClear()
{
- compact();
myElements.clear();
}
myElements.clear();
}
diff --git
a/src/SMDS/SMDS_MeshGroup.hxx
b/src/SMDS/SMDS_MeshGroup.hxx
index b605737bfab79d92af4df0b1dc95df4acfda169b..3b39c7022fd7ba344e884d38ae026c1bc138d81f 100644
(file)
--- a/
src/SMDS/SMDS_MeshGroup.hxx
+++ b/
src/SMDS/SMDS_MeshGroup.hxx
@@
-33,8
+33,6
@@
#include "SMDS_Mesh.hxx"
#include <set>
#include "SMDS_Mesh.hxx"
#include <set>
-#include <boost/container/flat_set.hpp>
-
class SMDS_EXPORT SMDS_MeshGroup: public SMDS_MeshObject, SMDS_ElementHolder
{
public:
class SMDS_EXPORT SMDS_MeshGroup: public SMDS_MeshObject, SMDS_ElementHolder
{
public:
@@
-43,7
+41,7
@@
class SMDS_EXPORT SMDS_MeshGroup: public SMDS_MeshObject, SMDS_ElementHolder
void SetType (const SMDSAbs_ElementType theType);
void Clear();
void SetType (const SMDSAbs_ElementType theType);
void Clear();
- void Reserve(size_t nbElems) {
myElements.reserve( nbElems );
}
+ void Reserve(size_t nbElems) {}
bool Add(const SMDS_MeshElement * theElem);
bool Remove(const SMDS_MeshElement * theElem);
bool IsEmpty() const { return myElements.empty(); }
bool Add(const SMDS_MeshElement * theElem);
bool Remove(const SMDS_MeshElement * theElem);
bool IsEmpty() const { return myElements.empty(); }
@@
-62,12
+60,12
@@
class SMDS_EXPORT SMDS_MeshGroup: public SMDS_MeshObject, SMDS_ElementHolder
virtual SMDS_ElemIteratorPtr getElements() { return GetElements(); }
virtual void tmpClear();
virtual void add( const SMDS_MeshElement* element ) { Add( element ); }
virtual SMDS_ElemIteratorPtr getElements() { return GetElements(); }
virtual void tmpClear();
virtual void add( const SMDS_MeshElement* element ) { Add( element ); }
- virtual void compact() {
myElements.shrink_to_fit();
}
+ virtual void compact() {}
private:
private:
- typedef
boost::container::flat_
set< const SMDS_MeshElement* > TElementSet;
- typedef TElementSet::const_iterator
TIterator;
+ typedef
std::
set< const SMDS_MeshElement* > TElementSet;
+ typedef TElementSet::const_iterator TIterator;
const SMDS_Mesh * myMesh;
SMDSAbs_ElementType myType;
const SMDS_Mesh * myMesh;
SMDSAbs_ElementType myType;
diff --git
a/src/SMDS/SMDS_SpacePosition.hxx
b/src/SMDS/SMDS_SpacePosition.hxx
index 1bbac7b1f0818ebb597cbc45f43dbde22f01d8b3..71afda939bcb5f1485752184cfa585477a8947ee 100644
(file)
--- a/
src/SMDS/SMDS_SpacePosition.hxx
+++ b/
src/SMDS/SMDS_SpacePosition.hxx
@@
-36,7
+36,7
@@
class SMDS_EXPORT SMDS_SpacePosition : public SMDS_Position
public:
virtual SMDS_TypeOfPosition GetTypeOfPosition() const { return SMDS_TOP_3DSPACE; }
public:
virtual SMDS_TypeOfPosition GetTypeOfPosition() const { return SMDS_TOP_3DSPACE; }
- static SMDS_PositionPtr
originSpacePosition();
+ static SMDS_PositionPtr originSpacePosition();
virtual const double* GetParameters() const { return 0; }
private:
virtual const double* GetParameters() const { return 0; }
private: