dune-pdelab  2.7-git
Public Types | Public Member Functions | Static Public Attributes | List of all members
Dune::PDELab::MultiCommDataHandle< GFS, V, RankIndex > Class Template Reference

Gather/scatter communication that passes a single function from each subdomain to all its neighbors. The functions are received individually without applying any further operations. More...

#include <dune/pdelab/backend/istl/geneo/multicommdatahandle.hh>

Inheritance diagram for Dune::PDELab::MultiCommDataHandle< GFS, V, RankIndex >:
Inheritance graph

Public Types

typedef Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::DataType DataType
 
typedef GFS::Traits::SizeType size_type
 

Public Member Functions

 MultiCommDataHandle (const GFS &gfs_, V &v_, std::vector< std::shared_ptr< V > > target_vectors, std::vector< RankIndex > neighbor_ranks)
 
bool contains (int dim, int codim) const
 returns true if data for this codim should be communicated More...
 
bool fixedSize (int dim, int codim) const
 returns true if size per entity of given dim and codim is a constant More...
 
size_type size (const Entity &e) const
 how many objects of type DataType have to be sent for a given entity More...
 
std::enable_if< Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::wrap_buffer &&AlwaysTrue< Entity >::value >::type gather (MessageBuffer &buff, const Entity &e) const
 pack data from user to message buffer - version with support for sending leaf ordering sizes More...
 
std::enable_if< !Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::wrap_buffer &&AlwaysTrue< Entity >::value >::type gather (MessageBuffer &buff, const Entity &e) const
 pack data from user to message buffer - version without support for sending leaf ordering sizes More...
 
std::enable_if< Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::wrap_buffer &&AlwaysTrue< Entity >::value >::type scatter (MessageBuffer &buff, const Entity &e, size_type n)
 unpack data from message buffer to user More...
 
std::enable_if< !Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::wrap_buffer &&AlwaysTrue< Entity >::value >::type scatter (MessageBuffer &buff, const Entity &e, size_type n)
 unpack data from message buffer to user More...
 

Static Public Attributes

static const size_type leaf_count
 

Detailed Description

template<class GFS, class V, typename RankIndex>
class Dune::PDELab::MultiCommDataHandle< GFS, V, RankIndex >

Gather/scatter communication that passes a single function from each subdomain to all its neighbors. The functions are received individually without applying any further operations.

Member Typedef Documentation

◆ DataType

typedef Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::DataType Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::DataType
inherited

◆ size_type

typedef GFS::Traits::SizeType Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::size_type
inherited

Constructor & Destructor Documentation

◆ MultiCommDataHandle()

template<class GFS , class V , typename RankIndex >
Dune::PDELab::MultiCommDataHandle< GFS, V, RankIndex >::MultiCommDataHandle ( const GFS &  gfs_,
V &  v_,
std::vector< std::shared_ptr< V > >  target_vectors,
std::vector< RankIndex >  neighbor_ranks 
)
inline
Parameters
gfs_Grid function space to be operated on.
v_The current rank's vector to be passed to its neighbors.
target_vectorsVectors which the received vectors will be written to.
neighbor_ranksList of ranks of neighboring subdomains defining the order in which results are written to target_vectors.

Member Function Documentation

◆ contains()

bool Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::contains ( int  dim,
int  codim 
) const
inlineinherited

returns true if data for this codim should be communicated

◆ fixedSize()

bool Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::fixedSize ( int  dim,
int  codim 
) const
inlineinherited

returns true if size per entity of given dim and codim is a constant

◆ gather() [1/2]

std::enable_if< Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::wrap_buffer && AlwaysTrue<Entity>::value >::type Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::gather ( MessageBuffer &  buff,
const Entity &  e 
) const
inlineinherited

pack data from user to message buffer - version with support for sending leaf ordering sizes

◆ gather() [2/2]

std::enable_if< !Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::wrap_buffer && AlwaysTrue<Entity>::value >::type Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::gather ( MessageBuffer &  buff,
const Entity &  e 
) const
inlineinherited

pack data from user to message buffer - version without support for sending leaf ordering sizes

◆ scatter() [1/2]

std::enable_if< Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::wrap_buffer && AlwaysTrue<Entity>::value >::type Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::scatter ( MessageBuffer &  buff,
const Entity &  e,
size_type  n 
)
inlineinherited

unpack data from message buffer to user

n is the number of objects sent by the sender

This is the version with support for receiving leaf ordering sizes

◆ scatter() [2/2]

std::enable_if< !Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > ::wrap_buffer && AlwaysTrue<Entity>::value >::type Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::scatter ( MessageBuffer &  buff,
const Entity &  e,
size_type  n 
)
inlineinherited

unpack data from message buffer to user

n is the number of objects sent by the sender

This is the version without support for receiving leaf ordering sizes

◆ size()

size_type Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::size ( const Entity &  e) const
inlineinherited

how many objects of type DataType have to be sent for a given entity

Note: Only the sender side needs to know this size.

Member Data Documentation

◆ leaf_count

const size_type Dune::PDELab::GFSDataHandle< GFS, V, MultiCommGatherScatter< GFS, RankIndex, V > , Dune::PDELab::DOFDataCommunicationDescriptor< V::ElementType, true > >::leaf_count
staticinherited

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