libMesh
|
Namespaces | |
Has_buffer_type | |
PackingMixedType | |
Utils | |
Typedefs | |
typedef std::pair< Hilbert::HilbertIndices, unique_id_type > | DofObjectKey |
Functions | |
constexpr int | get_packed_len_entries () |
void | put_packed_len (unsigned int len, Iter data_out) |
unsigned int | get_packed_len (typename std::vector< buffer_type >::const_iterator in) |
TIMPI_PACKING_RANGE_SUBCLASS (std::vector< T TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::list< T TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::map< K TIMPI_P_COMMA T TIMPI_P_COMMA C TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::multimap< K TIMPI_P_COMMA T TIMPI_P_COMMA C TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::multiset< K TIMPI_P_COMMA C TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::set< K TIMPI_P_COMMA C TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::unordered_map< K TIMPI_P_COMMA T TIMPI_P_COMMA H TIMPI_P_COMMA KE TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::unordered_multimap< K TIMPI_P_COMMA T TIMPI_P_COMMA H TIMPI_P_COMMA KE TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::unordered_multiset< K TIMPI_P_COMMA H TIMPI_P_COMMA KE TIMPI_P_COMMA A >) | |
TIMPI_PACKING_RANGE_SUBCLASS (std::unordered_set< K TIMPI_P_COMMA H TIMPI_P_COMMA KE TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::vector< T TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::list< T TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::map< K TIMPI_P_COMMA T TIMPI_P_COMMA C TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::multimap< K TIMPI_P_COMMA T TIMPI_P_COMMA C TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::multiset< K TIMPI_P_COMMA C TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::set< K TIMPI_P_COMMA C TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::unordered_map< K TIMPI_P_COMMA T TIMPI_P_COMMA H TIMPI_P_COMMA KE TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::unordered_multimap< K TIMPI_P_COMMA T TIMPI_P_COMMA H TIMPI_P_COMMA KE TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::unordered_multiset< K TIMPI_P_COMMA H TIMPI_P_COMMA KE TIMPI_P_COMMA A >) | |
TIMPI_DECL_PACKING_RANGE_SUBCLASS (std::unordered_set< K TIMPI_P_COMMA H TIMPI_P_COMMA KE TIMPI_P_COMMA A >) | |
template<typename Iterator , typename DofObjType , typename SyncFunctor > | |
void | sync_dofobject_data_by_xyz (const Communicator &comm, const Iterator &range_begin, const Iterator &range_end, LocationMap< DofObjType > &location_map, SyncFunctor &sync) |
Request data about a range of ghost nodes uniquely identified by their xyz location or a range of active ghost elements uniquely identified by their vertex averages' xyz location. More... | |
template<typename Iterator , typename SyncFunctor > | |
void | sync_dofobject_data_by_id (const Communicator &comm, const Iterator &range_begin, const Iterator &range_end, SyncFunctor &sync) |
Request data about a range of ghost dofobjects uniquely identified by their id. More... | |
template<typename Iterator , typename DofObjectCheckFunctor , typename SyncFunctor > | |
void | sync_dofobject_data_by_id (const Communicator &comm, const Iterator &range_begin, const Iterator &range_end, const DofObjectCheckFunctor &dofobj_check, SyncFunctor &sync) |
Request data about a range of ghost dofobjects uniquely identified by their id. More... | |
template<typename Iterator , typename SyncFunctor > | |
void | sync_element_data_by_parent_id (MeshBase &mesh, const Iterator &range_begin, const Iterator &range_end, SyncFunctor &sync) |
Request data about a range of ghost elements uniquely identified by their parent id and which child they are. More... | |
template<typename ElemCheckFunctor , typename NodeCheckFunctor , typename SyncFunctor > | |
bool | sync_node_data_by_element_id_once (MeshBase &mesh, const MeshBase::const_element_iterator &range_begin, const MeshBase::const_element_iterator &range_end, const ElemCheckFunctor &elem_check, const NodeCheckFunctor &node_check, SyncFunctor &sync) |
Synchronize data about a range of ghost nodes uniquely identified by an element id and local node id, assuming a single synchronization pass is necessary. More... | |
template<typename ElemCheckFunctor , typename NodeCheckFunctor , typename SyncFunctor > | |
void | sync_node_data_by_element_id (MeshBase &mesh, const MeshBase::const_element_iterator &range_begin, const MeshBase::const_element_iterator &range_end, const ElemCheckFunctor &elem_check, const NodeCheckFunctor &node_check, SyncFunctor &sync) |
Synchronize data about a range of ghost nodes uniquely identified by an element id and local node id, iterating until data is completely in sync and further synchronization passes cause no changes. More... | |
typedef Hilbert::HilbertIndices libMesh::Parallel::DofObjectKey |
Definition at line 80 of file parallel_hilbert.h.
void libMesh::Parallel::sync_dofobject_data_by_id | ( | const Communicator & | comm, |
const Iterator & | range_begin, | ||
const Iterator & | range_end, | ||
SyncFunctor & | sync | ||
) |
Request data about a range of ghost dofobjects uniquely identified by their id.
Fulfill requests with sync.gather_data(const std::vector<dof_id_type> & ids, std::vector<sync::datum> & data), by resizing and setting the values of the data vector. Respond to fulfillment with sync.act_on_data(const std::vector<dof_id_type> & ids, std::vector<sync::datum> & data) The user must define Parallel::StandardType<sync::datum> if sync::datum isn't a built-in type.
Definition at line 357 of file parallel_ghost_sync.h.
Referenced by libMesh::Partitioner::_find_global_index_by_pid_map(), libMesh::VariationalSmootherSystem::assembly(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_node_bcids_parallel_consistent(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), libMesh::FEMSystem::mesh_position_set(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::VariationalMeshSmoother::smooth(), and libMesh::MeshRefinement::uniformly_coarsen().
void libMesh::Parallel::sync_dofobject_data_by_id | ( | const Communicator & | comm, |
const Iterator & | range_begin, | ||
const Iterator & | range_end, | ||
const DofObjectCheckFunctor & | dofobj_check, | ||
SyncFunctor & | sync | ||
) |
Request data about a range of ghost dofobjects uniquely identified by their id.
Elements within the range can be excluded from the request by returning false from dofobj_check(dof_object)
Definition at line 368 of file parallel_ghost_sync.h.
References libMesh::DofObject::id(), libMesh::DofObject::invalid_processor_id, libMesh::libmesh_assert(), libMesh::DofObject::processor_id(), pull_parallel_vector_data(), and TIMPI::Communicator::rank().
void libMesh::Parallel::sync_dofobject_data_by_xyz | ( | const Communicator & | comm, |
const Iterator & | range_begin, | ||
const Iterator & | range_end, | ||
LocationMap< DofObjType > & | location_map, | ||
SyncFunctor & | sync | ||
) |
Request data about a range of ghost nodes uniquely identified by their xyz location or a range of active ghost elements uniquely identified by their vertex averages' xyz location.
Fulfill requests with sync.gather_data(const std::vector<unsigned int> & ids, std::vector<sync::datum> & data), by resizing and setting the values of the data vector. Respond to fulfillment with sync.act_on_data(const std::vector<unsigned int> & ids, std::vector<sync::datum> & data) The user must define Parallel::StandardType<sync::datum> if sync::datum isn't a built-in type. The user-provided location_map should be already filled.
This method may fail in cases of overlapping nodes or vertex averages, e.g. with slit meshes and/or overset meshes.
Definition at line 240 of file parallel_ghost_sync.h.
References libMesh::LocationMap< T >::empty(), libMesh::LocationMap< T >::find(), libMesh::DofObject::invalid_processor_id, libMesh::libmesh_assert(), TIMPI::Communicator::max(), libMesh::LocationMap< T >::point_of(), pull_parallel_vector_data(), and TIMPI::Communicator::rank().
Referenced by ParallelGhostSyncTest::testByXYZ().
void libMesh::Parallel::sync_element_data_by_parent_id | ( | MeshBase & | mesh, |
const Iterator & | range_begin, | ||
const Iterator & | range_end, | ||
SyncFunctor & | sync | ||
) |
Request data about a range of ghost elements uniquely identified by their parent id and which child they are.
Fulfill requests with sync.gather_data(const std::vector<unsigned int> & ids, std::vector<sync::datum> & data), by resizing and setting the values of the data vector. Respond to fulfillment with sync.act_on_data(const std::vector<unsigned int> & ids, std::vector<sync::datum> & data) The user must define Parallel::StandardType<sync::datum> if sync::datum isn't a built-in type.
Definition at line 453 of file parallel_ghost_sync.h.
References libMesh::Elem::active(), libMesh::Elem::child_ptr(), libMesh::Elem::has_children(), libMesh::DofObject::id(), libMesh::DofObject::invalid_processor_id, libMesh::libmesh_assert(), mesh, libMesh::Elem::parent(), libMesh::DofObject::processor_id(), pull_parallel_vector_data(), and libMesh::Elem::which_child_am_i().
Referenced by libMesh::MeshCommunication::make_elems_parallel_consistent().
void libMesh::Parallel::sync_node_data_by_element_id | ( | MeshBase & | mesh, |
const MeshBase::const_element_iterator & | range_begin, | ||
const MeshBase::const_element_iterator & | range_end, | ||
const ElemCheckFunctor & | elem_check, | ||
const NodeCheckFunctor & | node_check, | ||
SyncFunctor & | sync | ||
) |
Synchronize data about a range of ghost nodes uniquely identified by an element id and local node id, iterating until data is completely in sync and further synchronization passes cause no changes.
Imagine a vertex surrounded by triangles, each on a different processor, with a ghosting policy that include only face neighbors and not point neighbors. Then the only way for authoritative information to trickle out from that vertex is by being passed along, one neighbor at a time, to processors who mostly don't even see the node's true owner!
Data for all nodes connected to elements in the given range of element iterators will be requested.
Elements can be further excluded from the request by returning false from element_check(elem)
Nodes can be further excluded from the request by returning false from node_check(elem, local_node_num)
Fulfill requests with sync.gather_data(const std::vector<unsigned int> & ids, std::vector<sync::datum> & data), by resizing and setting the values of the data vector. Respond to fulfillment with bool sync.act_on_data(const std::vector<unsigned int> & ids, std::vector<sync::datum> & data) and return true iff the response changed any data.
The user must define Parallel::StandardType<sync::datum> if sync::datum isn't a built-in type.
Definition at line 780 of file parallel_ghost_sync.h.
References mesh, and sync_node_data_by_element_id_once().
Referenced by libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), and libMesh::Partitioner::set_node_processor_ids().
bool libMesh::Parallel::sync_node_data_by_element_id_once | ( | MeshBase & | mesh, |
const MeshBase::const_element_iterator & | range_begin, | ||
const MeshBase::const_element_iterator & | range_end, | ||
const ElemCheckFunctor & | elem_check, | ||
const NodeCheckFunctor & | node_check, | ||
SyncFunctor & | sync | ||
) |
Synchronize data about a range of ghost nodes uniquely identified by an element id and local node id, assuming a single synchronization pass is necessary.
Data for all nodes connected to elements in the given range of element iterators will be requested.
Elements can be further excluded from the request by returning false from element_check(elem)
Nodes can be further excluded from the request by returning false from node_check(elem, local_node_num)
Fulfill requests with sync.gather_data(const std::vector<unsigned int> & ids, std::vector<sync::datum> & data), by resizing and setting the values of the data vector. Respond to fulfillment with bool sync.act_on_data(const std::vector<unsigned int> & ids, std::vector<sync::datum> & data) and return true iff the response changed any data.
The user must define Parallel::StandardType<sync::datum> if sync::datum isn't a built-in type.
This method returns true iff the sync pass changed any data on any processor.
Definition at line 580 of file parallel_ghost_sync.h.
References libMesh::as_range(), libMesh::DofObject::id(), libMesh::DofObject::invalid_id, libMesh::DofObject::invalid_processor_id, libMesh::libmesh_assert(), mesh, libMesh::Elem::n_nodes(), libMesh::Elem::node_ref(), libMesh::DofObject::processor_id(), and pull_parallel_vector_data().
Referenced by libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), and sync_node_data_by_element_id().