Я делаю моделирование молекулярной динамики в Python с большим количеством частиц. Здесь я должен следить за x-позицией, y-позицией, z-позицией, x-скоростью, y-скоростью, z-скоростью, x-ускорением, y-ускорением, z-ускорением, x-силой, y-силой , z-сила, потенциал для всех 500 или 1000 частиц наряду с кинетической энергией, потенциальной энергией, полной энергией системы на каждом временном интервале. Чтобы сохранить эти данные я в настоящее время их записи в файл следующим образом:сохранить данные моделирования в python
from numpy import*
...
f=open('myMD.dat','w')
while t<=tmax:
s='%3.3f\t\t'%(t) # writing the time to the file
f.write(s)
for i in range(TotalNumberofParticles):
UpdateParameters()
s='%8.3e %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e\t\t'%(xpos1[i],ypos1[i],zpos1[i],xvel1[i],yvel1[i],zvel1[i],xacc1[i],yacc1[i],zacc1[i],xforc[i],yforc[i],zforc[i],potn[i])
f.write(s)
...
s='%8.3e %8.3e %8.3e\n'%(KE,PE,TE)
f.write(s)
t=t+delt
f.close()
Так что, если есть 500 частиц, каждая строка в файле данных будет иметь 7000 столбцов. Это как-то кажется плохим способом сохранения данных. Кроме того, симуляция продолжается несколько тысяч шагов времени. По мере того как программа продолжается, она становится медленнее. Может ли кто-нибудь дать мне представление о том, как я могу лучше сохранить свои данные? Также я хотел бы знать, как я могу получить эти данные для дальнейшего анализа.
У меня просто запрос с 'np.savez ('myMD.dat', xpos1 = xpos1, ypos1 = ypos1, ... ..., zforc = zforc, potn = potn)'. Могу ли я писать эту строку в цикле, потому что данные для xpos1, ypos1 и т. Д. Должны записываться для всех частиц. И если да, могу ли я указать одно и то же ключевое слово в каждом случае? – kanayamalakar
@kanayamalakar Я предполагаю, что вы хотите записать данные для всех частиц и всех временных шагов? Я изменил свой ответ, чтобы отразить это. –