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()
115 : name(""), id(0), entityCount(0), localOwnedCount(0), attributeCount(0), procOffset(0)
116 {
117 }
118
119 NodeBlock(const NodeBlock &other)
120 : name(other.name), id(other.id), entityCount(other.entityCount),
121 localOwnedCount(other.localOwnedCount), attributeCount(other.attributeCount),
122 procOffset(other.procOffset)
123 {
124 }
125
126 explicit NodeBlock(const Ioss::NodeBlock &other);
127
128 NodeBlock &operator=(const NodeBlock &other);
129
130 ~NodeBlock() = default;
131
132 bool operator==(const NodeBlock &) const;
133 bool operator!=(const NodeBlock &other) const { return !(*this == other); }
134
135 std::string name;
136 entity_id id;
137 int64_t entityCount;
138 int64_t localOwnedCount;
139 int64_t attributeCount;
140 int64_t procOffset;
141
142 private:
143 };
144
145 struct EdgeBlock
146 {
147 EdgeBlock()
148 : name(""), id(0), entityCount(0), nodesPerEntity(0), attributeCount(0), procOffset(0)
149 {
150 std::strcpy(elType, "");
151 }
152
153 EdgeBlock(const EdgeBlock &other)
154 : name(other.name), id(other.id), entityCount(other.entityCount),
155 nodesPerEntity(other.nodesPerEntity), attributeCount(other.attributeCount),
156 procOffset(other.procOffset)
157 {
158 std::strcpy(elType, other.elType);
159 }
160
161 explicit EdgeBlock(const Ioss::EdgeBlock &other);
162
163 EdgeBlock &operator=(const EdgeBlock &other);
164
165 ~EdgeBlock() = default;
166
167 bool operator==(const EdgeBlock & /*other*/) const;
168 bool operator!=(const EdgeBlock &other) const { return !(*this == other); }
169
170 char elType[MAX_STR_LENGTH + 1]{};
171 std::string name;
172 entity_id id;
173 int64_t entityCount;
174 int64_t nodesPerEntity;
175 int64_t attributeCount;
176 int64_t procOffset;
177
178 private:
179 };
180
181 struct FaceBlock
182 {
183 FaceBlock()
184 : name(""), id(0), entityCount(0), nodesPerEntity(0), edgesPerEntity(0), attributeCount(0),
185 procOffset(0)
186 {
187 std::strcpy(elType, "");
188 }
189
190 FaceBlock(const FaceBlock &other)
191 : name(other.name), id(other.id), entityCount(other.entityCount),
192 nodesPerEntity(other.nodesPerEntity), edgesPerEntity(other.edgesPerEntity),
193 attributeCount(other.attributeCount), procOffset(other.procOffset)
194 {
195 std::strcpy(elType, other.elType);
196 }
197
198 explicit FaceBlock(const Ioss::FaceBlock &other);
199
200 FaceBlock &operator=(const FaceBlock &other);
201
202 ~FaceBlock() = default;
203
204 bool operator==(const FaceBlock & /*other*/) const;
205 bool operator!=(const FaceBlock &other) const { return !(*this == other); }
206
207 char elType[MAX_STR_LENGTH + 1]{};
208 std::string name;
209 entity_id id;
210 int64_t entityCount;
211 int64_t nodesPerEntity;
212 int64_t edgesPerEntity;
213 int64_t attributeCount;
214 int64_t procOffset;
215
216 private:
217 };
218
219 struct ElemBlock
220 {
221 ElemBlock()
222 : name(""), id(0), entityCount(0), nodesPerEntity(0), edgesPerEntity(0), facesPerEntity(0),
223 attributeCount(0), offset_(-1), procOffset(0)
224 {
225 std::strcpy(elType, "");
226 }
227
228 ElemBlock(const ElemBlock &other)
229 : name(other.name), id(other.id), entityCount(other.entityCount),
230 nodesPerEntity(other.nodesPerEntity), edgesPerEntity(other.edgesPerEntity),
231 facesPerEntity(other.facesPerEntity), attributeCount(other.attributeCount),
232 offset_(other.offset_), procOffset(other.procOffset)
233 {
234 std::strcpy(elType, other.elType);
235 }
236
237 explicit ElemBlock(const Ioss::ElementBlock &other);
238
239 ElemBlock &operator=(const ElemBlock &other);
240
241 ~ElemBlock() = default;
242
243 bool operator==(const ElemBlock & /*other*/) const;
244 bool operator!=(const ElemBlock &other) const { return !(*this == other); }
245
246 char elType[MAX_STR_LENGTH + 1]{};
247 std::string name;
248 entity_id id;
249 int64_t entityCount;
250 int64_t nodesPerEntity;
251 int64_t edgesPerEntity;
252 int64_t facesPerEntity;
253 int64_t attributeCount;
254 int64_t offset_;
255 int64_t procOffset;
256 };
257
258 struct NodeSet
259 {
260 NodeSet() : name(""), id(0), entityCount(0), localOwnedCount(0), dfCount(0), procOffset(0) {}
261 NodeSet(const NodeSet &other)
262 : name(other.name), id(other.id), entityCount(other.entityCount),
263 localOwnedCount(other.localOwnedCount), attributeCount(other.attributeCount),
264 dfCount(other.dfCount), procOffset(other.procOffset)
265 {
266 }
267 explicit NodeSet(const Ioss::NodeSet &other);
268 bool operator==(const NodeSet & /*other*/) const;
269 bool operator!=(const NodeSet &other) const { return !(*this == other); }
270
271 std::string name;
272 entity_id id;
273 int64_t entityCount;
274 int64_t localOwnedCount;
275 int64_t attributeCount{};
276 int64_t dfCount;
277 int64_t procOffset;
278 };
279
280 struct EdgeSet
281 {
282 EdgeSet() : name(""), id(0), entityCount(0), dfCount(0), procOffset(0) {}
283 EdgeSet(const EdgeSet &other)
284 : name(other.name), id(other.id), entityCount(other.entityCount),
285 attributeCount(other.attributeCount), dfCount(other.dfCount), procOffset(other.procOffset)
286 {
287 }
288 explicit EdgeSet(const Ioss::EdgeSet &other);
289 bool operator==(const EdgeSet & /*other*/) const;
290 bool operator!=(const EdgeSet &other) const { return !(*this == other); }
291
292 std::string name;
293 entity_id id;
294 int64_t entityCount;
295 int64_t attributeCount{};
296 int64_t dfCount;
297 int64_t procOffset;
298 };
299
300 struct FaceSet
301 {
302 FaceSet() : name(""), id(0), entityCount(0), dfCount(0), procOffset(0) {}
303 FaceSet(const FaceSet &other)
304 : name(other.name), id(other.id), entityCount(other.entityCount),
305 attributeCount(other.attributeCount), dfCount(other.dfCount), procOffset(other.procOffset)
306 {
307 }
308 explicit FaceSet(const Ioss::FaceSet &other);
309 bool operator==(const FaceSet & /*other*/) const;
310 bool operator!=(const FaceSet &other) const { return !(*this == other); }
311
312 std::string name;
313 entity_id id;
314 int64_t entityCount;
315 int64_t attributeCount{};
316 int64_t dfCount;
317 int64_t procOffset;
318 };
319
320 struct ElemSet
321 {
322 ElemSet() : name(""), id(0), entityCount(0), dfCount(0), procOffset(0) {}
323 ElemSet(const ElemSet &other)
324 : name(other.name), id(other.id), entityCount(other.entityCount),
325 attributeCount(other.attributeCount), dfCount(other.dfCount), procOffset(other.procOffset)
326 {
327 }
328 explicit ElemSet(const Ioss::ElementSet &other);
329 bool operator==(const ElemSet & /*other*/) const;
330 bool operator!=(const ElemSet &other) const { return !(*this == other); }
331
332 std::string name;
333 entity_id id;
334 int64_t entityCount;
335 int64_t attributeCount{};
336 int64_t dfCount;
337 int64_t procOffset;
338 };
339
340 struct SideSet
341 {
342 SideSet() : name(""), id(0), entityCount(0), dfCount(0), procOffset(0), dfProcOffset(0) {}
343 explicit SideSet(const Ioss::SideBlock &other);
344 explicit SideSet(const Ioss::SideSet &other);
345 bool operator==(const SideSet & /*other*/) const;
346 bool operator!=(const SideSet &other) const { return !(*this == other); }
347
348 std::string name;
349 entity_id id;
350 int64_t entityCount;
351 int64_t dfCount;
352 int64_t procOffset;
353 int64_t dfProcOffset;
354 };
355
356 struct CommunicationMap
357 {
358 CommunicationMap() : id(0), entityCount(0), type('U') {}
359 CommunicationMap(entity_id the_id, int64_t count, char the_type)
360 : id(the_id), entityCount(count), type(the_type)
361 {
362 }
363 bool operator==(const CommunicationMap & /*other*/) const;
364 bool operator!=(const CommunicationMap &other) const { return !(*this == other); }
365 entity_id id;
366 int64_t entityCount;
367 char type; // 'n' for node, 'e' for element
368 };
369
370 struct CommunicationMetaData
371 {
372 CommunicationMetaData()
373 : processorId(0), processorCount(0), globalNodes(0), globalElements(0),
374 globalElementBlocks(0), globalNodeSets(0), globalSideSets(0), nodesInternal(0),
375 nodesBorder(0), nodesExternal(0), elementsInternal(0), elementsBorder(0),
376 outputNemesis(false)
377 {
378 }
379
380 std::vector<CommunicationMap> nodeMap;
381 std::vector<CommunicationMap> elementMap;
382 int processorId;
383 int processorCount;
384 int64_t globalNodes;
385 int64_t globalElements;
386 int64_t globalElementBlocks;
387 int64_t globalNodeSets;
388 int64_t globalSideSets;
389 int64_t nodesInternal;
390 int64_t nodesBorder;
391 int64_t nodesExternal;
392 int64_t elementsInternal;
393 int64_t elementsBorder;
394 bool outputNemesis;
395
396 private:
397 CommunicationMetaData(const CommunicationMetaData &);
398 };
399
400 class Redefine
401 {
402 public:
403 explicit Redefine(int exoid);
404 Redefine(const Redefine &from) = delete;
405 Redefine &operator=(const Redefine &from) = delete;
406 ~Redefine();
407
408 private:
409 int exodusFilePtr;
410 };
411
412 class Mesh
413 {
414 public:
415 Mesh() : title(), dimensionality(0), file_per_processor(true) {}
416
417 Mesh(int dim, char *the_title, bool file_pp) : dimensionality(dim), file_per_processor(file_pp)
418 {
419 std::strncpy(title, the_title, MAX_LINE_LENGTH + 1);
420 title[MAX_LINE_LENGTH] = '\0';
421 }
422
423 char title[MAX_LINE_LENGTH + 1]{};
424 int dimensionality;
425 bool file_per_processor;
426
427 std::vector<NodeBlock> nodeblocks;
428 std::vector<EdgeBlock> edgeblocks;
429 std::vector<FaceBlock> faceblocks;
430 std::vector<ElemBlock> elemblocks;
431 std::vector<NodeSet> nodesets;
432 std::vector<EdgeSet> edgesets;
433 std::vector<FaceSet> facesets;
434 std::vector<ElemSet> elemsets;
435 std::vector<SideSet> sidesets;
436 CommunicationMetaData comm;
437 };
438
439 class Internals
440 {
441 public:
442 Internals(int exoid, int maximum_name_length, const Ioss::ParallelUtils &util);
443 Internals(const Internals &from) = delete;
444 Internals &operator=(const Internals &from) = delete;
445
446 int write_meta_data(Mesh &mesh);
447
448 /*! A restart file may contain an attribute which contains
449 * information about the processor count and current processor id
450 * * when the file was written. This code checks whether that
451 * information matches the current processor count and id. If it
452 * * exists, but doesn't match, a warning message is printed.
453 * Eventually, this will be used to determine whether certain
454 * decomposition-related data in the file is valid or has been
455 * invalidated by a join/re-spread to a different number of
456 * processors.
457 */
458
459 private:
460 void get_global_counts(Mesh &mesh);
461
462 int put_metadata(const Mesh &mesh, const CommunicationMetaData &comm);
463 int put_metadata(const std::vector<NodeBlock> &nodeblocks);
464 int put_metadata(const std::vector<EdgeBlock> &blocks);
465 int put_metadata(const std::vector<FaceBlock> &blocks);
466 int put_metadata(const std::vector<ElemBlock> &blocks);
467
468 int put_metadata(const std::vector<NodeSet> &nodesets);
469 int put_metadata(const std::vector<EdgeSet> &edgesets);
470 int put_metadata(const std::vector<FaceSet> &facesets);
471 int put_metadata(const std::vector<ElemSet> &elemsets);
472
473 int put_metadata(const std::vector<SideSet> &sidesets);
474
475 int put_non_define_data(const CommunicationMetaData &comm);
476 int put_non_define_data(const std::vector<NodeBlock> &nodeblocks);
477 int put_non_define_data(const std::vector<EdgeBlock> &blocks);
478 int put_non_define_data(const std::vector<FaceBlock> &blocks);
479 int put_non_define_data(const std::vector<ElemBlock> &blocks);
480
481 int put_non_define_data(const std::vector<NodeSet> &nodesets);
482 int put_non_define_data(const std::vector<EdgeSet> &edgesets);
483 int put_non_define_data(const std::vector<FaceSet> &facesets);
484 int put_non_define_data(const std::vector<ElemSet> &elemsets);
485
486 int put_non_define_data(const std::vector<SideSet> &sidesets);
487
488 int max_name_length() const { return maximumNameLength; }
489
490 int exodusFilePtr;
491 int nodeMapVarID[3];
492 int elementMapVarID[2];
493 int commIndexVar{0};
494 int elemCommIndexVar{0};
495 int maximumNameLength{32};
496 Ioss::ParallelUtils parallelUtil;
497 };
498 } // namespace Ioex
499 #endif /* IOSS_Ioex_Internals_h */
Ioex::CommunicationMetaData::globalNodes
int64_t globalNodes
Definition: Ioex_Internals.h:384
Ioex::NodeBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:139
Ioex::NodeBlock::name
std::string name
Definition: Ioex_Internals.h:135
Ioex::SideSet::SideSet
SideSet()
Definition: Ioex_Internals.h:342
Ioex::FaceBlock::FaceBlock
FaceBlock(const FaceBlock &other)
Definition: Ioex_Internals.h:190
Ioex::EdgeSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:297
Ioex::FaceBlock::edgesPerEntity
int64_t edgesPerEntity
Definition: Ioex_Internals.h:212
Ioex::NodeSet::operator!=
bool operator!=(const NodeSet &other) const
Definition: Ioex_Internals.h:269
Ioex::Redefine
Definition: Ioex_Internals.h:400
Ioex::ElemBlock::nodesPerEntity
int64_t nodesPerEntity
Definition: Ioex_Internals.h:250
Ioex::ElemBlock::offset_
int64_t offset_
Definition: Ioex_Internals.h:254
Ioex::Mesh::dimensionality
int dimensionality
Definition: Ioex_Internals.h:424
Ioex::Mesh::comm
CommunicationMetaData comm
Definition: Ioex_Internals.h:436
Ioex::FaceSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:316
Ioex::EdgeBlock::id
entity_id id
Definition: Ioex_Internals.h:172
Ioex::EdgeBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:170
Ioex::Mesh
Definition: Ioex_Internals.h:412
Ioss
The main namespace for the Ioss library.
Definition: Iocgns_DatabaseIO.h:50
Ioex::EdgeBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:176
Ioex::FaceBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:207
Ioex::FaceBlock::operator!=
bool operator!=(const FaceBlock &other) const
Definition: Ioex_Internals.h:205
Ioex::ElemBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:249
Ioex::ElemBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:253
Ioex::FaceBlock::name
std::string name
Definition: Ioex_Internals.h:208
Ioex::EdgeBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:175
Ioex::ElemBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:255
Ioex::FaceBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:214
Ioex::NodeSet::localOwnedCount
int64_t localOwnedCount
Definition: Ioex_Internals.h:274
Ioss::NodeSet
A collection of nodes.
Definition: Ioss_NodeSet.h:53
Ioex::NodeBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:140
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:392
Ioss::FaceSet
A collection of element faces.
Definition: Ioss_FaceSet.h:54
Ioex::ElemSet::ElemSet
ElemSet(const ElemSet &other)
Definition: Ioex_Internals.h:323
Ioex::NodeBlock
Definition: Ioex_Internals.h:112
Ioex::FaceBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:213
Ioex::ElemSet::ElemSet
ElemSet()
Definition: Ioex_Internals.h:322
Ioex::FaceBlock
Definition: Ioex_Internals.h:181
Ioex::NodeBlock::localOwnedCount
int64_t localOwnedCount
Definition: Ioex_Internals.h:138
Ioex::SideSet::id
entity_id id
Definition: Ioex_Internals.h:349
Ioex::CommunicationMetaData::nodeMap
std::vector< CommunicationMap > nodeMap
Definition: Ioex_Internals.h:380
Ioss::EdgeSet
A collection of element edges.
Definition: Ioss_EdgeSet.h:54
Ioex::NodeBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:137
Ioex::CommunicationMap::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:366
Ioex::FaceBlock::id
entity_id id
Definition: Ioex_Internals.h:209
Ioex::CommunicationMetaData::processorId
int processorId
Definition: Ioex_Internals.h:382
Ioex::CommunicationMap::operator!=
bool operator!=(const CommunicationMap &other) const
Definition: Ioex_Internals.h:364
Ioss::SideBlock
A collection of element sides having the same topology.
Definition: Ioss_SideBlock.h:61
Ioex::ElemBlock::ElemBlock
ElemBlock()
Definition: Ioex_Internals.h:221
Ioex::FaceSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:317
Ioex::ElemSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:334
Ioex::EdgeSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:296
Ioex::ElemSet::operator!=
bool operator!=(const ElemSet &other) const
Definition: Ioex_Internals.h:330
Ioex::CommunicationMetaData::outputNemesis
bool outputNemesis
Definition: Ioex_Internals.h:394
Ioex::CommunicationMap::id
entity_id id
Definition: Ioex_Internals.h:365
Ioss::ParallelUtils
Definition: Ioss_ParallelUtils.h:45
Ioex::Mesh::facesets
std::vector< FaceSet > facesets
Definition: Ioex_Internals.h:433
Ioex::FaceSet::FaceSet
FaceSet(const FaceSet &other)
Definition: Ioex_Internals.h:303
Ioex::FaceSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:314
Ioex::ElemBlock::ElemBlock
ElemBlock(const ElemBlock &other)
Definition: Ioex_Internals.h:228
Ioex::NodeSet::name
std::string name
Definition: Ioex_Internals.h:271
Ioex::FaceSet
Definition: Ioex_Internals.h:300
Ioex::Mesh::edgesets
std::vector< EdgeSet > edgesets
Definition: Ioex_Internals.h:432
Ioex::NodeBlock::NodeBlock
NodeBlock()
Definition: Ioex_Internals.h:114
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:211
Ioex::Internals::parallelUtil
Ioss::ParallelUtils parallelUtil
Definition: Ioex_Internals.h:496
Ioex::CommunicationMap
Definition: Ioex_Internals.h:356
Ioex::ElemBlock::name
std::string name
Definition: Ioex_Internals.h:247
Ioex::CommunicationMetaData::globalElementBlocks
int64_t globalElementBlocks
Definition: Ioex_Internals.h:386
Ioss::ElementSet
A collection of elements.
Definition: Ioss_ElementSet.h:54
Ioex::FaceBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:210
Ioex::SideSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:352
Ioex::EdgeSet::operator!=
bool operator!=(const EdgeSet &other) const
Definition: Ioex_Internals.h:290
Ioex::EdgeSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:294
Ioex::Mesh::Mesh
Mesh(int dim, char *the_title, bool file_pp)
Definition: Ioex_Internals.h:417
Ioex::NodeSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:277
Ioex::CommunicationMetaData::globalNodeSets
int64_t globalNodeSets
Definition: Ioex_Internals.h:387
Ioex::ElemSet::name
std::string name
Definition: Ioex_Internals.h:332
Ioex::EdgeBlock::name
std::string name
Definition: Ioex_Internals.h:171
Ioex::SideSet::operator!=
bool operator!=(const SideSet &other) const
Definition: Ioex_Internals.h:346
Ioex::NodeSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:273
Ioex::FaceSet::id
entity_id id
Definition: Ioex_Internals.h:313
Ioex::FaceSet::operator!=
bool operator!=(const FaceSet &other) const
Definition: Ioex_Internals.h:310
entity_id
int64_t entity_id
Definition: Ioex_Internals.h:75
Ioex::Internals
Definition: Ioex_Internals.h:439
Ioex
A namespace for the exodus database format.
Definition: Ioex_IOFactory.C:61
Ioex::Internals::exodusFilePtr
int exodusFilePtr
Definition: Ioex_Internals.h:490
Ioex::EdgeSet::id
entity_id id
Definition: Ioex_Internals.h:293
Ioex::NodeBlock::operator!=
bool operator!=(const NodeBlock &other) const
Definition: Ioex_Internals.h:133
Ioex::NodeSet::NodeSet
NodeSet()
Definition: Ioex_Internals.h:260
Ioex::EdgeBlock::operator!=
bool operator!=(const EdgeBlock &other) const
Definition: Ioex_Internals.h:168
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:359
Ioex::Internals::max_name_length
int max_name_length() const
Definition: Ioex_Internals.h:488
Ioex::ElemBlock
Definition: Ioex_Internals.h:219
Ioex::FaceSet::name
std::string name
Definition: Ioex_Internals.h:312
Ioex::FaceBlock::FaceBlock
FaceBlock()
Definition: Ioex_Internals.h:183
Ioex::Mesh::nodeblocks
std::vector< NodeBlock > nodeblocks
Definition: Ioex_Internals.h:427
Ioex::EdgeBlock
Definition: Ioex_Internals.h:145
Ioex::Mesh::file_per_processor
bool file_per_processor
Definition: Ioex_Internals.h:425
Ioex::CommunicationMetaData::nodesExternal
int64_t nodesExternal
Definition: Ioex_Internals.h:391
Ioex::NodeBlock::NodeBlock
NodeBlock(const NodeBlock &other)
Definition: Ioex_Internals.h:119
Ioex::EdgeBlock::nodesPerEntity
int64_t nodesPerEntity
Definition: Ioex_Internals.h:174
Ioex::SideSet::name
std::string name
Definition: Ioex_Internals.h:348
Ioex::SideSet
Definition: Ioex_Internals.h:340
Ioex::ElemBlock::id
entity_id id
Definition: Ioex_Internals.h:248
Ioex::NodeSet::NodeSet
NodeSet(const NodeSet &other)
Definition: Ioex_Internals.h:261
Ioex::CommunicationMetaData::nodesInternal
int64_t nodesInternal
Definition: Ioex_Internals.h:389
Ioex::SideSet::dfProcOffset
int64_t dfProcOffset
Definition: Ioex_Internals.h:353
Ioss_ParallelUtils.h
Ioex::ElemBlock::edgesPerEntity
int64_t edgesPerEntity
Definition: Ioex_Internals.h:251
Ioex::CommunicationMetaData::CommunicationMetaData
CommunicationMetaData()
Definition: Ioex_Internals.h:372
Ioex::EdgeBlock::EdgeBlock
EdgeBlock()
Definition: Ioex_Internals.h:147
Ioex::CommunicationMetaData::processorCount
int processorCount
Definition: Ioex_Internals.h:383
Ioex::Mesh::faceblocks
std::vector< FaceBlock > faceblocks
Definition: Ioex_Internals.h:429
Ioex::Mesh::sidesets
std::vector< SideSet > sidesets
Definition: Ioex_Internals.h:435
Ioex::EdgeBlock::EdgeBlock
EdgeBlock(const EdgeBlock &other)
Definition: Ioex_Internals.h:153
Ioex::SideSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:350
Ioex::ElemBlock::operator!=
bool operator!=(const ElemBlock &other) const
Definition: Ioex_Internals.h:244
Ioex::CommunicationMetaData
Definition: Ioex_Internals.h:370
Ioex::NodeSet::id
entity_id id
Definition: Ioex_Internals.h:272
Ioex::NodeSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:276
anonymous_namespace{io_info.C}::name
std::string name(Ioss::GroupingEntity *entity)
Definition: io_info.C:71
Ioss::SideSet
A collection of element sides.
Definition: Ioss_SideSet.h:59
Ioex::EdgeSet::name
std::string name
Definition: Ioex_Internals.h:292
Ioex::Redefine::exodusFilePtr
int exodusFilePtr
Definition: Ioex_Internals.h:409
anonymous_namespace{io_info.C}::id
int64_t id(Ioss::GroupingEntity *entity)
Definition: io_info.C:76
Ioex::CommunicationMetaData::globalSideSets
int64_t globalSideSets
Definition: Ioex_Internals.h:388
Ioex::NodeBlock::id
entity_id id
Definition: Ioex_Internals.h:136
Ioex::ElemBlock::facesPerEntity
int64_t facesPerEntity
Definition: Ioex_Internals.h:252
Ioex::CommunicationMetaData::elementMap
std::vector< CommunicationMap > elementMap
Definition: Ioex_Internals.h:381
Ioex::Mesh::nodesets
std::vector< NodeSet > nodesets
Definition: Ioex_Internals.h:431
Ioex::CommunicationMetaData::nodesBorder
int64_t nodesBorder
Definition: Ioex_Internals.h:390
Ioex::CommunicationMetaData::elementsBorder
int64_t elementsBorder
Definition: Ioex_Internals.h:393
Ioex::Mesh::elemblocks
std::vector< ElemBlock > elemblocks
Definition: Ioex_Internals.h:430
Ioex::NodeSet
Definition: Ioex_Internals.h:258
Ioex::FaceSet::FaceSet
FaceSet()
Definition: Ioex_Internals.h:302
Ioex::CommunicationMap::type
char type
Definition: Ioex_Internals.h:367
Ioex::CommunicationMetaData::globalElements
int64_t globalElements
Definition: Ioex_Internals.h:385
Ioex::EdgeSet
Definition: Ioex_Internals.h:280
Ioex::Mesh::edgeblocks
std::vector< EdgeBlock > edgeblocks
Definition: Ioex_Internals.h:428
Ioex::CommunicationMap::CommunicationMap
CommunicationMap()
Definition: Ioex_Internals.h:358
Ioex::Mesh::Mesh
Mesh()
Definition: Ioex_Internals.h:415
Ioex::Mesh::elemsets
std::vector< ElemSet > elemsets
Definition: Ioex_Internals.h:434
Ioex::ElemSet
Definition: Ioex_Internals.h:320
Ioex::ElemBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:246
Ioex::EdgeSet::EdgeSet
EdgeSet()
Definition: Ioex_Internals.h:282
Ioex::EdgeBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:173
Ioss::EdgeBlock
A collection of element edges with the same topology.
Definition: Ioss_EdgeBlock.h:53
Ioex::ElemSet::id
entity_id id
Definition: Ioex_Internals.h:333
Ioex::SideSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:351
Ioex::EdgeSet::EdgeSet
EdgeSet(const EdgeSet &other)
Definition: Ioex_Internals.h:283
Ioex::ElemSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:337
Ioex::ElemSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:336