#include <new_layout_creator.h>
◆ BufferMap
◆ NewLayoutCreator()
◆ add_new_layouts_to()
◆ create_mark_map()
void ug::NewLayoutCreator::create_mark_map |
( |
IndexLayout & |
masterLayout | ) |
|
|
inlineprivate |
◆ create_node() [1/3]
void ug::NewLayoutCreator::create_node |
( |
const AlgebraID & |
globalID, |
|
|
int |
pid |
|
) |
| |
|
inline |
◆ create_node() [2/3]
void ug::NewLayoutCreator::create_node |
( |
const AlgebraID & |
globalID, |
|
|
size_t |
localIndex, |
|
|
int |
pid |
|
) |
| |
|
inline |
◆ create_node() [3/3]
void ug::NewLayoutCreator::create_node |
( |
size_t |
localIndex, |
|
|
int |
pid |
|
) |
| |
|
inline |
◆ create_slave_node()
size_t ug::NewLayoutCreator::create_slave_node |
( |
const AlgebraID & |
globalID, |
|
|
int |
distanceToMasterOrInner |
|
) |
| |
|
inline |
◆ issue()
References ug::BinaryBuffer::buffer(), ug::LIB_ALG_MATRIX, masterPIDs, newSlaveNotifications, notificationBufferMap, pcl::InterfaceCommunicator< TLayout >::receive_raw(), pcl::InterfaceCommunicator< TLayout >::send_raw(), ug::Serialize(), slavePIDs, UG_DLOG, and ug::BinaryBuffer::write_pos().
◆ process()
void ug::NewLayoutCreator::process |
( |
| ) |
|
|
inline |
References ug::Deserialize(), ug::BinaryBuffer::eof(), ug::NewLayoutCreator::NewSlaveNotification::id, ug::AlgebraID::index_on_master(), ug::LIB_ALG_MATRIX, ug::AlgebraID::master_proc(), masterPIDs, newMasters, ug::NewLayoutCreator::NewSlaveNotification::newSlaveOnPID, notificationBufferMap, notified, pcl::ProcRank(), UG_ASSERT, UG_DLOG, and ug::BinaryBuffer::write_pos().
◆ masterPIDs
std::set<int> ug::NewLayoutCreator::masterPIDs |
|
private |
◆ newMasters
std::map<int, std::set<size_t> > ug::NewLayoutCreator::newMasters |
|
private |
◆ newSlaveNotifications
◆ newSlaves
std::map<int, std::set<size_t> > ug::NewLayoutCreator::newSlaves |
|
private |
◆ notificationBufferMap
BufferMap ug::NewLayoutCreator::notificationBufferMap |
|
private |
◆ notified
std::map<int, std::set<size_t> > ug::NewLayoutCreator::notified |
|
private |
map for marking nodes
for each processor we need to have a list which of our master nodes exist on their processor this is important because we sometimes will need to add them to interfaces
the map serves two functions:
- knowing which processor has copies of our own master nodes, and so constructing correct interfaces
- knowing which notifications are sent
- if i is a master node (that is PN.local_to_global(i).master_proc() == pcl::ProcRank()) then i in notified[pid] means: process pid already knows that i is a slave node on his processor, and this processor knows that i the associated master that means: i is in a master interface on this processor and in a slave interface on pid.
- if is is not a master node then i in notified[pid] means: we already sent a notification to the owner of i (processor PN.local_to_global(i).master_proc()) that processor pid has a copy of i.
Referenced by create_mark_map(), create_node(), and process().
◆ PN
◆ slavePIDs
std::set<int> ug::NewLayoutCreator::slavePIDs |
|
private |
The documentation for this class was generated from the following file: