#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 int N; double Lx; double Ly; unsigned int Mx; unsigned int My; double beta; Graph G; // measurement storage std::vector sc; // cluster size distribution std::vector sa; // avalanche size distribution 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 Cmm; // surface-surface correlations std::vector Caa; // avalanche-avalanche correlations std::vector Cdd; // damage-damage distribution std::vector Cll; // damage-damage distribution std::vector Cee; // damage-damage distribution uint64_t Nc; uint64_t NC; uint64_t Na; uint64_t NA; public: long double lv; std::list> avalanches; ma(double Lx, double Ly, unsigned int Mx, unsigned int My, double beta); ~ma(); void pre_fracture(const network &) override; void bond_broken(const network& net, const current_info& cur, unsigned int i) override; void post_fracture(network &n) override; };