SMDSAbs_ElementType myType;
SMDSAbs_GeometryType myGeom;
bool myIsPoly;
+ bool myIsQuadratic;
int myNbCornerNodes;
int myNbNodes;
int myNbEdges;
myType = Type;
myGeom = Geom;
myIsPoly = IsPoly;
+ myIsQuadratic = ( NbNodes > NbCornerNodes );
myNbCornerNodes = NbCornerNodes;
myNbNodes = NbNodes;
myNbEdges = NbEdges;
myNbFaces = NbFaces;
}
- bool IsQuadratic() const { return myNbNodes > myNbCornerNodes; }
};
//! return vector a CellProps
///////////////////////////////////////////////////////////////////////////////
int SMDS_MeshCell::NbNodes() const
{
- if ( GetEntityType() == SMDSEntity_Polyhedra )
+ if ( GetVtkType() == VTK_POLYHEDRON )
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbNodes();
vtkIdType *pts, npts;
getGrid()->GetCellPoints( GetVtkID(), npts, pts );
int SMDS_MeshCell::NbFaces() const
{
- if ( GetEntityType() == SMDSEntity_Polyhedra )
+ if ( GetVtkType() == VTK_POLYHEDRON )
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbFaces();
return getCellProps( GetVtkType() ).myNbFaces;
}
int SMDS_MeshCell::NbCornerNodes() const
{
- switch ( GetEntityType() )
+ switch ( GetVtkType() )
{
- case SMDSEntity_Polyhedra:
+ case VTK_POLYHEDRON:
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbCornerNodes();
- case SMDSEntity_Polygon:
+ case VTK_POLYGON:
return NbNodes();
- case SMDSEntity_Quad_Polygon:
+ case VTK_QUADRATIC_POLYGON:
return NbNodes() / 2;
default:;
}
///////////////////////////////////////////////////////////////////////////////
SMDS_ElemIteratorPtr SMDS_MeshCell::nodesIterator() const
{
- if ( GetEntityType() == SMDSEntity_Polyhedra )
+ if ( GetVtkType() == VTK_POLYHEDRON )
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::nodesIterator();
return boost::make_shared< SMDS_VtkCellIterator<> >( GetMesh(), GetVtkID(), GetEntityType());
///////////////////////////////////////////////////////////////////////////////
SMDS_NodeIteratorPtr SMDS_MeshCell::nodeIterator() const
{
- if ( GetEntityType() == SMDSEntity_Polyhedra )
+ if ( GetVtkType() == VTK_POLYHEDRON )
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::nodeIterator();
return SMDS_NodeIteratorPtr
SMDSAbs_ElementType SMDS_MeshCell::GetType() const
{
- return ElemType( GetEntityType() );
+ return getCellProps( GetVtkType() ).myType;
}
SMDSAbs_EntityType SMDS_MeshCell::GetEntityType() const
bool SMDS_MeshCell::IsQuadratic() const
{
- return getCellProps( GetVtkType() ).IsQuadratic();
+ return getCellProps( GetVtkType() ).myIsQuadratic;
}
const SMDS_MeshNode* SMDS_MeshCell::GetNode(const int ind) const
{
- if ( GetEntityType() == SMDSEntity_Polyhedra )
+ if ( GetVtkType() == VTK_POLYHEDRON )
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::GetNode( ind );
vtkIdType npts, *pts;
int SMDS_MeshCell::GetNodeIndex( const SMDS_MeshNode* node ) const
{
- if ( GetEntityType() == SMDSEntity_Polyhedra )
+ if ( GetVtkType() == VTK_POLYHEDRON )
return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::GetNodeIndex( node );
vtkIdType npts, *pts;
bool SMDS_MeshCell::IsQuadratic( SMDSAbs_EntityType entityType )
{
- return getCellProps( entityType ).IsQuadratic();
+ return getCellProps( entityType ).myIsQuadratic;
}
int SMDS_MeshCell::NbCornerNodes( SMDSAbs_EntityType entityType )
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 )
{
}
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();
}
- else if (theElem->GetType() != myType) {
+ else if ( theElem->GetType() != myType ) {
MESSAGE("SMDS_MeshGroup::Add : Type Mismatch "<<theElem->GetType()<<"!="<<myType);
return false;
}
- myElements.insert(theElem);
+ myElements.insert( theElem );
++myTic;
return true;
//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() ) {
- myElements.erase(found);
- if (myElements.empty()) myType = SMDSAbs_All;
+ myElements.erase( found );
+ if ( myElements.empty() ) myType = SMDSAbs_All;
++myTic;
return true;
}
//=======================================================================
//function : Contains
-//purpose :
+//purpose :
//=======================================================================
bool SMDS_MeshGroup::Contains(const SMDS_MeshElement * theElem) const
{
- return myElements.find(theElem) != myElements.end();
+ return myElements.find( theElem ) != myElements.end();
}
//=======================================================================
void SMDS_MeshGroup::tmpClear()
{
- compact();
myElements.clear();
}
#include "SMDS_Mesh.hxx"
#include <set>
-#include <boost/container/flat_set.hpp>
-
class SMDS_EXPORT SMDS_MeshGroup: public SMDS_MeshObject, SMDS_ElementHolder
{
public:
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(); }
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:
- 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;