Альтернатива плетению в модели Изинга - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь исследовать реализацию модели Изинга Python 3 из университета Рутгерса. Код можно найти здесь: http://www.physics.rutgers.edu/~haule/681/src_MC/python_codes/ising.py

Оказывается, переплетение больше не поддерживается в Scipy.

NameError: name 'weave' is not defined

Подписан строки относятся к этому модулю:

code="""
    using namespace std;
    int N2 = N*N;
    for (int itt=0; itt<Nitt; itt++){
        int t = static_cast<int>(drand48()*N2);
        int i = t % N;
        int j = t / N;
        int S = latt(i,j);
        int WF = latt((i+1)%N, j) + latt(i,(j+1)%N) + latt((i-1+N)%N,j) + latt(i,(j-1+N)%N);
        double P = PW(4+S*WF);
        if (P > drand48()){ // flip the spin
            latt(i,j) = -S;
            Ene += 2*S*WF;
            Mn -= 2*S;
        }
        if (itt>warm && itt%measure==0){
            aver(0) += 1;
            aver(1) += Ene;
            aver(2) += Mn;
            aver(3) += Ene*Ene;
            aver(4) += Mn*Mn;
        }
    }
    """
    weave.inline(code, ['Nitt','latt','N','PW','Ene','Mn','warm', 'measure', 'aver'],
                 type_converters=weave.converters.blitz, compiler = 'gcc')

Я довольно новичок в кодировании, поэтому приветствую любые советы.

Я попытался запустить код, изменив среду на Python 2 в Pycharm и установка weave с pip через терминал (MacBook), но ни один из них, похоже, не работал.

...