Functions for converting to/from higher-order elements. More...
#include <HigherOrderFactory.hpp>
Public Member Functions | |
HigherOrderFactory (Core *, Interface::HONodeAddedRemoved *function_object) | |
~HigherOrderFactory () | |
ErrorCode | convert (const EntityHandle meshset, const bool mid_edge_nodes, const bool mid_face_nodes, const bool mid_volume_nodes) |
ErrorCode | convert (const Range &entities, const bool mid_edge_nodes, const bool mid_face_nodes, const bool mid_volume_nodes) |
Public Attributes | |
unsigned char | mNodeMap [MBMAXTYPE][8][8] |
Private Member Functions | |
void | initialize_map () |
ErrorCode | convert_sequence (ElementSequence *sequence, EntityHandle sequence_subset_start, EntityHandle sequence_subset_end, bool mid_edge_nodes, bool mid_face_nodes, bool mid_volume_nodes) |
ErrorCode | add_mid_edge_nodes (ElementSequence *) |
ErrorCode | add_mid_face_nodes (ElementSequence *) |
ErrorCode | add_mid_volume_nodes (ElementSequence *) |
EntityHandle | center_node_exist (EntityHandle corner1, EntityHandle corner2, std::vector< EntityHandle > &adj_entities) |
returns the handle of the first center node found between the two corner nodes. returns zero if none found entities that share those two corner nodes and have space allocated for mid-edge nodes are returned in a vector More... | |
EntityHandle | center_node_exist (EntityHandle corners[4], std::vector< EntityHandle > &adj_entities) |
returns the handle of the first center node found between the 3-4 corner nodes. set the last node to zero if you want only 3 nodes returns zero if none found entities that share those corner nodes and have space allocated for mid face nodes are returned in a vector More... | |
bool | add_center_node (EntityType type, EntityHandle *element_conn, int conn_size, EntityHandle corner_node1, EntityHandle corner_node2, EntityHandle center_node) |
adds a center node to element between corner nodes, returns success More... | |
ErrorCode | copy_corner_nodes (ElementSequence *src, ElementSequence *dst) |
ErrorCode | copy_mid_edge_nodes (ElementSequence *src, ElementSequence *dst) |
ErrorCode | copy_mid_face_nodes (ElementSequence *src, ElementSequence *dst) |
ErrorCode | copy_mid_volume_nodes (ElementSequence *src, ElementSequence *dst) |
ErrorCode | copy_nodes (ElementSequence *src, ElementSequence *dst, unsigned nodes_per_elem_to_copy, unsigned src_conn_offset, unsigned dst_conn_offset) |
ErrorCode | zero_mid_edge_nodes (ElementSequence *dst) |
ErrorCode | zero_mid_face_nodes (ElementSequence *dst) |
ErrorCode | zero_mid_volume_nodes (ElementSequence *dst) |
ErrorCode | zero_nodes (ElementSequence *dst, unsigned nodes_per_elem_to_zero, unsigned dst_conn_offset) |
ErrorCode | remove_mid_edge_nodes (ElementSequence *seq, EntityHandle start, EntityHandle stop, Tag deletable_ndoes) |
ErrorCode | remove_mid_face_nodes (ElementSequence *seq, EntityHandle start, EntityHandle stop, Tag deletable_ndoes) |
ErrorCode | remove_mid_volume_nodes (ElementSequence *seq, EntityHandle start, EntityHandle stop, Tag deletable_ndoes) |
ErrorCode | remove_ho_nodes (ElementSequence *sequence, EntityHandle subset_start_handle, EntityHandle subset_end_handle, int nodes_per_elem_to_remove, int elem_conn_offset_to_remove, Tag deletable_nodes) |
bool | tag_for_deletion (EntityHandle element_with_node, int node_index_in_elem_connectivity, ElementSequence *sequence) |
Private Attributes | |
Core * | mMB |
Interface::HONodeAddedRemoved * | mHONodeAddedRemoved |
Functions for converting to/from higher-order elements.
Definition at line 38 of file HigherOrderFactory.hpp.
moab::HigherOrderFactory::HigherOrderFactory | ( | Core * | MB, |
Interface::HONodeAddedRemoved * | function_object | ||
) |
Definition at line 39 of file HigherOrderFactory.cpp.
References initialize_map().
moab::HigherOrderFactory::~HigherOrderFactory | ( | ) |
Definition at line 44 of file HigherOrderFactory.cpp.
|
private |
adds a center node to element between corner nodes, returns success
Definition at line 597 of file HigherOrderFactory.cpp.
References mNodeMap.
|
private |
Definition at line 387 of file HigherOrderFactory.cpp.
References center_node_exist(), moab::CN::ConnMap::conn, moab::Core::create_vertex(), moab::SequenceManager::find(), moab::ElementSequence::get_connectivity_array(), MB_SUCCESS, moab::CN::mConnectivityMap, mHONodeAddedRemoved, mMB, moab::Interface::HONodeAddedRemoved::node_added(), moab::ElementSequence::nodes_per_element(), moab::CN::ConnMap::num_sub_elements, moab::Core::sequence_manager(), moab::EntitySequence::size(), moab::EntitySequence::start_handle(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 310 of file HigherOrderFactory.cpp.
References center_node_exist(), moab::CN::ConnMap::conn, moab::Core::create_vertex(), moab::SequenceManager::find(), moab::ElementSequence::get_connectivity_array(), moab::ElementSequence::has_mid_edge_nodes(), MB_SUCCESS, moab::CN::mConnectivityMap, mHONodeAddedRemoved, mMB, moab::Interface::HONodeAddedRemoved::node_added(), moab::ElementSequence::nodes_per_element(), moab::CN::ConnMap::num_corners_per_sub_element, moab::CN::ConnMap::num_sub_elements, moab::Core::sequence_manager(), moab::EntitySequence::size(), moab::EntitySequence::start_handle(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 261 of file HigherOrderFactory.cpp.
References moab::Core::create_vertex(), moab::SequenceManager::find(), moab::ElementSequence::get_connectivity_array(), moab::ElementSequence::has_mid_edge_nodes(), moab::ElementSequence::has_mid_face_nodes(), MB_SUCCESS, moab::CN::mConnectivityMap, mHONodeAddedRemoved, mMB, moab::Interface::HONodeAddedRemoved::node_added(), moab::ElementSequence::nodes_per_element(), moab::CN::ConnMap::num_sub_elements, moab::Core::sequence_manager(), moab::EntitySequence::size(), moab::EntitySequence::start_handle(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
returns the handle of the first center node found between the two corner nodes. returns zero if none found entities that share those two corner nodes and have space allocated for mid-edge nodes are returned in a vector
Definition at line 457 of file HigherOrderFactory.cpp.
References moab::Core::a_entity_factory(), moab::AEntityFactory::create_vert_elem_adjacencies(), moab::AEntityFactory::get_adjacencies(), moab::Core::get_connectivity(), moab::CN::HasMidEdgeNodes(), MBENTITYSET, mMB, mNodeMap, moab::TYPE_FROM_HANDLE(), and moab::AEntityFactory::vert_elem_adjacencies().
Referenced by add_mid_edge_nodes(), and add_mid_face_nodes().
|
private |
returns the handle of the first center node found between the 3-4 corner nodes. set the last node to zero if you want only 3 nodes returns zero if none found entities that share those corner nodes and have space allocated for mid face nodes are returned in a vector
Definition at line 511 of file HigherOrderFactory.cpp.
References moab::Core::a_entity_factory(), moab::CN::ConnMap::conn, moab::AEntityFactory::create_vert_elem_adjacencies(), moab::AEntityFactory::get_adjacencies(), moab::Core::get_connectivity(), moab::CN::HasMidEdgeNodes(), moab::CN::HasMidFaceNodes(), MBENTITYSET, moab::CN::mConnectivityMap, mMB, moab::CN::ConnMap::num_sub_elements, moab::CN::ConnMap::target_type, moab::TYPE_FROM_HANDLE(), moab::AEntityFactory::vert_elem_adjacencies(), and moab::CN::VerticesPerEntity().
ErrorCode moab::HigherOrderFactory::convert | ( | const EntityHandle | meshset, |
const bool | mid_edge_nodes, | ||
const bool | mid_face_nodes, | ||
const bool | mid_volume_nodes | ||
) |
Definition at line 71 of file HigherOrderFactory.cpp.
References entities, moab::Core::get_entities_by_handle(), and mMB.
Referenced by moab::Core::convert_entities(), and moab::Tqdcfr::read_block().
ErrorCode moab::HigherOrderFactory::convert | ( | const Range & | entities, |
const bool | mid_edge_nodes, | ||
const bool | mid_face_nodes, | ||
const bool | mid_volume_nodes | ||
) |
Definition at line 81 of file HigherOrderFactory.cpp.
References convert_sequence(), moab::EntitySequence::end_handle(), entities, ErrorCode, moab::SequenceManager::find(), moab::ElementSequence::get_connectivity_array(), MB_NOT_IMPLEMENTED, MB_SUCCESS, MB_TYPE_OUT_OF_RANGE, MBENTITYSET, MBVERTEX, mMB, moab::Core::sequence_manager(), and moab::EntitySequence::type().
|
private |
Definition at line 127 of file HigherOrderFactory.cpp.
References add_mid_edge_nodes(), add_mid_face_nodes(), add_mid_volume_nodes(), moab::Range::begin(), copy_corner_nodes(), copy_mid_edge_nodes(), copy_mid_face_nodes(), copy_mid_volume_nodes(), moab::EntitySequence::data(), moab::Core::delete_entities(), moab::CN::Dimension(), moab::Range::end(), ErrorCode, moab::Core::get_entities_by_type_and_tag(), moab::ElementSequence::has_mid_edge_nodes(), moab::ElementSequence::has_mid_face_nodes(), moab::ElementSequence::has_mid_volume_nodes(), MB_SUCCESS, MB_TAG_BIT, MB_TAG_CREAT, MB_TYPE_BIT, MB_TYPE_OUT_OF_RANGE, MBEDGE, MBHEX, MBKNIFE, MBPRISM, MBPYRAMID, MBQUAD, MBTET, MBTRI, MBVERTEX, mHONodeAddedRemoved, mMB, moab::Interface::HONodeAddedRemoved::node_removed(), moab::ElementSequence::nodes_per_element(), moab::CN::NumSubEntities(), remove_mid_edge_nodes(), remove_mid_face_nodes(), remove_mid_volume_nodes(), moab::SequenceManager::replace_subsequence(), moab::Core::sequence_manager(), moab::Core::tag_delete(), moab::Core::tag_get_data(), moab::Core::tag_get_handle(), moab::EntitySequence::type(), moab::CN::VerticesPerEntity(), zero_mid_edge_nodes(), zero_mid_face_nodes(), and zero_mid_volume_nodes().
Referenced by convert().
|
private |
Definition at line 613 of file HigherOrderFactory.cpp.
References copy_nodes(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 619 of file HigherOrderFactory.cpp.
References copy_nodes(), moab::ElementSequence::has_mid_edge_nodes(), MBEDGE, moab::CN::NumSubEntities(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 637 of file HigherOrderFactory.cpp.
References copy_nodes(), moab::CN::Dimension(), moab::ElementSequence::has_mid_edge_nodes(), moab::ElementSequence::has_mid_face_nodes(), moab::CN::NumSubEntities(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 659 of file HigherOrderFactory.cpp.
References copy_nodes(), moab::ElementSequence::has_mid_edge_nodes(), moab::ElementSequence::has_mid_face_nodes(), moab::ElementSequence::has_mid_volume_nodes(), moab::CN::NumSubEntities(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 682 of file HigherOrderFactory.cpp.
References moab::EntitySequence::end_handle(), moab::ElementSequence::get_connectivity_array(), MB_SUCCESS, moab::ElementSequence::nodes_per_element(), moab::EntitySequence::size(), moab::EntitySequence::start_handle(), and moab::EntitySequence::type().
Referenced by copy_corner_nodes(), copy_mid_edge_nodes(), copy_mid_face_nodes(), and copy_mid_volume_nodes().
|
private |
Definition at line 48 of file HigherOrderFactory.cpp.
References moab::CN::ConnMap::conn, MBMAXTYPE, MBVERTEX, moab::CN::mConnectivityMap, mNodeMap, moab::CN::ConnMap::num_sub_elements, and moab::CN::VerticesPerEntity().
Referenced by HigherOrderFactory().
|
private |
MOAB, a Mesh-Oriented datABase, is a software component for creating, storing and accessing finite element mesh data.
Copyright 2004 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
Definition at line 794 of file HigherOrderFactory.cpp.
References moab::EntitySequence::end_handle(), moab::ElementSequence::get_connectivity_array(), MB_ENTITY_NOT_FOUND, MB_NOT_IMPLEMENTED, MB_SUCCESS, mMB, moab::ElementSequence::nodes_per_element(), moab::EntitySequence::start_handle(), tag_for_deletion(), and moab::Core::tag_set_data().
Referenced by remove_mid_edge_nodes(), remove_mid_face_nodes(), and remove_mid_volume_nodes().
|
private |
Definition at line 727 of file HigherOrderFactory.cpp.
References MBEDGE, moab::CN::NumSubEntities(), remove_ho_nodes(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 748 of file HigherOrderFactory.cpp.
References moab::CN::Dimension(), moab::ElementSequence::has_mid_edge_nodes(), moab::CN::NumSubEntities(), remove_ho_nodes(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 764 of file HigherOrderFactory.cpp.
References moab::ElementSequence::has_mid_edge_nodes(), moab::ElementSequence::has_mid_face_nodes(), moab::CN::NumSubEntities(), remove_ho_nodes(), moab::EntitySequence::type(), and moab::CN::VerticesPerEntity().
Referenced by convert_sequence().
|
private |
Definition at line 827 of file HigherOrderFactory.cpp.
References moab::Core::a_entity_factory(), moab::CREATE_HANDLE(), moab::Core::dimension_from_handle(), moab::dum, moab::EntitySequence::end_handle(), ErrorCode, moab::AEntityFactory::get_adjacencies(), moab::Core::get_connectivity(), moab::CN::HONodeParent(), MB_CHK_ERR, MBENTITYSET, mMB, moab::ElementSequence::nodes_per_element(), moab::Core::side_element(), moab::side_number(), moab::EntitySequence::start_handle(), and moab::EntitySequence::type().
Referenced by remove_ho_nodes().
|
private |
Definition at line 628 of file HigherOrderFactory.cpp.
References moab::ElementSequence::has_mid_edge_nodes(), MBEDGE, moab::CN::NumSubEntities(), moab::EntitySequence::type(), moab::CN::VerticesPerEntity(), and zero_nodes().
Referenced by convert_sequence().
|
private |
Definition at line 649 of file HigherOrderFactory.cpp.
References moab::CN::Dimension(), moab::ElementSequence::has_mid_edge_nodes(), moab::ElementSequence::has_mid_face_nodes(), moab::CN::NumSubEntities(), moab::EntitySequence::type(), moab::CN::VerticesPerEntity(), and zero_nodes().
Referenced by convert_sequence().
|
private |
Definition at line 672 of file HigherOrderFactory.cpp.
References moab::ElementSequence::has_mid_edge_nodes(), moab::ElementSequence::has_mid_face_nodes(), moab::ElementSequence::has_mid_volume_nodes(), moab::CN::NumSubEntities(), moab::EntitySequence::type(), moab::CN::VerticesPerEntity(), and zero_nodes().
Referenced by convert_sequence().
|
private |
Definition at line 711 of file HigherOrderFactory.cpp.
References moab::ElementSequence::get_connectivity_array(), MB_SUCCESS, moab::ElementSequence::nodes_per_element(), and moab::EntitySequence::size().
Referenced by zero_mid_edge_nodes(), zero_mid_face_nodes(), and zero_mid_volume_nodes().
|
private |
Definition at line 61 of file HigherOrderFactory.hpp.
Referenced by add_mid_edge_nodes(), add_mid_face_nodes(), add_mid_volume_nodes(), and convert_sequence().
|
private |
Definition at line 60 of file HigherOrderFactory.hpp.
Referenced by add_mid_edge_nodes(), add_mid_face_nodes(), add_mid_volume_nodes(), center_node_exist(), convert(), convert_sequence(), remove_ho_nodes(), and tag_for_deletion().
unsigned char moab::HigherOrderFactory::mNodeMap[MBMAXTYPE][8][8] |
Definition at line 54 of file HigherOrderFactory.hpp.
Referenced by add_center_node(), center_node_exist(), and initialize_map().