void CCE::create_spin_clusters() { string method = _cfg.getStringParameter("SpinBath", "method"); if( method.compare("TwoDimLattice") == 0 ) { if(_my_rank == 0) { int root_range = _cfg.getIntParameter("Lattice", "root_range"); sp_mat c=_bath_spins.getConnectionMatrix(_cut_off_dist); cUniformBathOnLattice bath_on_lattice(c, _max_order, _bath_spins, _lattice, root_range); _spin_clusters=cSpinCluster(_bath_spins, &bath_on_lattice); _spin_clusters.make(); } } else { if(_my_rank == 0) { sp_mat c=_bath_spins.getConnectionMatrix(_cut_off_dist); cDepthFirstPathTracing dfpt(c, _max_order); _spin_clusters=cSpinCluster(_bath_spins, &dfpt); _spin_clusters.make(); } } job_distribution(); }
cDepthFirstPathTracing create_spin_cluster_algrithm(const po::variables_map& para, const cSpinCollection& bath_spins) {/*{{{*/ double cut_off_dist = para["cutoff"].as<double>(); int max_order = para["cce"].as<int>(); sp_mat c = bath_spins.getConnectionMatrix(cut_off_dist); cDepthFirstPathTracing dfpt(c, max_order); return dfpt; }/*}}}*/