Я пытаюсь исследовать реализацию модели Изинга 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), но ни один из них, похоже, не работал.