如何从粒子坐标列表中产生区域中的粒子浓度

问题描述

我正在运行蒙特卡洛模拟,用于粒子的扩散。它为每个粒子输出一个列表,其中包含与粒子所在的坐标相对应的列表。该列表是粒子位置的跟踪器(position_tracker),每个粒子都有一个单独的列表。即。

position_tracker for粒子0 = [(20,24),(19,(18,23),(17,22),21),21)]

粒子1的position_tracker = [(21,25),(21,25)]

我试图找出随时间变化的坐标(gr.tspace)区域中有多少粒子,然后绘制一个图形,其中该区域中的粒子数随时间变化。

我遇到的问题是2倍。 1.粒子位置仅在位置更改时才更新,因此包含坐标的每个列表的长度都不同。 2.这意味着我不知道每个粒子何时运动。我认为最好的猜测就足够了。

这是我目前的尝试:

粒子位置列表存储在gr.list_of_atoms[x].position_tracker[y]

x索引粒子,y索引坐标

下面的代码是在蒙特卡洛模拟中进行的,其中10个运动包含100个粒子,因此for循环范围为99和9。

count_track = np.zeros((100,10))


for x in range (99):
    for x in range (9):
        if gr.list_of_atoms[x].position_tracker[y] in gr.tspace:
            count_track[x,y] = 1
            print('inside')
            y += 1
        else:
            print('outside')
            y += 1 

我尝试创建列表长度的列表,并将其用作for循环的范围:

lngth =[]
for x in range (99) :
    lngth.append(len(gr.list_of_atoms[x].position_tracker))

我无法使它正常工作。

我很努力,希望得到任何帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)