sponge.control.SETTLE
- class sponge.control.SETTLE(system: :class:`sponge.system.Molecule`, index: Union[Tensor, ndarray, List[int]] = None, distance: Union[Tensor, ndarray, List[float]] = None)[源代码]
SETTLE约束控制器。
参考文献 Miyamoto, S., Kollman, P.A., 1992. Settle: An analytical version of the SHAKE and RATTLE algorithm for rigid water models. Journal of Computational Chemistry 13, 952–962.
- 参数:
system (
sponge.system.Molecule
) - 模拟系统。index (Union[Tensor, ndarray, List[int]], 可选) - SETTLE索引。shape为 \((C, 3)\) 或 \((B, C, 3)\) 的Tensor。这里 \(B\) 为分子模拟中walker的数目, \(C\) 是约束数目。数据类型为int。如果取值为
None
,则使用`system`中的`settle_index`。默认值:None
。distance (Union[Tensor, ndarray, List[float]], 可选) - SETTLE距离。shape为 \((C, 3)\) 或 \((B, C, 2)\) 的Tensor。数据类型为float。如果取值为
None
,则使用`system`中的`settle_dis`。默认值:None
。
- 输入:
coordinate (Tensor) - 坐标。shape为 \((B, A, D)\) 的Tensor。数据类型是float。这里 \(B\) 是分子模拟中walker的数目, \(A\) 是原子数目, \(D\) 是模拟系统的空间维数,通常为3。
velocity (Tensor) - 速度。shape为 \((B, A, D)\) 的Tensor。数据类型是float。
force (Tensor) - 原子力。shape为 \((B, A, D)\) 的Tensor。数据类型是float。
energy (Tensor) - 能量。shape为 \((B, 1)\) 的Tensor。数据类型是float。
kinetics (Tensor) - 动能。shape为 \((B, D)\) 的Tensor。数据类型是float。
virial (Tensor) - 维里。shape为 \((B, D)\) 的Tensor。数据类型是float。
pbc_box (Tensor) - 周期性边界条件盒子。shape为 \((B, D)\) 的Tensor。数据类型是float。
step (int) - 模拟步数。默认值:
0
。
- 输出:
coordinate (Tensor) - 坐标。shape为 \((B, A, D)\) 的Tensor。数据类型是float。
velocity (Tensor) - 速度。shape为 \((B, A, D)\) 的Tensor。数据类型是float。
force (Tensor) - 原子力。shape为 \((B, A, D)\) 的Tensor。数据类型是float。
energy (Tensor) - 能量。shape为 \((B, 1)\) 的Tensor。数据类型是float。
kinetics (Tensor) - 动能。shape为 \((B, D)\) 的Tensor。数据类型是float。
virial (Tensor) - 维里。shape为 \((B, D)\) 的Tensor。数据类型是float。
pbc_box (Tensor) - 周期性边界条件盒子。shape为 \((B, D)\) 的Tensor。数据类型是float。
- 支持平台:
Ascend
GPU
样例:
>>> from sponge import Molecule >>> from sponge.control import SETTLE >>> system = Molecule(template='water.tip3p.yaml') >>> controller = SETTLE(system)
- apply_transform(q: Tensor, vec: Tensor)[源代码]
应用变换四元数。
- 参数:
q (Tensor) - 变换四元数。
vec (Tensor) - 向量。
- 返回:
Tensor,变换后的向量。
- get_transform(crd_)[源代码]
获取A0B0C0与a0b0c0之间的变换。
- 参数:
crd_ (Tensor) - 水分子的坐标。
- 返回:
Tensor,水分子坐标SETTLE数轴的变换以及逆变换。
- get_vector_transform(vec1: Tensor, vec2: Tensor)[源代码]
获取两个向量的变换四元数。
- 参数:
vec1 (Tensor) - 初始向量。
vec2 (Tensor) - 目标向量。
- 返回:
Tensor,变换四元数。
- get_vel_force_update(crd0_: Tensor, vel0_: Tensor)[源代码]
获取速度和力的更新。
- 参数:
crd0_ (Tensor) - SETTLE之后在初始坐标轴上的坐标。
vel0_ (Tensor) - 初始速度。
- 返回:
Tensor,约束速度。
Tensor,约束力。
- group_hamiltonian_product(q: Tensor, vec: Tensor)[源代码]
四元数与4维向量的哈密顿积。
- 参数:
q (Tensor) - 四元数。
vec (Tensor) - 向量。
- 返回:
Tensor,四元数与向量的哈密顿积 \(q v q^{-1}\)。