19#include <unordered_map>
25#if defined(_WIN32) && !defined(__MINGW32__)
27#define strcasecmp _stricmp
28#define strncasecmp _strnicmp
43 using ErrorHandler = std::function<void(
const std::ostringstream &)>;
45 template <
typename EntityId,
typename Topology>
74 const std::set<int> &procsForNode =
m_textMeshData->procs_for_node(nodeId);
75 if (procsForNode.count(proc) > 0) {
117 std::vector<std::pair<EntityId, int>> &elemSidePairs)
127 size_t elemIndex = iter->first;
128 const auto &faceConnections = iter->second;
130 std::vector<bool> hasConnection(faceConnections.numSides,
false);
131 for (
const auto &connection : faceConnections.connections) {
132 hasConnection[connection.thisSide - 1] =
true;
135 for (
unsigned i = 0; i < faceConnections.numSides; i++) {
136 if (!hasConnection[i]) {
139 elemSidePairs.push_back(std::make_pair(elemId, side));
149 bool skinAll =
false;
151 if (0 == strcasecmp(
"all", block.c_str())) {
Definition Iotm_TextMeshDataTypes.h:58
const std::vector< std::string > & get_part_names() const
Definition Iotm_TextMeshDataTypes.h:115
void create_graph(int proc=ANY_PROC)
Definition Iotm_TextMeshAdjacencyGraph.h:215
std::unordered_map< size_t, FaceConnections >::const_iterator end() const
Definition Iotm_TextMeshAdjacencyGraph.h:279
std::unordered_map< size_t, FaceConnections >::const_iterator begin() const
Definition Iotm_TextMeshAdjacencyGraph.h:275
SideAdjacencyGraph()
Definition Iotm_TextMeshAdjacencyGraph.h:205
~SidesetSkinner()
Definition Iotm_TextMeshSidesetSkinner.h:53
int get_element_proc(const size_t elemIndex) const override
Definition Iotm_TextMeshSidesetSkinner.h:61
void reset_text_mesh_data()
Definition Iotm_TextMeshSidesetSkinner.h:167
const TextMeshData< EntityId, Topology > * m_textMeshData
Definition Iotm_TextMeshSidesetSkinner.h:169
std::vector< std::string > m_skinBlocks
Definition Iotm_TextMeshSidesetSkinner.h:170
void populate_skin_blocks(const PartIdMapping &partIds)
Definition Iotm_TextMeshSidesetSkinner.h:147
const std::vector< EntityId > & get_element_node_ids(const size_t elemIndex) const override
Definition Iotm_TextMeshSidesetSkinner.h:90
EntityId get_element_id(const size_t elemIndex) const override
Definition Iotm_TextMeshSidesetSkinner.h:104
SideAdjacencyGraph< EntityId, Topology > BaseClass
Definition Iotm_TextMeshSidesetSkinner.h:49
const Topology & get_element_topology(const size_t elemIndex) const override
Definition Iotm_TextMeshSidesetSkinner.h:97
size_t get_num_elements() const override
Definition Iotm_TextMeshSidesetSkinner.h:55
void skin_blocks(const TextMeshData< EntityId, Topology > &textMeshData, std::vector< std::pair< EntityId, int > > &elemSidePairs)
Definition Iotm_TextMeshSidesetSkinner.h:116
void set_skin_blocks(const std::vector< std::string > &skinBlocks)
Definition Iotm_TextMeshSidesetSkinner.h:111
void set_text_mesh_data(const TextMeshData< EntityId, Topology > &textMeshData)
Definition Iotm_TextMeshSidesetSkinner.h:162
const std::string & get_element_block_name(const size_t elemIndex) const override
Definition Iotm_TextMeshSidesetSkinner.h:83
bool element_has_any_node_on_proc(const size_t elemIndex, int proc) const override
Definition Iotm_TextMeshSidesetSkinner.h:68
Definition Iotm_TextMeshAdjacencyGraph.h:39
std::function< void(const std::ostringstream &)> ErrorHandler
Definition Iotm_TextMeshAdjacencyGraph.h:41
A namespace for the textmesh database format.
Definition Iotm_DatabaseIO.C:95
TopologyMapEntry Topology
Definition Iotm_TextMesh.h:34
int64_t EntityId
Definition Iotm_TextMesh.h:33
Definition Iotm_TextMeshDataTypes.h:276
Topology topology
Definition Iotm_TextMeshDataTypes.h:279
std::string partName
Definition Iotm_TextMeshDataTypes.h:281
int proc
Definition Iotm_TextMeshDataTypes.h:277
EntityId identifier
Definition Iotm_TextMeshDataTypes.h:278
std::vector< EntityId > nodeIds
Definition Iotm_TextMeshDataTypes.h:280
Definition Iotm_TextMeshDataTypes.h:314
std::vector< ElementData< EntityId, Topology > > elementDataVec
Definition Iotm_TextMeshDataTypes.h:316
PartIdMapping partIds
Definition Iotm_TextMeshDataTypes.h:317