sponge.control.SETTLE ========================= .. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg :target: https://gitee.com/mindspore/mindscience/blob/master/MindSPONGE/docs/api/api_python/control/sponge.control.SETTLE.rst :alt: 查看源文件 .. py: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** (:class:`sponge.system.Molecule`) - 模拟系统。 - **index** (Union[Tensor, ndarray, List[int]], 可选) - SETTLE索引。shape为 :math:`(C, 3)` 或 :math:`(B, C, 3)` 的Tensor。这里 :math:`B` 为分子模拟中walker的数目, :math:`C` 是约束数目。数据类型为int。如果取值为 ``None``,则使用`system`中的`settle_index`。默认值: ``None``。 - **distance** (Union[Tensor, ndarray, List[float]], 可选) - SETTLE距离。shape为 :math:`(C, 3)` 或 :math:`(B, C, 2)` 的Tensor。数据类型为float。如果取值为 ``None``,则使用`system`中的`settle_dis`。默认值: ``None``。 输入: - **coordinate** (Tensor) - 坐标。shape为 :math:`(B, A, D)` 的Tensor。数据类型是float。这里 :math:`B` 是分子模拟中walker的数目, :math:`A` 是原子数目, :math:`D` 是模拟系统的空间维数,通常为3。 - **velocity** (Tensor) - 速度。shape为 :math:`(B, A, D)` 的Tensor。数据类型是float。 - **force** (Tensor) - 原子力。shape为 :math:`(B, A, D)` 的Tensor。数据类型是float。 - **energy** (Tensor) - 能量。shape为 :math:`(B, 1)` 的Tensor。数据类型是float。 - **kinetics** (Tensor) - 动能。shape为 :math:`(B, D)` 的Tensor。数据类型是float。 - **virial** (Tensor) - 维里。shape为 :math:`(B, D)` 的Tensor。数据类型是float。 - **pbc_box** (Tensor) - 周期性边界条件盒子。shape为 :math:`(B, D)` 的Tensor。数据类型是float。 - **step** (int) - 模拟步数。默认值: ``0``。 输出: - **coordinate** (Tensor) - 坐标。shape为 :math:`(B, A, D)` 的Tensor。数据类型是float。 - **velocity** (Tensor) - 速度。shape为 :math:`(B, A, D)` 的Tensor。数据类型是float。 - **force** (Tensor) - 原子力。shape为 :math:`(B, A, D)` 的Tensor。数据类型是float。 - **energy** (Tensor) - 能量。shape为 :math:`(B, 1)` 的Tensor。数据类型是float。 - **kinetics** (Tensor) - 动能。shape为 :math:`(B, D)` 的Tensor。数据类型是float。 - **virial** (Tensor) - 维里。shape为 :math:`(B, D)` 的Tensor。数据类型是float。 - **pbc_box** (Tensor) - 周期性边界条件盒子。shape为 :math:`(B, D)` 的Tensor。数据类型是float。 .. py:method:: apply_transform(q: Tensor, vec: Tensor) 应用变换四元数。 参数: - **q** (Tensor) - 变换四元数。 - **vec** (Tensor) - 向量。 返回: - Tensor,变换后的向量。 .. py:method:: get_mass_center(crd_) 获取质心坐标。 参数: - **crd_** (Tensor) - 坐标。 返回: - Tensor,质心坐标。 .. py:method:: get_inverse(quater: Tensor) 获取四元数的逆。 参数: - **quater** (Tensor) - 四元数。 返回: - Tensor,四元数的逆。 .. py:method:: get_transform(crd_) 获取A0B0C0与a0b0c0之间的变换。 参数: - **crd_** (Tensor) - 水分子的坐标。 返回: - Tensor,水分子坐标SETTLE数轴的变换以及逆变换。 .. py:method:: get_vector_transform(vec1: Tensor, vec2: Tensor) 获取两个向量的变换四元数。 参数: - **vec1** (Tensor) - 初始向量。 - **vec2** (Tensor) - 目标向量。 返回: - Tensor,变换四元数。 .. py:method:: get_vel_force_update(crd0_: Tensor, vel0_: Tensor) 获取速度和力的更新。 参数: - **crd0_** (Tensor) - SETTLE之后在初始坐标轴上的坐标。 - **vel0_** (Tensor) - 初始速度。 返回: - Tensor,约束速度。 - Tensor,约束力。 .. py:method:: group_hamiltonian_product(q: Tensor, vec: Tensor) 四元数与4维向量的哈密顿积。 参数: - **q** (Tensor) - 四元数。 - **vec** (Tensor) - 向量。 返回: - Tensor,四元数与向量的哈密顿积 :math:`q v q^{-1}`。 .. py:method:: hamiltonian_product(q: Tensor, v: Tensor) 四元数与向量的哈密顿积。 参数: - **q** (Tensor) - 四元数。 - **v** (Tensor) - 向量。 返回: - Tensor,四元数与向量的哈密顿积 :math:`q v q^{-1}`。 .. py:method:: quaternion_multiply(tensor_1: Tensor, tensor_2: Tensor) 四元数乘法。 参数: - **tensor_1** (Tensor) - 第一个四元数。如果最后一个维度的大小为3,则会自动补齐为4。 - **tensor_2** (Tensor) - 第二个四元数。如果最后一个维度的大小为3,则会自动补齐为4。 返回: - Tensor,两个四元数乘积。