Python中惯性张量的快速计算

2024-06-11 19:44:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要对Python中的inertia tensors进行非常快速的计算。在

问题如下:

xyz是一个Numpy形状的数组:(samples, atoms, 3),它描述了每个atoms中每个samples3笛卡尔坐标。在

每个样品中的atoms必须分成一组分子。我需要每个样品中每个分子的惯性张量。在

每个分子都含有n个原子,它们的排列方式使它们组合在一起。即:

   numpy.array( numpy.split(xyz, atoms/n, axis=1).shape )

返回形状数组:(每个分子的分子数、样本数、原子数,3),其中第一个索引在分子上运行。在

注意事项:

  • 这与所解决的问题非常相似,但是他们计算整个系统的惯性张量,而我需要它的各个部分的惯性张量(系统中每个分子的惯量张量)。在
  • 最好获得一组惯性张量。在
  • 我认为numpy.einsum是一个很好的替代方案(但是我发现很难实现)
  • 我可以很快得到一组原子质量,而且没有问题。在
  • 如果有帮助,samples的大小约为100到500,而{}的大小约为20000(但是该操作在许多块中运行,总共产生了大约1E5个样本)。在

Tags: numpy系统方式样品数组分子形状samples