Salome HOME
projects
/
modules
/
smesh.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'V9_9_BR'
[modules/smesh.git]
/
src
/
SMESH
/
SMESH_ProxyMesh.hxx
diff --git
a/src/SMESH/SMESH_ProxyMesh.hxx
b/src/SMESH/SMESH_ProxyMesh.hxx
index aa692414a8cd826a27cf7f732357f5817b4a6556..8b18fbaac6f7f6bb258c91811bf0201745535580 100644
(file)
--- a/
src/SMESH/SMESH_ProxyMesh.hxx
+++ b/
src/SMESH/SMESH_ProxyMesh.hxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-20
19
CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-20
22
CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@
-31,6
+31,8
@@
#include "SMESH_TypeDefs.hxx"
#include <TopoDS_Shape.hxx>
#include "SMESH_TypeDefs.hxx"
#include <TopoDS_Shape.hxx>
+#include <NCollection_DataMap.hxx>
+#include <smIdType.hxx>
#include <map>
#include <vector>
#include <map>
#include <vector>
@@
-65,8
+67,8
@@
public:
const SMDS_MeshNode* GetProxyNode( const SMDS_MeshNode* n ) const;
const UVPtStructVec& GetUVPtStructVec() const { return _uvPtStructVec; }
virtual void AddElement(const SMDS_MeshElement * e);
const SMDS_MeshNode* GetProxyNode( const SMDS_MeshNode* n ) const;
const UVPtStructVec& GetUVPtStructVec() const { return _uvPtStructVec; }
virtual void AddElement(const SMDS_MeshElement * e);
- virtual
int
NbElements() const;
- virtual
int
NbNodes() const;
+ virtual
smIdType
NbElements() const;
+ virtual
smIdType
NbNodes() const;
virtual SMDS_ElemIteratorPtr GetElements() const;
virtual SMDS_NodeIteratorPtr GetNodes() const;
virtual void Clear();
virtual SMDS_ElemIteratorPtr GetElements() const;
virtual SMDS_NodeIteratorPtr GetNodes() const;
virtual void Clear();
@@
-91,7
+93,7
@@
public:
protected: // methods of SMDS_ElementHolder; remove elements before mesh compacting or clearing
virtual SMDS_ElemIteratorPtr getElements() { Clear(); return GetElements(); }
virtual void tmpClear() {}
protected: // methods of SMDS_ElementHolder; remove elements before mesh compacting or clearing
virtual SMDS_ElemIteratorPtr getElements() { Clear(); return GetElements(); }
virtual void tmpClear() {}
- virtual void add( const SMDS_MeshElement*
element
) {}
+ virtual void add( const SMDS_MeshElement*
/*element*/
) {}
virtual void compact() {}
virtual void clear() { Clear(); }
};
virtual void compact() {}
virtual void clear() { Clear(); }
};
@@
-103,31
+105,39
@@
public:
SMESH_ProxyMesh(const SMESH_Mesh& mesh);
virtual ~SMESH_ProxyMesh();
SMESH_ProxyMesh(const SMESH_Mesh& mesh);
virtual ~SMESH_ProxyMesh();
- // Returns
the sub
mesh of a shape; it can be a proxy sub-mesh
+ // Returns
a sub-
mesh of a shape; it can be a proxy sub-mesh
const SMESHDS_SubMesh* GetSubMesh(const TopoDS_Shape& shape) const;
const SMESHDS_SubMesh* GetSubMesh(const TopoDS_Shape& shape) const;
- // Returns the proxy sub-mesh of a shape; it can be NULL
+ // Return a sub-mesh by a shape ID; it can be a proxy sub-mesh
+ const SMESHDS_SubMesh* GetSubMesh(const int shapeID) const;
+
+ // Return a proxy sub-mesh of a shape; it can be NULL
const SubMesh* GetProxySubMesh(const TopoDS_Shape& shape) const;
const SubMesh* GetProxySubMesh(const TopoDS_Shape& shape) const;
- // Return
s the
proxy node of a node; the input node is returned if no proxy exists
+ // Return
a
proxy node of a node; the input node is returned if no proxy exists
const SMDS_MeshNode* GetProxyNode( const SMDS_MeshNode* node ) const;
const SMDS_MeshNode* GetProxyNode( const SMDS_MeshNode* node ) const;
- // Return
s
number of proxy sub-meshes
+ // Return number of proxy sub-meshes
int NbProxySubMeshes() const;
int NbProxySubMeshes() const;
- // Return
s
iterator on all faces of the mesh taking into account substitutions.
+ // Return iterator on all faces of the mesh taking into account substitutions.
// To be used in case of mesh without shape
SMDS_ElemIteratorPtr GetFaces() const;
// To be used in case of mesh without shape
SMDS_ElemIteratorPtr GetFaces() const;
- // Return
s
iterator on all faces on the face taking into account substitutions
+ // Return iterator on all faces on the face taking into account substitutions
SMDS_ElemIteratorPtr GetFaces(const TopoDS_Shape& face) const;
// Return total nb of faces taking into account substitutions
SMDS_ElemIteratorPtr GetFaces(const TopoDS_Shape& face) const;
// Return total nb of faces taking into account substitutions
-
int
NbFaces() const;
+
smIdType
NbFaces() const;
bool IsTemporary(const SMDS_MeshElement* elem ) const;
bool IsTemporary(const SMDS_MeshElement* elem ) const;
+ // Return iterator on inverse elements of a node that may be a proxy one
+ SMDS_ElemIteratorPtr GetInverseElementIterator(const SMDS_MeshNode* node,
+ SMDSAbs_ElementType type) const;
+ // Check if a FACE has prisms on its both sides
+ static bool HasPrismsOnTwoSides( SMESHDS_SubMesh* faceSM );
SMESH_Mesh* GetMesh() const { return const_cast<SMESH_Mesh*>( _mesh ); }
SMESH_Mesh* GetMesh() const { return const_cast<SMESH_Mesh*>( _mesh ); }
@@
-143,13
+153,13
@@
public:
virtual SubMesh* newSubmesh(int index=0) const;
virtual SubMesh* newSubmesh(int index=0) const;
- //
returns
a proxy sub-mesh; zero index is for the case of mesh w/o shape
+ //
Return
a proxy sub-mesh; zero index is for the case of mesh w/o shape
SubMesh* findProxySubMesh(int shapeIndex=0) const;
SubMesh* findProxySubMesh(int shapeIndex=0) const;
- //
returns
a proxy sub-mesh; it is created if not yet exists
+ //
Return
a proxy sub-mesh; it is created if not yet exists
SubMesh* getProxySubMesh(int shapeIndex);
SubMesh* getProxySubMesh(int shapeIndex);
- //
returns
a proxy sub-mesh; it is created if not yet exists
+ //
Return
a proxy sub-mesh; it is created if not yet exists
SubMesh* getProxySubMesh(const TopoDS_Shape& shape=TopoDS_Shape());
// move proxy sub-mesh from other proxy mesh to this, returns true if sub-mesh found
SubMesh* getProxySubMesh(const TopoDS_Shape& shape=TopoDS_Shape());
// move proxy sub-mesh from other proxy mesh to this, returns true if sub-mesh found
@@
-184,6
+194,12
@@
public:
// tmp elements residing the _mesh, to be deleted at destruction
std::set< const SMDS_MeshElement* > _elemsInMesh;
// tmp elements residing the _mesh, to be deleted at destruction
std::set< const SMDS_MeshElement* > _elemsInMesh;
+ // inverse elements of proxy nodes
+ typedef NCollection_DataMap< const SMDS_MeshNode*,
+ std::vector< const SMDS_MeshElement* >,
+ SMESH_Hasher > TNodeElemVecMap;
+ TNodeElemVecMap _inverseElements;
+
// Complex submesh used to iterate over elements in other sub-meshes
mutable SubMesh* _subContainer;
};
// Complex submesh used to iterate over elements in other sub-meshes
mutable SubMesh* _subContainer;
};