Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType > Class Template Reference
[ISTL_Comm]

A class setting up standard communication for a two-valued attribute set with owner/overlap/copy semantics. More...

#include <dune/istl/owneroverlapcopy.hh>

List of all members.

Classes

struct  AddGatherScatter
struct  CopyGatherScatter
 gather/scatter callback for communcation More...

Public Types

typedef Dune::ParallelIndexSet
< GlobalIdType, LI, 512 > 
PIS
typedef Dune::RemoteIndices< PISRI
typedef
Dune::RemoteIndexListModifier
< PIS, typename RI::Allocator,
false > 
RILM
typedef RI::RemoteIndex RX
typedef Dune::BufferedCommunicator BC
typedef Dune::Interface IF
typedef EnumItem< AttributeSet,
OwnerOverlapCopyAttributeSet::owner > 
OwnerSet
typedef EnumItem< AttributeSet,
OwnerOverlapCopyAttributeSet::copy > 
CopySet
typedef Combine< EnumItem
< AttributeSet,
OwnerOverlapCopyAttributeSet::owner >
, EnumItem< AttributeSet,
OwnerOverlapCopyAttributeSet::overlap >
, AttributeSet
OwnerOverlapSet
typedef Dune::AllSet
< AttributeSet
AllSet
typedef Dune::EnumItem
< AttributeSet,
OwnerOverlapCopyAttributeSet::copy > 
CopyFlags
typedef Dune::ParallelIndexSet
< GlobalIdType, LI, 512 > 
ParallelIndexSet
 The type of the parallel index set.
typedef Dune::RemoteIndices< PISRemoteIndices
 The type of the remote indices.
typedef
Dune::GlobalLookupIndexSet
< ParallelIndexSet
GlobalLookupIndexSet
 The type of the reverse lookup of indices.

Public Member Functions

void setSolverCategory (SolverCategory set)
 Set right Solver Category (default is overlapping).
const SolverCategory::Category getSolverCategory () const
 Set Solver Category.
const CollectiveCommunication
< MPI_Comm > & 
communicator () const
template<class T >
void copyOwnerToAll (const T &source, T &dest) const
 Communicate values from owner data points to all other data points.
template<class T >
void addOwnerOverlapToAll (const T &source, T &dest) const
 Communicate values from owner data points to all other data points and add them to those values.
template<class T >
void addOwnerCopyToAll (const T &source, T &dest) const
 Communicate values from owner and copy data points to all other data points and add them to those values.
template<class T >
void addOwnerCopyToOwnerCopy (const T &source, T &dest) const
 Communicate values from owner and copy data points to owner and copy data points and add them to those values.
template<class T1 , class T2 >
void dot (const T1 &x, const T1 &y, T2 &result) const
 Compute a global dot product of two vectors.
template<class T1 >
double norm (const T1 &x) const
 Compute the global euclidian norm of a vector.
const ParallelIndexSetindexSet () const
 Get the underlying parallel index set.
const RemoteIndicesremoteIndices () const
 Get the underlying remote indices.
ParallelIndexSetindexSet ()
 Get the underlying parallel index set.
RemoteIndicesremoteIndices ()
 Get the underlying remote indices.
void buildGlobalLookup ()
void buildGlobalLookup (std::size_t size)
void freeGlobalLookup ()
const GlobalLookupIndexSetglobalLookup () const
template<class T1 >
void project (T1 &x) const
 Set vector to zero at copy dofs.
 OwnerOverlapCopyCommunication (MPI_Comm comm_, SolverCategory::Category cat=SolverCategory::overlapping)
 Construct the communication without any indices.
 OwnerOverlapCopyCommunication (SolverCategory::Category cat=SolverCategory::overlapping)
 Construct the communication without any indices using MPI_COMM_WORLD.
 OwnerOverlapCopyCommunication (const IndexInfoFromGrid< GlobalIdType, LocalIdType > &indexinfo, MPI_Comm comm_, SolverCategory::Category cat=SolverCategory::overlapping)
 Constructor.
 ~OwnerOverlapCopyCommunication ()

Protected Member Functions

void buildOwnerOverlapToAllInterface () const
void buildOwnerToAllInterface () const
void buildOwnerCopyToAllInterface () const
void buildOwnerCopyToOwnerCopyInterface () const

Detailed Description

template<class GlobalIdType, class LocalIdType = int>
class Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >

A class setting up standard communication for a two-valued attribute set with owner/overlap/copy semantics.

set up communication from known distribution with owner/overlap/copy semantics


Member Typedef Documentation

template<class GlobalIdType, class LocalIdType = int>
typedef Dune::AllSet<AttributeSet> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::AllSet
template<class GlobalIdType, class LocalIdType = int>
typedef Dune::BufferedCommunicator Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::BC
template<class GlobalIdType, class LocalIdType = int>
typedef Dune::EnumItem<AttributeSet,OwnerOverlapCopyAttributeSet::copy> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::CopyFlags
template<class GlobalIdType, class LocalIdType = int>
typedef EnumItem<AttributeSet,OwnerOverlapCopyAttributeSet::copy> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::CopySet
template<class GlobalIdType, class LocalIdType = int>
typedef Dune::GlobalLookupIndexSet<ParallelIndexSet> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::GlobalLookupIndexSet

The type of the reverse lookup of indices.

template<class GlobalIdType, class LocalIdType = int>
typedef Dune::Interface Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::IF
template<class GlobalIdType, class LocalIdType = int>
typedef Combine<EnumItem<AttributeSet,OwnerOverlapCopyAttributeSet::owner>,EnumItem<AttributeSet,OwnerOverlapCopyAttributeSet::overlap>,AttributeSet> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::OwnerOverlapSet
template<class GlobalIdType, class LocalIdType = int>
typedef EnumItem<AttributeSet,OwnerOverlapCopyAttributeSet::owner> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::OwnerSet
template<class GlobalIdType, class LocalIdType = int>
typedef Dune::ParallelIndexSet<GlobalIdType,LI,512> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::ParallelIndexSet

The type of the parallel index set.

template<class GlobalIdType, class LocalIdType = int>
typedef Dune::ParallelIndexSet<GlobalIdType,LI,512> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::PIS
template<class GlobalIdType, class LocalIdType = int>
typedef Dune::RemoteIndices<PIS> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::RemoteIndices

The type of the remote indices.

template<class GlobalIdType, class LocalIdType = int>
typedef Dune::RemoteIndices<PIS> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::RI
template<class GlobalIdType, class LocalIdType = int>
typedef Dune::RemoteIndexListModifier<PIS,typename RI::Allocator,false> Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::RILM
template<class GlobalIdType, class LocalIdType = int>
typedef RI::RemoteIndex Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::RX

Constructor & Destructor Documentation

template<class GlobalIdType, class LocalIdType = int>
Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::OwnerOverlapCopyCommunication ( MPI_Comm  comm_,
SolverCategory::Category  cat = SolverCategory::overlapping 
) [inline]

Construct the communication without any indices.

The local index set and the remote indices have to be set up later on.

Parameters:
comm_ The MPI Communicator to use, e. g. MPI_COMM_WORLD
template<class GlobalIdType, class LocalIdType = int>
Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::OwnerOverlapCopyCommunication ( SolverCategory::Category  cat = SolverCategory::overlapping  )  [inline]

Construct the communication without any indices using MPI_COMM_WORLD.

The local index set and the remote indices have to be set up later on.

template<class GlobalIdType, class LocalIdType = int>
Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::OwnerOverlapCopyCommunication ( const IndexInfoFromGrid< GlobalIdType, LocalIdType > &  indexinfo,
MPI_Comm  comm_,
SolverCategory::Category  cat = SolverCategory::overlapping 
) [inline]

Constructor.

Parameters:
indexinfo The set of IndexTripels describing the local and remote indices.
comm_ The communicator to use in the communication.

References Dune::OwnerOverlapCopyAttributeSet::copy, Dune::IndexInfoFromGrid< G, L >::localIndices(), Dune::OwnerOverlapCopyAttributeSet::overlap, Dune::OwnerOverlapCopyAttributeSet::owner, and Dune::IndexInfoFromGrid< G, L >::remoteIndices().

template<class GlobalIdType, class LocalIdType = int>
Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::~OwnerOverlapCopyCommunication (  )  [inline]

Member Function Documentation

template<class GlobalIdType, class LocalIdType = int>
template<class T >
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::addOwnerCopyToAll ( const T &  source,
T &  dest 
) const [inline]

Communicate values from owner and copy data points to all other data points and add them to those values.

source The data to send from. dest The data to add them communicated values to.

References Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildOwnerCopyToAllInterface().

template<class GlobalIdType, class LocalIdType = int>
template<class T >
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::addOwnerCopyToOwnerCopy ( const T &  source,
T &  dest 
) const [inline]

Communicate values from owner and copy data points to owner and copy data points and add them to those values.

source The data to send from. dest The data to add the communicated values to.

References Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildOwnerCopyToOwnerCopyInterface().

template<class GlobalIdType, class LocalIdType = int>
template<class T >
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::addOwnerOverlapToAll ( const T &  source,
T &  dest 
) const [inline]

Communicate values from owner data points to all other data points and add them to those values.

source The data to send from. dest The data to add them communicated values to.

References Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildOwnerOverlapToAllInterface().

template<class GlobalIdType, class LocalIdType = int>
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildGlobalLookup (  )  [inline]
template<class GlobalIdType, class LocalIdType = int>
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildGlobalLookup ( std::size_t  size  )  [inline]
template<class GlobalIdType, class LocalIdType = int>
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildOwnerCopyToAllInterface (  )  const [inline, protected]
template<class GlobalIdType, class LocalIdType = int>
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildOwnerCopyToOwnerCopyInterface (  )  const [inline, protected]
template<class GlobalIdType, class LocalIdType = int>
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildOwnerOverlapToAllInterface (  )  const [inline, protected]
template<class GlobalIdType, class LocalIdType = int>
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildOwnerToAllInterface (  )  const [inline, protected]
template<class GlobalIdType, class LocalIdType = int>
const CollectiveCommunication<MPI_Comm>& Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::communicator (  )  const [inline]
template<class GlobalIdType, class LocalIdType = int>
template<class T >
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::copyOwnerToAll ( const T &  source,
T &  dest 
) const [inline]

Communicate values from owner data points to all other data points.

source The data to send from. dest The data to send to.

References Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::buildOwnerToAllInterface().

Referenced by Dune::commGraphRepartition(), Dune::graphRepartition(), and Dune::Amg::AggregatesPublisher< T, O, OwnerOverlapCopyCommunication< T1, T2 > >::publish().

template<class GlobalIdType, class LocalIdType = int>
template<class T1 , class T2 >
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::dot ( const T1 &  x,
const T1 &  y,
T2 &  result 
) const [inline]

Compute a global dot product of two vectors.

Parameters:
x The first vector of the product.
y The second vector of the product.
result Reference to store the result in.
template<class GlobalIdType, class LocalIdType = int>
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::freeGlobalLookup (  )  [inline]

Referenced by Dune::fillIndexSetHoles().

template<class GlobalIdType, class LocalIdType = int>
const SolverCategory::Category Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::getSolverCategory (  )  const [inline]

Set Solver Category.

Returns:
The Solver Category.
template<class GlobalIdType, class LocalIdType = int>
const GlobalLookupIndexSet& Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::globalLookup (  )  const [inline]
template<class GlobalIdType, class LocalIdType = int>
ParallelIndexSet& Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::indexSet (  )  [inline]

Get the underlying parallel index set.

Returns:
The underlying parallel index set.
template<class GlobalIdType, class LocalIdType = int>
const ParallelIndexSet& Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::indexSet (  )  const [inline]

Get the underlying parallel index set.

Returns:
The underlying parallel index set.

Referenced by Dune::buildCommunication(), Dune::fillIndexSetHoles(), and Dune::graphRepartition().

template<class GlobalIdType, class LocalIdType = int>
template<class T1 >
double Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::norm ( const T1 &  x  )  const [inline]

Compute the global euclidian norm of a vector.

Parameters:
x The vector to compute the norm of.
Returns:
The global euclidian norm of that vector.
template<class GlobalIdType, class LocalIdType = int>
template<class T1 >
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::project ( T1 &  x  )  const [inline]

Set vector to zero at copy dofs.

Parameters:
x The vector to project.
template<class GlobalIdType, class LocalIdType = int>
const RemoteIndices& Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::remoteIndices (  )  const [inline]

Get the underlying remote indices.

Returns:
The underlying remote indices.

Referenced by Dune::commGraphRepartition(), Dune::fillIndexSetHoles(), and Dune::Amg::AggregatesPublisher< T, O, OwnerOverlapCopyCommunication< T1, T2 > >::publish().

template<class GlobalIdType, class LocalIdType = int>
RemoteIndices& Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::remoteIndices (  )  [inline]

Get the underlying remote indices.

Returns:
The underlying remote indices.
template<class GlobalIdType, class LocalIdType = int>
void Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::setSolverCategory ( SolverCategory  set  )  [inline]

Set right Solver Category (default is overlapping).


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

Generated on Fri Apr 29 2011 with Doxygen (ver 1.7.1) [doxygen-log,error-log].