From 9e1610143f0e96b77ca962a7113d79a2fbcbf6f5 Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Fri, 28 Dec 2018 17:33:35 -0500 Subject: partially fixed problems that arise in small systems by reworking the way that boundary edges are identified --- src/analysis_tools.cpp | 6 ++---- src/animate.cpp | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/analysis_tools.cpp b/src/analysis_tools.cpp index 1e799bb..34e4ea0 100644 --- a/src/analysis_tools.cpp +++ b/src/analysis_tools.cpp @@ -102,12 +102,10 @@ std::list find_minimal_crack(const Graph& G, const network& n) { std::array crossing_count{0,0}; for (auto edge : cycle) { - double dx = fabs(n.G.dual_vertices[n.G.dual_edges[edge].v[0]].r.x - n.G.dual_vertices[n.G.dual_edges[edge].v[1]].r.x); - if (dx > n.G.L.x / 2) { + if (n.G.dual_edges[edge].crossings[0]) { crossing_count[0]++; } - double dy = fabs(n.G.dual_vertices[n.G.dual_edges[edge].v[0]].r.y - n.G.dual_vertices[n.G.dual_edges[edge].v[1]].r.y); - if (dy > n.G.L.y / 2) { + if (n.G.dual_edges[edge].crossings[1]) { crossing_count[1]++; } } diff --git a/src/animate.cpp b/src/animate.cpp index 26f4996..a24f0f2 100644 --- a/src/animate.cpp +++ b/src/animate.cpp @@ -25,15 +25,15 @@ void animate::pre_fracture(const network &n) { graph::coordinate r1 = n.G.vertices[n.G.edges[i].v[0]].r; graph::coordinate r2 = n.G.vertices[n.G.edges[i].v[1]].r; - if (fabs(r1.x - r2.x) > n.G.L.x / 2) { - if (r1.x < n.G.L.x / 2) { + if (n.G.edges[i].crossings[0]) { + if (r1.x < r2.x) { r1.x += n.G.L.x; } else { r2.x += n.G.L.x; } } - if (fabs(r1.y - r2.y) > n.G.L.y / 2) { - if (r1.y < n.G.L.y / 2) { + if (n.G.edges[i].crossings[1]) { + if (r1.y < r2.y) { r1.y += n.G.L.y; } else { r2.y += n.G.L.y; @@ -63,16 +63,16 @@ void animate::bond_broken(const network& n, const current_info& cur, unsigned in graph::coordinate r1 = n.G.vertices[n.G.edges[i].v[0]].r; graph::coordinate r2 = n.G.vertices[n.G.edges[i].v[1]].r; - if (fabs(r1.x - r2.x) > n.G.L.x / 2) { - if (r1.x < n.G.L.x / 2) { - r2.x -= n.G.L.x; + if (n.G.edges[i].crossings[0]) { + if (r1.x < r2.x) { + r1.x += n.G.L.x; } else { r2.x += n.G.L.x; } } - if (fabs(r1.y - r2.y) > n.G.L.y / 2) { - if (r1.y < n.G.L.y / 2) { - r2.y -= n.G.L.y; + if (n.G.edges[i].crossings[1]) { + if (r1.y < r2.y) { + r1.y += n.G.L.y; } else { r2.y += n.G.L.y; } @@ -111,20 +111,20 @@ void animate::post_fracture(network &n) { graph::coordinate r1 = n.G.vertices[n.G.edges[i].v[0]].r; graph::coordinate r2 = n.G.vertices[n.G.edges[i].v[1]].r; - if (fabs(r1.x - r2.x) > n.G.L.x / 2) { - if (r1.x < n.G.L.x / 2) { - r1.x += n.G.L.x; - } else { - r2.x += n.G.L.x; - } - } - if (fabs(r1.y - r2.y) > n.G.L.y / 2) { - if (r1.y < n.G.L.y / 2) { - r1.y += n.G.L.y; - } else { - r2.y += n.G.L.y; - } - } + if (n.G.edges[i].crossings[0]) { + if (r1.x < r2.x) { + r1.x += n.G.L.x; + } else { + r2.x += n.G.L.x; + } + } + if (n.G.edges[i].crossings[1]) { + if (r1.y < r2.y) { + r1.y += n.G.L.y; + } else { + r2.y += n.G.L.y; + } + } glVertex2d(r1.x, r1.y); glVertex2d(r2.x, r2.y); -- cgit v1.2.3-70-g09d2