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为
或 的Tensor。这里 为分子模拟中walker的数目, 是约束数目。数据类型为int。如果取值为None
,则使用`system`中的`settle_index`。默认值:None
。distance (Union[Tensor, ndarray, List[float]], 可选) - SETTLE距离。shape为
或 的Tensor。数据类型为float。如果取值为None
,则使用`system`中的`settle_dis`。默认值:None
。
- 输入:
coordinate (Tensor) - 坐标。shape为
的Tensor。数据类型是float。这里 是分子模拟中walker的数目, 是原子数目, 是模拟系统的空间维数,通常为3。velocity (Tensor) - 速度。shape为
的Tensor。数据类型是float。force (Tensor) - 原子力。shape为
的Tensor。数据类型是float。energy (Tensor) - 能量。shape为
的Tensor。数据类型是float。kinetics (Tensor) - 动能。shape为
的Tensor。数据类型是float。virial (Tensor) - 维里。shape为
的Tensor。数据类型是float。pbc_box (Tensor) - 周期性边界条件盒子。shape为
的Tensor。数据类型是float。step (int) - 模拟步数。默认值:
0
。
- 输出:
coordinate (Tensor) - 坐标。shape为
的Tensor。数据类型是float。velocity (Tensor) - 速度。shape为
的Tensor。数据类型是float。force (Tensor) - 原子力。shape为
的Tensor。数据类型是float。energy (Tensor) - 能量。shape为
的Tensor。数据类型是float。kinetics (Tensor) - 动能。shape为
的Tensor。数据类型是float。virial (Tensor) - 维里。shape为
的Tensor。数据类型是float。pbc_box (Tensor) - 周期性边界条件盒子。shape为
的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,四元数与向量的哈密顿积
。