MOAB: Mesh Oriented datABase  (version 5.3.1)
moab::EntitySource Class Reference

#include <SplitVertices.hpp>

+ Collaboration diagram for moab::EntitySource:

Public Types

typedef std::vector
< EntitySourceRecord
VecType
typedef std::vector
< EntitySourceRecord >
::iterator 
VecIteratorType

Public Member Functions

 EntitySource (int num_corners, RefinerTagManager *tag_mgr)
 ~EntitySource ()
bool create_element (EntityType etyp, int nconn, const EntityHandle *split_src, EntityHandle &elem_handle, std::map< ProcessSet, int > &proc_partition_counts)
void assign_global_ids (std::map< ProcessSet, int > &gids)

Public Attributes

Interfacemesh_out
RefinerTagManagertag_manager
ProcessSet common_shared_procs
int num_corners

Detailed Description

A vector of pre-existing entities to a new mesh entity.

This is used as a dictionary to determine whether a new vertex should be created on the given n-simplex (n being the template parameter) or whether it has already been created as part of the refinement of a neighboring entity.

Definition at line 190 of file SplitVertices.hpp.


Member Typedef Documentation

typedef std::vector< EntitySourceRecord >::iterator moab::EntitySource::VecIteratorType

Definition at line 194 of file SplitVertices.hpp.

Definition at line 193 of file SplitVertices.hpp.


Constructor & Destructor Documentation

moab::EntitySource::EntitySource ( int  num_corners,
RefinerTagManager tag_mgr 
)

Definition at line 17 of file SplitVertices.cpp.

References moab::RefinerTagManager::get_output_mesh(), mesh_out, num_corners, and tag_manager.

{
    this->tag_manager = tag_mgr;
    this->mesh_out    = tag_mgr->get_output_mesh();
    this->num_corners = nc;
}

Definition at line 24 of file SplitVertices.cpp.

{}

Member Function Documentation

void moab::EntitySource::assign_global_ids ( std::map< ProcessSet, int > &  gids)

Definition at line 38 of file SplitVertices.cpp.

References conn, moab::Interface::get_connectivity(), moab::RefinerTagManager::get_output_gids(), mesh_out, num_corners, moab::RefinerTagManager::set_gid(), and tag_manager.

{
    std::vector< EntityHandle > adjacencies;
    adjacencies.resize( this->num_corners );
    std::vector< EntitySourceRecord >::iterator it;
    for( it = this->begin(); it != this->end(); ++it )
    {
        int num_nodes;
        const EntityHandle* conn;
        this->mesh_out->get_connectivity( it->handle, conn, num_nodes );
        this->tag_manager->get_output_gids( this->num_corners, conn, it->ids );
        std::sort( it->ids.begin(), it->ids.end() );
    }
    std::sort( this->begin(), this->end() );
    for( it = this->begin(); it != this->end(); ++it )
    {
        int gid = gids[it->process_set]++;
        this->tag_manager->set_gid( it->handle, gid );
#ifdef MB_DEBUG
        std::cout << "Assigning entity: " << it->handle << " GID: " << gid << "\n";
#endif  // MB_DEBUG
    }
}
bool moab::EntitySource::create_element ( EntityType  etyp,
int  nconn,
const EntityHandle split_src,
EntityHandle elem_handle,
std::map< ProcessSet, int > &  proc_partition_counts 
)

Definition at line 26 of file SplitVertices.cpp.

References moab::Interface::create_element(), moab::RefinerTagManager::get_element_procs(), MB_SUCCESS, mesh_out, num_corners, moab::RefinerTagManager::set_sharing(), and tag_manager.

{
    // Get the global IDs of the input vertices
    // int stat;
    proc_partition_counts[this->tag_manager->get_element_procs()]++;
    if( this->mesh_out->create_element( etyp, elem_verts, nconn, elem_handle ) != MB_SUCCESS ) { return false; }
    this->push_back( EntitySourceRecord( this->num_corners, elem_handle, this->tag_manager->get_element_procs() ) );
    this->tag_manager->set_sharing( elem_handle, this->tag_manager->get_element_procs() );
    return true;
}

Member Data Documentation

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