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;
217 const std::set<const Elem *, CompareElemIdsByLevel> & elements)
const;
223 const std::set<const Elem *, CompareElemIdsByLevel> & elements)
const;
235 const std::set<const Elem *, CompareElemIdsByLevel> & elements,
236 const std::vector<std::tuple<dof_id_type, unsigned short int, boundary_id_type>> & bc_triples)
const;
243 const std::vector<std::tuple<dof_id_type, boundary_id_type>> & bc_tuples)
const;
259 template <
typename file_
id_type>
260 file_id_type
read_header(
const std::string & name);
265 template <
typename file_
id_type>
271 template <
typename file_
id_type>
277 template <
typename file_
id_type>
287 template <
typename file_
id_type>
293 template <
typename file_
id_type>
299 template <
typename file_
id_type>
305 template <
typename file_
id_type>
311 template <
typename file_
id_type>
317 template <
typename file_
id_type>
320 std::vector<std::string> & node_integer_names,
321 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 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_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.