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  {
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;
137  int64_t entityCount;
139  int64_t attributeCount;
140  int64_t procOffset;
141 
142  private:
143  };
144 
145  struct EdgeBlock
146  {
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;
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  {
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;
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  {
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;
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;
273  int64_t entityCount;
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;
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;
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;
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;
350  int64_t entityCount;
351  int64_t dfCount;
352  int64_t procOffset;
353  int64_t dfProcOffset;
354  };
355 
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); }
366  int64_t entityCount;
367  char type; // 'n' for node, 'e' for element
368  };
369 
371  {
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;
384  int64_t globalNodes;
385  int64_t globalElements;
387  int64_t globalNodeSets;
388  int64_t globalSideSets;
389  int64_t nodesInternal;
390  int64_t nodesBorder;
391  int64_t nodesExternal;
393  int64_t elementsBorder;
395 
396  private:
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:
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]{};
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;
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 
491  int nodeMapVarID[3];
492  int elementMapVarID[2];
493  int commIndexVar{0};
494  int elemCommIndexVar{0};
495  int maximumNameLength{32};
497  };
498 } // namespace Ioex
499 #endif /* IOSS_Ioex_Internals_h */
int64_t globalNodes
Definition: Ioex_Internals.h:384
int64_t attributeCount
Definition: Ioex_Internals.h:139
std::string name
Definition: Ioex_Internals.h:135
SideSet()
Definition: Ioex_Internals.h:342
FaceBlock(const FaceBlock &other)
Definition: Ioex_Internals.h:190
int64_t procOffset
Definition: Ioex_Internals.h:297
int64_t edgesPerEntity
Definition: Ioex_Internals.h:212
bool operator!=(const NodeSet &other) const
Definition: Ioex_Internals.h:269
Definition: Ioex_Internals.h:400
int64_t nodesPerEntity
Definition: Ioex_Internals.h:250
int64_t offset_
Definition: Ioex_Internals.h:254
int dimensionality
Definition: Ioex_Internals.h:424
CommunicationMetaData comm
Definition: Ioex_Internals.h:436
int64_t dfCount
Definition: Ioex_Internals.h:316
entity_id id
Definition: Ioex_Internals.h:172
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:170
Definition: Ioex_Internals.h:412
The main namespace for the Ioss library.
Definition: Iocgns_DatabaseIO.h:50
int64_t procOffset
Definition: Ioex_Internals.h:176
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:207
bool operator!=(const FaceBlock &other) const
Definition: Ioex_Internals.h:205
int64_t entityCount
Definition: Ioex_Internals.h:249
int64_t attributeCount
Definition: Ioex_Internals.h:253
std::string name
Definition: Ioex_Internals.h:208
int64_t attributeCount
Definition: Ioex_Internals.h:175
int64_t procOffset
Definition: Ioex_Internals.h:255
int64_t procOffset
Definition: Ioex_Internals.h:214
int64_t localOwnedCount
Definition: Ioex_Internals.h:274
A collection of nodes.
Definition: Ioss_NodeSet.h:53
int64_t procOffset
Definition: Ioex_Internals.h:140
A collection of element faces with the same topology.
Definition: Ioss_FaceBlock.h:53
int64_t elementsInternal
Definition: Ioex_Internals.h:392
A collection of element faces.
Definition: Ioss_FaceSet.h:54
ElemSet(const ElemSet &other)
Definition: Ioex_Internals.h:323
Definition: Ioex_Internals.h:112
int64_t attributeCount
Definition: Ioex_Internals.h:213
ElemSet()
Definition: Ioex_Internals.h:322
Definition: Ioex_Internals.h:181
int64_t localOwnedCount
Definition: Ioex_Internals.h:138
entity_id id
Definition: Ioex_Internals.h:349
std::vector< CommunicationMap > nodeMap
Definition: Ioex_Internals.h:380
A collection of element edges.
Definition: Ioss_EdgeSet.h:54
int64_t entityCount
Definition: Ioex_Internals.h:137
int64_t entityCount
Definition: Ioex_Internals.h:366
entity_id id
Definition: Ioex_Internals.h:209
int processorId
Definition: Ioex_Internals.h:382
bool operator!=(const CommunicationMap &other) const
Definition: Ioex_Internals.h:364
A collection of element sides having the same topology.
Definition: Ioss_SideBlock.h:61
ElemBlock()
Definition: Ioex_Internals.h:221
int64_t procOffset
Definition: Ioex_Internals.h:317
int64_t entityCount
Definition: Ioex_Internals.h:334
int64_t dfCount
Definition: Ioex_Internals.h:296
bool operator!=(const ElemSet &other) const
Definition: Ioex_Internals.h:330
bool outputNemesis
Definition: Ioex_Internals.h:394
entity_id id
Definition: Ioex_Internals.h:365
Definition: Ioss_ParallelUtils.h:45
std::vector< FaceSet > facesets
Definition: Ioex_Internals.h:433
FaceSet(const FaceSet &other)
Definition: Ioex_Internals.h:303
int64_t entityCount
Definition: Ioex_Internals.h:314
ElemBlock(const ElemBlock &other)
Definition: Ioex_Internals.h:228
std::string name
Definition: Ioex_Internals.h:271
Definition: Ioex_Internals.h:300
std::vector< EdgeSet > edgesets
Definition: Ioex_Internals.h:432
NodeBlock()
Definition: Ioex_Internals.h:114
A collection of elements having the same topology.
Definition: Ioss_ElementBlock.h:48
int64_t nodesPerEntity
Definition: Ioex_Internals.h:211
Ioss::ParallelUtils parallelUtil
Definition: Ioex_Internals.h:496
Definition: Ioex_Internals.h:356
std::string name
Definition: Ioex_Internals.h:247
int64_t globalElementBlocks
Definition: Ioex_Internals.h:386
A collection of elements.
Definition: Ioss_ElementSet.h:54
int64_t entityCount
Definition: Ioex_Internals.h:210
int64_t procOffset
Definition: Ioex_Internals.h:352
bool operator!=(const EdgeSet &other) const
Definition: Ioex_Internals.h:290
int64_t entityCount
Definition: Ioex_Internals.h:294
Mesh(int dim, char *the_title, bool file_pp)
Definition: Ioex_Internals.h:417
int64_t procOffset
Definition: Ioex_Internals.h:277
int64_t globalNodeSets
Definition: Ioex_Internals.h:387
std::string name
Definition: Ioex_Internals.h:332
std::string name
Definition: Ioex_Internals.h:171
bool operator!=(const SideSet &other) const
Definition: Ioex_Internals.h:346
int64_t entityCount
Definition: Ioex_Internals.h:273
entity_id id
Definition: Ioex_Internals.h:313
bool operator!=(const FaceSet &other) const
Definition: Ioex_Internals.h:310
int64_t entity_id
Definition: Ioex_Internals.h:75
Definition: Ioex_Internals.h:439
A namespace for the exodus database format.
Definition: Ioex_IOFactory.C:61
int exodusFilePtr
Definition: Ioex_Internals.h:490
entity_id id
Definition: Ioex_Internals.h:293
bool operator!=(const NodeBlock &other) const
Definition: Ioex_Internals.h:133
NodeSet()
Definition: Ioex_Internals.h:260
bool operator!=(const EdgeBlock &other) const
Definition: Ioex_Internals.h:168
A collection of all nodes in the region.
Definition: Ioss_NodeBlock.h:53
CommunicationMap(entity_id the_id, int64_t count, char the_type)
Definition: Ioex_Internals.h:359
int max_name_length() const
Definition: Ioex_Internals.h:488
Definition: Ioex_Internals.h:219
std::string name
Definition: Ioex_Internals.h:312
FaceBlock()
Definition: Ioex_Internals.h:183
std::vector< NodeBlock > nodeblocks
Definition: Ioex_Internals.h:427
Definition: Ioex_Internals.h:145
bool file_per_processor
Definition: Ioex_Internals.h:425
int64_t nodesExternal
Definition: Ioex_Internals.h:391
NodeBlock(const NodeBlock &other)
Definition: Ioex_Internals.h:119
int64_t nodesPerEntity
Definition: Ioex_Internals.h:174
std::string name
Definition: Ioex_Internals.h:348
Definition: Ioex_Internals.h:340
entity_id id
Definition: Ioex_Internals.h:248
NodeSet(const NodeSet &other)
Definition: Ioex_Internals.h:261
int64_t nodesInternal
Definition: Ioex_Internals.h:389
int64_t dfProcOffset
Definition: Ioex_Internals.h:353
int64_t edgesPerEntity
Definition: Ioex_Internals.h:251
CommunicationMetaData()
Definition: Ioex_Internals.h:372
EdgeBlock()
Definition: Ioex_Internals.h:147
int processorCount
Definition: Ioex_Internals.h:383
std::vector< FaceBlock > faceblocks
Definition: Ioex_Internals.h:429
std::vector< SideSet > sidesets
Definition: Ioex_Internals.h:435
EdgeBlock(const EdgeBlock &other)
Definition: Ioex_Internals.h:153
int64_t entityCount
Definition: Ioex_Internals.h:350
bool operator!=(const ElemBlock &other) const
Definition: Ioex_Internals.h:244
Definition: Ioex_Internals.h:370
entity_id id
Definition: Ioex_Internals.h:272
int64_t dfCount
Definition: Ioex_Internals.h:276
std::string name(Ioss::GroupingEntity *entity)
Definition: io_info.C:71
A collection of element sides.
Definition: Ioss_SideSet.h:59
std::string name
Definition: Ioex_Internals.h:292
int exodusFilePtr
Definition: Ioex_Internals.h:409
int64_t id(Ioss::GroupingEntity *entity)
Definition: io_info.C:76
int64_t globalSideSets
Definition: Ioex_Internals.h:388
entity_id id
Definition: Ioex_Internals.h:136
int64_t facesPerEntity
Definition: Ioex_Internals.h:252
std::vector< CommunicationMap > elementMap
Definition: Ioex_Internals.h:381
std::vector< NodeSet > nodesets
Definition: Ioex_Internals.h:431
int64_t nodesBorder
Definition: Ioex_Internals.h:390
int64_t elementsBorder
Definition: Ioex_Internals.h:393
std::vector< ElemBlock > elemblocks
Definition: Ioex_Internals.h:430
Definition: Ioex_Internals.h:258
FaceSet()
Definition: Ioex_Internals.h:302
char type
Definition: Ioex_Internals.h:367
int64_t globalElements
Definition: Ioex_Internals.h:385
Definition: Ioex_Internals.h:280
std::vector< EdgeBlock > edgeblocks
Definition: Ioex_Internals.h:428
CommunicationMap()
Definition: Ioex_Internals.h:358
Mesh()
Definition: Ioex_Internals.h:415
std::vector< ElemSet > elemsets
Definition: Ioex_Internals.h:434
Definition: Ioex_Internals.h:320
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:246
EdgeSet()
Definition: Ioex_Internals.h:282
int64_t entityCount
Definition: Ioex_Internals.h:173
A collection of element edges with the same topology.
Definition: Ioss_EdgeBlock.h:53
entity_id id
Definition: Ioex_Internals.h:333
int64_t dfCount
Definition: Ioex_Internals.h:351
EdgeSet(const EdgeSet &other)
Definition: Ioex_Internals.h:283
int64_t procOffset
Definition: Ioex_Internals.h:337
int64_t dfCount
Definition: Ioex_Internals.h:336