Dune Core Modules (2.9.1)
Modifier for adding and/or deleting remote indices from the remote index list. More...
#include <dune/common/parallel/remoteindices.hh>
Public Types | |
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) |
Insert an index to the list. More... | |
void | insert (const RemoteIndex &index, const GlobalIndex &global) |
Insert an index to the list. More... | |
bool | remove (const GlobalIndex &global) |
Remove a remote index. More... | |
void | repairLocalIndexPointers () |
Repair the pointers to the local index pairs. More... | |
RemoteIndexListModifier () | |
Default constructor. More... | |
Static Public Attributes | |
static constexpr bool | MODIFYINDEXSET = mode |
If true the index set corresponding to the remote indices might get modified. More... | |
Detailed Description
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!
Constructor & Destructor Documentation
◆ RemoteIndexListModifier()
|
inline |
Default constructor.
- Warning
- Object is not usable!
Member Function Documentation
◆ insert() [1/2]
|
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.
References DUNE_THROW, Dune::IndexPair< TG, TL >::global(), and Dune::RemoteIndex< T1, T2 >::localIndexPair().
Referenced by Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::OwnerOverlapCopyCommunication().
◆ insert() [2/2]
|
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.
References DUNE_THROW.
◆ remove()
bool Dune::RemoteIndexListModifier< T, A, mode >::remove | ( | const GlobalIndex & | global | ) |
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.
References DUNE_THROW.
◆ repairLocalIndexPointers()
|
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!).
References DUNE_THROW, and Dune::GROUND.
Member Data Documentation
◆ MODIFYINDEXSET
|
staticconstexpr |
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.
The documentation for this class was generated from the following file:
- dune/common/parallel/remoteindices.hh