Хранить старые значения FiPy

Я пытаюсь решить некоторые дифференциальные уравнения, используя FiPy в Python и, как новичок, у меня все еще есть некоторые проблемы. Я делаю следующее: я определяю переменную ячейки, решаю уравнение для этой переменной и обновляю ее. Я хочу хранить его значения после каждой временной итерации. Вот пример:

a = CellVariable(mesh,name='a', value=0., hasOld=True) 
# eq is an equation involving 'a'
# define an array to store the values of 'a' after solving 'eq'
a_tt = []
for t in range(10):
      eq.sweep(dt=0.01)
      a.updateOld() 
      a_tt.append(a)

Я осознаю свою ошибку - значения в "a_tt" обновляются каждый раз, когда я обновляю "a", поэтому в конце я получаю массив со всеми одинаковыми элементами. Что я должен сделать, чтобы избежать этого?

1 ответ

Я думаю a_tt.append(a.copy()) может работать.

В противном случае метод, используемый в части разверток http://www.ctcms.nist.gov/fipy/examples/diffusion/generated/examples.diffusion.mesh1D.html должен работать. Что-то вроде:

a_tt.append(CellVariable(mesh=m, value=a.value))
Другие вопросы по тегам