SALOME - SMESH
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
SMDS_MeshElement.hxx
Go to the documentation of this file.
1
// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
2
//
3
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5
//
6
// This library is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU Lesser General Public
8
// License as published by the Free Software Foundation; either
9
// version 2.1 of the License.
10
//
11
// This library is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
// Lesser General Public License for more details.
15
//
16
// You should have received a copy of the GNU Lesser General Public
17
// License along with this library; if not, write to the Free Software
18
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
//
20
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21
//
22
// SMESH SMDS : implementaion of Salome mesh data structure
23
// File : SMDS_MeshElement.hxx
24
// Module : SMESH
25
//
26
#ifndef _SMDS_MeshElement_HeaderFile
27
#define _SMDS_MeshElement_HeaderFile
28
29
#include "
SMESH_SMDS.hxx
"
30
31
#include "
SMDSAbs_ElementType.hxx
"
32
#include "
SMDS_MeshObject.hxx
"
33
#include "
SMDS_ElemIterator.hxx
"
34
#include "
SMDS_MeshElementIDFactory.hxx
"
35
36
#include <vector>
37
#include <iostream>
38
39
class
SMDS_MeshNode
;
40
class
SMDS_MeshEdge
;
41
class
SMDS_MeshFace
;
42
43
// ============================================================
47
// ============================================================
48
49
class
SMDS_EXPORT
SMDS_MeshElement
:
public
SMDS_MeshObject
50
{
51
public
:
52
53
SMDS_ElemIteratorPtr
nodesIterator()
const
;
54
SMDS_ElemIteratorPtr
edgesIterator()
const
;
55
SMDS_ElemIteratorPtr
facesIterator()
const
;
56
virtual
SMDS_ElemIteratorPtr
elementsIterator(
SMDSAbs_ElementType
type)
const
;
57
58
virtual
int
NbNodes()
const
;
59
virtual
int
NbEdges()
const
;
60
virtual
int
NbFaces()
const
;
61
int
GetID()
const
;
62
64
virtual
SMDSAbs_ElementType
GetType()
const
= 0;
65
virtual
bool
IsPoly
()
const
{
return
false
; };
66
virtual
bool
IsQuadratic()
const
;
68
virtual
SMDSAbs_EntityType
GetEntityType()
const
= 0;
69
70
virtual
bool
IsMediumNode(
const
SMDS_MeshNode
* node)
const
;
71
72
friend
SMDS_EXPORT
std::ostream & operator <<(std::ostream & OS,
const
SMDS_MeshElement
*);
73
friend
SMDS_EXPORT
bool
SMDS_MeshElementIDFactory::BindID
(
int
ID,
SMDS_MeshElement
*elem);
74
75
// ===========================
76
// Access to nodes by index
77
// ===========================
83
virtual
const
SMDS_MeshNode
* GetNode(
const
int
ind)
const
;
84
92
const
SMDS_MeshNode
*
GetNodeWrap
(
const
int
ind)
const
{
return
GetNode( WrappedIndex( ind )); }
93
99
virtual
bool
IsValidIndex(
const
int
ind)
const
;
100
106
int
WrappedIndex
(
const
int
ind)
const
{
107
if
( ind < 0 )
return
NbNodes() + ind % NbNodes();
108
if
( ind >= NbNodes() )
return
ind % NbNodes();
109
return
ind;
110
}
111
117
int
GetNodeIndex(
const
SMDS_MeshNode
* node )
const
;
118
119
protected
:
120
SMDS_MeshElement
(
int
ID=-1);
121
virtual
void
Print(std::ostream & OS)
const
;
122
123
private
:
124
int
myID
;
125
};
126
127
// ============================================================
131
// ============================================================
132
133
struct
TIDCompare
{
134
bool
operator ()
(
const
SMDS_MeshElement
* e1,
const
SMDS_MeshElement
* e2)
const
135
{
return
e1->
GetID
() < e2->
GetID
(); }
136
};
137
138
#endif
inc
SMDS_MeshElement.hxx
Generated by
1.8.2