47#define _IFT_LoadBalancer_wtp "wtp"
48#define _IFT_LoadBalancerMonitor_nodeWeightMode "nodeweightmode"
49#define _IFT_LoadBalancerMonitor_initialnodeweights "nw"
55class ProcessCommunicator;
59 #define MIGRATE_LOAD_TAG 9998
219 std :: vector< std :: unique_ptr< WorkTransferPlugin > >
wtpList;
bool staticNodeWeightFlag
virtual ~LoadBalancerMonitor()
LoadBalancerMonitor(EngngModel *em)
virtual const char * giveClassName() const =0
Returns class name of the receiver.
const FloatArray & giveProcessorWeights()
Returns processor weights; the larger weight means more powerful node, sum of weights should equal to...
virtual LoadBalancerDecisionType decide(TimeStep *)=0
Returns flag indicating whether rebalancing is necessary; should update node weights as well.
virtual void init(Domain *d)=0
WorkTransferPlugin(LoadBalancer *_lb)
virtual ~WorkTransferPlugin()
virtual void calculateLoadTransfer()=0
virtual IntArray * giveDofManPartitions(int idofman)=0
Returns the partition list of given dofmanager after load balancing.
virtual void printStatistics() const
Print receiver statistics.
int packMigratingData(Domain *, ProcessCommunicator &pc)
Domain * giveDomain()
Returns reference to its domain.
virtual void setDomain(Domain *d)
sets associated Domain
virtual const char * giveClassName() const =0
Returns class name of the receiver.
virtual void initializeFrom(InputRecord &ir)
Initializes receiver according to object description stored in input record.
void initializeWtp(IntArray &wtp)
virtual DofManMode giveDofManState(int idofman)=0
Returns the label of dofmanager after load balancing.
virtual int giveElementPartition(int ielem)=0
Returns the new partition number assigned to local element after LB.
int unpackMigratingData(Domain *, ProcessCommunicator &pc)
void deleteRemoteDofManagers(Domain *)
void migrateLoad(Domain *d)
@ DM_Shared
Shared dofman that remains shared.
@ DM_Local
Local dofman that remains local.
@ DM_NULL
Undefined (undetermined) state, if assigned means internal error.
@ DM_Remote
Local dofman that became remote (became local on remote partition).
std ::vector< std ::unique_ptr< WorkTransferPlugin > > wtpList
List of work transfer plugins.
void deleteRemoteElements(Domain *)