summaryrefslogtreecommitdiff
path: root/src/gen_laplacian.c
diff options
context:
space:
mode:
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++;
}
}