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 <exodusII.h> // for MAX_LINE_LENGTH, etc
41 #include <string> // for string
42 #include <vector> // for vector
43 namespace Ioss {
44  class EdgeBlock;
45 } // namespace Ioss
46 namespace Ioss {
47  class EdgeSet;
48 } // namespace Ioss
49 namespace Ioss {
50  class ElementBlock;
51 } // namespace Ioss
52 namespace Ioss {
53  class ElementSet;
54 } // namespace Ioss
55 namespace Ioss {
56  class FaceBlock;
57 } // namespace Ioss
58 namespace Ioss {
59  class FaceSet;
60 } // namespace Ioss
61 namespace Ioss {
62  class NodeBlock;
63 } // namespace Ioss
64 namespace Ioss {
65  class NodeSet;
66 } // namespace Ioss
67 namespace Ioss {
68  class SideBlock;
69 } // namespace Ioss
70 namespace Ioss {
71  class SideSet;
72 } // namespace Ioss
73 
74 using entity_id = int64_t;
75 
76 namespace Ioss {
77 } // namespace Ioss
78 /*!
79  * This set of classes provides a thin wrapper around the exodusII
80  * internals. It supplants several of the exodusII API calls in
81  * order to avoid ncredef calls which totally rewrite the existing
82  * database and can be very expensive. These routines provide all
83  * required variable, dimension, and attribute definitions to the
84  * underlying netcdf file with only a single ncredef call.
85  *
86  * To use the application must create an Internals instance
87  * and call the Internals::write_meta_data() function. This
88  * function requires several classes as arguments including:
89  * <ul>
90  * <li> Mesh -- defines mesh global metadata
91  * <li> Block -- defines metadata for each block
92  * <li> NodeSet -- defines metadata for each nodeset
93  * <li> SideSet -- defines metadata for each sideset
94  * <li> CommunicationMetaData -- global metadata relating to
95  * parallel info.
96  * </ul>
97  *
98  * Calling Internals::write_meta_data(), replaces the
99  * following exodusII and nemesis API calls:
100  * <ul>
101  * <li> ex_put_init(),
102  * <li> ex_put_elem_block(),
103  * <li> ex_put_node_set_param(),
104  * <li> ex_put_side_set_param(),
105  * <li> ne_put_init_info(),
106  * <li> ne_put_loadbal_param(),
107  * <li> ne_put_cmap_params(),
108  * </ul>
109  */
110 namespace Ioex {
111  struct NodeBlock
112  {
113  NodeBlock() = default;
114  NodeBlock(const NodeBlock &other) = default;
115  explicit NodeBlock(const Ioss::NodeBlock &other);
116 
117  NodeBlock &operator=(const NodeBlock &other);
118 
119  ~NodeBlock() = default;
120 
121  bool operator==(const NodeBlock &) const;
122  bool operator!=(const NodeBlock &other) const { return !(*this == other); }
123 
124  std::string name{};
125  entity_id id{0};
126  int64_t entityCount{0};
127  int64_t localOwnedCount{0};
128  int64_t attributeCount{0};
129  int64_t procOffset{0};
130 
131  private:
132  };
133 
134  struct EdgeBlock
135  {
137 
138  EdgeBlock(const EdgeBlock &other)
139  : name(other.name), id(other.id), entityCount(other.entityCount),
141  procOffset(other.procOffset)
142  {
144  }
145 
146  explicit EdgeBlock(const Ioss::EdgeBlock &other);
147 
148  EdgeBlock &operator=(const EdgeBlock &other);
149 
150  ~EdgeBlock() = default;
151 
152  bool operator==(const EdgeBlock & /*other*/) const;
153  bool operator!=(const EdgeBlock &other) const { return !(*this == other); }
154 
155  char elType[MAX_STR_LENGTH + 1]{};
156  std::string name{};
157  entity_id id{0};
158  int64_t entityCount{0};
159  int64_t nodesPerEntity{0};
160  int64_t attributeCount{0};
161  int64_t procOffset{0};
162 
163  private:
164  };
165 
166  struct FaceBlock
167  {
170  procOffset(0)
171  {
173  }
174 
175  FaceBlock(const FaceBlock &other)
176  : name(other.name), id(other.id), entityCount(other.entityCount),
179  {
181  }
182 
183  explicit FaceBlock(const Ioss::FaceBlock &other);
184 
185  FaceBlock &operator=(const FaceBlock &other);
186 
187  ~FaceBlock() = default;
188 
189  bool operator==(const FaceBlock & /*other*/) const;
190  bool operator!=(const FaceBlock &other) const { return !(*this == other); }
191 
192  char elType[MAX_STR_LENGTH + 1]{};
193  std::string name;
195  int64_t entityCount;
196  int64_t nodesPerEntity;
197  int64_t edgesPerEntity;
198  int64_t attributeCount;
199  int64_t procOffset;
200 
201  private:
202  };
203 
204  struct ElemBlock
205  {
208  attributeCount(0), offset_(-1), procOffset(0)
209  {
211  }
212 
213  ElemBlock(const ElemBlock &other)
214  : name(other.name), id(other.id), entityCount(other.entityCount),
217  offset_(other.offset_), procOffset(other.procOffset)
218  {
220  }
221 
222  explicit ElemBlock(const Ioss::ElementBlock &other);
223 
224  ElemBlock &operator=(const ElemBlock &other);
225 
226  ~ElemBlock() = default;
227 
228  bool operator==(const ElemBlock & /*other*/) const;
229  bool operator!=(const ElemBlock &other) const { return !(*this == other); }
230 
231  char elType[MAX_STR_LENGTH + 1]{};
232  std::string name;
234  int64_t entityCount;
235  int64_t nodesPerEntity;
236  int64_t edgesPerEntity;
237  int64_t facesPerEntity;
238  int64_t attributeCount;
239  int64_t offset_;
240  int64_t procOffset;
241  };
242 
243  struct NodeSet
244  {
245  NodeSet() = default;
246  NodeSet(const NodeSet &other) = default;
247  explicit NodeSet(const Ioss::NodeSet &other);
248  bool operator==(const NodeSet & /*other*/) const;
249  bool operator!=(const NodeSet &other) const { return !(*this == other); }
250 
251  std::string name{};
252  entity_id id{0};
253  int64_t entityCount{0};
254  int64_t localOwnedCount{0};
255  int64_t attributeCount{0};
256  int64_t dfCount{0};
257  int64_t procOffset{0};
258  };
259 
260  struct EdgeSet
261  {
262  EdgeSet() = default;
263  EdgeSet(const EdgeSet &other) = default;
264  explicit EdgeSet(const Ioss::EdgeSet &other);
265  bool operator==(const EdgeSet & /*other*/) const;
266  bool operator!=(const EdgeSet &other) const { return !(*this == other); }
267 
268  std::string name{};
269  entity_id id{0};
270  int64_t entityCount{0};
271  int64_t attributeCount{0};
272  int64_t dfCount{0};
273  int64_t procOffset{0};
274  };
275 
276  struct FaceSet
277  {
278  FaceSet() = default;
279  FaceSet(const FaceSet &other) = default;
280  explicit FaceSet(const Ioss::FaceSet &other);
281  bool operator==(const FaceSet & /*other*/) const;
282  bool operator!=(const FaceSet &other) const { return !(*this == other); }
283 
284  std::string name{};
285  entity_id id{0};
286  int64_t entityCount{0};
287  int64_t attributeCount{0};
288  int64_t dfCount{0};
289  int64_t procOffset{0};
290  };
291 
292  struct ElemSet
293  {
294  ElemSet() = default;
295  ElemSet(const ElemSet &other) = default;
296  explicit ElemSet(const Ioss::ElementSet &other);
297  bool operator==(const ElemSet & /*other*/) const;
298  bool operator!=(const ElemSet &other) const { return !(*this == other); }
299 
300  std::string name{};
301  entity_id id{0};
302  int64_t entityCount{0};
303  int64_t attributeCount{0};
304  int64_t dfCount{0};
305  int64_t procOffset{0};
306  };
307 
308  struct SideSet
309  {
310  SideSet() = default;
311  explicit SideSet(const Ioss::SideBlock &other);
312  explicit SideSet(const Ioss::SideSet &other);
313  bool operator==(const SideSet & /*other*/) const;
314  bool operator!=(const SideSet &other) const { return !(*this == other); }
315 
316  std::string name{};
317  entity_id id{0};
318  int64_t entityCount{0};
319  int64_t dfCount{0};
320  int64_t procOffset{0};
321  int64_t dfProcOffset{0};
322  };
323 
325  {
326  CommunicationMap() = default;
327  CommunicationMap(entity_id the_id, int64_t count, char the_type)
328  : id(the_id), entityCount(count), type(the_type)
329  {
330  }
331  bool operator==(const CommunicationMap & /*other*/) const;
332  bool operator!=(const CommunicationMap &other) const { return !(*this == other); }
333  entity_id id{0};
334  int64_t entityCount{0};
335  char type{'U'}; // 'n' for node, 'e' for element
336  };
337 
339  {
344  outputNemesis(false)
345  {
346  }
347 
348  std::vector<CommunicationMap> nodeMap;
349  std::vector<CommunicationMap> elementMap;
352  int64_t globalNodes;
353  int64_t globalElements;
355  int64_t globalNodeSets;
356  int64_t globalSideSets;
357  int64_t nodesInternal;
358  int64_t nodesBorder;
359  int64_t nodesExternal;
361  int64_t elementsBorder;
363 
364  private:
366  };
367 
368  class Redefine
369  {
370  public:
371  explicit Redefine(int exoid);
372  Redefine(const Redefine &from) = delete;
373  Redefine &operator=(const Redefine &from) = delete;
374  ~Redefine();
375 
376  private:
378  };
379 
380  class Mesh
381  {
382  public:
384 
385  Mesh(int dim, char *the_title, bool file_pp) : dimensionality(dim), file_per_processor(file_pp)
386  {
387  Ioss::Utils::copy_string(title, the_title);
388  }
389 
390  void populate(Ioss::Region *region);
391 
392  char title[MAX_LINE_LENGTH + 1]{};
395 
396  std::vector<NodeBlock> nodeblocks;
397  std::vector<EdgeBlock> edgeblocks;
398  std::vector<FaceBlock> faceblocks;
399  std::vector<ElemBlock> elemblocks;
400  std::vector<NodeSet> nodesets;
401  std::vector<EdgeSet> edgesets;
402  std::vector<FaceSet> facesets;
403  std::vector<ElemSet> elemsets;
404  std::vector<SideSet> sidesets;
406  };
407 
408  class Internals
409  {
410  public:
411  Internals(int exoid, int maximum_name_length, const Ioss::ParallelUtils &util);
412  Internals(const Internals &from) = delete;
413  Internals &operator=(const Internals &from) = delete;
414 
415  int initialize_state_file(Mesh &mesh, const ex_var_params &var_params,
416  const std::string &base_file_name);
417 
418  int write_meta_data(Mesh &mesh);
419 
420  /*! A restart file may contain an attribute which contains
421  * information about the processor count and current processor id
422  * * when the file was written. This code checks whether that
423  * information matches the current processor count and id. If it
424  * * exists, but doesn't match, a warning message is printed.
425  * Eventually, this will be used to determine whether certain
426  * decomposition-related data in the file is valid or has been
427  * invalidated by a join/re-spread to a different number of
428  * processors.
429  */
430 
431  private:
432  void get_global_counts(Mesh &mesh);
433 
434  int put_metadata(const Mesh &mesh, const CommunicationMetaData &comm);
435  int put_metadata(const std::vector<NodeBlock> &nodeblocks, bool count_only = false);
436  int put_metadata(const std::vector<EdgeBlock> &blocks, bool count_only = false);
437  int put_metadata(const std::vector<FaceBlock> &blocks, bool count_only = false);
438  int put_metadata(const std::vector<ElemBlock> &blocks, bool count_only = false);
439 
440  int put_metadata(const std::vector<NodeSet> &nodesets, bool count_only = false);
441  int put_metadata(const std::vector<EdgeSet> &edgesets, bool count_only = false);
442  int put_metadata(const std::vector<FaceSet> &facesets, bool count_only = false);
443  int put_metadata(const std::vector<ElemSet> &elemsets, bool count_only = false);
444 
445  int put_metadata(const std::vector<SideSet> &sidesets, bool count_only = false);
446 
448  int put_non_define_data(const std::vector<NodeBlock> &nodeblocks);
449  int put_non_define_data(const std::vector<EdgeBlock> &blocks);
450  int put_non_define_data(const std::vector<FaceBlock> &blocks);
451  int put_non_define_data(const std::vector<ElemBlock> &blocks);
452 
453  int put_non_define_data(const std::vector<NodeSet> &nodesets);
454  int put_non_define_data(const std::vector<EdgeSet> &edgesets);
455  int put_non_define_data(const std::vector<FaceSet> &facesets);
456  int put_non_define_data(const std::vector<ElemSet> &elemsets);
457 
458  int put_non_define_data(const std::vector<SideSet> &sidesets);
459 
460  int max_name_length() const { return maximumNameLength; }
461 
463  int nodeMapVarID[3];
465  int commIndexVar{0};
469  };
470 } // namespace Ioex
471 #endif /* IOSS_Ioex_Internals_h */
bool operator==(const SideSet &) const
Definition: Ioex_Internals.C:462
int64_t globalNodes
Definition: Ioex_Internals.h:352
int64_t attributeCount
Definition: Ioex_Internals.h:128
std::string name
Definition: Ioex_Internals.h:124
~Redefine()
Definition: Ioex_Internals.C:107
FaceBlock(const FaceBlock &other)
Definition: Ioex_Internals.h:175
int64_t procOffset
Definition: Ioex_Internals.h:273
int64_t edgesPerEntity
Definition: Ioex_Internals.h:197
bool operator!=(const NodeSet &other) const
Definition: Ioex_Internals.h:249
NodeBlock()=default
NodeSet()=default
~EdgeBlock()=default
Definition: Ioex_Internals.h:368
int maximumNameLength
Definition: Ioex_Internals.h:467
int64_t nodesPerEntity
Definition: Ioex_Internals.h:235
int64_t offset_
Definition: Ioex_Internals.h:239
int dimensionality
Definition: Ioex_Internals.h:393
CommunicationMetaData comm
Definition: Ioex_Internals.h:405
int64_t dfCount
Definition: Ioex_Internals.h:288
entity_id id
Definition: Ioex_Internals.h:157
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:155
Definition: Ioex_Internals.h:380
The main namespace for the Ioss library.
Definition: Ioad_DatabaseIO.C:66
int commIndexVar
Definition: Ioex_Internals.h:465
int64_t procOffset
Definition: Ioex_Internals.h:161
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:192
EdgeSet()=default
bool operator!=(const FaceBlock &other) const
Definition: Ioex_Internals.h:190
int64_t entityCount
Definition: Ioex_Internals.h:234
int64_t attributeCount
Definition: Ioex_Internals.h:238
std::string name
Definition: Ioex_Internals.h:193
int64_t attributeCount
Definition: Ioex_Internals.h:160
int64_t procOffset
Definition: Ioex_Internals.h:240
int64_t procOffset
Definition: Ioex_Internals.h:199
int64_t localOwnedCount
Definition: Ioex_Internals.h:254
A collection of nodes.
Definition: Ioss_NodeSet.h:53
int64_t procOffset
Definition: Ioex_Internals.h:129
A collection of element faces with the same topology.
Definition: Ioss_FaceBlock.h:53
int64_t elementsInternal
Definition: Ioex_Internals.h:360
A collection of element faces.
Definition: Ioss_FaceSet.h:54
Definition: Ioex_Internals.h:111
int64_t attributeCount
Definition: Ioex_Internals.h:198
Definition: Ioex_Internals.h:166
int64_t localOwnedCount
Definition: Ioex_Internals.h:127
FaceSet()=default
std::vector< CommunicationMap > nodeMap
Definition: Ioex_Internals.h:348
A collection of element edges.
Definition: Ioss_EdgeSet.h:54
int64_t entityCount
Definition: Ioex_Internals.h:126
int64_t entityCount
Definition: Ioex_Internals.h:334
bool operator==(const FaceBlock &) const
Definition: Ioex_Internals.C:244
entity_id id
Definition: Ioex_Internals.h:194
int processorId
Definition: Ioex_Internals.h:350
bool operator!=(const CommunicationMap &other) const
Definition: Ioex_Internals.h:332
A collection of element sides having the same topology.
Definition: Ioss_SideBlock.h:61
ElemBlock()
Definition: Ioex_Internals.h:206
int64_t procOffset
Definition: Ioex_Internals.h:289
int64_t entityCount
Definition: Ioex_Internals.h:302
int64_t dfCount
Definition: Ioex_Internals.h:272
bool operator!=(const ElemSet &other) const
Definition: Ioex_Internals.h:298
bool outputNemesis
Definition: Ioex_Internals.h:362
entity_id id
Definition: Ioex_Internals.h:333
int64_t attributeCount
Definition: Ioex_Internals.h:287
Definition: Ioss_ParallelUtils.h:49
std::vector< FaceSet > facesets
Definition: Ioex_Internals.h:402
int64_t attributeCount
Definition: Ioex_Internals.h:271
bool operator==(const NodeSet &) const
Definition: Ioex_Internals.C:346
SideSet()=default
int64_t entityCount
Definition: Ioex_Internals.h:286
ElemBlock(const ElemBlock &other)
Definition: Ioex_Internals.h:213
bool operator==(const ElemBlock &) const
Definition: Ioex_Internals.C:313
std::string name
Definition: Ioex_Internals.h:251
Definition: Ioex_Internals.h:276
std::vector< EdgeSet > edgesets
Definition: Ioex_Internals.h:401
A collection of elements having the same topology.
Definition: Ioss_ElementBlock.h:48
int64_t nodesPerEntity
Definition: Ioex_Internals.h:196
Ioss::ParallelUtils parallelUtil
Definition: Ioex_Internals.h:468
Definition: Ioex_Internals.h:324
std::string name
Definition: Ioex_Internals.h:232
int64_t attributeCount
Definition: Ioex_Internals.h:303
int64_t globalElementBlocks
Definition: Ioex_Internals.h:354
A collection of elements.
Definition: Ioss_ElementSet.h:54
int64_t entityCount
Definition: Ioex_Internals.h:195
int64_t procOffset
Definition: Ioex_Internals.h:320
bool operator!=(const EdgeSet &other) const
Definition: Ioex_Internals.h:266
int put_non_define_data(const CommunicationMetaData &comm)
Definition: Ioex_Internals.C:2252
int64_t entityCount
Definition: Ioex_Internals.h:270
Mesh(int dim, char *the_title, bool file_pp)
Definition: Ioex_Internals.h:385
int64_t procOffset
Definition: Ioex_Internals.h:257
int64_t globalNodeSets
Definition: Ioex_Internals.h:355
int write_meta_data(Mesh &mesh)
Definition: Ioex_Internals.C:852
ElemBlock & operator=(const ElemBlock &other)
Definition: Ioex_Internals.C:298
~NodeBlock()=default
std::string name
Definition: Ioex_Internals.h:300
std::string name
Definition: Ioex_Internals.h:156
bool operator!=(const SideSet &other) const
Definition: Ioex_Internals.h:314
ElemSet()=default
int initialize_state_file(Mesh &mesh, const ex_var_params &var_params, const std::string &base_file_name)
Definition: Ioex_Internals.C:479
int64_t entityCount
Definition: Ioex_Internals.h:253
bool operator!=(const FaceSet &other) const
Definition: Ioex_Internals.h:282
int64_t entity_id
Definition: Ioex_Internals.h:74
Definition: Ioex_Internals.h:408
A namespace for the exodus database format.
Definition: Ioex_IOFactory.C:62
int exodusFilePtr
Definition: Ioex_Internals.h:462
bool operator!=(const NodeBlock &other) const
Definition: Ioex_Internals.h:122
bool operator!=(const EdgeBlock &other) const
Definition: Ioex_Internals.h:153
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:327
~ElemBlock()=default
int elementMapVarID[2]
Definition: Ioex_Internals.h:464
int max_name_length() const
Definition: Ioex_Internals.h:460
bool operator==(const EdgeSet &) const
Definition: Ioex_Internals.C:368
Definition: Ioex_Internals.h:204
std::string name
Definition: Ioex_Internals.h:284
FaceBlock()
Definition: Ioex_Internals.h:168
std::vector< NodeBlock > nodeblocks
Definition: Ioex_Internals.h:396
Definition: Ioex_Internals.h:134
bool file_per_processor
Definition: Ioex_Internals.h:394
bool operator==(const CommunicationMap &) const
Definition: Ioex_Internals.C:468
int64_t nodesExternal
Definition: Ioex_Internals.h:359
EdgeBlock & operator=(const EdgeBlock &other)
Definition: Ioex_Internals.C:183
int64_t nodesPerEntity
Definition: Ioex_Internals.h:159
std::string name
Definition: Ioex_Internals.h:316
int put_metadata(const Mesh &mesh, const CommunicationMetaData &comm)
Definition: Ioex_Internals.C:1081
int64_t attributeCount
Definition: Ioex_Internals.h:255
Definition: Ioex_Internals.h:308
int elemCommIndexVar
Definition: Ioex_Internals.h:466
entity_id id
Definition: Ioex_Internals.h:233
static void copy_string(char *dest, char const *source, size_t elements)
Definition: Ioss_Utils.C:1493
int64_t nodesInternal
Definition: Ioex_Internals.h:357
int64_t dfProcOffset
Definition: Ioex_Internals.h:321
int64_t edgesPerEntity
Definition: Ioex_Internals.h:236
CommunicationMetaData()
Definition: Ioex_Internals.h:340
char title[MAX_LINE_LENGTH+1]
Definition: Ioex_Internals.h:392
EdgeBlock()
Definition: Ioex_Internals.h:136
int processorCount
Definition: Ioex_Internals.h:351
std::vector< FaceBlock > faceblocks
Definition: Ioex_Internals.h:398
Redefine & operator=(const Redefine &from)=delete
int nodeMapVarID[3]
Definition: Ioex_Internals.h:463
std::vector< SideSet > sidesets
Definition: Ioex_Internals.h:404
A grouping entity that contains other grouping entities.
Definition: Ioss_Region.h:98
EdgeBlock(const EdgeBlock &other)
Definition: Ioex_Internals.h:138
int64_t entityCount
Definition: Ioex_Internals.h:318
bool operator!=(const ElemBlock &other) const
Definition: Ioex_Internals.h:229
Definition: Ioex_Internals.h:338
int64_t dfCount
Definition: Ioex_Internals.h:256
A collection of element sides.
Definition: Ioss_SideSet.h:59
std::string name
Definition: Ioex_Internals.h:268
int exodusFilePtr
Definition: Ioex_Internals.h:377
int64_t globalSideSets
Definition: Ioex_Internals.h:356
FaceBlock & operator=(const FaceBlock &other)
Definition: Ioex_Internals.C:231
int64_t facesPerEntity
Definition: Ioex_Internals.h:237
std::vector< CommunicationMap > elementMap
Definition: Ioex_Internals.h:349
Internals(int exoid, int maximum_name_length, const Ioss::ParallelUtils &util)
Definition: Ioex_Internals.C:473
Redefine(int exoid)
Definition: Ioex_Internals.C:94
std::vector< NodeSet > nodesets
Definition: Ioex_Internals.h:400
int64_t nodesBorder
Definition: Ioex_Internals.h:358
int64_t elementsBorder
Definition: Ioex_Internals.h:361
std::vector< ElemBlock > elemblocks
Definition: Ioex_Internals.h:399
void populate(Ioss::Region *region)
Definition: Ioex_Internals.C:770
Definition: Ioex_Internals.h:243
Internals & operator=(const Internals &from)=delete
char type
Definition: Ioex_Internals.h:335
int64_t globalElements
Definition: Ioex_Internals.h:353
Definition: Ioex_Internals.h:260
bool operator==(const FaceSet &) const
Definition: Ioex_Internals.C:390
std::vector< EdgeBlock > edgeblocks
Definition: Ioex_Internals.h:397
Mesh()
Definition: Ioex_Internals.h:383
std::vector< ElemSet > elemsets
Definition: Ioex_Internals.h:403
Definition: Ioex_Internals.h:292
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:231
int64_t entityCount
Definition: Ioex_Internals.h:158
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:412
int64_t dfCount
Definition: Ioex_Internals.h:319
NodeBlock & operator=(const NodeBlock &other)
Definition: Ioex_Internals.C:150
bool operator==(const EdgeBlock &) const
Definition: Ioex_Internals.C:195
int64_t procOffset
Definition: Ioex_Internals.h:305
int64_t dfCount
Definition: Ioex_Internals.h:304
void get_global_counts(Mesh &mesh)
Definition: Ioex_Internals.C:968
bool operator==(const NodeBlock &) const