sponge.control.VelocityVerlet

View Source On Gitee
class sponge.control.VelocityVerlet(system: Molecule, thermostat: Thermostat = None, barostat: Barostat = None, constraint: Constraint = None, **kwargs)[source]

A velocity verlet integrator based on "middle scheme" developed by Jian Liu, et al. It is a subclass of sponge.control.Integrator.

Reference Zhang, Z.; Liu, X.; Chen, Z.; Zheng, H.; Yan, K.; Liu, J. A Unified Thermostat Scheme for Efficient Configurational Sampling for Classical/Quantum Canonical Ensembles via Molecular Dynamics [J]. The Journal of Chemical Physics, 2017, 147(3).

Parameters
Inputs:
  • coordinate (Tensor) - Coordinate. Tensor of shape (B,A,D). Data type is float. Here B is the number of walkers in simulation, A is the number of atoms and D is the spatial dimension of the simulation system, which is usually 3.

  • velocity (Tensor) - Velocity. Tensor of shape (B,A,D). Data type is float.

  • force (Tensor) - Force. Tensor of shape (B,A,D). Data type is float.

  • energy (Tensor) - Energy. Tensor of shape (B,1). Data type is float.

  • kinetics (Tensor) - Kinetics. Tensor of shape (B,D). Data type is float.

  • virial (Tensor) - Virial. Tensor of shape (B,D). Data type is float.

  • pbc_box (Tensor) - Pressure boundary condition box. Tensor of shape (B,D). Data type is float.

  • step (int) - Simulation step. Default: 0.

Outputs:
  • coordinate, Tensor of shape (B,A,D). Coordinate. Data type is float.

  • velocity, Tensor of shape (B,A,D). Velocity. Data type is float.

  • force, Tensor of shape (B,A,D). Force. Data type is float.

  • energy, Tensor of shape (B,1). Energy. Data type is float.

  • kinetics, Tensor of shape (B,D). Kinetics. Data type is float.

  • virial, Tensor of shape (B,D). Virial. Data type is float.

  • pbc_box, Tensor of shape (B,D). Periodic boundary condition box. Data type is float.

Supported Platforms:

Ascend GPU

Examples

>>> from sponge import Molecule
>>> from sponge.control import VelocityVerlet
>>> system = Molecule(template='water.tip3p.yaml')
>>> controller = VelocityVerlet(system)
set_velocity_half(velocity_half: Tensor)[source]

set the veloctiy before half step