diff options
Diffstat (limited to 'src/get_conductivity.c')
-rw-r--r-- | src/get_conductivity.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/get_conductivity.c b/src/get_conductivity.c new file mode 100644 index 0000000..7ef08a8 --- /dev/null +++ b/src/get_conductivity.c @@ -0,0 +1,24 @@ + +#include "fracture.h" + +double get_conductivity(finst *inst, double *voltage, cholmod_common *c) { + if (inst->voltage_bound) { + double tot_cur = 0; + for (unsigned int i = 0; i < inst->network->num_spanning_edges; i++) { + unsigned int e = inst->network->spanning_edges[i]; + if (!inst->fuses[e]) { + unsigned int v1 = inst->network->edges_to_verts[2*e]; + unsigned int v2 = inst->network->edges_to_verts[2*e+1]; + double v1y = inst->network->vert_coords[2 * v1 + 1]; + double v2y = inst->network->vert_coords[2 * v2 + 1]; + unsigned int s1 = v1y < v2y ? v1 : v2; + unsigned int s2 = v1y < v2y ? v2 : v1; + tot_cur += voltage[s1] - voltage[s2]; + } + } + + return fabs(tot_cur); + } else { + return 1 / fabs(voltage[inst->network->num_verts] - voltage[inst->network->num_verts + 1]); + } +} |