Dune::RemoteIndexListModifier< T, A, mode > Class Template Reference

Modifier for adding and/or deleting remote indices from the remote index list. More...

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

List of all members.

Classes

class  InvalidPosition

Public Types

enum  { MODIFYINDEXSET = mode }
typedef T ParallelIndexSet
 Type of the index set we use.
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, Attribute
RemoteIndex
 Type of the remote indices we manage.
typedef A Allocator
 The type of the allocator for the remote index list.
typedef Dune::SLList
< RemoteIndex, Allocator
RemoteIndexList
 The type of the remote index list.
typedef SLListModifyIterator
< RemoteIndex, Allocator
ModifyIterator
 The type of the modifying iterator of the remote index list.
typedef
RemoteIndexList::const_iterator 
ConstIterator
 The type of the remote index list iterator.

Public Member Functions

void insert (const RemoteIndex &index) throw (InvalidPosition)
 Insert an index to the list.
void insert (const RemoteIndex &index, const GlobalIndex &global) throw (InvalidPosition)
 Insert an index to the list.
bool remove (const GlobalIndex &global) throw (InvalidPosition)
 Remove a remote index.
void repairLocalIndexPointers () throw (InvalidIndexSetState)
 Repair the pointers to the local index pairs.
 RemoteIndexListModifier (const RemoteIndexListModifier &)
 RemoteIndexListModifier ()
 Default constructor.

Detailed Description

template<class T, class A, bool mode>
class Dune::RemoteIndexListModifier< T, A, mode >

Modifier for adding and/or deleting remote indices from the remote index list.

In some cases all the information about the indices also present on remote process might already be known. In this case this information can be provided to the RemoteIndices via this modifier. This prevents the global communication needed by a call to RemoteIndices::rebuild.

In some cases it might advisable to run IndicesSyncer::sync afterwards.

Warning:
Use with care. If the indices are not consistent afterwards communication attempts might deadlock!

Member Typedef Documentation

template<class T, class A, bool mode>
typedef A Dune::RemoteIndexListModifier< T, A, mode >::Allocator

The type of the allocator for the remote index list.

template<class T, class A, bool mode>
typedef LocalIndex::Attribute Dune::RemoteIndexListModifier< T, A, mode >::Attribute

The type of the attribute.

template<class T, class A, bool mode>
typedef RemoteIndexList::const_iterator Dune::RemoteIndexListModifier< T, A, mode >::ConstIterator

The type of the remote index list iterator.

template<class T, class A, bool mode>
typedef ParallelIndexSet::GlobalIndex Dune::RemoteIndexListModifier< T, A, mode >::GlobalIndex

The type of the global index.

template<class T, class A, bool mode>
typedef ParallelIndexSet::LocalIndex Dune::RemoteIndexListModifier< T, A, mode >::LocalIndex

The type of the local index.

template<class T, class A, bool mode>
typedef SLListModifyIterator<RemoteIndex,Allocator> Dune::RemoteIndexListModifier< T, A, mode >::ModifyIterator

The type of the modifying iterator of the remote index list.

template<class T, class A, bool mode>
typedef T Dune::RemoteIndexListModifier< T, A, mode >::ParallelIndexSet

Type of the index set we use.

template<class T, class A, bool mode>
typedef Dune::RemoteIndex<GlobalIndex,Attribute> Dune::RemoteIndexListModifier< T, A, mode >::RemoteIndex

Type of the remote indices we manage.

template<class T, class A, bool mode>
typedef Dune::SLList<RemoteIndex,Allocator> Dune::RemoteIndexListModifier< T, A, mode >::RemoteIndexList

The type of the remote index list.


Member Enumeration Documentation

template<class T, class A, bool mode>
anonymous enum
Enumerator:
MODIFYINDEXSET 

If true the index set corresponding to the remote indices might get modified.

If for example new indices are added to an index set all pointers of the remote indices to the local indices become invalid after ParallelIndexSet::endResize() was called.


Constructor & Destructor Documentation

template<typename T , typename A , bool mode>
Dune::RemoteIndexListModifier< T, A, mode >::RemoteIndexListModifier ( const RemoteIndexListModifier< T, A, mode > &  other  )  [inline]
template<class T, class A, bool mode>
Dune::RemoteIndexListModifier< T, A, mode >::RemoteIndexListModifier (  )  [inline]

Default constructor.

Warning:
Object is not usable!

Member Function Documentation

template<typename T , typename A , bool mode>
void Dune::RemoteIndexListModifier< T, A, mode >::insert ( const RemoteIndex index,
const GlobalIndex global 
) throw (InvalidPosition) [inline]

Insert an index to the list.

Moves to the position where the index fits and inserts it. After the insertion only indices with an bigger global index than the inserted can be inserted.

This method is only available if MODIFYINDEXSET is true.

Parameters:
index The index to insert.
global The global index of the remote index.
Exceptions:
InvalidPosition Thrown if the index at the current position or the one before has bigger global index than the one to be inserted.
template<typename T , typename A , bool mode>
void Dune::RemoteIndexListModifier< T, A, mode >::insert ( const RemoteIndex index  )  throw (InvalidPosition) [inline]

Insert an index to the list.

Moves to the position where the index fits and inserts it. After the insertion only indices with an bigger global index than the inserted can be inserted.

This method is only available if MODIFYINDEXSET is false.

Parameters:
index The index to insert.
Exceptions:
InvalidPosition Thrown if the index at the current position or the one before has bigger global index than the one to be inserted.
template<typename T , typename A , bool mode>
bool Dune::RemoteIndexListModifier< T, A, mode >::remove ( const GlobalIndex global  )  throw (InvalidPosition) [inline]

Remove a remote index.

Parameters:
global The global index corresponding to the remote index.
Returns:
True If there was a corresponding remote index.
Exceptions:
InvalidPostion If there was an insertion or deletion of a remote index corresponding to a bigger global index before.
template<typename T , typename A , bool mode>
void Dune::RemoteIndexListModifier< T, A, mode >::repairLocalIndexPointers (  )  throw (InvalidIndexSetState) [inline]

Repair the pointers to the local index pairs.

Due to adding new indices or/and deleting indices in the index set all pointers to the local index pair might become invalid during ParallelIndexSet::endResize(). This method repairs them.

Exceptions:
InvalidIndexSetState Thrown if the underlying index set is not in ParallelIndexSetState::GROUND mode (only when compiled with DUNE_ISTL_WITH_CHECKING!).

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 25 Mar 2018 for dune-common by  doxygen 1.6.1