20#ifndef LIBMESH_CHECKPOINT_IO_H
21#define LIBMESH_CHECKPOINT_IO_H
25#include "libmesh/compare_elems_by_level.h"
26#include "libmesh/mesh_input.h"
27#include "libmesh/mesh_output.h"
28#include "libmesh/mesh_communication.h"
29#include "libmesh/parallel_object.h"
103 virtual void read (
const std::string & input_name)
override;
118 virtual void write (
const std::string & name)
override;
225 const std::set<const Elem *, CompareElemIdsByLevel> & elements)
const;
231 const std::set<const Elem *, CompareElemIdsByLevel> & elements)
const;
243 const std::set<const Elem *, CompareElemIdsByLevel> & elements,
244 const std::vector<std::tuple<dof_id_type, unsigned short int, boundary_id_type>> & bc_triples)
const;
251 const std::vector<std::tuple<dof_id_type, boundary_id_type>> & bc_tuples)
const;
272 template <
typename file_
id_type>
273 file_id_type
read_header(
const std::string & name);
278 template <
typename file_
id_type>
284 template <
typename file_
id_type>
290 template <
typename file_
id_type>
300 template <
typename file_
id_type>
306 template <
typename file_
id_type>
312 template <
typename file_
id_type>
318 template <
typename file_
id_type>
324 template <
typename file_
id_type>
332 template <
typename file_
id_type>
335 std::vector<file_id_type> & pair_ids,
336 std::vector<Real> & translations);
341 template <
typename file_
id_type>
344 std::vector<std::string> & node_integer_names,
345 std::vector<std::string> & elem_integer_names);
The BoundaryInfo class contains information relevant to boundary conditions including storing faces,...
The CheckpointIO class can be used to write simplified restart files that can be used to restart simu...
void read_nodes(Xdr &io)
Read the nodal locations for a parallel, distributed mesh.
processor_id_type _my_n_processors
void write_bc_names(Xdr &io, const BoundaryInfo &info, bool is_sideset) const
Write boundary names information (sideset and nodeset)
largest_id_type xdr_id_type
file_id_type read_header(const std::string &name)
Read header data on processor 0, then broadcast.
void write_nodesets(Xdr &io, const connected_node_set_type &nodeset, const std::vector< std::tuple< dof_id_type, boundary_id_type > > &bc_tuples) const
Write the nodal boundary conditions for part of a mesh.
void read_subdomain_names(Xdr &io)
Read subdomain name information.
processor_id_type select_split_config(const std::string &input_name, header_id_type &data_size)
void write_connectivity(Xdr &io, const std::set< const Elem *, CompareElemIdsByLevel > &elements) const
Write the connectivity for part of a mesh.
bool version_at_least_1_6() const
virtual ~CheckpointIO()
Destructor.
void read_disjoint_neighbor_boundary_pairs(Xdr &io, std::vector< file_id_type > &pair_ids, std::vector< Real > &translations)
Read disjoint neighbor boundary pairs: the two boundary ids of each pair, and the LIBMESH_DIM transla...
void write_subdomain_names(Xdr &io) const
Write subdomain name information.
std::vector< processor_id_type > & current_processor_ids()
void read_connectivity(Xdr &io)
Read the connectivity for a parallel, distributed mesh.
void write_nodes(Xdr &io, const connected_node_set_type &nodeset) const
Write the nodal locations for part of a mesh.
processor_id_type & current_n_processors()
void read_bcs(Xdr &io)
Read the boundary conditions for a parallel, distributed mesh.
void read_remote_elem(Xdr &io, bool expect_all_remote)
Read the remote_elem neighbor and child links for a parallel, distributed mesh.
void read_bc_names(Xdr &io, BoundaryInfo &info, bool is_sideset)
Read boundary names information (sideset and nodeset)
std::vector< processor_id_type > _my_processor_ids
void write_remote_elem(Xdr &io, const std::set< const Elem *, CompareElemIdsByLevel > &elements) const
Write the remote_elem neighbor and child links for part of a mesh.
void read_integers_names(Xdr &io, std::vector< std::string > &node_integer_names, std::vector< std::string > &elem_integer_names)
Read extra integers names information.
void read_nodesets(Xdr &io)
Read the nodeset conditions for a parallel, distributed mesh.
const std::vector< processor_id_type > & current_processor_ids() const
Get/Set the processor id or processor ids to use.
virtual void read(const std::string &input_name) override
This method implements reading a mesh from a specified file.
bool binary() const
Get/Set the flag indicating if we should read/write binary.
const processor_id_type & current_n_processors() const
Get/Set the n_processors to use.
static void cleanup(const std::string &input_name, processor_id_type n_procs)
Used to remove a checkpoint directory and its corresponding files.
const std::string & version() const
Get/Set the version string.
virtual void write(const std::string &name) override
This method implements writing a mesh to a specified file.
void read_subfile(Xdr &io, bool expect_all_remote)
Read a non-header file.
void write_bcs(Xdr &io, const std::set< const Elem *, CompareElemIdsByLevel > &elements, const std::vector< std::tuple< dof_id_type, unsigned short int, boundary_id_type > > &bc_triples) const
Write the side boundary conditions for part of a mesh.
bool parallel() const
Get/Set the flag indicating if we should read/write binary.
bool version_at_least_1_7() const
void write_disjoint_neighbor_boundary_pairs(Xdr &io) const
Write disjoint neighbor boundary pairs.
bool version_at_least_1_5() const
unsigned int n_active_levels_in(MeshBase::const_element_iterator begin, MeshBase::const_element_iterator end) const
This is the MeshBase class.
This class defines an abstract interface for Mesh output.
An object whose state is distributed along a set of processors.
This class implements a C++ interface to the XDR (eXternal Data Representation) format.
The libMesh namespace provides an interface to certain functionality in the library.
std::unique_ptr< CheckpointIO > split_mesh(MeshBase &mesh, processor_id_type nsplits)
split_mesh takes the given initialized/opened mesh and partitions it into nsplits pieces or chunks.
std::set< const Node * > connected_node_set_type
uint8_t processor_id_type
The definition of the const_element_iterator struct.