From 1e1fdfc2e3892667bccaf317a01defd8832041c7 Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Mon, 16 Jan 2017 01:31:10 -0500 Subject: fixed voltage and torus conditions, current and free boundaries and broken right now --- src/net_voltages.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/net_voltages.c') diff --git a/src/net_voltages.c b/src/net_voltages.c index dedf5b2..c3537a5 100644 --- a/src/net_voltages.c +++ b/src/net_voltages.c @@ -12,11 +12,29 @@ double *net_voltages(const net_t *net, cholmod_common *c) { exit(EXIT_FAILURE); } - double *voltages = (double *)x->x; + double *t_voltages = (double *)x->x; x->x = NULL; - CHOL_F(free_dense)(&x, c); - return voltages; + graph_t *g = net->graph; + + if (g->boundary == TORUS_BOUND) { + return t_voltages; + } else if (net->voltage_bound) { + double *voltages = (double *)malloc(g->nv * sizeof(double)); + for (uint_t i = 0; i < g->nv - g->bi[g->nb]; i++) { + voltages[g->nbi[i]] = t_voltages[i]; + } + for (uint_t i = 0; i < 2; i++) { + for (uint_t j = 0; j < g->bi[i + 1] - g->bi[i]; j++) { + voltages[g->b[g->bi[i] + j]] = 1 - i; + } + } + + free(t_voltages); + return voltages; + } else { + return t_voltages; + } } -- cgit v1.2.3-70-g09d2