示例#1
0
文件: cce.cpp 项目: HoldenGao/oops
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();
}
示例#2
0
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;
}/*}}}*/