summaryrefslogtreecommitdiff
path: root/src/gen_laplacian.c
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jkentdobias@g.hmc.edu>2016-08-22 10:42:36 -0400
committerJaron Kent-Dobias <jkentdobias@g.hmc.edu>2016-08-22 10:42:36 -0400
commita5e505fc1a8f7ae060f8f2604a8d5b6132851d34 (patch)
treea2091f9af60089e22c238a3c0f27b1684b3e4422 /src/gen_laplacian.c
parentaf05d7e61009b85b9fc836ba35d853642ef76765 (diff)
downloadfuse_networks-a5e505fc1a8f7ae060f8f2604a8d5b6132851d34.tar.gz
fuse_networks-a5e505fc1a8f7ae060f8f2604a8d5b6132851d34.tar.bz2
fuse_networks-a5e505fc1a8f7ae060f8f2604a8d5b6132851d34.zip
made updating the dual clusters more efficient
Diffstat (limited to 'src/gen_laplacian.c')
-rw-r--r--src/gen_laplacian.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/gen_laplacian.c b/src/gen_laplacian.c
index 6f4263a..a282564 100644
--- a/src/gen_laplacian.c
+++ b/src/gen_laplacian.c
@@ -5,8 +5,7 @@ cholmod_sparse *gen_adjacency(const finst *instance, bool dual, bool breakv,
unsigned int pad, cholmod_common *c) {
unsigned int ne;
if (dual)
- ne = ((int)instance->network->num_edges -
- (int)instance->num_remaining_edges);
+ ne = ((int)instance->network->num_edges);
else {
ne = instance->num_remaining_edges;
if (!breakv && instance->network->boundary != TORUS_BOUND) {
@@ -59,6 +58,19 @@ cholmod_sparse *gen_adjacency(const finst *instance, bool dual, bool breakv,
ai[2 * count + 1] = 1;
count++;
+ } else if (dual) {
+ unsigned int v1 = etv[2 * i];
+ unsigned int v2 = etv[2 * i + 1];
+
+ ri[2 * count] = v1;
+ ci[2 * count] = v2;
+ ai[2 * count] = 0;
+
+ ri[2 * count + 1] = v2;
+ ci[2 * count + 1] = v1;
+ ai[2 * count + 1] = 0;
+
+ count++;
}
}