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),
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  {
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),
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;
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  {
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),
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;
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 
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 
340  {
345  outputNemesis(false)
346  {
347  }
348 
349  std::vector<CommunicationMap> nodeMap;
350  std::vector<CommunicationMap> elementMap;
353  int64_t globalNodes;
354  int64_t globalElements;
356  int64_t globalNodeSets;
357  int64_t globalSideSets;
358  int64_t nodesInternal;
359  int64_t nodesBorder;
360  int64_t nodesExternal;
362  int64_t elementsBorder;
364 
365  private:
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:
379  };
380 
381  class Mesh
382  {
383  public:
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]{};
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;
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 
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 
465  int nodeMapVarID[3];
467  int commIndexVar{0};
471  };
472 } // namespace Ioex
473 #endif /* IOSS_Ioex_Internals_h */
bool operator==(const SideSet &) const
Definition: Ioex_Internals.C:472
int64_t globalNodes
Definition: Ioex_Internals.h:353
int64_t attributeCount
Definition: Ioex_Internals.h:129
std::string name
Definition: Ioex_Internals.h:125
~Redefine()
Definition: Ioex_Internals.C:114
FaceBlock(const FaceBlock &other)
Definition: Ioex_Internals.h:176
int64_t procOffset
Definition: Ioex_Internals.h:274
int64_t edgesPerEntity
Definition: Ioex_Internals.h:198
bool operator!=(const NodeSet &other) const
Definition: Ioex_Internals.h:250
NodeBlock()=default
NodeSet()=default
~EdgeBlock()=default
Definition: Ioex_Internals.h:369
int maximumNameLength
Definition: Ioex_Internals.h:469
int64_t nodesPerEntity
Definition: Ioex_Internals.h:236
int64_t offset_
Definition: Ioex_Internals.h:240
int dimensionality
Definition: Ioex_Internals.h:395
CommunicationMetaData comm
Definition: Ioex_Internals.h:407
int64_t dfCount
Definition: Ioex_Internals.h:289
entity_id id
Definition: Ioex_Internals.h:158
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:156
Definition: Ioex_Internals.h:381
The main namespace for the Ioss library.
Definition: Iocgns_DatabaseIO.h:50
int commIndexVar
Definition: Ioex_Internals.h:467
int64_t procOffset
Definition: Ioex_Internals.h:162
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:193
EdgeSet()=default
bool operator!=(const FaceBlock &other) const
Definition: Ioex_Internals.h:191
int64_t entityCount
Definition: Ioex_Internals.h:235
int64_t attributeCount
Definition: Ioex_Internals.h:239
std::string name
Definition: Ioex_Internals.h:194
int64_t attributeCount
Definition: Ioex_Internals.h:161
int64_t procOffset
Definition: Ioex_Internals.h:241
int64_t procOffset
Definition: Ioex_Internals.h:200
int64_t localOwnedCount
Definition: Ioex_Internals.h:255
A collection of nodes.
Definition: Ioss_NodeSet.h:53
int64_t procOffset
Definition: Ioex_Internals.h:130
A collection of element faces with the same topology.
Definition: Ioss_FaceBlock.h:53
int64_t elementsInternal
Definition: Ioex_Internals.h:361
A collection of element faces.
Definition: Ioss_FaceSet.h:54
Definition: Ioex_Internals.h:112
int64_t attributeCount
Definition: Ioex_Internals.h:199
Definition: Ioex_Internals.h:167
int64_t localOwnedCount
Definition: Ioex_Internals.h:128
FaceSet()=default
std::vector< CommunicationMap > nodeMap
Definition: Ioex_Internals.h:349
A collection of element edges.
Definition: Ioss_EdgeSet.h:54
int64_t entityCount
Definition: Ioex_Internals.h:127
int64_t entityCount
Definition: Ioex_Internals.h:335
bool operator==(const FaceBlock &) const
Definition: Ioex_Internals.C:253
entity_id id
Definition: Ioex_Internals.h:195
int processorId
Definition: Ioex_Internals.h:351
bool operator!=(const CommunicationMap &other) const
Definition: Ioex_Internals.h:333
A collection of element sides having the same topology.
Definition: Ioss_SideBlock.h:61
ElemBlock()
Definition: Ioex_Internals.h:207
int64_t procOffset
Definition: Ioex_Internals.h:290
int64_t entityCount
Definition: Ioex_Internals.h:303
int64_t dfCount
Definition: Ioex_Internals.h:273
bool operator!=(const ElemSet &other) const
Definition: Ioex_Internals.h:299
bool outputNemesis
Definition: Ioex_Internals.h:363
entity_id id
Definition: Ioex_Internals.h:334
int64_t attributeCount
Definition: Ioex_Internals.h:288
Definition: Ioss_ParallelUtils.h:45
std::vector< FaceSet > facesets
Definition: Ioex_Internals.h:404
int64_t attributeCount
Definition: Ioex_Internals.h:272
bool operator==(const NodeSet &) const
Definition: Ioex_Internals.C:356
SideSet()=default
int64_t entityCount
Definition: Ioex_Internals.h:287
ElemBlock(const ElemBlock &other)
Definition: Ioex_Internals.h:214
bool operator==(const ElemBlock &) const
Definition: Ioex_Internals.C:323
std::string name
Definition: Ioex_Internals.h:252
Definition: Ioex_Internals.h:277
std::vector< EdgeSet > edgesets
Definition: Ioex_Internals.h:403
A collection of elements having the same topology.
Definition: Ioss_ElementBlock.h:48
int64_t nodesPerEntity
Definition: Ioex_Internals.h:197
Ioss::ParallelUtils parallelUtil
Definition: Ioex_Internals.h:470
Definition: Ioex_Internals.h:325
std::string name
Definition: Ioex_Internals.h:233
int64_t attributeCount
Definition: Ioex_Internals.h:304
int64_t globalElementBlocks
Definition: Ioex_Internals.h:355
A collection of elements.
Definition: Ioss_ElementSet.h:54
int64_t entityCount
Definition: Ioex_Internals.h:196
int64_t procOffset
Definition: Ioex_Internals.h:321
bool operator!=(const EdgeSet &other) const
Definition: Ioex_Internals.h:267
int put_non_define_data(const CommunicationMetaData &comm)
Definition: Ioex_Internals.C:2261
int64_t entityCount
Definition: Ioex_Internals.h:271
Mesh(int dim, char *the_title, bool file_pp)
Definition: Ioex_Internals.h:386
int64_t procOffset
Definition: Ioex_Internals.h:258
int64_t globalNodeSets
Definition: Ioex_Internals.h:356
int write_meta_data(Mesh &mesh)
Definition: Ioex_Internals.C:857
ElemBlock & operator=(const ElemBlock &other)
Definition: Ioex_Internals.C:308
~NodeBlock()=default
std::string name
Definition: Ioex_Internals.h:301
std::string name
Definition: Ioex_Internals.h:157
bool operator!=(const SideSet &other) const
Definition: Ioex_Internals.h:315
ElemSet()=default
int initialize_state_file(Mesh &mesh, const ex_var_params &var_params, const std::string &base_file_name)
Definition: Ioex_Internals.C:489
int64_t entityCount
Definition: Ioex_Internals.h:254
bool operator!=(const FaceSet &other) const
Definition: Ioex_Internals.h:283
int64_t entity_id
Definition: Ioex_Internals.h:75
Definition: Ioex_Internals.h:410
A namespace for the exodus database format.
Definition: Ioex_IOFactory.C:61
int exodusFilePtr
Definition: Ioex_Internals.h:464
bool operator!=(const NodeBlock &other) const
Definition: Ioex_Internals.h:123
bool operator!=(const EdgeBlock &other) const
Definition: Ioex_Internals.h:154
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:328
~ElemBlock()=default
int elementMapVarID[2]
Definition: Ioex_Internals.h:466
int max_name_length() const
Definition: Ioex_Internals.h:462
bool operator==(const EdgeSet &) const
Definition: Ioex_Internals.C:378
Definition: Ioex_Internals.h:205
std::string name
Definition: Ioex_Internals.h:285
FaceBlock()
Definition: Ioex_Internals.h:169
std::vector< NodeBlock > nodeblocks
Definition: Ioex_Internals.h:398
Definition: Ioex_Internals.h:135
bool file_per_processor
Definition: Ioex_Internals.h:396
bool operator==(const CommunicationMap &) const
Definition: Ioex_Internals.C:478
int64_t nodesExternal
Definition: Ioex_Internals.h:360
EdgeBlock & operator=(const EdgeBlock &other)
Definition: Ioex_Internals.C:191
int64_t nodesPerEntity
Definition: Ioex_Internals.h:160
std::string name
Definition: Ioex_Internals.h:317
int put_metadata(const Mesh &mesh, const CommunicationMetaData &comm)
Definition: Ioex_Internals.C:1085
int64_t attributeCount
Definition: Ioex_Internals.h:256
Definition: Ioex_Internals.h:309
int elemCommIndexVar
Definition: Ioex_Internals.h:468
entity_id id
Definition: Ioex_Internals.h:234
int64_t nodesInternal
Definition: Ioex_Internals.h:358
int64_t dfProcOffset
Definition: Ioex_Internals.h:322
int64_t edgesPerEntity
Definition: Ioex_Internals.h:237
CommunicationMetaData()
Definition: Ioex_Internals.h:341
char title[MAX_LINE_LENGTH+1]
Definition: Ioex_Internals.h:394
EdgeBlock()
Definition: Ioex_Internals.h:137
int processorCount
Definition: Ioex_Internals.h:352
std::vector< FaceBlock > faceblocks
Definition: Ioex_Internals.h:400
Redefine & operator=(const Redefine &from)=delete
int nodeMapVarID[3]
Definition: Ioex_Internals.h:465
std::vector< SideSet > sidesets
Definition: Ioex_Internals.h:406
A grouping entity that contains other grouping entities.
Definition: Ioss_Region.h:98
EdgeBlock(const EdgeBlock &other)
Definition: Ioex_Internals.h:139
int64_t entityCount
Definition: Ioex_Internals.h:319
bool operator!=(const ElemBlock &other) const
Definition: Ioex_Internals.h:230
Definition: Ioex_Internals.h:339
int64_t dfCount
Definition: Ioex_Internals.h:257
A collection of element sides.
Definition: Ioss_SideSet.h:59
std::string name
Definition: Ioex_Internals.h:269
int exodusFilePtr
Definition: Ioex_Internals.h:378
int64_t globalSideSets
Definition: Ioex_Internals.h:357
FaceBlock & operator=(const FaceBlock &other)
Definition: Ioex_Internals.C:240
int64_t facesPerEntity
Definition: Ioex_Internals.h:238
std::vector< CommunicationMap > elementMap
Definition: Ioex_Internals.h:350
Internals(int exoid, int maximum_name_length, const Ioss::ParallelUtils &util)
Definition: Ioex_Internals.C:483
Redefine(int exoid)
Definition: Ioex_Internals.C:101
std::vector< NodeSet > nodesets
Definition: Ioex_Internals.h:402
int64_t nodesBorder
Definition: Ioex_Internals.h:359
int64_t elementsBorder
Definition: Ioex_Internals.h:362
std::vector< ElemBlock > elemblocks
Definition: Ioex_Internals.h:401
void populate(Ioss::Region *region)
Definition: Ioex_Internals.C:775
Definition: Ioex_Internals.h:244
Internals & operator=(const Internals &from)=delete
char type
Definition: Ioex_Internals.h:336
int64_t globalElements
Definition: Ioex_Internals.h:354
Definition: Ioex_Internals.h:261
bool operator==(const FaceSet &) const
Definition: Ioex_Internals.C:400
std::vector< EdgeBlock > edgeblocks
Definition: Ioex_Internals.h:399
Mesh()
Definition: Ioex_Internals.h:384
std::vector< ElemSet > elemsets
Definition: Ioex_Internals.h:405
Definition: Ioex_Internals.h:293
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:232
int64_t entityCount
Definition: Ioex_Internals.h:159
A collection of element edges with the same topology.
Definition: Ioss_EdgeBlock.h:53
~FaceBlock()=default
bool operator==(const ElemSet &) const
Definition: Ioex_Internals.C:422
int64_t dfCount
Definition: Ioex_Internals.h:320
NodeBlock & operator=(const NodeBlock &other)
Definition: Ioex_Internals.C:157
bool operator==(const EdgeBlock &) const
Definition: Ioex_Internals.C:203
int64_t procOffset
Definition: Ioex_Internals.h:306
int64_t dfCount
Definition: Ioex_Internals.h:305
void get_global_counts(Mesh &mesh)
Definition: Ioex_Internals.C:973
bool operator==(const NodeBlock &) const