Loading [MathJax]/extensions/tex2jax.js
ug4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ug::GenerateOverlapClass< matrix_type > Class Template Reference

#include <parallel_matrix_overlap_impl.h>

Public Member Functions

bool calculate ()
 calculate
 
 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.
 

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
 

Private Attributes

pcl::InterfaceCommunicator< IndexLayout > & m_com
 communicator
 
matrix_type & m_mat
 the original matrix (should be const)
 
matrix_type & m_newMat
 the new to create matrix
 
const pcl::ProcessCommunicatorm_pc
 
IndexLayoutm_totalMasterLayout
 layout combining all master layouts from overlap 0 to overlap_depth-1
 
IndexLayoutm_totalSlaveLayout
 layout combining all slave layouts from overlap 0 to overlap_depth-1
 
std::vector< IndexLayout > & m_vMasterLayouts
 m_vMasterLayout[i] is the master layout from overlap i without others
 
std::vector< IndexLayout > & m_vSlaveLayouts
 m_vSlaveLayout[i] is the slave layout from overlap i without others
 
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(), 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, ug::RowSendingScheme< matrix_type >::process(), PROFILE_FUNC_GROUP, ug::RowSendingScheme< matrix_type >::set_create_new_nodes(), ug::RowSendingScheme< matrix_type >::set_rows_in_matrix(), 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: