20 #ifndef LIBMESH_MESH_COMMUNICATION_H 21 #define LIBMESH_MESH_COMMUNICATION_H 24 #include "libmesh/compare_elems_by_level.h" 25 #include "libmesh/libmesh_common.h" 26 #include "libmesh/mesh_base.h" 31 #include <unordered_map> 39 class DistributedMesh;
105 bool newly_coarsened_only =
false)
const;
179 template <
typename ForwardIterator>
181 const ForwardIterator &,
182 const ForwardIterator &,
183 std::unordered_map<dof_id_type, dof_id_type> &)
const;
189 template <
typename ForwardIterator>
192 const ForwardIterator &,
193 const ForwardIterator &,
194 std::vector<dof_id_type> &)
const;
201 #ifdef LIBMESH_ENABLE_AMR 206 #endif // LIBMESH_ENABLE_AMR 288 #ifdef LIBMESH_ENABLE_DEPRECATED 291 #endif // LIBMESH_ENABLE_DEPRECATED 311 std::pair<connected_elem_set_type, connected_node_set_type>
324 #endif // LIBMESH_MESH_COMMUNICATION_H void find_global_indices(const Parallel::Communicator &communicator, const libMesh::BoundingBox &, const ForwardIterator &, const ForwardIterator &, std::vector< dof_id_type > &) const
This method determines a globally unique, partition-agnostic index for each object in the input range...
void make_node_unique_ids_parallel_consistent(MeshBase &)
Assuming all unique_ids on local nodes are globally unique, and assuming all processor ids are parall...
MeshCommunication()=default
Constructor.
void reconnect_nodes(connected_elem_set_type &connected_elements, connected_node_set_type &connected_nodes)
The definition of the const_element_iterator struct.
void make_elems_parallel_consistent(MeshBase &)
Copy ids of ghost elements from their local processors.
void clear()
Clears all data structures and resets to a pristine state.
void assign_global_indices(MeshBase &) const
This method assigns globally unique, partition-agnostic indices to the nodes and elements in the mesh...
void make_node_bcids_parallel_consistent(MeshBase &)
Assuming all processor ids are parallel consistent, this function makes all ghost boundary ids on nod...
The libMesh namespace provides an interface to certain functionality in the library.
uint8_t processor_id_type
This is the MeshBase class.
void check_for_duplicate_global_indices(MeshBase &) const
Throw an error if we have any index clashes in the numbering used by assign_global_indices.
void make_new_node_proc_ids_parallel_consistent(MeshBase &)
Assuming all processor ids on nodes touching local elements are parallel consistent, this function makes processor ids on new nodes on other processors parallel consistent as well.
This is the MeshCommunication class.
void query_ghosting_functors(const MeshBase &mesh, processor_id_type pid, MeshBase::const_element_iterator elem_it, MeshBase::const_element_iterator elem_end, connected_elem_set_type &connected_elements)
static const processor_id_type invalid_processor_id
An invalid processor_id to distinguish DoFs that have not been assigned to a processor.
void allgather(MeshBase &mesh) const
This method takes an input DistributedMesh which may be distributed among all the processors...
void make_p_levels_parallel_consistent(MeshBase &)
Copy p levels of ghost elements from their local processors.
void find_local_indices(const libMesh::BoundingBox &, const ForwardIterator &, const ForwardIterator &, std::unordered_map< dof_id_type, dof_id_type > &) const
This method determines a locally unique, contiguous index for each object in the input range...
~MeshCommunication()=default
Destructor.
The DistributedMesh class is derived from the MeshBase class, and is intended to provide identical fu...
void gather_neighboring_elements(DistributedMesh &) const
void connect_children(const MeshBase &mesh, MeshBase::const_element_iterator elem_it, MeshBase::const_element_iterator elem_end, connected_elem_set_type &connected_elements)
std::set< const Node * > connected_node_set_type
Defines a Cartesian bounding box by the two corner extremum.
void send_coarse_ghosts(MeshBase &) const
Examine a just-coarsened mesh, and for any newly-coarsened elements, send the associated ghosted elem...
void make_node_ids_parallel_consistent(MeshBase &)
Assuming all ids on local nodes are globally unique, and assuming all processor ids are parallel cons...
void gather(const processor_id_type root_id, MeshBase &) const
This method takes an input DistributedMesh which may be distributed among all the processors...
void make_nodes_parallel_consistent(MeshBase &)
Copy processor_ids and ids on ghost nodes from their local processors.
void broadcast(MeshBase &) const
Finds all the processors that may contain elements that neighbor my elements.
void make_node_proc_ids_parallel_consistent(MeshBase &)
Assuming all processor ids on nodes touching local elements are parallel consistent, this function makes all other processor ids parallel consistent as well.
void connect_element_dependencies(const MeshBase &mesh, connected_elem_set_type &connected_elements, connected_node_set_type &connected_nodes)
std::set< const Elem *, CompareElemIdsByLevel > connected_elem_set_type
void make_new_nodes_parallel_consistent(MeshBase &)
Copy processor_ids and ids on new nodes from their local processors.
void delete_remote_elements(DistributedMesh &, const std::set< Elem *> &) const
This method takes an input DistributedMesh which may be distributed among all the processors...
void connect_families(connected_elem_set_type &connected_elements, const MeshBase *mesh=nullptr)
void redistribute(DistributedMesh &mesh, bool newly_coarsened_only=false) const
This method takes a parallel distributed mesh and redistributes the elements.