From 4c4ebb87ead363d6d6e11a8b95b07a0f93af5c88 Mon Sep 17 00:00:00 2001 From: pants Date: Tue, 6 Sep 2016 15:05:27 -0400 Subject: finished implementing embedded systems, refactored a bunch --- src/break_edge.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'src/break_edge.c') 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) { -- cgit v1.2.3-70-g09d2