ug4
ug::ComPol_VecScaleAdd< TVector > Class Template Reference

Communication Policy to add values of a vector. More...

#include <communication_policies.h>

+ Inheritance diagram for ug::ComPol_VecScaleAdd< TVector >:

Public Member Functions

virtual bool collect (ug::BinaryBuffer &buff, const Interface &interface)
 writes the interface values into a buffer that will be sent More...
 
 ComPol_VecScaleAdd ()
 Default constructor. More...
 
 ComPol_VecScaleAdd (TVector *pVec)
 Constructor setting the values. More...
 
virtual bool extract (ug::BinaryBuffer &buff, const Interface &interface)
 scales and adds values of a buffer to the interface values More...
 
virtual int get_required_buffer_size (const Interface &interface)
 returns the buffer size More...
 
void set_scale (number scale)
 sets the scaling factor More...
 
void set_vector (TVector *pVec)
 sets the vector used in communication More...
 
- Public Member Functions inherited from pcl::ICommunicationPolicy< IndexLayout >
virtual bool begin_layout_collection (const Layout *pLayout)
 signals the beginning of a layout collection. More...
 
virtual bool begin_layout_extraction (const Layout *pLayout)
 signals the beginning of a layout extraction. More...
 
virtual void begin_level_extraction (int level)
 signals that a new layout-level will now be processed. More...
 
virtual bool end_layout_collection (const Layout *pLayout)
 signals the end of a layout collection More...
 
virtual bool end_layout_extraction (const Layout *pLayout)
 signals the end of a layout extraction More...
 
virtual ~ICommunicationPolicy ()
 

Private Attributes

TVector * m_pVec
 
number m_scale
 

Additional Inherited Members

- Public Types inherited from pcl::ICommunicationPolicy< IndexLayout >
typedef Layout::Interface Interface
 
typedef IndexLayout Layout
 

Detailed Description

template<class TVector>
class ug::ComPol_VecScaleAdd< TVector >

Communication Policy to add values of a vector.

This class is used as a policy to add values on the interfaces of a parallel vector. The collecting interfaces pack the values on the interface into a stream. The extracting interfaces receive the stream and adds the values of the vector.

Template Parameters
TVectorVector type

Constructor & Destructor Documentation

◆ ComPol_VecScaleAdd() [1/2]

template<class TVector >
ug::ComPol_VecScaleAdd< TVector >::ComPol_VecScaleAdd ( )
inline

Default constructor.

◆ ComPol_VecScaleAdd() [2/2]

template<class TVector >
ug::ComPol_VecScaleAdd< TVector >::ComPol_VecScaleAdd ( TVector *  pVec)
inline

Constructor setting the values.

Member Function Documentation

◆ collect()

template<class TVector >
virtual bool ug::ComPol_VecScaleAdd< TVector >::collect ( ug::BinaryBuffer buff,
const Interface interface 
)
inlinevirtual

writes the interface values into a buffer that will be sent

This function collects all entries of the vector into a buffer that are part of the interface.

Parameters
[out]buffBuffer
[in]interfaceInterface that will communicate

Implements pcl::ICommunicationPolicy< IndexLayout >.

References pcl::OrderedInterface< TType, TContainer, TAlloc >::begin(), pcl::OrderedInterface< TType, TContainer, TAlloc >::end(), pcl::OrderedInterface< TType, TContainer, TAlloc >::get_element(), ug::ComPol_VecScaleAdd< TVector >::m_pVec, PROFILE_BEGIN_GROUP, and ug::Serialize().

◆ extract()

template<class TVector >
virtual bool ug::ComPol_VecScaleAdd< TVector >::extract ( ug::BinaryBuffer buff,
const Interface interface 
)
inlinevirtual

scales and adds values of a buffer to the interface values

This function sclaes and adds the buffer values to the vector values.

Parameters
[out]buffBuffer
[in]interfaceInterface that communicates

Implements pcl::ICommunicationPolicy< IndexLayout >.

References pcl::OrderedInterface< TType, TContainer, TAlloc >::begin(), ug::Deserialize(), pcl::OrderedInterface< TType, TContainer, TAlloc >::end(), pcl::OrderedInterface< TType, TContainer, TAlloc >::get_element(), ug::ComPol_VecScaleAdd< TVector >::m_pVec, ug::ComPol_VecScaleAdd< TVector >::m_scale, and PROFILE_BEGIN_GROUP.

◆ get_required_buffer_size()

template<class TVector >
virtual int ug::ComPol_VecScaleAdd< TVector >::get_required_buffer_size ( const Interface interface)
inlinevirtual

returns the buffer size

This function returns the size of the buffer needed for the communication of passed interface. If the vector has fixed size entries this is just the number of interface entries times the size of the entry. In case of a variable size entry type a negative value is returned to indicate that no buffer size can be determined in advanced.

Parameters
[in]interfaceInterface that will communicate

Reimplemented from pcl::ICommunicationPolicy< IndexLayout >.

References pcl::OrderedInterface< TType, TContainer, TAlloc >::size().

◆ set_scale()

template<class TVector >
void ug::ComPol_VecScaleAdd< TVector >::set_scale ( number  scale)
inline

sets the scaling factor

References ug::ComPol_VecScaleAdd< TVector >::m_scale.

◆ set_vector()

template<class TVector >
void ug::ComPol_VecScaleAdd< TVector >::set_vector ( TVector *  pVec)
inline

sets the vector used in communication

References ug::ComPol_VecScaleAdd< TVector >::m_pVec.

Member Data Documentation

◆ m_pVec

◆ m_scale


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