![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 #ifndef UNSTRUCTURED_ELEM_SEQ_HPP
00002 #define UNSTRUCTURED_ELEM_SEQ_HPP
00003
00004 #include "ElementSequence.hpp"
00005 #include "SequenceData.hpp"
00006
00007 namespace moab
00008 {
00009
00010 class UnstructuredElemSeq : public ElementSequence
00011 {
00012 public:
00013 UnstructuredElemSeq( EntityHandle start_handle,
00014 EntityID entity_count,
00015 unsigned nodes_per_entity,
00016 SequenceData* data );
00017
00018 UnstructuredElemSeq( EntityHandle start_handle,
00019 EntityID entity_count,
00020 unsigned nodes_per_entity,
00021 EntityID sequence_data_size );
00022
00023 virtual ~UnstructuredElemSeq();
00024
00025 int values_per_entity() const;
00026
00027 virtual EntitySequence* split( EntityHandle here );
00028
00029 SequenceData* create_data_subset( EntityHandle start, EntityHandle end ) const;
00030
00031 virtual ErrorCode get_connectivity( EntityHandle handle,
00032 std::vector< EntityHandle >& connect,
00033 bool topological = false ) const;
00034
00035 virtual ErrorCode get_connectivity( EntityHandle handle,
00036 EntityHandle const*& connect,
00037 int& connect_length,
00038 bool topological = false,
00039 std::vector< EntityHandle >* storage = 0 ) const;
00040
00041 ErrorCode set_connectivity( EntityHandle handle, EntityHandle const* connect, int connect_length );
00042
00043 EntityHandle* get_connectivity_array();
00044
00045 ErrorCode push_front( EntityID count );
00046 ErrorCode push_back( EntityID count );
00047
00048 void get_const_memory_use( unsigned long& bytes_per_entity, unsigned long& size_of_sequence ) const;
00049
00050 protected:
00051 inline EntityHandle const* get_array() const
00052 {
00053 return reinterpret_cast< EntityHandle const* >( data()->get_sequence_data( 0 ) ) +
00054 nodes_per_element() * ( start_handle() - data()->start_handle() );
00055 }
00056
00057 inline EntityHandle* get_array()
00058 {
00059 return reinterpret_cast< EntityHandle* >( data()->get_sequence_data( 0 ) ) +
00060 nodes_per_element() * ( start_handle() - data()->start_handle() );
00061 }
00062
00063 UnstructuredElemSeq( UnstructuredElemSeq& split_from, EntityHandle here ) : ElementSequence( split_from, here ) {}
00064 };
00065
00066 } // namespace moab
00067
00068 #endif