Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
moab::UnstructuredElemSeq Class Reference

#include <UnstructuredElemSeq.hpp>

+ Inheritance diagram for moab::UnstructuredElemSeq:
+ Collaboration diagram for moab::UnstructuredElemSeq:

Public Member Functions

 UnstructuredElemSeq (EntityHandle start_handle, EntityID entity_count, unsigned nodes_per_entity, SequenceData *data)
 UnstructuredElemSeq (EntityHandle start_handle, EntityID entity_count, unsigned nodes_per_entity, EntityID sequence_data_size)
virtual ~UnstructuredElemSeq ()
int values_per_entity () const
 Integer value used in finding appropriate SequenceData.
virtual EntitySequencesplit (EntityHandle here)
 Split this sequence into two consecutive sequences.
SequenceDatacreate_data_subset (EntityHandle start, EntityHandle end) const
 Create a new SequenceData that is a copy of a subset of the one referenced by this sequence.
virtual ErrorCode get_connectivity (EntityHandle handle, std::vector< EntityHandle > &connect, bool topological=false) const
virtual ErrorCode get_connectivity (EntityHandle handle, EntityHandle const *&connect, int &connect_length, bool topological=false, std::vector< EntityHandle > *storage=0) const
ErrorCode set_connectivity (EntityHandle handle, EntityHandle const *connect, int connect_length)
EntityHandleget_connectivity_array ()
ErrorCode push_front (EntityID count)
ErrorCode push_back (EntityID count)
void get_const_memory_use (unsigned long &bytes_per_entity, unsigned long &size_of_sequence) const
 Get memory characteristcs that are the same for all entities.

Protected Member Functions

EntityHandle const * get_array () const
EntityHandleget_array ()
 UnstructuredElemSeq (UnstructuredElemSeq &split_from, EntityHandle here)

Detailed Description

Definition at line 10 of file UnstructuredElemSeq.hpp.


Constructor & Destructor Documentation

moab::UnstructuredElemSeq::UnstructuredElemSeq ( EntityHandle  start_handle,
EntityID  entity_count,
unsigned  nodes_per_entity,
SequenceData data 
)

Definition at line 8 of file UnstructuredElemSeq.cpp.

Referenced by split().

    : ElementSequence( shandle, entity_count, nodes_per_entity, dat )
{
}
moab::UnstructuredElemSeq::UnstructuredElemSeq ( EntityHandle  start_handle,
EntityID  entity_count,
unsigned  nodes_per_entity,
EntityID  sequence_data_size 
)

Definition at line 16 of file UnstructuredElemSeq.cpp.

References moab::SequenceData::create_sequence_data(), and moab::EntitySequence::data().

    : ElementSequence( shandle,
                       entity_count,
                       nodes_per_entity,
                       new SequenceData( 1, shandle, shandle + data_size - 1 ) )
{
    data()->create_sequence_data( 0, nodes_per_entity * sizeof( EntityHandle ) );
}

Definition at line 28 of file UnstructuredElemSeq.cpp.

{}
moab::UnstructuredElemSeq::UnstructuredElemSeq ( UnstructuredElemSeq split_from,
EntityHandle  here 
) [inline, protected]

Definition at line 63 of file UnstructuredElemSeq.hpp.

: ElementSequence( split_from, here ) {}

Member Function Documentation

SequenceData * moab::UnstructuredElemSeq::create_data_subset ( EntityHandle  start_handle,
EntityHandle  end_handle 
) const [virtual]

Create a new SequenceData that is a copy of a subset of the one referenced by this sequence.

Create a new SequenceData that is a copy of a subset of the SequenceData referenced by this EntitySequence. Do not make any changes to this EntitySequence or the current SequenceData.

Implements moab::EntitySequence.

Definition at line 42 of file UnstructuredElemSeq.cpp.

References moab::EntitySequence::data(), moab::ElementSequence::nodes_per_element(), and moab::SequenceData::subset().

{
    int esize = nodes_per_element() * sizeof( EntityHandle );
    return data()->subset( start, end, &esize );
}
ErrorCode moab::UnstructuredElemSeq::get_connectivity ( EntityHandle  handle,
std::vector< EntityHandle > &  connect,
bool  topological = false 
) const [virtual]

Implements moab::ElementSequence.

Reimplemented in moab::PolyElementSeq.

Definition at line 54 of file UnstructuredElemSeq.cpp.

References get_array(), MB_SUCCESS, moab::ElementSequence::nodes_per_element(), moab::EntitySequence::start_handle(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().

{
    EntityHandle const* conn = get_array() + nodes_per_element() * ( handle - start_handle() );
    int len                  = topological ? CN::VerticesPerEntity( type() ) : nodes_per_element();
    connect.reserve( connect.size() + len );
    std::copy( conn, conn + len, std::back_inserter( connect ) );
    return MB_SUCCESS;
}
ErrorCode moab::UnstructuredElemSeq::get_connectivity ( EntityHandle  handle,
EntityHandle const *&  connect,
int &  connect_length,
bool  topological = false,
std::vector< EntityHandle > *  storage = 0 
) const [virtual]

Implements moab::ElementSequence.

Definition at line 84 of file UnstructuredElemSeq.cpp.

References get_array().

{
    return get_array();
}
void moab::UnstructuredElemSeq::get_const_memory_use ( unsigned long &  bytes_per_entity,
unsigned long &  size_of_sequence 
) const [virtual]

Get memory characteristcs that are the same for all entities.

Get charactersitic constant memory use for all entities in sequence.

Parameters:
bytes_per_entityThe total bytes consumed for each entity in the underlying SequenceData. It is assumed that the same amount of memory is consumed for unused portions of the SequenceData.
size_of_sequenceThe size of the leaf subclass of this class

Implements moab::EntitySequence.

Definition at line 48 of file UnstructuredElemSeq.cpp.

References moab::ElementSequence::nodes_per_element().

{
    bytes_per_entity = nodes_per_element() * sizeof( EntityHandle );
    size_of_sequence = sizeof( *this );
}
ErrorCode moab::UnstructuredElemSeq::set_connectivity ( EntityHandle  handle,
EntityHandle const *  connect,
int  connect_length 
) [virtual]

Implements moab::ElementSequence.

Definition at line 76 of file UnstructuredElemSeq.cpp.

References get_array(), MB_INDEX_OUT_OF_RANGE, MB_SUCCESS, moab::ElementSequence::nodes_per_element(), and moab::EntitySequence::start_handle().

Referenced by moab::SequenceManager::create_element().

{
    if( (unsigned)connect_length != nodes_per_element() ) return MB_INDEX_OUT_OF_RANGE;
    EntityHandle* conn_ptr = get_array() + nodes_per_element() * ( handle - start_handle() );
    std::copy( connect, connect + connect_length, conn_ptr );
    return MB_SUCCESS;
}

Split this sequence into two consecutive sequences.

Split this sequence into two sequences.

Parameters:
hereNew sequences should be [start_handle(),here) & [here,end_handle()]
Returns:
New sequence containing [here,end_handle()]

Implements moab::EntitySequence.

Reimplemented in moab::PolyElementSeq.

Definition at line 35 of file UnstructuredElemSeq.cpp.

References moab::EntitySequence::end_handle(), moab::EntitySequence::start_handle(), and UnstructuredElemSeq().

{
    if( here <= start_handle() || here > end_handle() ) return 0;

    return new UnstructuredElemSeq( *this, here );
}

Integer value used in finding appropriate SequenceData.

This value is matched to input values by TypeSequenceManager to determine if an available, unused portino of a SequenceData can be used for a specific entity allocation. For example, it is used to find a SequenceData with the appropriate number of vertices per element when allocating elements. The default value is zero.

Reimplemented from moab::EntitySequence.

Definition at line 30 of file UnstructuredElemSeq.cpp.

References moab::ElementSequence::nodes_per_element().

{
    return nodes_per_element();
}

List of all members.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines