Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
UnstructuredElemSeq.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines