#include #include #include #include #include #include #include #include #include #include #include "analysis_tools.hpp" 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; */ unsigned N; unsigned Mx; unsigned My; Graph G; // std::ofstream stress_file; // measurement storage std::vector sc; // non-spanning cluster size distribution std::vector ss; // minimal spanning cluster size distribution std::vector sm; // spanning cluster size distribution std::vector sa; // non-final avalanche size distribution std::vector sl; // final avalanche size distribution std::vector sD; // post-fracture damage distribution std::vector ccc; // cluster-cluster correlations std::vector css; // surface-surface correlations std::vector cmm; // surface-surface correlations std::vector caa; // avalanche-avalanche correlations std::vector cll; // damage-damage distribution std::vector cDD; // damage-damage distribution std::vector csD; // damage-damage distribution uint64_t Nc; uint64_t Na; public: long double lv; std::list> avalanches; std::string model_string; ma(double Lx, double Ly, unsigned Mx, unsigned My, double beta); ma(unsigned n, double a, unsigned Mx, unsigned My, double beta); ~ma(); 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; };