summaryrefslogtreecommitdiff
path: root/src/perc_meas.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/perc_meas.hpp')
-rw-r--r--src/perc_meas.hpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/perc_meas.hpp b/src/perc_meas.hpp
new file mode 100644
index 0000000..b85e27e
--- /dev/null
+++ b/src/perc_meas.hpp
@@ -0,0 +1,52 @@
+
+#include <cstring>
+#include <fstream>
+#include <string>
+#include <cinttypes>
+#include <sstream>
+#include <functional>
+#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 p;
+ Graph G;
+ std::vector<VertexIndex> rank;
+ std::vector<Vertex> parent;
+ boost::disjoint_sets<VertexIndex*, Vertex*> ds;
+
+ // measurement storage
+ std::vector<uint64_t> sc; // non-spanning cluster size distribution
+ std::vector<std::vector<uint64_t>> sn; // non-spanning cluster size distribution
+ std::vector<uint64_t> ss; // minimal spanning cluster size distribution
+ std::vector<uint64_t> sm; // spanning cluster size distribution
+ std::vector<uint64_t> sl; // final avalanche size distribution
+ std::vector<std::vector<uint64_t>> sb; // final avalanche size distribution
+ std::vector<uint64_t> sp;
+
+ public:
+ std::string model_string;
+
+ pm(unsigned Lx, unsigned Ly);
+ pm(unsigned n, double a);
+ ~pm();
+
+ void pre_fracture(const network &) override;
+ void bond_broken(const network& net, const current_info& cur, unsigned i) override;
+ void post_fracture(network &n) override;
+};
+