sponge.function.calc_angle_pbc
- sponge.function.calc_angle_pbc(position_a: Tensor, position_b: Tensor, position_c: Tensor, pbc_box: Tensor, keepdims: bool = False)[源代码]
计算周期性边界条件下三个空间位点A,B,C所形成的角度 \(\angle ABC\)。输入A,B,C三点坐标与pbc_box,返回夹角 \(\angle ABC\) 大小。
根据周期性边界条件下A,B,C三点坐标计算向量 \(\vec{BA}\) 和 \(\vec{BC}\) 的坐标,再计算两向量间夹角。
最后返回 \(\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。
keepdims (bool) - 如果设置为True,则在结果中,最后一个轴将保留为大小为1的维度。默认值:
False
。
- 返回:
Tensor。计算所得角。shape为 \((B, ..., 1)\) ,数据类型为float。
- 支持平台:
Ascend
GPU
样例:
>>> import mindspore as ms >>> from mindspore import Tensor >>> import numpy as np >>> from sponge.function import calc_angle_pbc >>> crd = Tensor(np.random.random((3, 3)), ms.float32) >>> pbc_box = Tensor([[3, 3, 3]], ms.float32) >>> calc_angle_pbc(crd[0], crd[1], crd[2], pbc_box) >>> Tensor(shape=[1], dtype=Float32, value= [ 6.17621064e-01])