summaryrefslogtreecommitdiff
path: root/src/net_copy.c
diff options
context:
space:
mode:
authorpants <jaron@kent-dobias.com>2016-09-08 12:46:49 -0400
committerpants <jaron@kent-dobias.com>2016-09-08 12:46:49 -0400
commit9c6505dace488032dc4f5e3bbb8c5a4cb154b429 (patch)
tree7d2323a5bb0d01a1675905dcdf7289bf33d03e4f /src/net_copy.c
parent2b7e4f906d8595994c36f9254574caff13c172a4 (diff)
downloadfuse_networks-9c6505dace488032dc4f5e3bbb8c5a4cb154b429.tar.gz
fuse_networks-9c6505dace488032dc4f5e3bbb8c5a4cb154b429.tar.bz2
fuse_networks-9c6505dace488032dc4f5e3bbb8c5a4cb154b429.zip
more refactoring
Diffstat (limited to 'src/net_copy.c')
-rw-r--r--src/net_copy.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/net_copy.c b/src/net_copy.c
new file mode 100644
index 0000000..dcb4080
--- /dev/null
+++ b/src/net_copy.c
@@ -0,0 +1,35 @@
+
+#include "fracture.h"
+
+net_t *net_copy(const net_t *net, cholmod_common *c) {
+ net_t *net_copy = (net_t *)calloc(1, sizeof(net_t));
+ assert(net_copy != NULL);
+ memcpy(net_copy, net, sizeof(net_t));
+
+ size_t fuses_size = (net->graph)->ne * sizeof(bool);
+ net_copy->fuses = (bool *)malloc(fuses_size);
+ assert(net_copy->fuses != NULL);
+ memcpy(net_copy->fuses, net->fuses, fuses_size);
+
+ size_t thres_size = (net->graph)->ne * sizeof(double);
+ net_copy->thres = (double *)malloc(thres_size);
+ assert(net_copy->thres != NULL);
+ memcpy(net_copy->thres, net->thres, thres_size);
+
+ size_t marks_size = (net->graph->break_dim) * sizeof(uint_t);
+ net_copy->marks = (uint_t *)malloc(marks_size);
+ assert(net_copy->marks != NULL);
+ memcpy(net_copy->marks, net->marks, marks_size);
+
+ size_t dual_marks_size = (net->graph->dnv) * sizeof(uint_t);
+ net_copy->dual_marks = (uint_t *)malloc(dual_marks_size);
+ assert(net_copy->dual_marks != NULL);
+ memcpy(net_copy->dual_marks, net->dual_marks, dual_marks_size);
+
+ net_copy->adjacency = CHOL_F(copy_sparse)(net->adjacency, c);
+ net_copy->boundary_cond = CHOL_F(copy_dense)(net->boundary_cond, c);
+ net_copy->factor = CHOL_F(copy_factor)(net->factor, c);
+
+ return net_copy;
+}
+