我在一个名为Sphere_Radius
的已知半径的球体内有许多粒子。已知这些粒子的质量,位置和3d速度阵列分别为mass_array
,形状为(16658089,),position_array
和velocity_array
形状(16658089,3)。此外,粒子与一些随机数字ID相关联。名为 distance_Gas 的函数产生一个数组,其元素是每个气体粒子与球体中心之间的距离。
一些具有固定方形横截面的类似铅笔的光束沿着z轴穿过球体一直穿过球体。我想计算这个光束内所有粒子的平均速度。该光束的边的位置是已知的(假设网格受-1 <= x <= + 1并且-1 <= y <= +1)的约束。但我遇到的问题是识别该光束内的所有粒子,然后使用它们的ID来计算光束内的平均速度。假设我知道这些ID,这里是我的代码行,用于产生该光束内的平均速度:
np.array([np.tensordot(mass_array[i], velocity_array[i], axes=([0],[0])) for i in np.where(distances_Gas <= Sphere_Radius)])*pow(sum(sum(mass_array[i] for i in np.where(distances_Gas <= Sphere_Radius))), -1)
(基本上我使用 Sigma(m.v)/ Sigma(m)获取平均速度)
然而,distances_Gas <= Sphere_Radius
只是总共三个中的一个条件,其中缺少以下两个条件(如前所述)并且我不确定如何以这样的方式插入它们以使代码产生一些(1, 3)-shape
数组表示光束内粒子的平均速度:
-1&lt; = position_array [i] [0]&lt; = +1
-1&lt; = position_array [i] [1]&lt; = +1