1#ifndef _MULTISTEPLB_SFC_H_
2#define _MULTISTEPLB_SFC_H_
4#include "MultistepLB_SFC.decl.h"
10void Orb_PrintLBStats(BaseLB::LDStats *stats,
int numobjs);
11void write_LB_particles(BaseLB::LDStats* stats,
const char *achFileName,
bool bFrom);
23class MultistepLB_SFC :
public CBase_MultistepLB_SFC {
26 bool QueryBalanceNow(
int step);
28 decltype(BaseLB::LDStats::to_proc) *mapping;
29 decltype(BaseLB::LDStats::from_proc) *from;
36 MultistepLB_SFC(
const CkLBOptions &);
37 MultistepLB_SFC(CkMigrateMessage *m) : CBase_MultistepLB_SFC(m) {
58 bool operator<(
const SFCObject &o)
const{
63 void work(BaseLB::LDStats* stats);
64 void work2(BaseLB::LDStats* stats);
65 void sfcPrepare(std::vector<SFCObject> &tp_array,
66 int nObjs, BaseLB::LDStats * stats,
67 bool node_partition=
false);
68 void sfcPartition(
int nProcs, std::vector<SFCObject> & tp,
69 BaseLB::LDStats *stats,
bool node_partition=
false);
Definition MultistepLB_SFC.h:42
int lbindex
index into LB stats->objData
Definition MultistepLB_SFC.h:45
double load
computational cost of this object
Definition MultistepLB_SFC.h:50
Vector3D< cosmoType > centroid
Spacial location of TreePiece.
Definition MultistepLB_SFC.h:47
void work(BaseLB::LDStats *stats)
Implement load balancing: store loads and determine active processors and objects,...
Definition MultistepLB_SFC.cpp:44
void sfcPrepare(std::vector< SFCObject > &tp_array, int nObjs, BaseLB::LDStats *stats, bool node_partition=false)
Prepare structures for the ORB partition.
Definition MultistepLB_SFC.cpp:183
void sfcPartition(int nProcs, std::vector< SFCObject > &tp, BaseLB::LDStats *stats, bool node_partition=false)
Partition treepieces among processors by dividing the SFC as evenly as possible.
Definition MultistepLB_SFC.cpp:243
void work2(BaseLB::LDStats *stats)
SFC load balance.
Definition MultistepLB_SFC.cpp:115