ug4
ug::ComPol_VecScaleCopy< TVector > Class Template Reference

Communication Policy to copy scaled values of a vector. More...

#include <communication_policies.h>

+ Inheritance diagram for ug::ComPol_VecScaleCopy< 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_VecScaleCopy ()
 Default Constructor. More...
 
 ComPol_VecScaleCopy (TVector *pVec, number scale)
 Constructor setting vector and scaling factor. More...
 
virtual bool extract (ug::BinaryBuffer &buff, const Interface &interface)
 scales values of a buffer and writes the into the interface 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 that we be used for 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_VecScaleCopy< TVector >

Communication Policy to copy scaled values of a vector.

This class is used as a policy to copy scaled 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 overwrites the values of the vector with the sent data times the scaling.

Template Parameters
TVectorVector type

Constructor & Destructor Documentation

◆ ComPol_VecScaleCopy() [1/2]

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

Default Constructor.

◆ ComPol_VecScaleCopy() [2/2]

template<class TVector >
ug::ComPol_VecScaleCopy< TVector >::ComPol_VecScaleCopy ( TVector *  pVec,
number  scale 
)
inline

Constructor setting vector and scaling factor.

Member Function Documentation

◆ collect()

template<class TVector >
virtual bool ug::ComPol_VecScaleCopy< 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_VecScaleCopy< TVector >::m_pVec, PROFILE_BEGIN_GROUP, and ug::Serialize().

◆ extract()

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

scales values of a buffer and writes the into the interface

This function writes the scaled buffer values into the vector.

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_VecScaleCopy< TVector >::m_pVec, ug::ComPol_VecScaleCopy< TVector >::m_scale, and PROFILE_BEGIN_GROUP.

◆ get_required_buffer_size()

template<class TVector >
virtual int ug::ComPol_VecScaleCopy< 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_VecScaleCopy< TVector >::set_scale ( number  scale)
inline

sets the scaling factor

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

◆ set_vector()

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

sets the vector that we be used for communication

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

Member Data Documentation

◆ m_pVec

◆ m_scale


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