diff options
author | Jaron Kent-Dobias <jkentdobias@g.hmc.edu> | 2016-08-22 10:42:36 -0400 |
---|---|---|
committer | Jaron Kent-Dobias <jkentdobias@g.hmc.edu> | 2016-08-22 10:42:36 -0400 |
commit | a5e505fc1a8f7ae060f8f2604a8d5b6132851d34 (patch) | |
tree | a2091f9af60089e22c238a3c0f27b1684b3e4422 /src/gen_laplacian.c | |
parent | af05d7e61009b85b9fc836ba35d853642ef76765 (diff) | |
download | fuse_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.c | 16 |
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++; } } |