В следующем коде в первом if T < 2.3
есть строка, в которой используется переменная self_magnetization_evolution_append
, объявленная перед запуском l oop. Это правильно добавляет результат метода self.calc_magnetization()
в список self.magnetization_evolution
. Однако, когда я ссылаюсь на ту же переменную внутри блока else
, она ничего не добавляет. Я проверил, что self.calc_magnetization()
производит вывод, и программа действительно находится внутри l oop for mcstep in range(mc_post_eqsteps)
. Есть идеи, что происходит?
Tlist = np.arange(Ti, Tf, step)
self_magnetization_evolution_append = self.magnetization_evolution.append
self_magnetization_append = self.magnetization.append
for T in Tlist:
if T < 2.3:
for gilstep in range(gil_eq_steps):
self.continuous_time_step(T, 0, False)
for gilstep in range(gil_post_eqsteps):
self.continuous_time_step(T, 0, False)
self_magnetization_evolution_append(self.calc_magnetization())
else:
for mcstep in range(int(mc_eq_steps)):
self.metropolis_step(T)
for mcstep in range(mc_post_eqsteps):
self.metropolis_step(T)
self_magnetization_evolution_append(self.calc_magnetization())