summaryrefslogtreecommitdiff
path: root/src/break_edge.c
diff options
context:
space:
mode:
authorpants <jaron@kent-dobias.com>2016-09-06 15:05:27 -0400
committerpants <jaron@kent-dobias.com>2016-09-06 15:05:27 -0400
commit4c4ebb87ead363d6d6e11a8b95b07a0f93af5c88 (patch)
tree9cdaaf27917c2b1562740dec501d013e47a25dd1 /src/break_edge.c
parentfd14c5e39d962be94a1f68b0d4cacb7a4aa9c3e7 (diff)
downloadfuse_networks-4c4ebb87ead363d6d6e11a8b95b07a0f93af5c88.tar.gz
fuse_networks-4c4ebb87ead363d6d6e11a8b95b07a0f93af5c88.tar.bz2
fuse_networks-4c4ebb87ead363d6d6e11a8b95b07a0f93af5c88.zip
finished implementing embedded systems, refactored a bunch
Diffstat (limited to 'src/break_edge.c')
-rw-r--r--src/break_edge.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/break_edge.c b/src/break_edge.c
index 72ccf3e..7b94160 100644
--- a/src/break_edge.c
+++ b/src/break_edge.c
@@ -1,18 +1,18 @@
#include "fracture.h"
-bool break_edge(finst *instance, unsigned int edge, cholmod_common *c) {
+bool break_edge(net_t *instance, unsigned int edge, cholmod_common *c) {
instance->fuses[edge] = true;
instance->num_remaining_edges--;
- unsigned int v1 = instance->network->edges_to_verts_break[2 * edge];
- unsigned int v2 = instance->network->edges_to_verts_break[2 * edge + 1];
+ unsigned int v1 = instance->graph->ev_break[2 * edge];
+ unsigned int v2 = instance->graph->ev_break[2 * edge + 1];
if (instance->factor != NULL) update_factor(instance->factor, v1, v2, c);
- if (instance->network->boundary != TORUS_BOUND) {
- unsigned int w1 = instance->network->edges_to_verts[2 * edge];
- unsigned int w2 = instance->network->edges_to_verts[2 * edge + 1];
+ if (instance->graph->boundary != TORUS_BOUND) {
+ unsigned int w1 = instance->graph->ev[2 * edge];
+ unsigned int w2 = instance->graph->ev[2 * edge + 1];
unsigned int tw1 = w1 > w2 ? w1 : w2;
unsigned int tw2 = w1 > w2 ? w2 : w1;
@@ -37,13 +37,13 @@ bool break_edge(finst *instance, unsigned int edge, cholmod_common *c) {
(int)tw2, 0);
}
- if (instance->network->boundary == TORUS_BOUND) {
- unsigned int dw1 = instance->network->dual_edges_to_verts[2 * edge];
- unsigned int dw2 = instance->network->dual_edges_to_verts[2 * edge + 1];
+ if (instance->graph->boundary == TORUS_BOUND) {
+ unsigned int dw1 = instance->graph->dev[2 * edge];
+ unsigned int dw2 = instance->graph->dev[2 * edge + 1];
if (instance->dual_marks[dw1] == instance->dual_marks[dw2]) {
- int **cycles = (int **)malloc(2*instance->network->num_edges * sizeof(int *));
- unsigned int num_cycles = find_cycles(instance->network->num_edges, instance->fuses, instance->network->dual_edges_to_verts, instance->network->dual_verts_to_edges_ind, instance->network->dual_verts_to_edges, cycles);
+ int **cycles = (int **)malloc(2*instance->graph->ne * sizeof(int *));
+ unsigned int num_cycles = find_cycles(instance->graph->ne, instance->fuses, instance->graph->dev, instance->graph->dvei, instance->graph->dve, cycles);
for (unsigned int i = 0; i < num_cycles; i++) {
int x_num_crossings = 0;
@@ -54,12 +54,12 @@ bool break_edge(finst *instance, unsigned int edge, cholmod_common *c) {
j++;
unsigned int v1, v2;
double v1x, v1y, v2x, v2y;
- v1 = instance->network->dual_edges_to_verts[2 * ee + !side];
- v2 = instance->network->dual_edges_to_verts[2 * ee + side];
- v1x = instance->network->dual_vert_coords[2 * v1];
- v1y = instance->network->dual_vert_coords[2 * v1 + 1];
- v2x = instance->network->dual_vert_coords[2 * v2];
- v2y = instance->network->dual_vert_coords[2 * v2 + 1];
+ v1 = instance->graph->dev[2 * ee + !side];
+ v2 = instance->graph->dev[2 * ee + side];
+ v1x = instance->graph->dual_vert_coords[2 * v1];
+ v1y = instance->graph->dual_vert_coords[2 * v1 + 1];
+ v2x = instance->graph->dual_vert_coords[2 * v2];
+ v2y = instance->graph->dual_vert_coords[2 * v2 + 1];
double dx = v1x - v2x;
double dy = v1y - v2y;
if (((v1x > 0.5 && v2x < 0.5) || (v1x < 0.5 && v2x > 0.5)) && fabs(dx) < 0.5) {