summaryrefslogtreecommitdiff
path: root/src/instance.c
diff options
context:
space:
mode:
authorpants <jaron@kent-dobias.com>2016-09-02 15:24:34 -0400
committerpants <jaron@kent-dobias.com>2016-09-02 15:24:34 -0400
commitfd14c5e39d962be94a1f68b0d4cacb7a4aa9c3e7 (patch)
tree9abbaf23c1a57985b90110ef33a5ed3455ab6b5a /src/instance.c
parent7ff906b9cd27a44472b40e78e5d595ea41df1482 (diff)
downloadfuse_networks-fd14c5e39d962be94a1f68b0d4cacb7a4aa9c3e7.tar.gz
fuse_networks-fd14c5e39d962be94a1f68b0d4cacb7a4aa9c3e7.tar.bz2
fuse_networks-fd14c5e39d962be94a1f68b0d4cacb7a4aa9c3e7.zip
embedded systems with crack fully supported
Diffstat (limited to 'src/instance.c')
-rw-r--r--src/instance.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/instance.c b/src/instance.c
index 098ed92..cc33591 100644
--- a/src/instance.c
+++ b/src/instance.c
@@ -14,7 +14,18 @@ finst *create_instance(fnet *network, double inf, bool voltage_bound,
instance->voltage_bound = voltage_bound;
instance->boundary_cond = CHOL_F(zeros)(
network->break_dim, 1, CHOLMOD_REAL, c);
- if (network->boundary != TORUS_BOUND) {
+ if (network->boundary == TORUS_BOUND) {
+ for (unsigned int i = 0; i < network->bound_inds[1]; i++) {
+ ((double *)instance->boundary_cond->x)[network->bound_verts[i]] = 1;
+ ((double *)instance->boundary_cond->x)[network->num_verts + i] = -1;
+ }
+ ((double *)instance->boundary_cond->x)[network->bound_verts[0]] = 1;
+ } else if (network->boundary == EMBEDDED_BOUND) {
+ // do nothing
+ for (unsigned int i = 0; i < network->bound_inds[1]; i++) {
+ ((double *)instance->boundary_cond->x)[network->bound_verts[i]] =1;
+ }
+ } else {
if (voltage_bound) {
for (unsigned int i = 0; i < network->bound_inds[1]; i++) {
((double *)instance->boundary_cond->x)[network->bound_verts[i]] =1;
@@ -24,12 +35,6 @@ finst *create_instance(fnet *network, double inf, bool voltage_bound,
((double *)instance->boundary_cond->x)[network->num_verts] = 1;
((double *)instance->boundary_cond->x)[network->num_verts + 1] = -1;
}
- } else {
- for (unsigned int i = 0; i < network->bound_inds[1]; i++) {
- ((double *)instance->boundary_cond->x)[network->bound_verts[i]] = 1;
- ((double *)instance->boundary_cond->x)[network->num_verts + i] = -1;
- }
- ((double *)instance->boundary_cond->x)[network->bound_verts[0]] = 1;
}
if (network->boundary != TORUS_BOUND) instance->adjacency = gen_adjacency(instance, false, false, 0, c);