IOSS 2.0
Loading...
Searching...
No Matches
Ios3_Utils.h
Go to the documentation of this file.
1// Copyright(C) 2025 National Technology & Engineering Solutions
2// of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
3// NTESS, the U.S. Government retains certain rights in this software.
4//
5// See packages/seacas/LICENSE for details
6
7#pragma once
8
9#include "ios3_export.h"
10
11#include "Ioss_GroupingEntity.h"
12#include "Ioss_Property.h"
13#include "Ioss_Region.h"
14
15#include <set>
16
17namespace Ios3 {
18
19 using PackedBytes = std::vector<unsigned char>;
20
21 using key_t = std::pair<std::string, std::string>;
22
23 struct IOS3_EXPORT value_entry_t
24 {
25 size_t offset{0};
26 size_t size{0};
27 };
28
29 struct IOS3_EXPORT meta_entry_t
30 {
34 // NOTE an added char data[0] would point to the next meta_entry_T
35 };
36
37 struct IOS3_EXPORT state_entry_t
38 {
39 using basic_type = double;
40 size_t count{0};
42 char data[0];
43
44 explicit state_entry_t(const Ioss::Region &r);
45 };
46
47 struct IOS3_EXPORT sideblock_entry_t
48 {
49 size_t entity_count{0};
50
51 explicit sideblock_entry_t(const Ioss::SideBlock &sb);
52 };
53
54 IOS3_EXPORT PackedBytes pack_states(const Ioss::Region &r);
55
56 IOS3_EXPORT PackedBytes pack_sideblock(const Ioss::SideBlock &sb);
57 IOS3_EXPORT int64_t unpack_sideblocks(PackedBytes &v);
58
61
62 IOS3_EXPORT key_t make_node_map_search_key(int rank, const std::string &name = "");
63 IOS3_EXPORT key_t make_node_map_key(int rank, const std::string &name);
64 IOS3_EXPORT key_t make_edge_map_search_key(int rank, const std::string &name = "");
65 IOS3_EXPORT key_t make_edge_map_key(int rank, const std::string &name);
66 IOS3_EXPORT key_t make_face_map_search_key(int rank, const std::string &name = "");
67 IOS3_EXPORT key_t make_face_map_key(int rank, const std::string &name);
68 IOS3_EXPORT key_t make_elem_map_search_key(int rank, const std::string &name = "");
69 IOS3_EXPORT key_t make_elem_map_key(int rank, const std::string &name);
70
71 IOS3_EXPORT key_t make_states_search_key(int parallel_rank, const Ioss::Region &region);
72 IOS3_EXPORT key_t make_states_key(int parallel_rank, const Ioss::Region &region);
73
74 IOS3_EXPORT key_t sideblocks_search_key(int rank, const Ioss::Region &region,
75 const Ioss::SideSet &sideset);
76 IOS3_EXPORT key_t make_sideblock_key(int rank, const Ioss::Region &region,
77 const Ioss::SideSet &sideset,
78 const Ioss::SideBlock &sideblock);
79
80 IOS3_EXPORT key_t structuredblock_search_key(int parallel_rank, const Ioss::Region &region,
81 const Ioss::StructuredBlock &structuredblock);
82 IOS3_EXPORT key_t make_structuredblock_key(int parallel_rank, const Ioss::Region &region,
83 const Ioss::StructuredBlock &structuredblock);
84
85 IOS3_EXPORT key_t make_key(int parallel_rank, const Ioss::Region &region,
86 const Ioss::GroupingEntity &grouping_entity, const Ioss::Field &field,
87 const std::string &name);
88 IOS3_EXPORT key_t make_key(int parallel_rank, const Ioss::Region &region,
89 const Ioss::GroupingEntity &grouping_entity, const Ioss::Field &field);
90
91 IOS3_EXPORT key_t make_key(int parallel_rank, const Ioss::Region &region,
92 const Ioss::GroupingEntity &grouping_entity,
93 const Ioss::Property &property);
94
95 IOS3_EXPORT key_t make_key(int parallel_rank, const Ioss::Region &region,
96 const Ioss::GroupingEntity &grouping_entity);
97
98 IOS3_EXPORT key_t entity_search_key(int rank, const Ioss::Region &region,
99 const std::string &entity_name);
100 IOS3_EXPORT key_t entity_search_key(int rank, const Ioss::Region &region,
101 const Ioss::GroupingEntity &entity);
102
103 IOS3_EXPORT key_t property_search_key(int parallel_rank, const Ioss::Region &region,
104 const Ioss::GroupingEntity &grouping_entity);
105 IOS3_EXPORT key_t make_property_key(int rank, const Ioss::Region &region,
106 const std::string &entity_type,
107 const std::string &entity_name,
108 const std::string &property_type,
109 const std::string &property_name);
110
111 IOS3_EXPORT key_t field_search_key(int parallel_rank, const Ioss::Region &region,
112 const Ioss::GroupingEntity &grouping_entity);
113 IOS3_EXPORT key_t field_search_key(int parallel_rank, int state, const Ioss::Region &region,
114 const Ioss::GroupingEntity &grouping_entity);
115
116 IOS3_EXPORT std::string to_string(const Ioss::Property::BasicType &t);
117 IOS3_EXPORT std::string to_string(const Ioss::Field::BasicType &t);
118 IOS3_EXPORT std::string to_string(const Ioss::Field::RoleType &t);
119 IOS3_EXPORT std::string to_string(const Ioss::EntityType &t);
120
121 IOS3_EXPORT std::string get_entity_name(const std::string &k, const std::string &target);
122 IOS3_EXPORT std::set<std::string> get_entity_names(const std::vector<std::string> &keys,
123 const std::string &target);
124
125} // namespace Ios3
Holds metadata for bulk data associated with a GroupingEntity.
Definition Ioss_Field.h:28
BasicType
The basic data type held in the field.
Definition Ioss_Field.h:32
RoleType
Definition Ioss_Field.h:72
Base class for all 'grouping' entities. The following derived classes are typical:
Definition Ioss_GroupingEntity.h:67
A named value that has a known type.
Definition Ioss_Property.h:27
BasicType
Definition Ioss_Property.h:29
A grouping entity that contains other grouping entities.
Definition Ioss_Region.h:93
A collection of element sides having the same topology.
Definition Ioss_SideBlock.h:37
A collection of element sides.
Definition Ioss_SideSet.h:29
A structured zone – i,j,k.
Definition Ioss_StructuredBlock.h:91
Definition Ios3_AwsHelpers.C:58
std::string to_string(const Ioss::Property::BasicType &t)
Definition Ios3_Utils.C:440
void unpack_structuredblock(PackedBytes &v, Ioss::StructuredBlock &sb)
Definition Ios3_Utils.C:105
PackedBytes pack_structuredblock(const Ioss::StructuredBlock &sb)
Definition Ios3_Utils.C:90
key_t make_elem_map_search_key(int rank, const std::string &name)
Definition Ios3_Utils.C:192
int64_t unpack_sideblocks(PackedBytes &v)
Definition Ios3_Utils.C:75
std::string get_entity_name(const std::string &k, const std::string &target)
Definition Ios3_Utils.C:486
key_t field_search_key(int rank, const Ioss::Region &region, const Ioss::GroupingEntity &grouping_entity)
Definition Ios3_Utils.C:400
key_t make_face_map_key(int rank, const std::string &name)
Definition Ios3_Utils.C:187
key_t make_edge_map_search_key(int rank, const std::string &name)
Definition Ios3_Utils.C:172
key_t make_sideblock_key(int rank, const Ioss::Region &region, const Ioss::SideSet &sideset, const Ioss::SideBlock &sideblock)
Definition Ios3_Utils.C:231
key_t make_node_map_key(int rank, const std::string &name)
Definition Ios3_Utils.C:167
key_t structuredblock_search_key(int rank, const Ioss::Region &region, const Ioss::StructuredBlock &structuredblock)
Definition Ios3_Utils.C:244
key_t make_edge_map_key(int rank, const std::string &name)
Definition Ios3_Utils.C:177
PackedBytes pack_states(const Ioss::Region &r)
Definition Ios3_Utils.C:118
key_t make_states_key(int rank, const Ioss::Region &region)
Definition Ios3_Utils.C:211
key_t make_property_key(int rank, const Ioss::Region &region, const std::string &entity_type, const std::string &entity_name, const std::string &property_type, const std::string &property_name)
Definition Ios3_Utils.C:382
key_t entity_search_key(int rank, const Ioss::Region &region, const std::string &entity)
Definition Ios3_Utils.C:337
key_t make_elem_map_key(int rank, const std::string &name)
Definition Ios3_Utils.C:197
key_t make_face_map_search_key(int rank, const std::string &name)
Definition Ios3_Utils.C:182
key_t make_node_map_search_key(int rank, const std::string &name)
Definition Ios3_Utils.C:162
std::vector< unsigned char > PackedBytes
Definition Ios3_FieldSerialization.h:51
key_t sideblocks_search_key(int rank, const Ioss::Region &region, const Ioss::SideSet &sideset)
Definition Ios3_Utils.C:220
key_t property_search_key(int rank, const Ioss::Region &region, const Ioss::GroupingEntity &grouping_entity)
Definition Ios3_Utils.C:365
std::set< std::string > get_entity_names(const std::vector< std::string > &keys, const std::string &target)
Definition Ios3_Utils.C:499
PackedBytes pack_sideblock(const Ioss::SideBlock &sb)
Definition Ios3_Utils.C:57
key_t make_structuredblock_key(int rank, const Ioss::Region &region, const Ioss::StructuredBlock &structuredblock)
Definition Ios3_Utils.C:256
key_t make_key(int rank, const Ioss::Region &region, const Ioss::GroupingEntity &grouping_entity, const Ioss::Field &field, const std::string &name)
Definition Ios3_Utils.C:268
std::pair< std::string, std::string > key_t
Definition Ios3_Utils.h:21
key_t make_states_search_key(int rank, const Ioss::Region &region)
Definition Ios3_Utils.C:202
EntityType
The particular type of GroupingEntity.
Definition Ioss_EntityType.h:12
Definition Ios3_Utils.h:30
IossType ioss_type
Definition Ios3_Utils.h:32
IossType
Definition Ios3_Utils.h:31
@ Ios3SideBlock
Definition Ios3_Utils.h:31
@ IossProperty
Definition Ios3_Utils.h:31
@ IossField
Definition Ios3_Utils.h:31
@ Ios3StructuredBlock
Definition Ios3_Utils.h:31
@ Ios3States
Definition Ios3_Utils.h:31
value_entry_t value
Definition Ios3_Utils.h:33
Definition Ios3_Utils.h:48
sideblock_entry_t(const Ioss::SideBlock &sb)
Definition Ios3_Utils.C:49
size_t entity_count
Definition Ios3_Utils.h:49
char data[0]
Definition Ios3_Utils.h:42
state_entry_t(const Ioss::Region &r)
Definition Ios3_Utils.C:43
value_entry_t value
Definition Ios3_Utils.h:41
size_t count
Definition Ios3_Utils.h:40
double basic_type
Definition Ios3_Utils.h:39
Definition Ios3_Utils.h:24
size_t offset
Definition Ios3_Utils.h:25
size_t size
Definition Ios3_Utils.h:26