DUNE PDELab (git)

The indices present on remote processes. More...

#include <dune/common/parallel/remoteindices.hh>

Public Types

typedef T ParallelIndexSet
 Type of the index set we use, e.g. ParallelLocalIndexSet.
 
typedef CollectiveIterator< T, A > CollectiveIteratorT
 The type of the collective iterator over all remote indices.
 
typedef ParallelIndexSet::GlobalIndex GlobalIndex
 The type of the global index.
 
typedef ParallelIndexSet::LocalIndex LocalIndex
 The type of the local index.
 
typedef LocalIndex::Attribute Attribute
 The type of the attribute.
 
typedef Dune::RemoteIndex< GlobalIndex, AttributeRemoteIndex
 Type of the remote indices we manage.
 
using Allocator = typename std::allocator_traits< A >::template rebind_alloc< RemoteIndex >
 The type of the allocator for the remote index list.
 
typedef Dune::SLList< RemoteIndex, AllocatorRemoteIndexList
 The type of the remote index list.
 
typedef std::map< int, std::pair< RemoteIndexList *, RemoteIndexList * > > RemoteIndexMap
 The type of the map from rank to remote index list.
 

Public Member Functions

 RemoteIndices (const ParallelIndexSet &source, const ParallelIndexSet &destination, const MPI_Comm &comm, const std::vector< int > &neighbours=std::vector< int >(), bool includeSelf=false)
 Constructor. More...
 
void setIncludeSelf (bool includeSelf)
 Tell whether sending from indices of the processor to other indices on the same processor is enabled even if the same indexset is used on both the sending and receiving side. More...
 
void setIndexSets (const ParallelIndexSet &source, const ParallelIndexSet &destination, const MPI_Comm &comm, const std::vector< int > &neighbours=std::vector< int >())
 Set the index sets and communicator we work with. More...
 
 ~RemoteIndices ()
 Destructor.
 
template<bool ignorePublic>
void rebuild ()
 Rebuilds the set of remote indices. More...
 
bool isSynced () const
 Checks whether the remote indices are synced with the indexsets. More...
 
MPI_Comm communicator () const
 Get the mpi communicator used.
 
template<bool mode, bool send>
RemoteIndexListModifier< T, A, mode > getModifier (int process)
 Get a modifier for a remote index list. More...
 
const_iterator find (int proc) const
 Find an iterator over the remote index lists of a specific process. More...
 
const_iterator begin () const
 Get an iterator over all remote index lists. More...
 
const_iterator end () const
 Get an iterator over all remote index lists. More...
 
template<bool send>
CollectiveIteratorT iterator () const
 Get an iterator for collectively iterating over the remote indices of all remote processes.
 
void free ()
 Free the index lists.
 
int neighbours () const
 Get the number of processors we share indices with. More...
 
const ParallelIndexSetsourceIndexSet () const
 Get the index set at the source.
 
const ParallelIndexSetdestinationIndexSet () const
 Get the index set at destination.
 

Friends

template<class G , class T1 , class T2 >
void fillIndexSetHoles (const G &graph, Dune::OwnerOverlapCopyCommunication< T1, T2 > &oocomm)
 Fills the holes in an index set. More...
 

Detailed Description

template<class T, class A = std::allocator<RemoteIndex<typename T::GlobalIndex, typename T::LocalIndex::Attribute> >>
class Dune::RemoteIndices< T, A >

The indices present on remote processes.

To set up communication between the set of processes active in the communication every process needs to know which indices are also known to other processes and which attributes are attached to them on the remote side.

This information is managed by this class. The information can either be computed automatically calling rebuild (which requires information to be sent in a ring) or set up by hand using the RemoteIndexListModifiers returned by function getModifier(int).

Template Parameters
TThe type of the underlying index set.
AThe type of the allocator to use.

Friends And Related Function Documentation

◆ fillIndexSetHoles

template<class T , class A = std::allocator<RemoteIndex<typename T::GlobalIndex, typename T::LocalIndex::Attribute> >>
template<class G , class T1 , class T2 >
void fillIndexSetHoles ( const G &  graph,
Dune::OwnerOverlapCopyCommunication< T1, T2 > &  oocomm 
)
friend

Fills the holes in an index set.

In general the index set only needs to know those indices where communication my occur. In usual FE computations these are just those near the processor boundaries.

For the repartitioning we need to know all all indices for which data is stored. The missing indices will be created in this method.

Parameters
graphThe graph to reparition.
oocommThe communication information.

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 23, 23:29, 2024)