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  {
169 
170  FaceBlock(const FaceBlock &other)
171  : name(other.name), id(other.id), entityCount(other.entityCount),
174  {
176  }
177 
178  explicit FaceBlock(const Ioss::FaceBlock &other);
179 
180  FaceBlock &operator=(const FaceBlock &other);
181 
182  ~FaceBlock() = default;
183 
184  bool operator==(const FaceBlock & /*other*/) const;
185  bool operator!=(const FaceBlock &other) const { return !(*this == other); }
186 
187  char elType[MAX_STR_LENGTH + 1]{};
188  std::string name{};
189  entity_id id{0};
190  int64_t entityCount{0};
191  int64_t nodesPerEntity{0};
192  int64_t edgesPerEntity{0};
193  int64_t attributeCount{0};
194  int64_t procOffset{0};
195 
196  private:
197  };
198 
199  struct ElemBlock
200  {
202 
203  ElemBlock(const ElemBlock &other)
204  : name(other.name), id(other.id), entityCount(other.entityCount),
207  offset_(other.offset_), procOffset(other.procOffset)
208  {
210  }
211 
212  explicit ElemBlock(const Ioss::ElementBlock &other);
213 
214  ElemBlock &operator=(const ElemBlock &other);
215 
216  ~ElemBlock() = default;
217 
218  bool operator==(const ElemBlock & /*other*/) const;
219  bool operator!=(const ElemBlock &other) const { return !(*this == other); }
220 
221  char elType[MAX_STR_LENGTH + 1]{};
222  std::string name{};
223  entity_id id{0};
224  int64_t entityCount{0};
225  int64_t nodesPerEntity{0};
226  int64_t edgesPerEntity{0};
227  int64_t facesPerEntity{0};
228  int64_t attributeCount{0};
229  int64_t offset_{-1};
230  int64_t procOffset{0};
231  };
232 
233  struct NodeSet
234  {
235  NodeSet() = default;
236  NodeSet(const NodeSet &other) = default;
237  explicit NodeSet(const Ioss::NodeSet &other);
238  bool operator==(const NodeSet & /*other*/) const;
239  bool operator!=(const NodeSet &other) const { return !(*this == other); }
240 
241  std::string name{};
242  entity_id id{0};
243  int64_t entityCount{0};
244  int64_t localOwnedCount{0};
245  int64_t attributeCount{0};
246  int64_t dfCount{0};
247  int64_t procOffset{0};
248  };
249 
250  struct EdgeSet
251  {
252  EdgeSet() = default;
253  EdgeSet(const EdgeSet &other) = default;
254  explicit EdgeSet(const Ioss::EdgeSet &other);
255  bool operator==(const EdgeSet & /*other*/) const;
256  bool operator!=(const EdgeSet &other) const { return !(*this == other); }
257 
258  std::string name{};
259  entity_id id{0};
260  int64_t entityCount{0};
261  int64_t attributeCount{0};
262  int64_t dfCount{0};
263  int64_t procOffset{0};
264  };
265 
266  struct FaceSet
267  {
268  FaceSet() = default;
269  FaceSet(const FaceSet &other) = default;
270  explicit FaceSet(const Ioss::FaceSet &other);
271  bool operator==(const FaceSet & /*other*/) const;
272  bool operator!=(const FaceSet &other) const { return !(*this == other); }
273 
274  std::string name{};
275  entity_id id{0};
276  int64_t entityCount{0};
277  int64_t attributeCount{0};
278  int64_t dfCount{0};
279  int64_t procOffset{0};
280  };
281 
282  struct ElemSet
283  {
284  ElemSet() = default;
285  ElemSet(const ElemSet &other) = default;
286  explicit ElemSet(const Ioss::ElementSet &other);
287  bool operator==(const ElemSet & /*other*/) const;
288  bool operator!=(const ElemSet &other) const { return !(*this == other); }
289 
290  std::string name{};
291  entity_id id{0};
292  int64_t entityCount{0};
293  int64_t attributeCount{0};
294  int64_t dfCount{0};
295  int64_t procOffset{0};
296  };
297 
298  struct SideSet
299  {
300  SideSet() = default;
301  explicit SideSet(const Ioss::SideBlock &other);
302  explicit SideSet(const Ioss::SideSet &other);
303  bool operator==(const SideSet & /*other*/) const;
304  bool operator!=(const SideSet &other) const { return !(*this == other); }
305 
306  std::string name{};
307  entity_id id{0};
308  int64_t entityCount{0};
309  int64_t dfCount{0};
310  int64_t procOffset{0};
311  int64_t dfProcOffset{0};
312  };
313 
315  {
316  CommunicationMap() = default;
317  CommunicationMap(entity_id the_id, int64_t count, char the_type)
318  : id(the_id), entityCount(count), type(the_type)
319  {
320  }
321  bool operator==(const CommunicationMap & /*other*/) const;
322  bool operator!=(const CommunicationMap &other) const { return !(*this == other); }
323  entity_id id{0};
324  int64_t entityCount{0};
325  char type{'U'}; // 'n' for node, 'e' for element
326  };
327 
329  {
330  CommunicationMetaData() = default;
331 
332  std::vector<CommunicationMap> nodeMap;
333  std::vector<CommunicationMap> elementMap;
334  int processorId{0};
336  int64_t globalNodes{0};
337  int64_t globalElements{0};
339  int64_t globalNodeSets{0};
340  int64_t globalSideSets{0};
341  int64_t nodesInternal{0};
342  int64_t nodesBorder{0};
343  int64_t nodesExternal{0};
344  int64_t elementsInternal{0};
345  int64_t elementsBorder{0};
346  bool outputNemesis{false};
347 
348  private:
350  };
351 
352  class Redefine
353  {
354  public:
355  explicit Redefine(int exoid);
356  Redefine(const Redefine &from) = delete;
357  Redefine &operator=(const Redefine &from) = delete;
358  ~Redefine();
359 
360  private:
362  };
363 
364  class Mesh
365  {
366  public:
367  Mesh() = default;
368 
369  Mesh(int dim, char *the_title, bool file_pp) : dimensionality(dim), file_per_processor(file_pp)
370  {
371  Ioss::Utils::copy_string(title, the_title);
372  }
373 
374  void populate(Ioss::Region *region);
375 
376  char title[MAX_LINE_LENGTH + 1]{};
378  bool file_per_processor{true};
379 
380  std::vector<NodeBlock> nodeblocks;
381  std::vector<EdgeBlock> edgeblocks;
382  std::vector<FaceBlock> faceblocks;
383  std::vector<ElemBlock> elemblocks;
384  std::vector<NodeSet> nodesets;
385  std::vector<EdgeSet> edgesets;
386  std::vector<FaceSet> facesets;
387  std::vector<ElemSet> elemsets;
388  std::vector<SideSet> sidesets;
390  };
391 
392  class Internals
393  {
394  public:
395  Internals(int exoid, int maximum_name_length, const Ioss::ParallelUtils &util);
396  Internals(const Internals &from) = delete;
397  Internals &operator=(const Internals &from) = delete;
398 
399  int initialize_state_file(Mesh &mesh, const ex_var_params &var_params,
400  const std::string &base_file_name);
401 
402  int write_meta_data(Mesh &mesh);
403 
404  /*! A restart file may contain an attribute which contains
405  * information about the processor count and current processor id
406  * * when the file was written. This code checks whether that
407  * information matches the current processor count and id. If it
408  * * exists, but doesn't match, a warning message is printed.
409  * Eventually, this will be used to determine whether certain
410  * decomposition-related data in the file is valid or has been
411  * invalidated by a join/re-spread to a different number of
412  * processors.
413  */
414 
415  private:
416  void get_global_counts(Mesh &mesh);
417 
418  int put_metadata(const Mesh &mesh, const CommunicationMetaData &comm);
419  int put_metadata(const std::vector<NodeBlock> &nodeblocks, bool count_only = false);
420  int put_metadata(const std::vector<EdgeBlock> &blocks, bool count_only = false);
421  int put_metadata(const std::vector<FaceBlock> &blocks, bool count_only = false);
422  int put_metadata(const std::vector<ElemBlock> &blocks, bool count_only = false);
423 
424  int put_metadata(const std::vector<NodeSet> &nodesets, bool count_only = false);
425  int put_metadata(const std::vector<EdgeSet> &edgesets, bool count_only = false);
426  int put_metadata(const std::vector<FaceSet> &facesets, bool count_only = false);
427  int put_metadata(const std::vector<ElemSet> &elemsets, bool count_only = false);
428 
429  int put_metadata(const std::vector<SideSet> &sidesets, bool count_only = false);
430 
432  int put_non_define_data(const std::vector<NodeBlock> &nodeblocks);
433  int put_non_define_data(const std::vector<EdgeBlock> &blocks);
434  int put_non_define_data(const std::vector<FaceBlock> &blocks);
435  int put_non_define_data(const std::vector<ElemBlock> &blocks);
436 
437  int put_non_define_data(const std::vector<NodeSet> &nodesets);
438  int put_non_define_data(const std::vector<EdgeSet> &edgesets);
439  int put_non_define_data(const std::vector<FaceSet> &facesets);
440  int put_non_define_data(const std::vector<ElemSet> &elemsets);
441 
442  int put_non_define_data(const std::vector<SideSet> &sidesets);
443 
444  int max_name_length() const { return maximumNameLength; }
445 
447  int nodeMapVarID[3];
449  int commIndexVar{0};
453  };
454 } // namespace Ioex
455 #endif /* IOSS_Ioex_Internals_h */
Ioex::CommunicationMap
Definition: Ioex_Internals.h:314
Ioex::CommunicationMetaData::globalNodes
int64_t globalNodes
Definition: Ioex_Internals.h:336
Ioex::CommunicationMap::operator==
bool operator==(const CommunicationMap &) const
Definition: Ioex_Internals.C:468
Ioex::FaceBlock::operator==
bool operator==(const FaceBlock &) const
Definition: Ioex_Internals.C:244
Ioex::Mesh::dimensionality
int dimensionality
Definition: Ioex_Internals.h:377
Ioex::EdgeSet::operator==
bool operator==(const EdgeSet &) const
Definition: Ioex_Internals.C:368
Ioex::Mesh::edgesets
std::vector< EdgeSet > edgesets
Definition: Ioex_Internals.h:385
Ioex::ElemSet::name
std::string name
Definition: Ioex_Internals.h:290
Ioex::NodeSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:243
Ioex::ElemSet::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:293
Ioex::ElemBlock::~ElemBlock
~ElemBlock()=default
Ioex::ElemBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:228
Ioex::SideSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:310
Ioex::EdgeBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:158
Ioex::SideSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:308
Ioex::CommunicationMetaData::nodesInternal
int64_t nodesInternal
Definition: Ioex_Internals.h:341
Ioex::NodeSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:247
Ioex::ElemBlock
Definition: Ioex_Internals.h:199
Ioex::ElemBlock::name
std::string name
Definition: Ioex_Internals.h:222
Ioex::ElemBlock::nodesPerEntity
int64_t nodesPerEntity
Definition: Ioex_Internals.h:225
Ioex::ElemBlock::offset_
int64_t offset_
Definition: Ioex_Internals.h:229
Ioss::Utils::copy_string
static void copy_string(char *dest, char const *source, size_t elements)
Definition: Ioss_Utils.C:1368
Ioex::NodeBlock::operator=
NodeBlock & operator=(const NodeBlock &other)
Definition: Ioex_Internals.C:150
Ioex::FaceBlock::operator!=
bool operator!=(const FaceBlock &other) const
Definition: Ioex_Internals.h:185
Ioex::Internals::operator=
Internals & operator=(const Internals &from)=delete
Ioex::SideSet::dfProcOffset
int64_t dfProcOffset
Definition: Ioex_Internals.h:311
Ioex::Redefine::operator=
Redefine & operator=(const Redefine &from)=delete
Ioex::FaceBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:194
Ioex::EdgeBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:155
Ioex::Internals::put_non_define_data
int put_non_define_data(const CommunicationMetaData &comm)
Definition: Ioex_Internals.C:2252
Ioex::Mesh::facesets
std::vector< FaceSet > facesets
Definition: Ioex_Internals.h:386
Ioex::FaceBlock::edgesPerEntity
int64_t edgesPerEntity
Definition: Ioex_Internals.h:192
Ioex::Mesh::sidesets
std::vector< SideSet > sidesets
Definition: Ioex_Internals.h:388
Ioex::FaceBlock::id
entity_id id
Definition: Ioex_Internals.h:189
Ioex::NodeSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:246
Ioex::Internals::write_meta_data
int write_meta_data(Mesh &mesh)
Definition: Ioex_Internals.C:852
Ioex::Mesh::comm
CommunicationMetaData comm
Definition: Ioex_Internals.h:389
Ioss::EdgeBlock
A collection of element edges with the same topology.
Definition: Ioss_EdgeBlock.h:53
Ioex::Redefine::exodusFilePtr
int exodusFilePtr
Definition: Ioex_Internals.h:361
Ioex::Mesh::Mesh
Mesh()=default
Ioex::EdgeBlock::operator==
bool operator==(const EdgeBlock &) const
Definition: Ioex_Internals.C:195
Ioss
The main namespace for the Ioss library.
Definition: Ioad_DatabaseIO.C:66
Ioex::CommunicationMetaData::processorId
int processorId
Definition: Ioex_Internals.h:334
Ioex::CommunicationMetaData
Definition: Ioex_Internals.h:328
Ioex::CommunicationMetaData::nodeMap
std::vector< CommunicationMap > nodeMap
Definition: Ioex_Internals.h:332
Ioex::CommunicationMetaData::nodesExternal
int64_t nodesExternal
Definition: Ioex_Internals.h:343
Ioex::Internals::parallelUtil
Ioss::ParallelUtils parallelUtil
Definition: Ioex_Internals.h:452
Ioex::SideSet::name
std::string name
Definition: Ioex_Internals.h:306
Ioss::Region
A grouping entity that contains other grouping entities.
Definition: Ioss_Region.h:98
Ioex::ElemBlock::ElemBlock
ElemBlock(const ElemBlock &other)
Definition: Ioex_Internals.h:203
Ioex::NodeSet::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:245
Ioex::CommunicationMetaData::CommunicationMetaData
CommunicationMetaData()=default
Ioss::NodeSet
A collection of nodes.
Definition: Ioss_NodeSet.h:53
Ioex::SideSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:309
Ioex::EdgeBlock::~EdgeBlock
~EdgeBlock()=default
Ioex::CommunicationMap::id
entity_id id
Definition: Ioex_Internals.h:323
Ioex::NodeBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:128
Ioex::Internals::maximumNameLength
int maximumNameLength
Definition: Ioex_Internals.h:451
Ioex::EdgeBlock::operator=
EdgeBlock & operator=(const EdgeBlock &other)
Definition: Ioex_Internals.C:183
Ioss::FaceSet
A collection of element faces.
Definition: Ioss_FaceSet.h:54
Ioex::Internals::max_name_length
int max_name_length() const
Definition: Ioex_Internals.h:444
Ioex::Mesh::faceblocks
std::vector< FaceBlock > faceblocks
Definition: Ioex_Internals.h:382
Ioex::Mesh::file_per_processor
bool file_per_processor
Definition: Ioex_Internals.h:378
Ioex::FaceSet::operator==
bool operator==(const FaceSet &) const
Definition: Ioex_Internals.C:390
Ioex::ElemSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:294
Ioex::Internals::initialize_state_file
int initialize_state_file(Mesh &mesh, const ex_var_params &var_params, const std::string &base_file_name)
Definition: Ioex_Internals.C:479
Ioex::Mesh::populate
void populate(Ioss::Region *region)
Definition: Ioex_Internals.C:770
Ioex::Mesh::edgeblocks
std::vector< EdgeBlock > edgeblocks
Definition: Ioex_Internals.h:381
Ioex::CommunicationMetaData::processorCount
int processorCount
Definition: Ioex_Internals.h:335
Ioss::EdgeSet
A collection of element edges.
Definition: Ioss_EdgeSet.h:54
Ioss::ElementSet
A collection of elements.
Definition: Ioss_ElementSet.h:54
Ioss_ParallelUtils.h
Ioex::Internals::exodusFilePtr
int exodusFilePtr
Definition: Ioex_Internals.h:446
Ioex::Redefine::Redefine
Redefine(int exoid)
Definition: Ioex_Internals.C:94
Ioex::ElemBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:221
Ioex::EdgeBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:160
entity_id
int64_t entity_id
Definition: Ioex_Internals.h:74
Ioex::NodeSet::NodeSet
NodeSet()=default
Ioex::CommunicationMetaData::elementMap
std::vector< CommunicationMap > elementMap
Definition: Ioex_Internals.h:333
Ioex::EdgeBlock::operator!=
bool operator!=(const EdgeBlock &other) const
Definition: Ioex_Internals.h:153
Ioex::EdgeBlock::EdgeBlock
EdgeBlock()
Definition: Ioex_Internals.h:136
Ioex::Internals::elemCommIndexVar
int elemCommIndexVar
Definition: Ioex_Internals.h:450
Ioex::NodeSet::operator!=
bool operator!=(const NodeSet &other) const
Definition: Ioex_Internals.h:239
Ioex::EdgeSet::name
std::string name
Definition: Ioex_Internals.h:258
Ioex::Internals::elementMapVarID
int elementMapVarID[2]
Definition: Ioex_Internals.h:448
Ioex::ElemSet
Definition: Ioex_Internals.h:282
Ioss::FaceBlock
A collection of element faces with the same topology.
Definition: Ioss_FaceBlock.h:53
Ioex::FaceBlock::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:193
Ioex::NodeBlock::localOwnedCount
int64_t localOwnedCount
Definition: Ioex_Internals.h:127
Ioex::Internals::nodeMapVarID
int nodeMapVarID[3]
Definition: Ioex_Internals.h:447
Ioex::Redefine
Definition: Ioex_Internals.h:352
Ioex
A namespace for the exodus database format.
Definition: Ioex_IOFactory.C:62
Ioex::NodeSet::localOwnedCount
int64_t localOwnedCount
Definition: Ioex_Internals.h:244
Ioex::NodeBlock
Definition: Ioex_Internals.h:111
Ioex::FaceSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:278
Ioex::CommunicationMetaData::globalNodeSets
int64_t globalNodeSets
Definition: Ioex_Internals.h:339
Ioex::CommunicationMap::operator!=
bool operator!=(const CommunicationMap &other) const
Definition: Ioex_Internals.h:322
Ioex::EdgeBlock::nodesPerEntity
int64_t nodesPerEntity
Definition: Ioex_Internals.h:159
Ioss::SideBlock
A collection of element sides having the same topology.
Definition: Ioss_SideBlock.h:59
Ioex::SideSet::operator==
bool operator==(const SideSet &) const
Definition: Ioex_Internals.C:462
Ioex::ElemBlock::facesPerEntity
int64_t facesPerEntity
Definition: Ioex_Internals.h:227
Ioex::Mesh::nodesets
std::vector< NodeSet > nodesets
Definition: Ioex_Internals.h:384
Ioex::FaceBlock::FaceBlock
FaceBlock(const FaceBlock &other)
Definition: Ioex_Internals.h:170
Ioex::Redefine::~Redefine
~Redefine()
Definition: Ioex_Internals.C:107
Ioex::ElemBlock::id
entity_id id
Definition: Ioex_Internals.h:223
Ioex::CommunicationMetaData::elementsInternal
int64_t elementsInternal
Definition: Ioex_Internals.h:344
Ioex::ElemBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:224
Ioex::EdgeBlock::EdgeBlock
EdgeBlock(const EdgeBlock &other)
Definition: Ioex_Internals.h:138
Ioex::EdgeSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:263
Ioex::ElemSet::operator==
bool operator==(const ElemSet &) const
Definition: Ioex_Internals.C:412
Ioex::Mesh::Mesh
Mesh(int dim, char *the_title, bool file_pp)
Definition: Ioex_Internals.h:369
Ioex::ElemSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:295
Ioex::FaceBlock::operator=
FaceBlock & operator=(const FaceBlock &other)
Definition: Ioex_Internals.C:231
Ioex::EdgeSet
Definition: Ioex_Internals.h:250
Ioex::EdgeBlock::name
std::string name
Definition: Ioex_Internals.h:156
Ioex::EdgeSet::dfCount
int64_t dfCount
Definition: Ioex_Internals.h:262
Ioex::FaceBlock
Definition: Ioex_Internals.h:166
Ioex::ElemSet::operator!=
bool operator!=(const ElemSet &other) const
Definition: Ioex_Internals.h:288
Ioex::ElemBlock::edgesPerEntity
int64_t edgesPerEntity
Definition: Ioex_Internals.h:226
Ioss::ElementBlock
A collection of elements having the same topology.
Definition: Ioss_ElementBlock.h:48
Ioex::NodeBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:129
Ioex::NodeBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:126
Ioex::Mesh::elemsets
std::vector< ElemSet > elemsets
Definition: Ioex_Internals.h:387
Ioex::CommunicationMap::CommunicationMap
CommunicationMap()=default
Ioex::CommunicationMap::type
char type
Definition: Ioex_Internals.h:325
Ioex::FaceSet::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:279
Ioex::ElemSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:292
Ioex::EdgeSet::EdgeSet
EdgeSet()=default
Ioex::FaceSet::FaceSet
FaceSet()=default
Ioex::NodeSet::name
std::string name
Definition: Ioex_Internals.h:241
Ioex::SideSet
Definition: Ioex_Internals.h:298
Ioex::EdgeBlock
Definition: Ioex_Internals.h:134
Ioex::NodeBlock::name
std::string name
Definition: Ioex_Internals.h:124
Ioex::CommunicationMap::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:324
Ioex::FaceSet::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:277
Ioss::ParallelUtils
Definition: Ioss_ParallelUtils.h:49
Ioex::NodeBlock::NodeBlock
NodeBlock()=default
Ioex::CommunicationMetaData::nodesBorder
int64_t nodesBorder
Definition: Ioex_Internals.h:342
Ioex::Mesh
Definition: Ioex_Internals.h:364
Ioex::CommunicationMetaData::globalElementBlocks
int64_t globalElementBlocks
Definition: Ioex_Internals.h:338
Ioex::EdgeSet::operator!=
bool operator!=(const EdgeSet &other) const
Definition: Ioex_Internals.h:256
Ioex::Internals
Definition: Ioex_Internals.h:392
Ioex::FaceSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:276
Ioex::FaceBlock::nodesPerEntity
int64_t nodesPerEntity
Definition: Ioex_Internals.h:191
Ioex::EdgeSet::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:260
Ioex::Internals::get_global_counts
void get_global_counts(Mesh &mesh)
Definition: Ioex_Internals.C:968
Ioex::ElemBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:230
Ioex::Internals::commIndexVar
int commIndexVar
Definition: Ioex_Internals.h:449
Ioss::NodeBlock
A collection of all nodes in the region.
Definition: Ioss_NodeBlock.h:53
Ioex::CommunicationMetaData::elementsBorder
int64_t elementsBorder
Definition: Ioex_Internals.h:345
Ioex::SideSet::operator!=
bool operator!=(const SideSet &other) const
Definition: Ioex_Internals.h:304
Ioex::ElemBlock::operator==
bool operator==(const ElemBlock &) const
Definition: Ioex_Internals.C:313
Ioex::CommunicationMetaData::globalSideSets
int64_t globalSideSets
Definition: Ioex_Internals.h:340
Ioex::FaceBlock::FaceBlock
FaceBlock()
Definition: Ioex_Internals.h:168
Ioex::FaceSet
Definition: Ioex_Internals.h:266
Ioex::Mesh::title
char title[MAX_LINE_LENGTH+1]
Definition: Ioex_Internals.h:376
Ioex::FaceBlock::entityCount
int64_t entityCount
Definition: Ioex_Internals.h:190
Ioex::CommunicationMap::CommunicationMap
CommunicationMap(entity_id the_id, int64_t count, char the_type)
Definition: Ioex_Internals.h:317
Ioex::NodeBlock::operator==
bool operator==(const NodeBlock &) const
Ioex::Internals::put_metadata
int put_metadata(const Mesh &mesh, const CommunicationMetaData &comm)
Definition: Ioex_Internals.C:1081
Ioex::SideSet::SideSet
SideSet()=default
Ioex::Mesh::elemblocks
std::vector< ElemBlock > elemblocks
Definition: Ioex_Internals.h:383
Ioex::ElemBlock::operator!=
bool operator!=(const ElemBlock &other) const
Definition: Ioex_Internals.h:219
Ioex::FaceBlock::elType
char elType[MAX_STR_LENGTH+1]
Definition: Ioex_Internals.h:187
Ioex::NodeSet::operator==
bool operator==(const NodeSet &) const
Definition: Ioex_Internals.C:346
Ioex::FaceBlock::name
std::string name
Definition: Ioex_Internals.h:188
Ioex::EdgeSet::attributeCount
int64_t attributeCount
Definition: Ioex_Internals.h:261
Ioss::SideSet
A collection of element sides.
Definition: Ioss_SideSet.h:53
Ioex::FaceBlock::~FaceBlock
~FaceBlock()=default
Ioex::CommunicationMetaData::globalElements
int64_t globalElements
Definition: Ioex_Internals.h:337
Ioex::CommunicationMetaData::outputNemesis
bool outputNemesis
Definition: Ioex_Internals.h:346
Ioex::Mesh::nodeblocks
std::vector< NodeBlock > nodeblocks
Definition: Ioex_Internals.h:380
Ioex::FaceSet::name
std::string name
Definition: Ioex_Internals.h:274
Ioex::ElemBlock::ElemBlock
ElemBlock()
Definition: Ioex_Internals.h:201
Ioex::ElemSet::ElemSet
ElemSet()=default
Ioex::NodeBlock::~NodeBlock
~NodeBlock()=default
Ioex::NodeBlock::operator!=
bool operator!=(const NodeBlock &other) const
Definition: Ioex_Internals.h:122
Ioex::FaceSet::operator!=
bool operator!=(const FaceSet &other) const
Definition: Ioex_Internals.h:272
Ioex::NodeSet
Definition: Ioex_Internals.h:233
Ioex::EdgeBlock::id
entity_id id
Definition: Ioex_Internals.h:157
Ioex::EdgeBlock::procOffset
int64_t procOffset
Definition: Ioex_Internals.h:161
Ioex::Internals::Internals
Internals(int exoid, int maximum_name_length, const Ioss::ParallelUtils &util)
Definition: Ioex_Internals.C:473
Ioex::ElemBlock::operator=
ElemBlock & operator=(const ElemBlock &other)
Definition: Ioex_Internals.C:298