summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2019-10-02 10:52:05 -0400
committerJaron Kent-Dobias <jaron@kent-dobias.com>2019-10-02 10:52:05 -0400
commit2de471524c9e281e1b83049183d5a4deecd8b7b3 (patch)
tree4d158d7137f247aa0f64a2760ff80f043ae0a61c
parent47a7c96d1848e3a3edbcfb17e645790d31c01a67 (diff)
downloadfuse_networks-2de471524c9e281e1b83049183d5a4deecd8b7b3.tar.gz
fuse_networks-2de471524c9e281e1b83049183d5a4deecd8b7b3.tar.bz2
fuse_networks-2de471524c9e281e1b83049183d5a4deecd8b7b3.zip
Updated percolation and sample, percolation measurements presently
gutted
-rw-r--r--src/perc_meas.cpp62
-rw-r--r--src/perc_meas.hpp13
-rw-r--r--src/percolation.cpp4
-rw-r--r--src/sample_fracture.cpp2
4 files changed, 3 insertions, 78 deletions
diff --git a/src/perc_meas.cpp b/src/perc_meas.cpp
index f0d7cbb..4029204 100644
--- a/src/perc_meas.cpp
+++ b/src/perc_meas.cpp
@@ -71,10 +71,6 @@ void update_distribution_file(std::string id, const std::vector<std::vector<uint
}
pm::pm(unsigned n, double a) :
- G(2 * n),
- rank(2 * n),
- parent(2 * n),
- ds(&rank[0], &parent[0]),
sn(3 * n),
sN(3 * n),
ss(2 * n),
@@ -96,10 +92,6 @@ pm::pm(unsigned n, double a) :
}
pm::pm(unsigned Lx, unsigned Ly) :
- G(Lx * Ly / 2),
- rank(Lx * Ly / 2),
- parent(Lx * Ly / 2),
- ds(&rank[0], &parent[0]),
sn(Lx * Ly),
sN(Lx * Ly),
ss(Lx * Ly / 2),
@@ -131,32 +123,11 @@ pm::~pm() {
}
void pm::pre_fracture(const network&) {
- boost::remove_edge_if(trivial, G);
- initialize_incremental_components(G, ds);
- incremental_components(G, ds);
r = 0;
sN_tmp.clear();
}
void pm::bond_broken(const network& net, const current_info& cur, unsigned i) {
- boost::add_edge(net.G.dual_edges[i].v[0], net.G.dual_edges[i].v[1], {i}, G);
- ds.union_set(net.G.dual_edges[i].v[0], net.G.dual_edges[i].v[1]);
-
- boost::component_index<VertexIndex> components(parent.begin(), parent.end());
- std::vector<unsigned> counts(components.size());
-
- sN_tmp.push_front({});
-
- BOOST_FOREACH(VertexIndex current_index, components) {
- unsigned comp_size = 0;
- BOOST_FOREACH(VertexIndex child_index, components[current_index]) {
- comp_size++;
- }
-
- sn[r][comp_size - 1]++;
- sN_tmp.front().push_back(comp_size - 1);
- }
-
std::vector<bool> vertex_in(net.G.vertices.size());
for (unsigned i = 0; i < net.G.edges.size(); i++) {
@@ -179,39 +150,6 @@ void pm::bond_broken(const network& net, const current_info& cur, unsigned i) {
}
void pm::post_fracture(network &n) {
- auto post_cracks = find_minimal_crack(G, n);
- std::vector<unsigned> component(boost::num_vertices(G));
- unsigned num = boost::connected_components(G, &component[0]);
- if (post_cracks.size() > 2 || post_cracks.size() == 0) {
- throw badcycleex;
- }
- for (auto c : post_cracks) {
- sl[c.second.size() - 1]++;
- }
- unsigned crack_component = component[n.G.dual_edges[post_cracks.front().second.front()].v[0]];
-
- std::vector<std::list<graph::coordinate>> components(num);
-
- for (unsigned i = 0; i < n.G.dual_vertices.size(); i++) {
- components[component[i]].push_back(n.G.dual_vertices[i].r);
- }
-
- for (unsigned i = 0; i < num; i++) {
- if (i != crack_component) {
- sm[components[i].size() - 1]++;
- } else {
- ss[components[i].size() - 1]++;
- }
- }
-
- unsigned dr = 0;
- for (std::list<unsigned> l : sN_tmp) {
- for (unsigned size : l) {
- sN[dr][size]++;
- }
- dr++;
- }
-
sd[r - 1]++;
}
diff --git a/src/perc_meas.hpp b/src/perc_meas.hpp
index 75ef61a..b19b4a4 100644
--- a/src/perc_meas.hpp
+++ b/src/perc_meas.hpp
@@ -8,27 +8,14 @@
#include <iostream>
#include <array>
-#include <fftw3.h>
-
-#include <hooks.hpp>
-#include <boost/graph/graph_utility.hpp>
-#include <boost/graph/incremental_components.hpp>
-#include <boost/pending/disjoint_sets.hpp>
-#include <boost/foreach.hpp>
#include "analysis_tools.hpp"
-typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
-typedef boost::graph_traits<Graph>::vertices_size_type VertexIndex;
class pm : public hooks {
private:
unsigned r;
current_info last_cur;
- Graph G;
- std::vector<VertexIndex> rank;
- std::vector<Vertex> parent;
- boost::disjoint_sets<VertexIndex*, Vertex*> ds;
// measurement storage
std::vector<std::vector<uint64_t>> sn; // non-spanning cluster size distribution
diff --git a/src/percolation.cpp b/src/percolation.cpp
index b9f278e..0b1d0ad 100644
--- a/src/percolation.cpp
+++ b/src/percolation.cpp
@@ -81,7 +81,7 @@ int main(int argc, char* argv[]) {
graph G(n, a, rng);
percolation_network fuse_network(G, &c);
fuse_network.set_thresholds(beta, rng);
- fuse_network.fracture(meas, true);
+ fuse_network.fracture(meas);
break;
} catch (std::exception &e) {
std::cout << e.what() << '\n';
@@ -99,7 +99,7 @@ int main(int argc, char* argv[]) {
graph G(Lx, Ly);
percolation_network fuse_network(G, &c);
fuse_network.set_thresholds(beta, rng);
- fuse_network.fracture(meas, true);
+ fuse_network.fracture(meas);
break;
} catch (std::exception &e) {
std::cout << e.what() << '\n';
diff --git a/src/sample_fracture.cpp b/src/sample_fracture.cpp
index 417e7ec..eaba69e 100644
--- a/src/sample_fracture.cpp
+++ b/src/sample_fracture.cpp
@@ -56,7 +56,7 @@ int main(int argc, char* argv[]) {
graph G(Lx, 1.0, rng);
elastic_network network(G, &c);
network.set_thresholds(beta, rng);
- network.fracture(meas, true);
+ network.fracture(meas);
/*graph G2 = G.rotate();
class network network2(G2, &c);