62 ZOLTAN_ID_PTR globalId, ZOLTAN_ID_PTR localId,
63 double *geomVec,
int *ierr)
66 geomVec[0] =
cells[localId[0]].
x;
67 geomVec[1] =
cells[localId[0]].
y;
68 geomVec[2] =
cells[localId[0]].
z;
71 geomVec[0] =
cells[localId[0]].
x;
72 geomVec[1] =
cells[localId[0]].
y;
88 ZOLTAN_ID_PTR globalIds, ZOLTAN_ID_PTR localIds,
89 int wgtDim,
float *objWgts,
int *ierr)
92 struct cell *p = (
struct cell *) data;
93 for (i = 0; i <
lnc; i++) {
94 globalIds[i * numGIdEntries] =
cells[i].
gid;
95 localIds[i * numLIdEntries] = i;
106 int numLIdEntries, ZOLTAN_ID_PTR globalId,
107 ZOLTAN_ID_PTR localId,
int *ierr)
115 void ztnPack(
void *data,
int numGIdEntries,
int numLIdEntries,
116 ZOLTAN_ID_PTR globalId, ZOLTAN_ID_PTR localId,
int dest,
117 int size,
char *buf,
int *ierr)
120 memcpy(buf, &(c[localId[0]]),
sizeof(
struct cellData));
121 c[(int) (*localId)].
gid = -1;
127 void ztnPre(
void *data,
int numGIdEntries,
int numLIdEntries,
128 int numImport, ZOLTAN_ID_PTR importGlobalIds,
131 ZOLTAN_ID_PTR exportGlobalIds, ZOLTAN_ID_PTR exportLocalIds,
140 void ztnMid(
void *data,
int numGIdEntries,
int numLIdEntries,
141 int numImport, ZOLTAN_ID_PTR importGlobalIds,
144 ZOLTAN_ID_PTR exportGlobalIds, ZOLTAN_ID_PTR exportLocalIds,
150 for (i = 0; i <
lnc; i++) {
151 if (i != pos && c[i].
gid != -1) {
163 void ztnPost(
void *data,
int numGIdEntries,
int numLIdEntries,
164 int numImport, ZOLTAN_ID_PTR importGlobalIds,
167 ZOLTAN_ID_PTR exportGlobalIds, ZOLTAN_ID_PTR exportLocalIds,
172 MPI_Allgather(&
lnc, 1, MPI_LONG_LONG,
tlnc, 1, MPI_LONG_LONG,
179 void ztnUnpack(
void *data,
int numGIdEntries, ZOLTAN_ID_PTR globalId,
180 int size,
char *buf,
int *ierr)
196 rc = Zoltan_Initialize(argc, argv, &version);
198 stopRun(112, NULL, __FILE__, __LINE__);
201 printf(
"Zoltan Version %.3f. Initialized.\n", version);
203 ztn = Zoltan_Create(MPI_COMM_WORLD);
205 Zoltan_Set_Param(
ztn,
"IMBALANCE_TOL",
"2.0");
206 Zoltan_Set_Param(
ztn,
"LB_METHOD",
"HSFC");
207 Zoltan_Set_Param(
ztn,
"NUM_GID_ENTRIES",
"1");
208 Zoltan_Set_Param(
ztn,
"NUM_LID_ENTRIES",
"1");
209 Zoltan_Set_Param(
ztn,
"OBJ_WEIGHT_DIM",
"1");
210 Zoltan_Set_Param(
ztn,
"DEBUG_LEVEL",
"0");
211 Zoltan_Set_Param(
ztn,
"KEEP_CUTS",
"1");
212 Zoltan_Set_Param(
ztn,
"AUTO_MIGRATE",
"1");
214 Zoltan_Set_Fn(
ztn, ZOLTAN_NUM_GEOM_FN_TYPE,
220 Zoltan_Set_Fn(
ztn, ZOLTAN_OBJ_LIST_FN_TYPE,
222 Zoltan_Set_Fn(
ztn, ZOLTAN_OBJ_SIZE_FN_TYPE,
224 Zoltan_Set_Fn(
ztn, ZOLTAN_PACK_OBJ_FN_TYPE, (
void (*)())
ztnPack,
cells);
225 Zoltan_Set_Fn(
ztn, ZOLTAN_UNPACK_OBJ_FN_TYPE, (
void (*)())
ztnUnpack,
227 Zoltan_Set_Fn(
ztn, ZOLTAN_PRE_MIGRATE_PP_FN_TYPE, (
void (*)())
ztnPre,
229 Zoltan_Set_Fn(
ztn, ZOLTAN_MID_MIGRATE_PP_FN_TYPE, (
void (*)())
ztnMid,
231 Zoltan_Set_Fn(
ztn, ZOLTAN_POST_MIGRATE_PP_FN_TYPE, (
void (*)())
ztnPost,
248 rc = Zoltan_LB_Partition(
ztn,
264 stopRun(112, NULL, __FILE__, __LINE__);
279 Zoltan_Destroy(&
ztn);
void ztnReturnCoords(void *data, int numGidEntries, int numLidEntries, ZOLTAN_ID_PTR globalId, ZOLTAN_ID_PTR localId, double *geomVec, int *ierr)
void decompositionFinalize()
ZOLTAN_ID_PTR exportGlobalGids
ZOLTAN_ID_PTR importGlobalGids
ZOLTAN_ID_PTR importLocalGids
struct Zoltan_Struct * ztn
contains the most important global variables, arrays and defines
void decompositionInit(int argc, char **argv, MPI_Comm Comm)
void decompositionExecute()
void ztnPack(void *data, int numGIdEntries, int numLIdEntries, ZOLTAN_ID_PTR globalId, ZOLTAN_ID_PTR localId, int dest, int size, char *buf, int *ierr)
int ztnReturnParticleDataSize(void *data, int numGIdEntries, int numLIdEntries, ZOLTAN_ID_PTR globalId, ZOLTAN_ID_PTR localId, int *ierr)
int ztnReturnDimension(void *data, int *ierr)
ZOLTAN_ID_PTR exportLocalGids
void ztnUnpack(void *data, int numGIdEntries, ZOLTAN_ID_PTR globalId, int size, char *buf, int *ierr)
void ztnReturnOwnedNodes(void *data, int numGIdEntries, int numLIdEntries, ZOLTAN_ID_PTR globalIds, ZOLTAN_ID_PTR localIds, int wgtDim, float *objWgts, int *ierr)
void ztnPre(void *data, int numGIdEntries, int numLIdEntries, int numImport, ZOLTAN_ID_PTR importGlobalIds, ZOLTAN_ID_PTR importLocalIds, int *importProcs, int *importToPart, int numExport, ZOLTAN_ID_PTR exportGlobalIds, ZOLTAN_ID_PTR exportLocalIds, int *exportProcs, int *exportToPart, int *ierr)
void ztnPost(void *data, int numGIdEntries, int numLIdEntries, int numImport, ZOLTAN_ID_PTR importGlobalIds, ZOLTAN_ID_PTR importLocalIds, int *importProcs, int *importToPart, int numExport, ZOLTAN_ID_PTR exportGlobalIds, ZOLTAN_ID_PTR exportLocalIds, int *exportProcs, int *exportToPart, int *ierr)
void stopRun(int ierr, char *name, char *file, int line)
void ztnMid(void *data, int numGIdEntries, int numLIdEntries, int numImport, ZOLTAN_ID_PTR importGlobalIds, ZOLTAN_ID_PTR importLocalIds, int *importProcs, int *importToPart, int numExport, ZOLTAN_ID_PTR exportGlobalIds, ZOLTAN_ID_PTR exportLocalIds, int *exportProcs, int *exportToPart, int *ierr)
int ztnReturnNumNode(void *data, int *ierr)