Branch data Line data Source code
1 : : #ifndef ELEMENT_SEQUENCE_HPP
2 : : #define ELEMENT_SEQUENCE_HPP
3 : :
4 : : #include "EntitySequence.hpp"
5 : : #include "SequenceData.hpp"
6 : : #include "moab/CN.hpp"
7 : :
8 : : namespace moab
9 : : {
10 : :
11 : : class ElementSequence : public EntitySequence
12 : : {
13 : : public:
14 : 749 : ElementSequence( EntityHandle start, EntityID count, unsigned int nodes_per_elem, SequenceData* dat )
15 : 749 : : EntitySequence( start, count, dat ), nodesPerElement( nodes_per_elem )
16 : : {
17 : 749 : }
18 : :
19 [ - + ]: 25916 : virtual ~ElementSequence() {}
20 : :
21 : 62105513 : inline unsigned int nodes_per_element() const
22 : : {
23 : 62105513 : return nodesPerElement;
24 : : }
25 : :
26 : : virtual ErrorCode get_connectivity( EntityHandle handle, std::vector< EntityHandle >& connect,
27 : : bool topological = false ) const = 0;
28 : :
29 : : virtual ErrorCode get_connectivity( EntityHandle handle, EntityHandle const*& connect, int& connect_length,
30 : : bool topological = false, std::vector< EntityHandle >* storage = 0 ) const = 0;
31 : :
32 : : virtual ErrorCode set_connectivity( EntityHandle handle, EntityHandle const* connect, int connect_length ) = 0;
33 : :
34 : : inline EntityHandle const* get_connectivity_array() const;
35 : :
36 : : virtual EntityHandle* get_connectivity_array() = 0;
37 : :
38 : : inline bool has_mid_edge_nodes() const;
39 : : inline bool has_mid_face_nodes() const;
40 : : inline bool has_mid_volume_nodes() const;
41 : :
42 : : protected:
43 : 12211 : ElementSequence( ElementSequence& split_from, EntityHandle here )
44 : 12211 : : EntitySequence( split_from, here ), nodesPerElement( split_from.nodesPerElement )
45 : : {
46 : 12211 : }
47 : :
48 : : private:
49 : : unsigned nodesPerElement;
50 : : };
51 : :
52 : : inline EntityHandle const* ElementSequence::get_connectivity_array() const
53 : : {
54 : : return const_cast< ElementSequence* >( this )->get_connectivity_array();
55 : : }
56 : :
57 : 78 : inline bool ElementSequence::has_mid_edge_nodes() const
58 : : {
59 : 78 : return CN::HasMidEdgeNodes( type(), nodes_per_element() );
60 : : }
61 : :
62 : 66 : inline bool ElementSequence::has_mid_face_nodes() const
63 : : {
64 : 66 : return CN::HasMidFaceNodes( type(), nodes_per_element() );
65 : : }
66 : :
67 : 56 : inline bool ElementSequence::has_mid_volume_nodes() const
68 : : {
69 : 56 : return CN::HasMidRegionNodes( type(), nodes_per_element() );
70 : : }
71 : :
72 : : } // namespace moab
73 : :
74 : : #endif
|