DUNE ISTL (unstable)

repartition.hh File Reference

Functionality for redistributing a parallel index set using graph partitioning. More...

#include <cassert>
#include <map>
#include <utility>
#include <cmath>
#include <dune/common/timer.hh>
#include <dune/common/enumset.hh>
#include <dune/common/stdstreams.hh>
#include <dune/common/parallel/mpitraits.hh>
#include <dune/common/parallel/communicator.hh>
#include <dune/common/parallel/indexset.hh>
#include <dune/common/parallel/indicessyncer.hh>
#include <dune/common/parallel/remoteindices.hh>
#include <dune/common/rangeutilities.hh>
#include <dune/istl/owneroverlapcopy.hh>
#include <dune/istl/paamg/graph.hh>

Go to the source code of this file.

Functions

template<class G , class T1 , class T2 >
void Dune::fillIndexSetHoles (const G &graph, Dune::OwnerOverlapCopyCommunication< T1, T2 > &oocomm)
 Fills the holes in an index set. More...
 
template<class G , class T1 , class T2 >
bool Dune::graphRepartition (const G &graph, Dune::OwnerOverlapCopyCommunication< T1, T2 > &oocomm, Metis::idx_t nparts, std::shared_ptr< Dune::OwnerOverlapCopyCommunication< T1, T2 > > &outcomm, RedistributeInterface &redistInf, bool verbose=false)
 execute a graph repartition for a giving graph and indexset. More...
 

Detailed Description

Functionality for redistributing a parallel index set using graph partitioning.

Refactored version of an intern.

Author
Markus Blatt

Function Documentation

◆ fillIndexSetHoles()

template<class G , class T1 , class T2 >
void Dune::fillIndexSetHoles ( const G &  graph,
Dune::OwnerOverlapCopyCommunication< T1, T2 > &  oocomm 
)

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.

References Dune::fillIndexSetHoles(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::indexSet(), and Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::remoteIndices().

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

◆ graphRepartition()

template<class G , class T1 , class T2 >
bool Dune::graphRepartition ( const G &  graph,
Dune::OwnerOverlapCopyCommunication< T1, T2 > &  oocomm,
Metis::idx_t  nparts,
std::shared_ptr< Dune::OwnerOverlapCopyCommunication< T1, T2 > > &  outcomm,
RedistributeInterface &  redistInf,
bool  verbose = false 
)

execute a graph repartition for a giving graph and indexset.

This function provides repartition functionality using the PARMETIS library

Parameters
graphThe given graph to repartition
oocommThe parallel information about the graph.
npartsThe number of domains the repartitioning should achieve.
[out]outcommPointer store the parallel information of the redistributed domains in.
redistInfRedistribute interface
verboseVerbosity flag to give out additional information.

References Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::copyCopyToAll(), Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::copyOwnerToAll(), Dune::fillIndexSetHoles(), Dune::graphRepartition(), and Dune::OwnerOverlapCopyCommunication< GlobalIdType, LocalIdType >::indexSet().

Referenced by Dune::graphRepartition().

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (May 27, 22:36, 2026)