1 #ifndef DUNE_FEM_LOADBALANCER_HH
2 #define DUNE_FEM_LOADBALANCER_HH
10 #include <dune/common/timer.hh>
63 template <
class Gr
idType>
79 typedef typename DataInlinerType :: LocalInterfaceType LocalDataInlinerInterfaceType;
81 typedef typename DataXtractorType :: LocalInterfaceType LocalDataXtractorInterfaceType;
83 typedef std::pair< LocalDataInlinerInterfaceType*, LocalDataXtractorInterfaceType* > LocalDataCollectorPairType;
84 typedef std::pair< DataInlinerType* , DataXtractorType* > DataCollectorPairType;
87 template<
class RestrictPro
longOperator >
96 rpOp.addToLoadBalancer( *
this );
135 const auto gv =
grid_.leafGridView();
136 if( (gv.overlapSize( 0 ) > 0) || (gv.ghostSize( 0 ) > 0) )
152 bool changed =
false;
155 if(
grid_.comm().size() <= 1 )
159 assert( Fem :: ThreadManager :: singleThreadMode() );
171 std::cout <<
"P[" <<
grid_.comm().rank() <<
"] : Caught an exepction during load balance" << std::endl;
191 template <
class DiscreteFunctionType>
198 template <
class DiscreteFunctionType>
205 template <
class DiscreteFunctionType,
class ContainsCheck >
208 static_assert( std::is_convertible< DiscreteFunctionType, IsDiscreteFunction >::value,
209 "Only valid for discrete functions" );
230 LocalDataCollectorPairType localPair;
231 DataCollectorPairType collPair;
234 LocalInlinerType * di =
new LocalInlinerType(df, containsCheck );
235 localPair.first = di ;
238 DataCollectorImp* gdi =
new DataCollectorImp(
grid_,
dm_ , *di, di->readWriteInfo() );
239 collPair.first = gdi ;
249 LocalXtractorType * dx =
new LocalXtractorType(df, containsCheck );
250 localPair.second = dx ;
253 DataCollectorImp* gdx =
new DataCollectorImp(
grid_,
dm_ , *dx, dx->readWriteInfo() );
254 collPair.second = gdx ;
264 df.enableDofCompression();
void exchange() const
Definition: communicationmanager.hh:377
DataCollectorInterface< GridType, InlineStreamType > DataInlinerType
Definition: dofmanager.hh:781
void addDataXtractor(DataCollType &d)
add data handler for data xtracting to dof manager
Definition: dofmanager.hh:1088
DataCollectorInterface< GridType, XtractStreamType > DataXtractorType
Definition: dofmanager.hh:780
void clearDataXtractors()
clear data xtractor list
Definition: dofmanager.hh:1094
void clearDataInliners()
clear data inliner list
Definition: dofmanager.hh:1081
void addDataInliner(DataCollType &d)
add data handler for data inlining to dof manager
Definition: dofmanager.hh:1075
Definition: bindguard.hh:11
base class for determing whether a class is a discrete function or not
Definition: common/discretefunction.hh:53
Proxy class to DependencyCache which is singleton per space.
Definition: communicationmanager.hh:290
Definition: dofmanager.hh:762
The DataCollector is an example for a grid walk done while load balancing moves entities from one pro...
Definition: datacollector.hh:436
Inline DiscreteFunction data during load balancing.
Definition: datacollector.hh:680
Inline DiscreteFunction data during load balancing.
Definition: datacollector.hh:772
Interface class for load balancing.
Definition: loadbalancer.hh:37
virtual double loadBalanceTime() const
time that last load balance cycle took
Definition: loadbalancer.hh:52
LoadBalancerInterface()
default constructor
Definition: loadbalancer.hh:40
virtual bool loadBalance()=0
call load balance, returns true if grid was changed
virtual ~LoadBalancerInterface()
destructor
Definition: loadbalancer.hh:44
This class manages the adaptation process. If the method adapt is called, then the grid is adapted an...
Definition: loadbalancer.hh:66
LoadBalancer(GridType &grid)
Definition: loadbalancer.hh:99
virtual double loadBalanceTime() const
time that last load balance cycle took
Definition: loadbalancer.hh:185
bool loadBalance()
do load balance
Definition: loadbalancer.hh:150
double balanceTime_
Definition: loadbalancer.hh:285
void addToLoadBalancer(DiscreteFunctionType &df)
add discrete function to data inliner/xtractor list
Definition: loadbalancer.hh:192
LoadBalancer(GridType &grid, RestrictProlongOperator &rpOp)
constructor of LoadBalancer
Definition: loadbalancer.hh:88
virtual ~LoadBalancer()
destructor
Definition: loadbalancer.hh:110
std::vector< LocalDataCollectorPairType > localList_
Definition: loadbalancer.hh:276
GridType & grid_
corresponding grid
Definition: loadbalancer.hh:270
std::vector< DataCollectorPairType > collList_
Definition: loadbalancer.hh:277
void addDiscreteFunction(DiscreteFunctionType &df, const ContainsCheck &containsCheck)
add discrete function to data inliner/xtractor list
Definition: loadbalancer.hh:206
void addDiscreteFunction(DiscreteFunctionType &df)
add discrete function to data inliner/xtractor list
Definition: loadbalancer.hh:199
void communicate() const
Definition: loadbalancer.hh:131
DofManagerType & dm_
DofManager corresponding to grid.
Definition: loadbalancer.hh:273
CommunicationManagerList commList_
Definition: loadbalancer.hh:282
std::set< const IsDiscreteFunction * > listOfFcts_
Definition: loadbalancer.hh:280