sponge.function.calc_angle

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

计算三个空间位点A,B,C所形成的角度 \(\angle ABC\)

如果提供盒子尺寸pbc_box,则按照周期性边界条件下的坐标进行计算。如果盒子尺寸pbc_box为None,则按照非周期性边界条件下的坐标进行计算。

最后返回 \(\vec{BA}\) 向量与 \(\vec{BC}\) 向量间夹角。

参数:
  • position_a (Tensor) - 位置a,shape为 \((B, ..., D)\) ,数据类型为float。其中B为Batch size,D为模拟系统的维度,一般为3。

  • position_b (Tensor) - 位置b,shape为 \((B, ..., D)\) ,数据类型为float。

  • position_c (Tensor) - 位置c,shape为 \((B, ..., D)\) ,数据类型为float。

  • pbc_box (Tensor) - PBC box,shape为 \((B, D)\) ,数据类型为float。默认值: None

  • keepdims (bool) - 如果设置为True,则在结果中,最后一个轴将保留为大小为1的维度。默认值: False

返回:

Tensor。计算所得角,取值范围为 \((0, \pi)\) 。shape为 \((B, ..., 1)\) ,数据类型为float。

支持平台:

Ascend GPU

样例:

>>> import mindspore as ms
>>> from mindspore import Tensor
>>> import numpy as np
>>> from sponge.function import calc_angle
>>> crd = Tensor(np.random.random((3, 3)), ms.float32)
>>> pbc_box = Tensor([[3, 3, 3]], ms.float32)
>>> calc_angle(crd[0], crd[1], crd[2], pbc_box)
>>> Tensor(shape=[1], dtype=Float32, value= [ 6.17621064e-01])