sponge.function.calc_distance_pbc

查看源文件
sponge.function.calc_distance_pbc(position_a: Tensor, position_b: Tensor, pbc_box: Tensor = None, keepdims: bool = False)[源代码]

在有周期性边界条件的情况下计算位置A和B之间的距离,需要转化为同一个 pbc_box 内坐标计算 A 和B 的距离

参数:
  • position_a (Tensor) - 位置A的坐标,shape为 \((..., D)\),D是模拟系统的空间维度, 一般为3。

  • position_b (Tensor) - 位置B的坐标,shape为 \((..., D)\)

  • pbc_box (Tensor) - 周期性盒子,shape为 \((D)\)\((B, D)\),B是Batch size。

  • keepdims (bool) - 设置为 True 的时候,最后一个维度会保留,默认值 False

返回:

Tensor。A和B之间的距离。shape为 \((...)\)\((..., 1)\)

支持平台:

Ascend GPU

样例:

>>> import mindspore as ms
>>> from mindspore import Tensor
>>> from sponge.function import calc_distance_pbc
>>> tensor_a = Tensor([[1, 2, 3], [4, 5, 6]], ms.float32)
>>> tensor_b = Tensor([[1, 2, 4], [6, 8, 10]], ms.float32)
>>> pbc_box = Tensor([[3, 3, 3]], ms.float32)
>>> calc_distance_pbc(tensor_a, tensor_b, pbc_box)
Tensor(shape=[2], dtype=Float32, value= [ 1.00000000e+00,  1.41421354e+00])