17#include <unordered_map>
30#include "iotm_export.h"
57 BlockPartition(
size_t offset_,
const std::string &name_,
const std::set<EntityId> &elemIds_)
68 explicit TextMesh(
int proc_count = 1,
int my_proc = 0);
147 virtual int64_t element_count(
EntityId block_number)
const;
153 int64_t element_count_proc(
EntityId block_number)
const;
158 int64_t assembly_count()
const;
165 virtual std::pair<std::string, int> topology_type(
EntityId block_number)
const;
167 virtual int64_t communication_node_count_proc()
const;
168 virtual void node_communication_map(
Ioss::Int64Vector &map, std::vector<int> &proc);
169 virtual void owning_processor(
int *owner,
EntityId num_node);
207 virtual void connectivity(
EntityId block_number,
int *connect)
const;
216 virtual void coordinates(std::vector<double> &coord)
const;
217 virtual void coordinates(
double *coord)
const;
225 virtual void coordinates(std::vector<double> &x, std::vector<double> &y,
226 std::vector<double> &z)
const;
237 virtual void coordinates(
int component, std::vector<double> &xyz)
const;
238 virtual void coordinates(
int component,
double *xyz)
const;
257 virtual void sideblock_elem_sides(
EntityId sidesetId,
const std::string &sideBlockName,
260 virtual std::vector<std::string> sideset_touching_blocks(
EntityId set_id)
const;
270 std::vector<std::string> get_part_names()
const;
271 EntityId get_part_id(
const std::string &name)
const;
274 std::vector<std::string> get_nodeset_names()
const;
275 std::string get_nodeset_name(
EntityId id)
const;
276 EntityId get_nodeset_id(
const std::string &name)
const;
279 std::vector<std::string> get_sideset_names()
const;
280 std::string get_sideset_name(
EntityId id)
const;
281 EntityId get_sideset_id(
const std::string &name)
const;
284 std::vector<std::string> get_assembly_names()
const;
285 std::string get_assembly_name(
EntityId id)
const;
286 EntityId get_assembly_id(
const std::string &name)
const;
288 std::vector<std::string> get_assembly_members(
const std::string &name)
const;
292 void update_block_omissions_from_assemblies(
Ioss::Region *region,
293 std::vector<std::string> &assemblyOmissions,
294 std::vector<std::string> &assemblyInclusions,
295 std::vector<std::string> &blockOmissions,
296 std::vector<std::string> &blockInclusions)
const;
298 unsigned spatial_dimension()
const;
300 std::vector<SideBlockInfo> get_side_block_info_for_sideset(
const std::string &name)
const;
301 std::vector<size_t> get_local_side_block_indices(
const std::string &name,
303 SplitType get_sideset_split_type(
const std::string &name)
const;
305 void compute_block_membership(
const std::string &sideSetName,
const std::string &sideBlockName,
306 std::vector<std::string> &block_membership)
const;
309 template <
typename INT>
310 void raw_element_map(
EntityId block_number, std::vector<INT> &map)
const;
311 template <
typename INT>
void raw_element_map(std::vector<INT> &map)
const;
312 template <
typename INT>
void raw_connectivity(
EntityId block_number, INT *connect)
const;
313 template <
typename INT>
void raw_node_map(std::vector<INT> &map)
const;
315 void set_variable_count(
const std::string &type,
size_t count);
319 void build_part_to_topology_map();
320 void build_block_partition_map();
321 void build_element_connectivity_map();
323 std::vector<EntityId> get_part_ids(
const std::vector<std::string> &partNames);
324 std::vector<size_t> get_part_offsets(
const std::vector<EntityId> &partIds);
328 std::set<EntityId> get_local_element_ids_for_block(
EntityId id)
const;
330 std::set<std::string> get_blocks_touched_by_sideset(
const SidesetData *sideset)
const;
332 void compute_block_membership_impl(
const SidesetData &sidesetData,
334 std::vector<std::string> &sideBlockTouchingBlockParts)
const;
#define IOSS_MAYBE_UNUSED
Definition Ioss_CodeTypes.h:54
A grouping entity that contains other grouping entities.
Definition Ioss_Region.h:93
int64_t element_count_proc() const
Definition Iotm_TextMesh.C:220
virtual ~TextMesh()=default
virtual int64_t nodeset_count() const
Definition Iotm_TextMesh.C:157
size_t m_timestepCount
Definition Iotm_TextMesh.h:338
ErrorHandler m_errorHandler
Definition Iotm_TextMesh.h:343
std::unordered_map< EntityId, std::vector< EntityId > > m_elementConnectivity
Definition Iotm_TextMesh.h:349
TextMesh(const std::string ¶meters, IOSS_MAYBE_UNUSED int proc_count=1, int my_proc=0)
Definition Iotm_TextMesh.C:113
virtual int64_t sideset_count() const
Definition Iotm_TextMesh.C:187
virtual int64_t node_count() const
Definition Iotm_TextMesh.C:151
TextMeshData m_data
Definition Iotm_TextMesh.h:341
std::unordered_map< EntityId, BlockPartition > m_blockPartition
Definition Iotm_TextMesh.h:347
int64_t sideset_side_count(EntityId id) const
Definition Iotm_TextMesh.C:189
TextMesh(const TextMesh &)=delete
virtual int64_t sideblock_side_count_proc(EntityId id, const std::string &sideBlockName) const
Definition Iotm_TextMesh.C:863
int64_t nodeset_node_count(EntityId id) const
Definition Iotm_TextMesh.C:159
virtual int64_t element_count() const
Definition Iotm_TextMesh.C:218
std::unordered_map< std::string, Topology > m_partToTopology
Definition Iotm_TextMesh.h:345
virtual int64_t sideset_side_count_proc(EntityId id) const
Definition Iotm_TextMesh.C:200
std::map< Ioss::EntityType, size_t > m_variableCount
Definition Iotm_TextMesh.h:339
virtual int64_t nodeset_node_count_proc(EntityId id) const
Definition Iotm_TextMesh.C:170
int64_t timestep_count() const
Definition Iotm_TextMesh.h:142
size_t m_myProcessor
Definition Iotm_TextMesh.h:336
size_t get_variable_count(Ioss::EntityType type) const
Definition Iotm_TextMesh.h:262
virtual int64_t block_count() const
Definition Iotm_TextMesh.C:155
virtual int64_t node_count_proc() const
Definition Iotm_TextMesh.C:153
int64_t sideblock_side_count(EntityId id, const std::string &sideBlockName) const
Definition Iotm_TextMesh.C:851
TextMesh & operator=(const TextMesh &)=delete
Definition Iotm_TextMeshTopologyMapping.h:33
Definition Iotm_TextMeshAssembly.h:67
Definition Iotm_TextMeshDataTypes.h:214
Definition Iotm_TextMeshUtils.h:566
std::vector< int64_t > Int64Vector
Definition Ioss_CodeTypes.h:22
std::vector< int > IntVector
Definition Ioss_CodeTypes.h:21
EntityType
The particular type of GroupingEntity.
Definition Ioss_EntityType.h:12
std::function< void(const std::ostringstream &)> ErrorHandler
Definition Iotm_TextMeshAdjacencyGraph.h:35
AssemblyType
Definition Iotm_TextMeshAssembly.h:39
SplitType
Definition Iotm_TextMeshSidesetSplitter.h:49
A namespace for the textmesh database format.
Definition Iotm_DatabaseIO.C:95
text_mesh::TextMeshParser< EntityId, IossTopologyMapping > TextMeshParser
Definition Iotm_TextMesh.h:43
text_mesh::ErrorHandler ErrorHandler
Definition Iotm_TextMesh.h:44
text_mesh::Coordinates< EntityId > Coordinates
Definition Iotm_TextMesh.h:42
text_mesh::Assemblies< EntityId > Assemblies
Definition Iotm_TextMesh.h:40
text_mesh::NodesetData< EntityId > NodesetData
Definition Iotm_TextMesh.h:39
text_mesh::SplitType SplitType
Definition Iotm_TextMesh.h:46
TopologyMapEntry Topology
Definition Iotm_TextMesh.h:34
text_mesh::TextMeshData< EntityId, Topology > TextMeshData
Definition Iotm_TextMesh.h:35
text_mesh::ElementDataLess< EntityId, Topology > ElementDataLess
Definition Iotm_TextMesh.h:37
text_mesh::SidesetData< EntityId, Topology > SidesetData
Definition Iotm_TextMesh.h:38
text_mesh::ElementData< EntityId, Topology > ElementData
Definition Iotm_TextMesh.h:36
text_mesh::AssemblyData AssemblyData
Definition Iotm_TextMesh.h:41
int64_t EntityId
Definition Iotm_TextMesh.h:33
text_mesh::SideBlockInfo SideBlockInfo
Definition Iotm_TextMesh.h:45
text_mesh::AssemblyType AssemblyType
Definition Iotm_TextMesh.h:47
BlockPartition(size_t offset_, const std::string &name_, const std::set< EntityId > &elemIds_)
Definition Iotm_TextMesh.h:57
std::set< EntityId > elemIds
Definition Iotm_TextMesh.h:53
size_t offset
Definition Iotm_TextMesh.h:51
std::string name
Definition Iotm_TextMesh.h:52
BlockPartition()
Definition Iotm_TextMesh.h:55
Definition Iotm_TextMeshAssembly.h:56
Definition Iotm_TextMeshDataTypes.h:288
Definition Iotm_TextMeshDataTypes.h:277
Definition Iotm_TextMeshNodeset.h:41
Definition Iotm_TextMeshSidesetSplitter.h:39
Definition Iotm_TextMeshSideset.h:44
Definition Iotm_TextMeshDataTypes.h:315