Commit 856b9ea5 authored by Peter W. Draper's avatar Peter W. Draper
Browse files

Protect against zero range of the repartitioning weights

parent 26af1f95
......@@ -703,7 +703,10 @@ static void repart_edge_metis(int partweights, int bothweights, int timebins,
/* Make range the same in both weights systems. */
if ((wmaxv - wminv) > (wmaxe - wmine)) {
double wscale = (wmaxv - wminv) / (wmaxe - wmine);
double wscale = 1.0;
if ((wmaxe - wmine) > 0.0) {
wscale = (wmaxv - wminv) / (wmaxe - wmine);
}
for (int k = 0; k < 26 * nr_cells; k++) {
weights_e[k] = (weights_e[k] - wmine) * wscale + wminv;
}
......@@ -711,7 +714,10 @@ static void repart_edge_metis(int partweights, int bothweights, int timebins,
wmaxe = wmaxv;
} else {
double wscale = (wmaxe - wmine) / (wmaxv - wminv);
double wscale = 1.0;
if ((wmaxv - wminv) > 0.0) {
wscale = (wmaxe - wmine) / (wmaxv - wminv);
}
for (int k = 0; k < nr_cells; k++) {
weights_v[k] = (weights_v[k] - wminv) * wscale + wmine;
}
......@@ -720,14 +726,20 @@ static void repart_edge_metis(int partweights, int bothweights, int timebins,
}
/* Scale to the METIS range. */
double wscale = (metis_maxweight - 1.0) / (wmaxv - wminv);
double wscale = 1.0;
if ((wmaxv - wminv) > 0.0) {
wscale = (metis_maxweight - 1.0) / (wmaxv - wminv);
}
for (int k = 0; k < nr_cells; k++) {
weights_v[k] = (weights_v[k] - wminv) * wscale + 1.0;
}
}
/* Scale to the METIS range. */
double wscale = (metis_maxweight - 1.0) / (wmaxe - wmine);
double wscale = 1.0;
if ((wmaxe - wmine) > 0.0) {
wscale = (metis_maxweight - 1.0) / (wmaxe - wmine);
}
for (int k = 0; k < 26 * nr_cells; k++) {
weights_e[k] = (weights_e[k] - wmine) * wscale + 1.0;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment