ug4
ug::GenerateOverlapClass< matrix_type > Class Template Reference

#include <parallel_matrix_overlap_impl.h>

Public Member Functions

bool calculate ()
 calculate More...
 
 GenerateOverlapClass (matrix_type &mat, matrix_type &newMat, IndexLayout &totalMasterLayout, IndexLayout &totalSlaveLayout, std::vector< IndexLayout > &vMasterLayouts, std::vector< IndexLayout > &vSlaveLayouts, ParallelNodes &pn)
 Generates a new matrix with overlap from another matrix. More...
 

Public Attributes

bool m_masterDirichletLast
 
size_t m_overlapDepthMaster
 
size_t m_overlapDepthSlave
 
std::vector< size_t > m_overlapSize
 
bool m_slaveDirichletLast
 

Private Types

typedef std::map< int, BinaryBufferBufferMap
 
typedef IndexLayout::Interface Interface
 

Private Member Functions

void communicate (const IndexLayout &sendingLayout, const IndexLayout &receivingLayout, bool bCreateNewNodes, IndexLayout &newSlavesLayout, IndexLayout &newMastersLayout, std::set< int > &pids, bool bSet, size_t level)
 communicate More...
 

Private Attributes

pcl::InterfaceCommunicator< IndexLayout > & m_com
 communicator More...
 
matrix_typem_mat
 the original matrix (should be const) More...
 
matrix_typem_newMat
 the new to create matrix More...
 
const pcl::ProcessCommunicatorm_pc
 
IndexLayoutm_totalMasterLayout
 layout combining all master layouts from overlap 0 to overlap_depth-1 More...
 
IndexLayoutm_totalSlaveLayout
 layout combining all slave layouts from overlap 0 to overlap_depth-1 More...
 
std::vector< IndexLayout > & m_vMasterLayouts
 m_vMasterLayout[i] is the master layout from overlap i without others More...
 
std::vector< IndexLayout > & m_vSlaveLayouts
 m_vSlaveLayout[i] is the slave layout from overlap i without others More...
 
ParallelNodesPN
 

Member Typedef Documentation

◆ BufferMap

template<typename matrix_type >
typedef std::map<int, BinaryBuffer> ug::GenerateOverlapClass< matrix_type >::BufferMap
private

◆ Interface

template<typename matrix_type >
typedef IndexLayout::Interface ug::GenerateOverlapClass< matrix_type >::Interface
private

Constructor & Destructor Documentation

◆ GenerateOverlapClass()

template<typename matrix_type >
ug::GenerateOverlapClass< matrix_type >::GenerateOverlapClass ( matrix_type mat,
matrix_type newMat,
IndexLayout totalMasterLayout,
IndexLayout totalSlaveLayout,
std::vector< IndexLayout > &  vMasterLayouts,
std::vector< IndexLayout > &  vSlaveLayouts,
ParallelNodes pn 
)
inline

Generates a new matrix with overlap from another matrix.

Parameters
_matmatrix to create overlap from
newMatmatrix to store overlap matrix in
masterOLLayoutLayout
masterOLLayout
overlap_depth

Member Function Documentation

◆ calculate()

◆ communicate()

template<typename matrix_type >
void ug::GenerateOverlapClass< matrix_type >::communicate ( const IndexLayout sendingLayout,
const IndexLayout receivingLayout,
bool  bCreateNewNodes,
IndexLayout newSlavesLayout,
IndexLayout newMastersLayout,
std::set< int > &  pids,
bool  bSet,
size_t  level 
)
inlineprivate

communicate

creates one overlap level one-sided

Parameters
sendingNodesLayoutLayout of which nodes send their matrix rows
receivingNodesLayoutLayout of which nodes receive matrix rows
bCreateNewNodesif true, create new indices/interfaces for globalIndices which are not yet on this or the other processor
newSlavesLayoutnew slaves are added to this layout
newMastersLayoutnew masters are added to this layout
pidsused to send/receive notifications
bSetif true, use overwrite (set) for received matrix rows. else add matrix rows.
levelcurrent overlap level

References ug::ParallelNodes::add_new_layouts_to(), ug::RowSendingScheme< matrix_type >::add_rows_to_matrix(), pcl::AddLayout(), ug::DBG_MATRIX_OVERLAP, IF_DEBUG, ug::RowSendingScheme< matrix_type >::issue_send(), ug::ParallelNodes::local_size(), ug::GenerateOverlapClass< matrix_type >::m_com, ug::GenerateOverlapClass< matrix_type >::m_newMat, ug::GenerateOverlapClass< matrix_type >::m_pc, ug::GenerateOverlapClass< matrix_type >::m_totalMasterLayout, ug::GenerateOverlapClass< matrix_type >::m_totalSlaveLayout, ug::GenerateOverlapClass< matrix_type >::m_vMasterLayouts, ug::GenerateOverlapClass< matrix_type >::m_vSlaveLayouts, ug::GenerateOverlapClass< matrix_type >::PN, pcl::PrintLayout(), ug::RowSendingScheme< matrix_type >::process(), PROFILE_FUNC_GROUP, ug::RowSendingScheme< matrix_type >::set_create_new_nodes(), ug::RowSendingScheme< matrix_type >::set_rows_in_matrix(), pcl::TestLayout(), UG_ASSERT, UG_DLOG, and UG_LOG.

Referenced by ug::GenerateOverlapClass< matrix_type >::calculate().

Member Data Documentation

◆ m_com

◆ m_masterDirichletLast

template<typename matrix_type >
bool ug::GenerateOverlapClass< matrix_type >::m_masterDirichletLast

◆ m_mat

template<typename matrix_type >
matrix_type& ug::GenerateOverlapClass< matrix_type >::m_mat
private

the original matrix (should be const)

Referenced by ug::GenerateOverlapClass< matrix_type >::calculate().

◆ m_newMat

template<typename matrix_type >
matrix_type& ug::GenerateOverlapClass< matrix_type >::m_newMat
private

◆ m_overlapDepthMaster

template<typename matrix_type >
size_t ug::GenerateOverlapClass< matrix_type >::m_overlapDepthMaster

◆ m_overlapDepthSlave

template<typename matrix_type >
size_t ug::GenerateOverlapClass< matrix_type >::m_overlapDepthSlave

◆ m_overlapSize

template<typename matrix_type >
std::vector<size_t> ug::GenerateOverlapClass< matrix_type >::m_overlapSize

◆ m_pc

◆ m_slaveDirichletLast

template<typename matrix_type >
bool ug::GenerateOverlapClass< matrix_type >::m_slaveDirichletLast

◆ m_totalMasterLayout

template<typename matrix_type >
IndexLayout& ug::GenerateOverlapClass< matrix_type >::m_totalMasterLayout
private

layout combining all master layouts from overlap 0 to overlap_depth-1

Referenced by ug::GenerateOverlapClass< matrix_type >::calculate(), and ug::GenerateOverlapClass< matrix_type >::communicate().

◆ m_totalSlaveLayout

template<typename matrix_type >
IndexLayout& ug::GenerateOverlapClass< matrix_type >::m_totalSlaveLayout
private

layout combining all slave layouts from overlap 0 to overlap_depth-1

Referenced by ug::GenerateOverlapClass< matrix_type >::calculate(), and ug::GenerateOverlapClass< matrix_type >::communicate().

◆ m_vMasterLayouts

template<typename matrix_type >
std::vector<IndexLayout>& ug::GenerateOverlapClass< matrix_type >::m_vMasterLayouts
private

m_vMasterLayout[i] is the master layout from overlap i without others

Referenced by ug::GenerateOverlapClass< matrix_type >::calculate(), and ug::GenerateOverlapClass< matrix_type >::communicate().

◆ m_vSlaveLayouts

template<typename matrix_type >
std::vector<IndexLayout>& ug::GenerateOverlapClass< matrix_type >::m_vSlaveLayouts
private

m_vSlaveLayout[i] is the slave layout from overlap i without others

Referenced by ug::GenerateOverlapClass< matrix_type >::calculate(), and ug::GenerateOverlapClass< matrix_type >::communicate().

◆ PN


The documentation for this class was generated from the following file: