diff options
Diffstat (limited to 'src/perc_meas.hpp')
-rw-r--r-- | src/perc_meas.hpp | 52 |
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; +}; + |