Branch data Line data Source code
1 : : #include "UnstructuredElemSeq.hpp"
2 : : #include "SequenceData.hpp"
3 : : #include "moab/CN.hpp"
4 : :
5 : : namespace moab
6 : : {
7 : :
8 : 43 : UnstructuredElemSeq::UnstructuredElemSeq( EntityHandle shandle, EntityID entity_count, unsigned nodes_per_entity,
9 : : SequenceData* dat )
10 : 43 : : ElementSequence( shandle, entity_count, nodes_per_entity, dat )
11 : : {
12 : 43 : }
13 : :
14 : 678 : UnstructuredElemSeq::UnstructuredElemSeq( EntityHandle shandle, EntityID entity_count, unsigned nodes_per_entity,
15 : : EntityID data_size )
16 : : : ElementSequence( shandle, entity_count, nodes_per_entity,
17 [ + - ]: 678 : new SequenceData( 1, shandle, shandle + data_size - 1 ) )
18 : : {
19 [ + - ][ + - ]: 678 : data()->create_sequence_data( 0, nodes_per_entity * sizeof( EntityHandle ) );
20 : 678 : }
21 : :
22 [ - + ]: 51664 : UnstructuredElemSeq::~UnstructuredElemSeq() {}
23 : :
24 : 428931 : int UnstructuredElemSeq::values_per_entity() const
25 : : {
26 : 428931 : return nodes_per_element();
27 : : }
28 : :
29 : 12211 : EntitySequence* UnstructuredElemSeq::split( EntityHandle here )
30 : : {
31 [ + - ][ - + ]: 12211 : if( here <= start_handle() || here > end_handle() ) return 0;
[ - + ]
32 : :
33 [ + - ]: 12211 : return new UnstructuredElemSeq( *this, here );
34 : : }
35 : :
36 : 2 : SequenceData* UnstructuredElemSeq::create_data_subset( EntityHandle start, EntityHandle end ) const
37 : : {
38 [ + - ]: 2 : int esize = nodes_per_element() * sizeof( EntityHandle );
39 [ + - ][ + - ]: 2 : return data()->subset( start, end, &esize );
40 : : }
41 : :
42 : 4 : void UnstructuredElemSeq::get_const_memory_use( unsigned long& bytes_per_entity, unsigned long& size_of_sequence ) const
43 : : {
44 : 4 : bytes_per_entity = nodes_per_element() * sizeof( EntityHandle );
45 : 4 : size_of_sequence = sizeof( *this );
46 : 4 : }
47 : :
48 : 0 : ErrorCode UnstructuredElemSeq::get_connectivity( EntityHandle handle, std::vector< EntityHandle >& connect,
49 : : bool topological ) const
50 : : {
51 : 0 : EntityHandle const* conn = get_array() + nodes_per_element() * ( handle - start_handle() );
52 [ # # ]: 0 : int len = topological ? CN::VerticesPerEntity( type() ) : nodes_per_element();
53 : 0 : connect.reserve( connect.size() + len );
54 : 0 : std::copy( conn, conn + len, std::back_inserter( connect ) );
55 : 0 : return MB_SUCCESS;
56 : : }
57 : :
58 : 23800738 : ErrorCode UnstructuredElemSeq::get_connectivity( EntityHandle handle, EntityHandle const*& conn_ptr, int& len,
59 : : bool topological, std::vector< EntityHandle >* ) const
60 : : {
61 : 23800738 : conn_ptr = get_array() + nodes_per_element() * ( handle - start_handle() );
62 [ + + ]: 23800738 : len = topological ? CN::VerticesPerEntity( type() ) : nodes_per_element();
63 : 23800738 : return MB_SUCCESS;
64 : : }
65 : :
66 : 421348 : ErrorCode UnstructuredElemSeq::set_connectivity( EntityHandle handle, EntityHandle const* connect, int connect_length )
67 : : {
68 [ - + ]: 421348 : if( (unsigned)connect_length != nodes_per_element() ) return MB_INDEX_OUT_OF_RANGE;
69 : 421348 : EntityHandle* conn_ptr = get_array() + nodes_per_element() * ( handle - start_handle() );
70 : 421348 : std::copy( connect, connect + connect_length, conn_ptr );
71 : 421348 : return MB_SUCCESS;
72 : : }
73 : :
74 : 5187 : EntityHandle* UnstructuredElemSeq::get_connectivity_array()
75 : : {
76 : 5187 : return get_array();
77 : : }
78 : :
79 : 417177 : ErrorCode UnstructuredElemSeq::push_back( EntityID count )
80 : : {
81 : 417177 : return EntitySequence::append_entities( count );
82 : : }
83 : :
84 : 34 : ErrorCode UnstructuredElemSeq::push_front( EntityID count )
85 : : {
86 : 34 : return EntitySequence::prepend_entities( count );
87 : : }
88 : :
89 : : } // namespace moab
|