Skip to content

Latest commit

 

History

History
217 lines (133 loc) · 6.58 KB

cu-integration-nvt.rst

File metadata and controls

217 lines (133 loc) · 6.58 KB

NVT ensemble

Overview

:ref:`nh-nvt` :py:class:`NoseHooverNVT`
:ref:`berendsen-nvt` :py:class:`BerendsenNVT`
:ref:`andersen-nvt` :py:class:`AndersenNVT`
:ref:`langevin-nvt` :py:class:`LangevinNVT`
:ref:`nvt-rigid` :py:class:`NVTRigid`
:ref:`langevin-nvt-rigid` :py:class:`LangevinNVTRigid`

Nose Hoover thermostat

.. py:class:: NoseHooverNVT(all_info, group, comp_info, T, tauT)

   The constructor of a NVT NoseHoover thermostat object for a group of particles.

   :param AllInfo all_info: The system information.
   :param ParticleSet group: The group of particles.
   :param ComputeInfo comp_info: The object of calculation of collective information.
   :param float T: The temperature.
   :param float tauT: The thermostat coupling.

   .. py:function:: setT(float T)

      specifies the temperature with a constant value.

   .. py:function:: setT(Variant vT)

      specifies the temperature with a defined varying value by time step.

   Example::

      group = gala.ParticleSet(all_info, 'all')
      comp_info = gala.ComputeInfo(all_info, group)
      nh = gala.NoseHooverNVT(all_info, group, comp_info, 1.0, 0.5)
      app.add(nh)

Berendsen thermostat

.. py:class:: BerendsenNVT(all_info, group, comp_info, T, tauT)

   The constructor of a NVT Berendsen thermostat object for a group of particles.

   :param AllInfo all_info: The system information.
   :param ParticleSet group: The group of particles.
   :param ComputeInfo comp_info: The object of calculation of collective information.
   :param float T: The temperature.
   :param float tauT: The thermostat coupling parameter.

   .. py:function:: setT(float T)

      specifies the temperature with a constant value.

   .. py:function:: setT(Variant vT)

      specifies the temperature with a varying value by time steps.

Andersen thermostat

.. py:class:: AndersenNVT(all_info, group, T, gamma, seed)

   The constructor of a NVT Andersen thermostat object for a group of particles.

   :param AllInfo all_info: The system information.
   :param ParticleSet group: The group of particles.
   :param float T: The temperature.
   :param float gamma: The collision frequency.
   :param int seed: The seed of random number generator.

   .. py:function:: setT(float T)

      specifies the temperature with a constant value.

   .. py:function:: setT(Variant vT)

      specifies the temperature with a varying value by time steps.

   Example::

      an = gala.AndersenNVT(all_info,group,1.0,10.0, 12345)
      app.add(an)

Langevin dynamic thermostat

Description:

The particles are integrated forward in time according to the Langevin equations of motion:

m \frac{d\vec{v}}{dt} = \vec{F}_\mathrm{C} - \gamma \cdot \vec{v} + \vec{F}_\mathrm{R}
\langle \vec{F}_\mathrm{R} \rangle = 0
\langle |\vec{F}_\mathrm{R}|^2 \rangle = 2 d kT \gamma / \delta t
  • \gamma - gamma (unitless) - optional: defaults to 1.0

where \vec{F}_\mathrm{C} is the force on the particle from all potentials and constraint forces, \gamma is the drag coefficient, \vec{v} is the particle's velocity, \vec{F}_\mathrm{R} is a uniform random force, and d is the dimensionality of the system (2 or 3). The magnitude of the random force is chosen via the fluctuation-dissipation theorem to be consistent with the specified drag and temperature, T. When kT=0, the random force \vec{F}_\mathrm{R}=0.

.. py:class:: LangevinNVT(all_info, group, T, seed)

   The constructor of a Langevin NVT thermostat object for a group of particles.

   :param AllInfo all_info: The system information.
   :param ParticleSet group: The group of particles.
   :param float T: The temperature.
   :param int seed: The seed of random number generator.

   .. py:function:: setGamma(float gamma)

      specifies the gamma with a constant value.

   .. py:function:: setGamma(string type, float gamma)

      specifies the gamma of a particle type.

   .. py:function:: setT(float T)

      specifies the temperature with a constant value.

   .. py:function:: setT(Variant vT)

      specifies the temperature with a varying value by time step.

   Example::

      group = gala.ParticleSet(all_info, 'all')
      lnvt = gala.LangevinNVT(all_info, group, 1.0, 123)
      app.add(lnvt)

NVT for rigid body

.. py:class:: NVTRigid(AllInfo all_info, ParticleSet group, float T, float tauT)

   The constructor of a NVT thermostat object for rigid bodies.

   :param AllInfo all_info: The system information.
   :param ParticleSet group: The group of particles.
   :param float T: The temperature.
   :param float tauT: The thermostat coupling parameter.

   .. py:function:: setT(float T)

      specifies the temperature with a fixed value.

   .. py:function:: setT(Variant vT)

      pecifies the temperature with a varying value by time step.

   Example::

      bgroup = gala.ParticleSet(all_info, 'body')
      rigidnvt = gala.NVTRigid(all_info, bgroup, 1.0, 10.0)
      app.add(rigidnvt)

Langevin dynamic for rigid body

Please see :ref:`langevin-nvt` for the theory.

.. py:class:: LangevinNVTRigid(all_info, group, T, seed)

   The constructor of a Langevin NVT thermostat object for rigid bodies.

   :param AllInfo all_info: The system information.
   :param ParticleSet group: The group of particles.
   :param float T: The temperature.
   :param int seed: The seed of random number generator.

   .. py:function:: setGamma(float gamma)

      specifies the gamma of Langevin method with a constant value.

   .. py:function:: setGamma(const std::string & type, float gamma)

      specifies the gamma of Langevin method of a particle type.

   .. py:function:: setT(float T)

      specifies the temperature with a constant value.

   .. py:function:: setT(Variant vT)

      specifies the temperature with a varying value by time step.

   Example::

      bgroup = gala.ParticleSet(all_info, 'body')
      lrigidnvt = gala.LangevinNVTRigid(all_info, bgroup, 1.0, 123)
      app.add(lrigidnvt)