#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include struct EdgeProperties { unsigned int index; }; typedef boost::adjacency_list Graph; class ma : public hooks { // need: // - interface for turning on and off specific measurements // private: double *fftw_forward_in; fftw_complex *fftw_forward_out; fftw_complex *fftw_reverse_in; double *fftw_reverse_out; fftw_plan forward_plan; fftw_plan reverse_plan; Graph G; // measurement storage std::vector sc; // cluster size distribution std::vector sa; // avalanche size distribution std::vector sd; // avalanche size distribution std::vector sb; // bin size distribution std::vector Ccc; // cluster-cluster correlations std::vector Css; // surface-surface correlations std::vector Caa; // avalanche-avalanche correlations std::vector Cdd; // damage-damage distribution uint64_t Nc; uint64_t Na; public: unsigned int N; unsigned int L; double lv; double beta; std::list avalanche; ma(unsigned int N, unsigned int L, double beta); ~ma(); void pre_fracture(const network &) override; void bond_broken(const network& net, const std::pair>& cur, unsigned int i) override; void post_fracture(network &n) override; };