libMesh
nemesis_io_helper.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2019 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 #ifndef LIBMESH_NEMESIS_IO_HELPER_H
19 #define LIBMESH_NEMESIS_IO_HELPER_H
20 
21 #include "libmesh/libmesh_config.h"
22 
23 #if defined(LIBMESH_HAVE_NEMESIS_API) && defined(LIBMESH_HAVE_EXODUS_API)
24 
25 // Local headers
26 #include "libmesh/exodusII_io_helper.h"
27 
28 // C++ headers
29 #include <set>
30 #include <vector>
31 
32 namespace libMesh
33 {
34 
35 // Forward declarations
36 class EquationSystems;
37 template <typename T> class NumericVector;
38 
39 // The Nemesis API header file. Should already be
40 // correctly extern C'd but it doesn't hurt :)
41 namespace Nemesis {
42 extern "C" {
43  // this include guard gets set by exodus, but we included it
44  // in a namespace, so nemesis will not properly resolve e.g.
45  // ex_entity_id in the global namespace. undefine the guard
46  // to get ne_nemesisI.h to properly include the typedefs
47 # ifdef EXODUS_II_HDR
48 # undef EXODUS_II_HDR
49 # endif
50 # include "ne_nemesisI.h"
51 }
52 }
53 
54 
66 {
67 public:
71  explicit
72  Nemesis_IO_Helper(const ParallelObject & parent,
73  bool verbose=false, bool single_precision=false);
74 
78  virtual ~Nemesis_IO_Helper();
79 
93  void get_init_global();
94 
99  void get_ss_param_global();
100  void get_ns_param_global();
101  void get_eb_info_global();
102  void get_init_info();
103  void get_loadbal_param();
104  void get_elem_map();
105  void get_node_map();
106  void get_cmap_params();
107  void get_node_cmap();
108  void get_elem_cmap();
109 
120  void put_init_info(unsigned num_proc,
121  unsigned num_proc_in_file,
122  const char * ftype);
123 
134  unsigned num_elem_blks_global,
135  unsigned num_node_sets_global,
136  unsigned num_side_sets_global);
137 
145  void put_eb_info_global(std::vector<int> & global_elem_blk_ids,
146  std::vector<int> & global_elem_blk_cnts);
147 
156  void put_ns_param_global(std::vector<int> & global_nodeset_ids,
157  std::vector<int> & num_global_node_counts,
158  std::vector<int> & num_global_node_df_counts);
159 
168  void put_ss_param_global(std::vector<int> & global_sideset_ids,
169  std::vector<int> & num_global_side_counts,
170  std::vector<int> & num_global_side_df_counts);
171 
172 
173 
187  unsigned num_border_nodes,
188  unsigned num_external_nodes,
189  unsigned num_internal_elems,
190  unsigned num_border_elems,
191  unsigned num_node_cmaps,
192  unsigned num_elem_cmaps);
193 
201  void put_cmap_params(std::vector<int> & node_cmap_ids,
202  std::vector<int> & node_cmap_node_cnts,
203  std::vector<int> & elem_cmap_ids,
204  std::vector<int> & elem_cmap_elem_cnts);
205 
222  void put_node_cmap(std::vector<std::vector<int>> & node_cmap_node_ids,
223  std::vector<std::vector<int>> & node_cmap_proc_ids);
224 
230  void put_node_map(std::vector<int> & node_mapi,
231  std::vector<int> & node_mapb,
232  std::vector<int> & node_mape);
233 
243  void put_elem_cmap(std::vector<std::vector<int>> & elem_cmap_elem_ids,
244  std::vector<std::vector<int>> & elem_cmap_side_ids,
245  std::vector<std::vector<int>> & elem_cmap_proc_ids);
246 
252  void put_elem_map(std::vector<int> & elem_mapi,
253  std::vector<int> & elem_mapb);
254 
259  void put_n_coord(unsigned start_node_num,
260  unsigned num_nodes,
261  std::vector<Real> & x_coor,
262  std::vector<Real> & y_coor,
263  std::vector<Real> & z_coor);
264 
265 
270  virtual void write_nodal_coordinates(const MeshBase & mesh, bool use_discontinuous=false) override;
271 
275  virtual void write_elements(const MeshBase & mesh, bool use_discontinuous=false) override;
276 
280  virtual void write_sidesets(const MeshBase & mesh) override;
281 
285  virtual void write_nodesets(const MeshBase & mesh) override;
286 
291  virtual void create(std::string filename) override;
292 
297  virtual void initialize(std::string title, const MeshBase & mesh, bool use_discontinuous=false) override;
298 
314  void write_nodal_solution(const NumericVector<Number> & parallel_soln,
315  const std::vector<std::string> & names,
316  int timestep,
317  const std::vector<std::string> & output_names);
318 
322  void write_nodal_solution(const EquationSystems & es,
323  const std::vector<std::pair<unsigned int, unsigned int>> & var_nums,
324  int timestep,
325  const std::vector<std::string> & output_names);
326 
330  void write_nodal_solution(const std::vector<Number> & values,
331  const std::vector<std::string> & names,
332  int timestep);
333 
338  virtual
339  void initialize_element_variables(std::vector<std::string> names,
340  const std::vector<std::set<subdomain_id_type>> & vars_active_subdomains) override;
345  void write_element_values(const MeshBase & mesh,
346  const EquationSystems & es,
347  const std::vector<std::pair<unsigned int, unsigned int>> &var_nums,
348  int timestep,
349  const std::vector<std::set<subdomain_id_type>> & vars_active_subdomains);
350 
355  std::string construct_nemesis_filename(const std::string & base_filename);
356 
366 
376 
381  int num_proc;
382 
389 
395  char ftype;
396 
404  std::vector<int> global_sideset_ids;
405  std::vector<int> num_global_side_counts;
406  std::vector<int> num_global_side_df_counts;
407 
408 
416  std::vector<int> global_nodeset_ids;
417  std::vector<int> num_global_node_counts;
418  std::vector<int> num_global_node_df_counts;
419 
420 
426  std::vector<int> global_elem_blk_ids;
427  std::vector<int> global_elem_blk_cnts;
428 
433 
437  std::map<subdomain_id_type, std::vector<dof_id_type>> subdomain_map;
438 
443  std::map<int, std::vector<int>> block_id_to_elem_connectivity;
444 
454 
461 
468 
474 
481 
488 
495 
496 
497 
503  std::vector<int> elem_mapi;
504 
510  std::vector<int> elem_mapb;
511 
512 
513 
519  std::vector<int> node_mapi;
520 
526  std::vector<int> node_mapb;
527 
533  std::vector<int> node_mape;
534 
535 
542  std::vector<int> node_cmap_ids;
543  std::vector<int> node_cmap_node_cnts;
544  std::vector<int> elem_cmap_ids;
545  std::vector<int> elem_cmap_elem_cnts;
546 
547 
556  std::vector<std::vector<int>> node_cmap_node_ids;
557  std::vector<std::vector<int>> node_cmap_proc_ids;
558 
559 
565  std::vector<std::vector<int>> elem_cmap_elem_ids;
566  std::vector<std::vector<int>> elem_cmap_side_ids;
567  std::vector<std::vector<int>> elem_cmap_proc_ids;
568 
569 
570 private:
575  std::map<subdomain_id_type, unsigned> local_subdomain_counts;
576 
581  std::set<unsigned> border_node_ids;
582 
588  std::map<unsigned, std::set<unsigned>> proc_nodes_touched_intersections;
589 
593  typedef std::map<unsigned, std::set<unsigned>>::iterator proc_nodes_touched_iterator;
594 
598  std::map<unsigned, std::set<std::pair<unsigned,unsigned>>> proc_border_elem_sets;
599 
603  typedef std::map<unsigned, std::set<std::pair<unsigned,unsigned>>>::iterator proc_border_elem_sets_iterator;
604 
608  std::set<unsigned> internal_node_ids;
609 
613  std::set<unsigned> internal_elem_ids;
614 
618  std::set<unsigned> border_elem_ids;
619 
624  void compute_num_global_elem_blocks(const MeshBase & pmesh);
625 
630  void compute_num_global_nodesets(const MeshBase & pmesh);
631 
636  void compute_num_global_sidesets(const MeshBase & pmesh);
637 
644  void build_element_and_node_maps(const MeshBase & pmesh);
645 
651  void compute_border_node_ids(const MeshBase & pmesh);
652 
658 
664 
670 
676  void compute_node_maps();
677 
683 
688  void compute_element_maps();
689 
695  void write_exodus_initialization_info(const MeshBase & pmesh,
696  const std::string & title);
697 };
698 
699 } // namespace libMesh
700 
701 #endif // #if defined(LIBMESH_HAVE_NEMESIS_API) && defined(LIBMESH_HAVE_EXODUS_API)
702 #endif // LIBMESH_NEMESIS_IO_HELPER_H
libMesh::Nemesis_IO_Helper::num_node_sets_global
int num_node_sets_global
Definition: nemesis_io_helper.h:374
libMesh::Nemesis_IO_Helper::get_init_info
void get_init_info()
Definition: nemesis_io_helper.C:208
libMesh::dof_id_type
uint8_t dof_id_type
Definition: id_types.h:67
libMesh::Nemesis_IO_Helper::num_internal_nodes
int num_internal_nodes
To be used with the Nemesis::ne_get_loadbal_param() routine.
Definition: nemesis_io_helper.h:453
libMesh::Nemesis_IO_Helper::get_cmap_params
void get_cmap_params()
Definition: nemesis_io_helper.C:325
libMesh::Nemesis_IO_Helper::num_side_sets_global
int num_side_sets_global
Definition: nemesis_io_helper.h:375
libMesh::Nemesis_IO_Helper::put_cmap_params
void put_cmap_params(std::vector< int > &node_cmap_ids, std::vector< int > &node_cmap_node_cnts, std::vector< int > &elem_cmap_ids, std::vector< int > &elem_cmap_elem_cnts)
Outputs initial information for communication maps.
Definition: nemesis_io_helper.C:576
libMesh::Nemesis_IO_Helper::node_cmap_node_cnts
std::vector< int > node_cmap_node_cnts
Definition: nemesis_io_helper.h:543
libMesh::Nemesis_IO_Helper::elem_cmap_proc_ids
std::vector< std::vector< int > > elem_cmap_proc_ids
Definition: nemesis_io_helper.h:567
libMesh::Nemesis_IO_Helper::write_elements
virtual void write_elements(const MeshBase &mesh, bool use_discontinuous=false) override
This function is specialized to write the connectivity.
Definition: nemesis_io_helper.C:2287
libMesh::Nemesis_IO_Helper::num_proc
int num_proc
The number of processors for which the NEMESIS I file was created.
Definition: nemesis_io_helper.h:381
libMesh::Nemesis_IO_Helper::compute_num_global_sidesets
void compute_num_global_sidesets(const MeshBase &pmesh)
This function uses global communication routines to determine the number of sidesets across the entir...
Definition: nemesis_io_helper.C:1363
libMesh::Nemesis_IO_Helper::elem_cmap_elem_cnts
std::vector< int > elem_cmap_elem_cnts
Definition: nemesis_io_helper.h:545
libMesh::Nemesis_IO_Helper::elem_cmap_side_ids
std::vector< std::vector< int > > elem_cmap_side_ids
Definition: nemesis_io_helper.h:566
libMesh::Nemesis_IO_Helper::~Nemesis_IO_Helper
virtual ~Nemesis_IO_Helper()
Destructor.
Definition: nemesis_io_helper.C:73
libMesh::Nemesis_IO_Helper::compute_element_maps
void compute_element_maps()
This function computes element maps (really just packs vectors) which map the elements to internal an...
Definition: nemesis_io_helper.C:970
libMesh::Nemesis_IO_Helper::initialize_element_variables
virtual void initialize_element_variables(std::vector< std::string > names, const std::vector< std::set< subdomain_id_type >> &vars_active_subdomains) override
Override the Exodus Helper's implementation of this function so that it works correctly in parallel.
Definition: nemesis_io_helper.C:2548
libMesh::Nemesis_IO_Helper::num_elems_global
int num_elems_global
Definition: nemesis_io_helper.h:372
libMesh::Nemesis_IO_Helper::Nemesis_IO_Helper
Nemesis_IO_Helper(const ParallelObject &parent, bool verbose=false, bool single_precision=false)
Constructor.
Definition: nemesis_io_helper.C:48
libMesh::Nemesis_IO_Helper::global_sideset_ids
std::vector< int > global_sideset_ids
Containers for reading global sideset (boundary conditions) information.
Definition: nemesis_io_helper.h:404
libMesh::Nemesis_IO_Helper::put_elem_cmap
void put_elem_cmap(std::vector< std::vector< int >> &elem_cmap_elem_ids, std::vector< std::vector< int >> &elem_cmap_side_ids, std::vector< std::vector< int >> &elem_cmap_proc_ids)
Writes information about elemental communication map.
Definition: nemesis_io_helper.C:662
libMesh::Nemesis_IO_Helper::proc_nodes_touched_iterator
std::map< unsigned, std::set< unsigned > >::iterator proc_nodes_touched_iterator
Typedef for an iterator into the data structure above.
Definition: nemesis_io_helper.h:593
libMesh::Nemesis_IO_Helper::num_external_nodes
int num_external_nodes
The number of FEM nodes that reside on another processor but whose element partially resides on the c...
Definition: nemesis_io_helper.h:467
libMesh::Nemesis_IO_Helper::compute_border_node_ids
void compute_border_node_ids(const MeshBase &pmesh)
This function constructs the set of border node IDs present on the current mesh.
Definition: nemesis_io_helper.C:1814
libMesh::ExodusII_IO_Helper
This is the ExodusII_IO_Helper class.
Definition: exodusII_io_helper.h:80
libMesh::Nemesis_IO_Helper::create
virtual void create(std::string filename) override
This function is specialized from ExodusII_IO_Helper to create the nodal coordinates stored on the lo...
Definition: nemesis_io_helper.C:730
libMesh
The libMesh namespace provides an interface to certain functionality in the library.
Definition: factoryfunction.C:55
libMesh::Nemesis_IO_Helper::construct_nemesis_filename
std::string construct_nemesis_filename(const std::string &base_filename)
Given base_filename, foo.e, constructs the Nemesis filename foo.e.X.Y, where X=n.
Definition: nemesis_io_helper.C:2663
libMesh::Nemesis_IO_Helper::compute_num_global_nodesets
void compute_num_global_nodesets(const MeshBase &pmesh)
This function uses global communication routines to determine the number of nodesets across the entir...
Definition: nemesis_io_helper.C:1456
libMesh::Nemesis_IO_Helper::put_elem_map
void put_elem_map(std::vector< int > &elem_mapi, std::vector< int > &elem_mapb)
Outputs IDs of internal and border elements.
Definition: nemesis_io_helper.C:683
libMesh::Nemesis_IO_Helper::get_ss_param_global
void get_ss_param_global()
Fills: global_sideset_ids, num_global_side_counts, num_global_side_df_counts Call after: get_init_glo...
Definition: nemesis_io_helper.C:111
libMesh::Nemesis_IO_Helper::border_elem_ids
std::set< unsigned > border_elem_ids
A set of border elem IDs for this processor.
Definition: nemesis_io_helper.h:618
libMesh::Nemesis_IO_Helper::elem_mapb
std::vector< int > elem_mapb
Vector which stores border element IDs.
Definition: nemesis_io_helper.h:510
libMesh::Nemesis_IO_Helper::node_mapi
std::vector< int > node_mapi
Vector which stores internal node IDs.
Definition: nemesis_io_helper.h:519
libMesh::ExodusII_IO_Helper::num_nodes
int num_nodes
Definition: exodusII_io_helper.h:507
mesh
MeshBase & mesh
Definition: mesh_communication.C:1257
libMesh::Nemesis_IO_Helper::global_elem_blk_ids
std::vector< int > global_elem_blk_ids
Read the global element block IDs and counts.
Definition: nemesis_io_helper.h:426
libMesh::Nemesis_IO_Helper::num_border_nodes
int num_border_nodes
The number of FEM nodes local to a processor but residing in an element which also has FEM nodes on o...
Definition: nemesis_io_helper.h:460
libMesh::Nemesis_IO_Helper::put_node_map
void put_node_map(std::vector< int > &node_mapi, std::vector< int > &node_mapb, std::vector< int > &node_mape)
Outputs IDs of internal, border, and external nodes.
Definition: nemesis_io_helper.C:645
libMesh::Nemesis_IO_Helper::put_ns_param_global
void put_ns_param_global(std::vector< int > &global_nodeset_ids, std::vector< int > &num_global_node_counts, std::vector< int > &num_global_node_df_counts)
This function writes information about global node sets.
Definition: nemesis_io_helper.C:510
libMesh::Nemesis_IO_Helper::compute_communication_map_parameters
void compute_communication_map_parameters()
This function determines the communication map parameters which will eventually be written to file.
Definition: nemesis_io_helper.C:1147
libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes
void compute_internal_and_border_elems_and_internal_nodes(const MeshBase &pmesh)
This function constructs the set of border and internal element IDs and internal node IDs present on ...
Definition: nemesis_io_helper.C:1225
libMesh::Nemesis_IO_Helper::num_proc_in_file
int num_proc_in_file
The number of processors for which the NEMESIS I file stores information.
Definition: nemesis_io_helper.h:388
libMesh::Nemesis_IO_Helper::write_exodus_initialization_info
void write_exodus_initialization_info(const MeshBase &pmesh, const std::string &title)
This function writes exodus-specific initialization information.
Definition: nemesis_io_helper.C:933
libMesh::Nemesis_IO_Helper::num_global_node_counts
std::vector< int > num_global_node_counts
Definition: nemesis_io_helper.h:417
libMesh::Nemesis_IO_Helper::compute_elem_communication_maps
void compute_elem_communication_maps()
This function computes element communication maps (really just packs vectors) in preparation for writ...
Definition: nemesis_io_helper.C:995
libMesh::NumericVector< Number >
libMesh::Nemesis_IO_Helper::ftype
char ftype
The type of file to be written.
Definition: nemesis_io_helper.h:395
libMesh::Nemesis_IO_Helper::global_nodeset_ids
std::vector< int > global_nodeset_ids
Containers for reading global nodeset information.
Definition: nemesis_io_helper.h:416
libMesh::Nemesis_IO_Helper::elem_cmap_elem_ids
std::vector< std::vector< int > > elem_cmap_elem_ids
3 vectors of vectors for storing element communication IDs for this processor.
Definition: nemesis_io_helper.h:565
libMesh::Nemesis_IO_Helper::get_elem_map
void get_elem_map()
Definition: nemesis_io_helper.C:257
libMesh::MeshBase
This is the MeshBase class.
Definition: mesh_base.h:78
libMesh::Nemesis_IO_Helper
This is the Nemesis_IO_Helper class.
Definition: nemesis_io_helper.h:65
libMesh::Nemesis_IO_Helper::global_elem_blk_cnts
std::vector< int > global_elem_blk_cnts
Definition: nemesis_io_helper.h:427
libMesh::Nemesis_IO_Helper::initialize
virtual void initialize(std::string title, const MeshBase &mesh, bool use_discontinuous=false) override
Specialization of the initialize function from ExodusII_IO_Helper that also writes global initial dat...
Definition: nemesis_io_helper.C:766
libMesh::Nemesis_IO_Helper::num_elem_cmaps
int num_elem_cmaps
The number of elemental communication maps for this processor.
Definition: nemesis_io_helper.h:494
libMesh::Nemesis_IO_Helper::node_mape
std::vector< int > node_mape
Vector which stores external node IDs.
Definition: nemesis_io_helper.h:533
libMesh::Nemesis_IO_Helper::write_element_values
void write_element_values(const MeshBase &mesh, const EquationSystems &es, const std::vector< std::pair< unsigned int, unsigned int >> &var_nums, int timestep, const std::vector< std::set< subdomain_id_type >> &vars_active_subdomains)
Writes the vector of elemental variable values, one variable and one subdomain at a time.
Definition: nemesis_io_helper.C:2596
libMesh::Nemesis_IO_Helper::node_cmap_proc_ids
std::vector< std::vector< int > > node_cmap_proc_ids
Definition: nemesis_io_helper.h:557
libMesh::Nemesis_IO_Helper::proc_nodes_touched_intersections
std::map< unsigned, std::set< unsigned > > proc_nodes_touched_intersections
Another map to store sets of intersections with each other processor (other than ourself,...
Definition: nemesis_io_helper.h:588
libMesh::Nemesis_IO_Helper::internal_elem_ids
std::set< unsigned > internal_elem_ids
A set of internal elem IDs for this processor.
Definition: nemesis_io_helper.h:613
libMesh::ExodusII_IO_Helper::title
std::vector< char > title
Definition: exodusII_io_helper.h:611
libMesh::Nemesis_IO_Helper::put_node_cmap
void put_node_cmap(std::vector< std::vector< int >> &node_cmap_node_ids, std::vector< std::vector< int >> &node_cmap_proc_ids)
Outputs all of the nodal communication maps for this processor.
Definition: nemesis_io_helper.C:600
libMesh::Nemesis_IO_Helper::elem_mapi
std::vector< int > elem_mapi
Vector which stores internal element IDs.
Definition: nemesis_io_helper.h:503
libMesh::Nemesis_IO_Helper::put_ss_param_global
void put_ss_param_global(std::vector< int > &global_sideset_ids, std::vector< int > &num_global_side_counts, std::vector< int > &num_global_side_df_counts)
This function writes information about global side sets.
Definition: nemesis_io_helper.C:530
libMesh::Nemesis_IO_Helper::get_node_map
void get_node_map()
Definition: nemesis_io_helper.C:288
libMesh::Nemesis_IO_Helper::write_sidesets
virtual void write_sidesets(const MeshBase &mesh) override
Writes the sidesets for this processor.
Definition: nemesis_io_helper.C:2084
libMesh::Nemesis_IO_Helper::node_cmap_ids
std::vector< int > node_cmap_ids
Vectors for storing the communication map parameters.
Definition: nemesis_io_helper.h:542
libMesh::Nemesis_IO_Helper::compute_node_maps
void compute_node_maps()
Compute the node maps (really just pack vectors) which map the nodes to internal, border,...
Definition: nemesis_io_helper.C:1046
libMesh::Nemesis_IO_Helper::elem_cmap_ids
std::vector< int > elem_cmap_ids
Definition: nemesis_io_helper.h:544
libMesh::Nemesis_IO_Helper::put_n_coord
void put_n_coord(unsigned start_node_num, unsigned num_nodes, std::vector< Real > &x_coor, std::vector< Real > &y_coor, std::vector< Real > &z_coor)
Writes the specified number of coordinate values starting at the specified index.
Definition: nemesis_io_helper.C:700
libMesh::Nemesis_IO_Helper::num_nodes_global
int num_nodes_global
Global initial information.
Definition: nemesis_io_helper.h:371
libMesh::Nemesis_IO_Helper::get_eb_info_global
void get_eb_info_global()
Definition: nemesis_io_helper.C:179
libMesh::Nemesis_IO_Helper::num_elem_blks_global
int num_elem_blks_global
Definition: nemesis_io_helper.h:373
libMesh::Nemesis_IO_Helper::local_subdomain_counts
std::map< subdomain_id_type, unsigned > local_subdomain_counts
This map keeps track of the number of elements in each subdomain (block) for this processor.
Definition: nemesis_io_helper.h:575
libMesh::Nemesis_IO_Helper::node_mapb
std::vector< int > node_mapb
Vector which stores border node IDs.
Definition: nemesis_io_helper.h:526
libMesh::Nemesis_IO_Helper::nemesis_err_flag
int nemesis_err_flag
Member data.
Definition: nemesis_io_helper.h:365
libMesh::EquationSystems
This is the EquationSystems class.
Definition: equation_systems.h:74
libMesh::Nemesis_IO_Helper::proc_border_elem_sets
std::map< unsigned, std::set< std::pair< unsigned, unsigned > > > proc_border_elem_sets
Map between processor ID and (element,side) pairs bordering that processor ID.
Definition: nemesis_io_helper.h:598
libMesh::Nemesis_IO_Helper::nodes_attached_to_local_elems
std::set< int > nodes_attached_to_local_elems
libMesh numbered node ids attached to local elems.
Definition: nemesis_io_helper.h:432
libMesh::Nemesis_IO_Helper::get_ns_param_global
void get_ns_param_global()
Definition: nemesis_io_helper.C:147
libMesh::Nemesis_IO_Helper::border_node_ids
std::set< unsigned > border_node_ids
The set which will eventually contain the IDs of "border nodes".
Definition: nemesis_io_helper.h:581
libMesh::Nemesis_IO_Helper::put_init_info
void put_init_info(unsigned num_proc, unsigned num_proc_in_file, const char *ftype)
Writing functions.
Definition: nemesis_io_helper.C:461
libMesh::Nemesis_IO_Helper::proc_border_elem_sets_iterator
std::map< unsigned, std::set< std::pair< unsigned, unsigned > > >::iterator proc_border_elem_sets_iterator
Typedef for an iterator into the data structure above.
Definition: nemesis_io_helper.h:603
libMesh::Nemesis_IO_Helper::num_global_side_counts
std::vector< int > num_global_side_counts
Definition: nemesis_io_helper.h:405
libMesh::Nemesis_IO_Helper::num_node_cmaps
int num_node_cmaps
The number of nodal communication maps for this processor.
Definition: nemesis_io_helper.h:487
libMesh::Nemesis_IO_Helper::write_nodal_solution
void write_nodal_solution(const NumericVector< Number > &parallel_soln, const std::vector< std::string > &names, int timestep, const std::vector< std::string > &output_names)
Takes a parallel solution vector containing the node-major solution vector for all variables and outp...
Definition: nemesis_io_helper.C:2410
libMesh::Nemesis_IO_Helper::internal_node_ids
std::set< unsigned > internal_node_ids
A set of internal node IDs for this processor.
Definition: nemesis_io_helper.h:608
libMesh::ExodusII_IO_Helper::verbose
bool verbose
Definition: exodusII_io_helper.h:663
libMesh::Nemesis_IO_Helper::write_nodal_coordinates
virtual void write_nodal_coordinates(const MeshBase &mesh, bool use_discontinuous=false) override
This function is specialized from ExodusII_IO_Helper to write only the nodal coordinates stored on th...
Definition: nemesis_io_helper.C:2228
libMesh::Nemesis_IO_Helper::write_nodesets
virtual void write_nodesets(const MeshBase &mesh) override
Writes the nodesets for this processor.
Definition: nemesis_io_helper.C:1933
libMesh::Nemesis_IO_Helper::get_elem_cmap
void get_elem_cmap()
Definition: nemesis_io_helper.C:410
libMesh::Nemesis_IO_Helper::put_loadbal_param
void put_loadbal_param(unsigned num_internal_nodes, unsigned num_border_nodes, unsigned num_external_nodes, unsigned num_internal_elems, unsigned num_border_elems, unsigned num_node_cmaps, unsigned num_elem_cmaps)
Writes load balance parameters, some of which are described below: .) num_internal_nodes - nodes "who...
Definition: nemesis_io_helper.C:550
libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks
void compute_num_global_elem_blocks(const MeshBase &pmesh)
This function uses global communication routines to determine the number of element blocks across the...
Definition: nemesis_io_helper.C:1567
libMesh::Nemesis_IO_Helper::put_init_global
void put_init_global(dof_id_type num_nodes_global, dof_id_type num_elems_global, unsigned num_elem_blks_global, unsigned num_node_sets_global, unsigned num_side_sets_global)
Writes global information including: .) global number of nodes .) global number of elems ....
Definition: nemesis_io_helper.C:477
libMesh::Nemesis_IO_Helper::get_init_global
void get_init_global()
Reading functions.
Definition: nemesis_io_helper.C:88
libMesh::Nemesis_IO_Helper::num_internal_elems
int num_internal_elems
The number of internal FEM elements.
Definition: nemesis_io_helper.h:473
libMesh::Nemesis_IO_Helper::compute_node_communication_maps
void compute_node_communication_maps()
Compute the node communication maps (really just pack vectors) in preparation for writing them to fil...
Definition: nemesis_io_helper.C:1075
libMesh::Nemesis_IO_Helper::num_global_side_df_counts
std::vector< int > num_global_side_df_counts
Definition: nemesis_io_helper.h:406
libMesh::ParallelObject
An object whose state is distributed along a set of processors.
Definition: parallel_object.h:55
libMesh::Nemesis_IO_Helper::subdomain_map
std::map< subdomain_id_type, std::vector< dof_id_type > > subdomain_map
Map of subdomains to element numbers.
Definition: nemesis_io_helper.h:437
libMesh::Nemesis_IO_Helper::node_cmap_node_ids
std::vector< std::vector< int > > node_cmap_node_ids
2 vectors of vectors for storing the node communication IDs for this processor.
Definition: nemesis_io_helper.h:556
libMesh::Nemesis_IO_Helper::num_global_node_df_counts
std::vector< int > num_global_node_df_counts
Definition: nemesis_io_helper.h:418
libMesh::Nemesis_IO_Helper::block_id_to_elem_connectivity
std::map< int, std::vector< int > > block_id_to_elem_connectivity
This is the block connectivity, i.e.
Definition: nemesis_io_helper.h:443
libMesh::Nemesis_IO_Helper::get_node_cmap
void get_node_cmap()
Definition: nemesis_io_helper.C:368
libMesh::Nemesis_IO_Helper::put_eb_info_global
void put_eb_info_global(std::vector< int > &global_elem_blk_ids, std::vector< int > &global_elem_blk_cnts)
Writes global block information to the file .) global_elem_blk_ids - list of block IDs for all blocks...
Definition: nemesis_io_helper.C:496
libMesh::Nemesis_IO_Helper::build_element_and_node_maps
void build_element_and_node_maps(const MeshBase &pmesh)
This function builds the libmesh -> exodus and exodus -> libmesh node and element maps.
Definition: nemesis_io_helper.C:1667
libMesh::Nemesis_IO_Helper::get_loadbal_param
void get_loadbal_param()
Definition: nemesis_io_helper.C:227
libMesh::Nemesis_IO_Helper::num_border_elems
int num_border_elems
The number of border FEM elements.
Definition: nemesis_io_helper.h:480