IOSS 2.0

Ioex_Internals.h
Go to the documentation of this file.
1 /*
2 * Copyright(C) 1999-2017 National Technology & Engineering Solutions
3 * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
4 * NTESS, the U.S. Government retains certain rights in this software.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 *
18 * * Neither the name of NTESS nor the names of its
19 * contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 */
34
35 #ifndef IOSS_Ioex_Internals_h
36 #define IOSS_Ioex_Internals_h
37
38 #include "Ioss_ParallelUtils.h" // for ParallelUtils
39 #include <cstdint> // for int64_t
40 #include <cstring> // for strcpy, strncpy
41 #include <exodusII.h> // for MAX_LINE_LENGTH, etc
42 #include <string> // for string
43 #include <vector> // for vector
44 namespace Ioss {
45 class EdgeBlock;
46 } // namespace Ioss
47 namespace Ioss {
48 class EdgeSet;
49 } // namespace Ioss
50 namespace Ioss {
51 class ElementBlock;
52 } // namespace Ioss
53 namespace Ioss {
54 class ElementSet;
55 } // namespace Ioss
56 namespace Ioss {
57 class FaceBlock;
58 } // namespace Ioss
59 namespace Ioss {
60 class FaceSet;
61 } // namespace Ioss
62 namespace Ioss {
63 class NodeBlock;
64 } // namespace Ioss
65 namespace Ioss {
66 class NodeSet;
67 } // namespace Ioss
68 namespace Ioss {
69 class SideBlock;
70 } // namespace Ioss
71 namespace Ioss {
72 class SideSet;
73 } // namespace Ioss
74
75 using entity_id = int64_t;
76
77 namespace Ioss {
78 } // namespace Ioss
79 /*!
80 * This set of classes provides a thin wrapper around the exodusII
81 * internals. It supplants several of the exodusII API calls in
82 * order to avoid ncredef calls which totally rewrite the existing
83 * database and can be very expensive. These routines provide all
84 * required variable, dimension, and attribute definitions to the
85 * underlying netcdf file with only a single ncredef call.
86 *
87 * To use the application must create an Internals instance
88 * and call the Internals::write_meta_data() function. This
89 * function requires several classes as arguments including:
90 * <ul>
91 * <li> Mesh -- defines mesh global metadata
92 * <li> Block -- defines metadata for each block
93 * <li> NodeSet -- defines metadata for each nodeset
94 * <li> SideSet -- defines metadata for each sideset
95 * <li> CommunicationMetaData -- global metadata relating to
96 * parallel info.
97 * </ul>
98 *
99 * Calling Internals::write_meta_data(), replaces the
100 * following exodusII and nemesis API calls:
101 * <ul>
102 * <li> ex_put_init(),
103 * <li> ex_put_elem_block(),
104 * <li> ex_put_node_set_param(),
105 * <li> ex_put_side_set_param(),
106 * <li> ne_put_init_info(),
107 * <li> ne_put_loadbal_param(),
108 * <li> ne_put_cmap_params(),
109 * </ul>
110 */
111 namespace Ioex {
112 struct NodeBlock
113 {
114 NodeBlock() = default;
115 NodeBlock(const NodeBlock &other) = default;
116 explicit NodeBlock(const Ioss::NodeBlock &other);
117
118 NodeBlock &operator=(const NodeBlock &other);
119
120 ~NodeBlock() = default;
121
122 bool operator==(const NodeBlock &) const;
123 bool operator!=(const NodeBlock &other) const { return !(*this == other); }
124
125 std::string name{};
126 entity_id id{0};
127 int64_t entityCount{0};
128 int64_t localOwnedCount{0};
129 int64_t attributeCount{0};
130 int64_t procOffset{0};
131
132 private:
133 };
134
135 struct EdgeBlock
136 {
137 EdgeBlock() { std::strcpy(elType, ""); }
138
139 EdgeBlock(const EdgeBlock &other)
140 : name(other.name), id(other.id), entityCount(other.entityCount),
141 nodesPerEntity(other.nodesPerEntity), attributeCount(other.attributeCount),
142 procOffset(other.procOffset)
143 {
144 std::strcpy(elType, other.elType);
145 }
146
147 explicit EdgeBlock(const Ioss::EdgeBlock &other);
148
149 EdgeBlock &operator=(const EdgeBlock &other);
150
151 ~EdgeBlock() = default;
152
153 bool operator==(const EdgeBlock & /*other*/) const;
154 bool operator!=(const EdgeBlock &other) const { return !(*this == other); }
155
156 char elType[MAX_STR_LENGTH + 1]{};
157 std::string name{};
158 entity_id id{0};
159 int64_t entityCount{0};
160 int64_t nodesPerEntity{0};
161 int64_t attributeCount{0};
162 int64_t procOffset{0};
163
164 private:
165 };
166
167 struct FaceBlock
168 {
169 FaceBlock()
170 : name(""), id(0), entityCount(0), nodesPerEntity(0), edgesPerEntity(0), attributeCount(0),
171 procOffset(0)
172 {
173 std::strcpy(elType, "");
174 }
175
176 FaceBlock(const FaceBlock &other)
177 : name(other.name), id(other.id), entityCount(other.entityCount),
178 nodesPerEntity(other.nodesPerEntity), edgesPerEntity(other.edgesPerEntity),
179 attributeCount(other.attributeCount), procOffset(other.procOffset)
180 {
181 std::strcpy(elType, other.elType);
182 }
183
184 explicit FaceBlock(const Ioss::FaceBlock &other);
185
186 FaceBlock &operator=(const FaceBlock &other);
187
188 ~FaceBlock() = default;
189
190 bool operator==(const FaceBlock & /*other*/) const;
191 bool operator!=(const FaceBlock &other) const { return !(*this == other); }
192
193 char elType[MAX_STR_LENGTH + 1]{};
194 std::string name;
195 entity_id id;
196 int64_t entityCount;
197 int64_t nodesPerEntity;
198 int64_t edgesPerEntity;
199 int64_t attributeCount;
200 int64_t procOffset;
201
202 private:
203 };
204
205 struct ElemBlock
206 {
207 ElemBlock()
208 : name(""), id(0), entityCount(0), nodesPerEntity(0), edgesPerEntity(0), facesPerEntity(0),
209 attributeCount(0), offset_(-1), procOffset(0)
210 {
211 std::strcpy(elType, "");
212 }
213
214 ElemBlock(const ElemBlock &other)
215 : name(other.name), id(other.id), entityCount(other.entityCount),
216 nodesPerEntity(other.nodesPerEntity), edgesPerEntity(other.edgesPerEntity),
217 facesPerEntity(other.facesPerEntity), attributeCount(other.attributeCount),
218 offset_(other.offset_), procOffset(other.procOffset)
219 {
220 std::strcpy(elType, other.elType);
221 }
222
223 explicit ElemBlock(const Ioss::ElementBlock &other);
224
225 ElemBlock &operator=(const ElemBlock &other);
226
227 ~ElemBlock() = default;
228
229 bool operator==(const ElemBlock & /*other*/) const;
230 bool operator!=(const ElemBlock &other) const { return !(*this == other); }
231
232 char elType[MAX_STR_LENGTH + 1]{};
233 std::string name;
234 entity_id id;
235 int64_t entityCount;
236 int64_t nodesPerEntity;
237 int64_t edgesPerEntity;
238 int64_t facesPerEntity;
239 int64_t attributeCount;
240 int64_t offset_;
241 int64_t procOffset;
242 };
243
244 struct NodeSet
245 {
246 NodeSet() = default;
247 NodeSet(const NodeSet &other) = default;
248 explicit NodeSet(const Ioss::NodeSet &other);
249 bool operator==(const NodeSet & /*other*/) const;
250 bool operator!=(const NodeSet &other) const { return !(*this == other); }
251
252 std::string name{};
253 entity_id id{0};
254 int64_t entityCount{0};
255 int64_t localOwnedCount{0};
256 int64_t attributeCount{0};
257 int64_t dfCount{0};
258 int64_t procOffset{0};
259 };
260
261 struct EdgeSet
262 {
263 EdgeSet() = default;
264 EdgeSet(const EdgeSet &other) = default;
265 explicit EdgeSet(const Ioss::EdgeSet &other);
266 bool operator==(const EdgeSet & /*other*/) const;
267 bool operator!=(const EdgeSet &other) const { return !(*this == other); }
268
269 std::string name{};
270 entity_id id{0};
271 int64_t entityCount{0};
272 int64_t attributeCount{0};
273 int64_t dfCount{0};
274 int64_t procOffset{0};
275 };
276
277 struct FaceSet
278 {
279 FaceSet() = default;
280 FaceSet(const FaceSet &other) = default;
281 explicit FaceSet(const Ioss::FaceSet &other);
282 bool operator==(const FaceSet & /*other*/) const;
283 bool operator!=(const FaceSet &other) const { return !(*this == other); }
284
285 std::string name{};
286 entity_id id{0};
287 int64_t entityCount{0};
288 int64_t attributeCount{0};
289 int64_t dfCount{0};
290 int64_t procOffset{0};
291 };
292
293 struct ElemSet
294 {
295 ElemSet() = default;
296 ElemSet(const ElemSet &other) = default;
297 explicit ElemSet(const Ioss::ElementSet &other);
298 bool operator==(const ElemSet & /*other*/) const;
299 bool operator!=(const ElemSet &other) const { return !(*this == other); }
300
301 std::string name{};
302 entity_id id{0};
303 int64_t entityCount{0};
304 int64_t attributeCount{0};
305 int64_t dfCount{0};
306 int64_t procOffset{0};
307 };
308
309 struct SideSet
310 {
311 SideSet() = default;
312 explicit SideSet(const Ioss::SideBlock &other);
313 explicit SideSet(const Ioss::SideSet &other);
314 bool operator==(const SideSet & /*other*/) const;
315 bool operator!=(const SideSet &other) const { return !(*this == other); }
316
317 std::string name{};
318 entity_id id{0};
319 int64_t entityCount{0};
320 int64_t dfCount{0};
321 int64_t procOffset{0};
322 int64_t dfProcOffset{0};
323 };
324
325 struct CommunicationMap
326 {
327 CommunicationMap() = default;
328 CommunicationMap(entity_id the_id, int64_t count, char the_type)
329 : id(the_id), entityCount(count), type(the_type)
330 {
331 }
332 bool operator==(const CommunicationMap & /*other*/) const;
333 bool operator!=(const CommunicationMap &other) const { return !(*this == other); }
334 entity_id id{0};
335 int64_t entityCount{0};
336 char type{'U'}; // 'n' for node, 'e' for element
337 };
338
339 struct CommunicationMetaData
340 {
341 CommunicationMetaData()
342 : processorId(0), processorCount(0), globalNodes(0), globalElements(0),
343 globalElementBlocks(0), globalNodeSets(0), globalSideSets(0), nodesInternal(0),
344 nodesBorder(0), nodesExternal(0), elementsInternal(0), elementsBorder(0),
345 outputNemesis(false)
346 {
347 }
348
349 std::vector<CommunicationMap> nodeMap;
350 std::vector<CommunicationMap> elementMap;
351 int processorId;
352 int processorCount;
353 int64_t globalNodes;
354 int64_t globalElements;
355 int64_t globalElementBlocks;
356 int64_t globalNodeSets;
357 int64_t globalSideSets;
358 int64_t nodesInternal;
359 int64_t nodesBorder;
360 int64_t nodesExternal;
361 int64_t elementsInternal;
362 int64_t elementsBorder;
363 bool outputNemesis;
364
365 private:
366 CommunicationMetaData(const CommunicationMetaData &);
367 };
368
369 class Redefine
370 {
371 public:
372 explicit Redefine(int exoid);
373 Redefine(const Redefine &from) = delete;
374 Redefine &operator=(const Redefine &from) = delete;
375 ~Redefine();
376
377 private:
378 int exodusFilePtr;
379 };
380
381 class Mesh
382 {
383 public:
384 Mesh() : title(), dimensionality(0), file_per_processor(true) {}
385
386 Mesh(int dim, char *the_title, bool file_pp) : dimensionality(dim), file_per_processor(file_pp)
387 {
388 std::strncpy(title, the_title, MAX_LINE_LENGTH + 1);
389 title[MAX_LINE_LENGTH] = '\0';
390 }
391
392 void populate(Ioss::Region *region);
393
394 char title[MAX_LINE_LENGTH + 1]{};
395 int dimensionality;
396 bool file_per_processor;
397
398 std::vector<NodeBlock> nodeblocks;
399 std::vector<EdgeBlock> edgeblocks;
400 std::vector<FaceBlock> faceblocks;
401 std::vector<ElemBlock> elemblocks;
402 std::vector<NodeSet> nodesets;
403 std::vector<EdgeSet> edgesets;
404 std::vector<FaceSet> facesets;
405 std::vector<ElemSet> elemsets;
406 std::vector<SideSet> sidesets;
407 CommunicationMetaData comm;
408 };
409
410 class Internals
411 {
412 public:
413 Internals(int exoid, int maximum_name_length, const Ioss::ParallelUtils &util);
414 Internals(const Internals &from) = delete;
415 Internals &operator=(const Internals &from) = delete;
416
417 int initialize_state_file(Mesh &mesh, const ex_var_params &var_params,
418 const std::string &base_file_name);
419
420 int write_meta_data(Mesh &mesh);
421
422 /*! A restart file may contain an attribute which contains
423 * information about the processor count and current processor id
424 * * when the file was written. This code checks whether that
425 * information matches the current processor count and id. If it
426 * * exists, but doesn't match, a warning message is printed.
427 * Eventually, this will be used to determine whether certain
428 * decomposition-related data in the file is valid or has been
429 * invalidated by a join/re-spread to a different number of
430 * processors.
431 */
432
433 private:
434 void get_global_counts(Mesh &mesh);
435
436 int put_metadata(const Mesh &mesh, const CommunicationMetaData &comm);
437 int put_metadata(const std::vector<NodeBlock> &nodeblocks, bool count_only = false);
438 int put_metadata(const std::vector<EdgeBlock> &blocks, bool count_only = false);
439 int put_metadata(const std::vector<FaceBlock> &blocks, bool count_only = false);
440 int put_metadata(const std::vector<ElemBlock> &blocks, bool count_only = false);
441
442 int put_metadata(const std::vector<NodeSet> &nodesets, bool count_only = false);
443 int put_metadata(const std::vector<EdgeSet> &edgesets, bool count_only = false);
444 int put_metadata(const std::vector<FaceSet> &facesets, bool count_only = false);
445 int put_metadata(const std::vector<ElemSet> &elemsets, bool count_only = false);
446
447 int put_metadata(const std::vector<SideSet> &sidesets, bool count_only = false);
448
449 int put_non_define_data(const CommunicationMetaData &comm);
450 int put_non_define_data(const std::vector<NodeBlock> &nodeblocks);
451 int put_non_define_data(const std::vector<EdgeBlock> &blocks);
452 int put_non_define_data(const std::vector<FaceBlock> &blocks);
453 int put_non_define_data(const std::vector<ElemBlock> &blocks);
454
455 int put_non_define_data(const std::vector<NodeSet> &nodesets);
456 int put_non_define_data(const std::vector<EdgeSet> &edgesets);
457 int put_non_define_data(const std::vector<FaceSet> &facesets);
458 int put_non_define_data(const std::vector<ElemSet> &elemsets);
459
460 int put_non_define_data(const std::vector<SideSet> &sidesets);
461
462 int max_name_length() const { return maximumNameLength; }
463
464 int exodusFilePtr;
465 int nodeMapVarID[3];
466 int elementMapVarID[2];
467 int commIndexVar{0};
468 int elemCommIndexVar{0};
469 int maximumNameLength{32};
470 Ioss::ParallelUtils parallelUtil;
471 };
472 } // namespace Ioex
473 #endif /* IOSS_Ioex_Internals_h */
Ioex::SideSet::operator==
bool operator==(const SideSet &) const
Definition: Ioex_Internals.C:472
Ioex::CommunicationMetaData::globalNodes
int64_t globalNodes
Definition: Ioex_Internals.h:353
Ioex::NodeBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:129
Ioex::NodeBlock::name
std::string name
Definition: Ioex_Internals.h:125
Ioex::Redefine::~Redefine
~Redefine()
Definition: Ioex_Internals.C:114
Ioex::FaceBlock::FaceBlock
FaceBlock(const FaceBlock &other)
Definition: Ioex_Internals.h:176
Ioex::EdgeSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:274
Ioex::FaceBlock::edgesPerEntity
int64_t edgesPerEntity
Definition: Ioex_Internals.h:198
Ioex::NodeSet::operator!=
bool operator!=(const NodeSet &other) const
Definition: Ioex_Internals.h:250
Ioex::NodeBlock::NodeBlock
NodeBlock()=default
Ioex::NodeSet::NodeSet
NodeSet()=default
Ioex::EdgeBlock::~EdgeBlock
~EdgeBlock()=default
Ioex::Redefine
Definition: Ioex_Internals.h:369
Ioex::Internals::maximumNameLength
int maximumNameLength
Definition: Ioex_Internals.h:469
Ioex::ElemBlock::nodesPerEntity
int64_t nodesPerEntity
Definition: Ioex_Internals.h:236
Ioex::ElemBlock::offset_
int64_t offset_
Definition: Ioex_Internals.h:240
Ioex::Mesh::dimensionality
int dimensionality
Definition: Ioex_Internals.h:395
Ioex::Mesh::comm
CommunicationMetaData comm
Definition: Ioex_Internals.h:407
Ioex::FaceSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:289
Ioex::EdgeBlock::id
entity_id id
Definition: Ioex_Internals.h:158
Ioex::EdgeBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:156
Ioex::Mesh
Definition: Ioex_Internals.h:381
Ioss
The main namespace for the Ioss library.
Definition: Iocgns_DatabaseIO.h:50
Ioex::Internals::commIndexVar
int commIndexVar
Definition: Ioex_Internals.h:467
Ioex::EdgeBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:162
Ioex::FaceBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:193
Ioex::EdgeSet::EdgeSet
EdgeSet()=default
Ioex::FaceBlock::operator!=
bool operator!=(const FaceBlock &other) const
Definition: Ioex_Internals.h:191
Ioex::ElemBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:235
Ioex::ElemBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:239
Ioex::FaceBlock::name
std::string name
Definition: Ioex_Internals.h:194
Ioex::EdgeBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:161
Ioex::ElemBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:241
Ioex::FaceBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:200
Ioex::NodeSet::localOwnedCount
int64_t localOwnedCount
Definition: Ioex_Internals.h:255
Ioss::NodeSet
A collection of nodes.
Definition: Ioss_NodeSet.h:53
Ioex::NodeBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:130
Ioss::FaceBlock
A collection of element faces with the same topology.
Definition: Ioss_FaceBlock.h:53
Ioex::CommunicationMetaData::elementsInternal
int64_t elementsInternal
Definition: Ioex_Internals.h:361
Ioss::FaceSet
A collection of element faces.
Definition: Ioss_FaceSet.h:54
Ioex::NodeBlock
Definition: Ioex_Internals.h:112
Ioex::FaceBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:199
Ioex::FaceBlock
Definition: Ioex_Internals.h:167
Ioex::NodeBlock::localOwnedCount
int64_t localOwnedCount
Definition: Ioex_Internals.h:128
Ioex::FaceSet::FaceSet
FaceSet()=default
Ioex::CommunicationMetaData::nodeMap
std::vector< CommunicationMap > nodeMap
Definition: Ioex_Internals.h:349
Ioss::EdgeSet
A collection of element edges.
Definition: Ioss_EdgeSet.h:54
Ioex::NodeBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:127
Ioex::CommunicationMap::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:335
Ioex::FaceBlock::operator==
bool operator==(const FaceBlock &) const
Definition: Ioex_Internals.C:253
Ioex::FaceBlock::id
entity_id id
Definition: Ioex_Internals.h:195
Ioex::CommunicationMetaData::processorId
int processorId
Definition: Ioex_Internals.h:351
Ioex::CommunicationMap::operator!=
bool operator!=(const CommunicationMap &other) const
Definition: Ioex_Internals.h:333
Ioss::SideBlock
A collection of element sides having the same topology.
Definition: Ioss_SideBlock.h:61
Ioex::ElemBlock::ElemBlock
ElemBlock()
Definition: Ioex_Internals.h:207
Ioex::FaceSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:290
Ioex::ElemSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:303
Ioex::EdgeSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:273
Ioex::ElemSet::operator!=
bool operator!=(const ElemSet &other) const
Definition: Ioex_Internals.h:299
Ioex::CommunicationMetaData::outputNemesis
bool outputNemesis
Definition: Ioex_Internals.h:363
Ioex::CommunicationMap::CommunicationMap
CommunicationMap()=default
Ioex::CommunicationMap::id
entity_id id
Definition: Ioex_Internals.h:334
Ioex::FaceSet::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:288
Ioss::ParallelUtils
Definition: Ioss_ParallelUtils.h:45
Ioex::Mesh::facesets
std::vector< FaceSet > facesets
Definition: Ioex_Internals.h:404
Ioex::EdgeSet::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:272
Ioex::NodeSet::operator==
bool operator==(const NodeSet &) const
Definition: Ioex_Internals.C:356
Ioex::SideSet::SideSet
SideSet()=default
Ioex::FaceSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:287
Ioex::ElemBlock::ElemBlock
ElemBlock(const ElemBlock &other)
Definition: Ioex_Internals.h:214
Ioex::ElemBlock::operator==
bool operator==(const ElemBlock &) const
Definition: Ioex_Internals.C:323
Ioex::NodeSet::name
std::string name
Definition: Ioex_Internals.h:252
Ioex::FaceSet
Definition: Ioex_Internals.h:277
Ioex::Mesh::edgesets
std::vector< EdgeSet > edgesets
Definition: Ioex_Internals.h:403
Ioss::ElementBlock
A collection of elements having the same topology.
Definition: Ioss_ElementBlock.h:48
Ioex::FaceBlock::nodesPerEntity
int64_t nodesPerEntity
Definition: Ioex_Internals.h:197
Ioex::Internals::parallelUtil
Ioss::ParallelUtils parallelUtil
Definition: Ioex_Internals.h:470
Ioex::CommunicationMap
Definition: Ioex_Internals.h:325
Ioex::ElemBlock::name
std::string name
Definition: Ioex_Internals.h:233
Ioex::ElemSet::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:304
Ioex::CommunicationMetaData::globalElementBlocks
int64_t globalElementBlocks
Definition: Ioex_Internals.h:355
Ioss::ElementSet
A collection of elements.
Definition: Ioss_ElementSet.h:54
Ioex::FaceBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:196
Ioex::SideSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:321
Ioex::EdgeSet::operator!=
bool operator!=(const EdgeSet &other) const
Definition: Ioex_Internals.h:267
Ioex::Internals::put_non_define_data
int put_non_define_data(const CommunicationMetaData &comm)
Definition: Ioex_Internals.C:2261
Ioex::EdgeSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:271
Ioex::Mesh::Mesh
Mesh(int dim, char *the_title, bool file_pp)
Definition: Ioex_Internals.h:386
Ioex::NodeSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:258
Ioex::CommunicationMetaData::globalNodeSets
int64_t globalNodeSets
Definition: Ioex_Internals.h:356
Ioex::Internals::write_meta_data
int write_meta_data(Mesh &mesh)
Definition: Ioex_Internals.C:857
Ioex::ElemBlock::operator=
ElemBlock & operator=(const ElemBlock &other)
Definition: Ioex_Internals.C:308
Ioex::NodeBlock::~NodeBlock
~NodeBlock()=default
Ioex::ElemSet::name
std::string name
Definition: Ioex_Internals.h:301
Ioex::EdgeBlock::name
std::string name
Definition: Ioex_Internals.h:157
Ioex::SideSet::operator!=
bool operator!=(const SideSet &other) const
Definition: Ioex_Internals.h:315
Ioex::ElemSet::ElemSet
ElemSet()=default
Ioex::Internals::initialize_state_file
int initialize_state_file(Mesh &mesh, const ex_var_params &var_params, const std::string &base_file_name)
Definition: Ioex_Internals.C:489
Ioex::NodeSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:254
Ioex::FaceSet::operator!=
bool operator!=(const FaceSet &other) const
Definition: Ioex_Internals.h:283
entity_id
int64_t entity_id
Definition: Ioex_Internals.h:75
Ioex::Internals
Definition: Ioex_Internals.h:410
Ioex
A namespace for the exodus database format.
Definition: Ioex_IOFactory.C:61
Ioex::Internals::exodusFilePtr
int exodusFilePtr
Definition: Ioex_Internals.h:464
Ioex::NodeBlock::operator!=
bool operator!=(const NodeBlock &other) const
Definition: Ioex_Internals.h:123
Ioex::EdgeBlock::operator!=
bool operator!=(const EdgeBlock &other) const
Definition: Ioex_Internals.h:154
Ioss::NodeBlock
A collection of all nodes in the region.
Definition: Ioss_NodeBlock.h:53
Ioex::CommunicationMap::CommunicationMap
CommunicationMap(entity_id the_id, int64_t count, char the_type)
Definition: Ioex_Internals.h:328
Ioex::ElemBlock::~ElemBlock
~ElemBlock()=default
Ioex::Internals::elementMapVarID
int elementMapVarID[2]
Definition: Ioex_Internals.h:466
Ioex::Internals::max_name_length
int max_name_length() const
Definition: Ioex_Internals.h:462
Ioex::EdgeSet::operator==
bool operator==(const EdgeSet &) const
Definition: Ioex_Internals.C:378
Ioex::ElemBlock
Definition: Ioex_Internals.h:205
Ioex::FaceSet::name
std::string name
Definition: Ioex_Internals.h:285
Ioex::FaceBlock::FaceBlock
FaceBlock()
Definition: Ioex_Internals.h:169
Ioex::Mesh::nodeblocks
std::vector< NodeBlock > nodeblocks
Definition: Ioex_Internals.h:398
Ioex::EdgeBlock
Definition: Ioex_Internals.h:135
Ioex::Mesh::file_per_processor
bool file_per_processor
Definition: Ioex_Internals.h:396
Ioex::CommunicationMap::operator==
bool operator==(const CommunicationMap &) const
Definition: Ioex_Internals.C:478
Ioex::CommunicationMetaData::nodesExternal
int64_t nodesExternal
Definition: Ioex_Internals.h:360
Ioex::EdgeBlock::operator=
EdgeBlock & operator=(const EdgeBlock &other)
Definition: Ioex_Internals.C:191
Ioex::EdgeBlock::nodesPerEntity
int64_t nodesPerEntity
Definition: Ioex_Internals.h:160
Ioex::SideSet::name
std::string name
Definition: Ioex_Internals.h:317
Ioex::Internals::put_metadata
int put_metadata(const Mesh &mesh, const CommunicationMetaData &comm)
Definition: Ioex_Internals.C:1085
Ioex::NodeSet::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:256
Ioex::SideSet
Definition: Ioex_Internals.h:309
Ioex::Internals::elemCommIndexVar
int elemCommIndexVar
Definition: Ioex_Internals.h:468
Ioex::ElemBlock::id
entity_id id
Definition: Ioex_Internals.h:234
Ioex::CommunicationMetaData::nodesInternal
int64_t nodesInternal
Definition: Ioex_Internals.h:358
Ioex::SideSet::dfProcOffset
int64_t dfProcOffset
Definition: Ioex_Internals.h:322
Ioss_ParallelUtils.h
Ioex::ElemBlock::edgesPerEntity
int64_t edgesPerEntity
Definition: Ioex_Internals.h:237
Ioex::CommunicationMetaData::CommunicationMetaData
CommunicationMetaData()
Definition: Ioex_Internals.h:341
Ioex::Mesh::title
char title[MAX_LINE_LENGTH+1]
Definition: Ioex_Internals.h:394
Ioex::EdgeBlock::EdgeBlock
EdgeBlock()
Definition: Ioex_Internals.h:137
Ioex::CommunicationMetaData::processorCount
int processorCount
Definition: Ioex_Internals.h:352
Ioex::Mesh::faceblocks
std::vector< FaceBlock > faceblocks
Definition: Ioex_Internals.h:400
Ioex::Redefine::operator=
Redefine & operator=(const Redefine &from)=delete
Ioex::Internals::nodeMapVarID
int nodeMapVarID[3]
Definition: Ioex_Internals.h:465
Ioex::Mesh::sidesets
std::vector< SideSet > sidesets
Definition: Ioex_Internals.h:406
Ioss::Region
A grouping entity that contains other grouping entities.
Definition: Ioss_Region.h:98
Ioex::EdgeBlock::EdgeBlock
EdgeBlock(const EdgeBlock &other)
Definition: Ioex_Internals.h:139
Ioex::SideSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:319
Ioex::ElemBlock::operator!=
bool operator!=(const ElemBlock &other) const
Definition: Ioex_Internals.h:230
Ioex::CommunicationMetaData
Definition: Ioex_Internals.h:339
Ioex::NodeSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:257
Ioss::SideSet
A collection of element sides.
Definition: Ioss_SideSet.h:59
Ioex::EdgeSet::name
std::string name
Definition: Ioex_Internals.h:269
Ioex::Redefine::exodusFilePtr
int exodusFilePtr
Definition: Ioex_Internals.h:378
Ioex::CommunicationMetaData::globalSideSets
int64_t globalSideSets
Definition: Ioex_Internals.h:357
Ioex::FaceBlock::operator=
FaceBlock & operator=(const FaceBlock &other)
Definition: Ioex_Internals.C:240
Ioex::ElemBlock::facesPerEntity
int64_t facesPerEntity
Definition: Ioex_Internals.h:238
Ioex::CommunicationMetaData::elementMap
std::vector< CommunicationMap > elementMap
Definition: Ioex_Internals.h:350
Ioex::Internals::Internals
Internals(int exoid, int maximum_name_length, const Ioss::ParallelUtils &util)
Definition: Ioex_Internals.C:483
Ioex::Redefine::Redefine
Redefine(int exoid)
Definition: Ioex_Internals.C:101
Ioex::Mesh::nodesets
std::vector< NodeSet > nodesets
Definition: Ioex_Internals.h:402
Ioex::CommunicationMetaData::nodesBorder
int64_t nodesBorder
Definition: Ioex_Internals.h:359
Ioex::CommunicationMetaData::elementsBorder
int64_t elementsBorder
Definition: Ioex_Internals.h:362
Ioex::Mesh::elemblocks
std::vector< ElemBlock > elemblocks
Definition: Ioex_Internals.h:401
Ioex::Mesh::populate
void populate(Ioss::Region *region)
Definition: Ioex_Internals.C:775
Ioex::NodeSet
Definition: Ioex_Internals.h:244
Ioex::Internals::operator=
Internals & operator=(const Internals &from)=delete
Ioex::CommunicationMap::type
char type
Definition: Ioex_Internals.h:336
Ioex::CommunicationMetaData::globalElements
int64_t globalElements
Definition: Ioex_Internals.h:354
Ioex::EdgeSet
Definition: Ioex_Internals.h:261
Ioex::FaceSet::operator==
bool operator==(const FaceSet &) const
Definition: Ioex_Internals.C:400
Ioex::Mesh::edgeblocks
std::vector< EdgeBlock > edgeblocks
Definition: Ioex_Internals.h:399
Ioex::Mesh::Mesh
Mesh()
Definition: Ioex_Internals.h:384
Ioex::Mesh::elemsets
std::vector< ElemSet > elemsets
Definition: Ioex_Internals.h:405
Ioex::ElemSet
Definition: Ioex_Internals.h:293
Ioex::ElemBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:232
Ioex::EdgeBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:159
Ioss::EdgeBlock
A collection of element edges with the same topology.
Definition: Ioss_EdgeBlock.h:53
Ioex::FaceBlock::~FaceBlock
~FaceBlock()=default
Ioex::ElemSet::operator==
bool operator==(const ElemSet &) const
Definition: Ioex_Internals.C:422
Ioex::SideSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:320
Ioex::NodeBlock::operator=
NodeBlock & operator=(const NodeBlock &other)
Definition: Ioex_Internals.C:157
Ioex::EdgeBlock::operator==
bool operator==(const EdgeBlock &) const
Definition: Ioex_Internals.C:203
Ioex::ElemSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:306
Ioex::ElemSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:305
Ioex::Internals::get_global_counts
void get_global_counts(Mesh &mesh)
Definition: Ioex_Internals.C:973
Ioex::NodeBlock::operator==
bool operator==(const NodeBlock &) const