197 lines
8.1 KiB
ReStructuredText
197 lines
8.1 KiB
ReStructuredText
.. index:: hyper
|
|
|
|
hyper command
|
|
=============
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
hyper N Nevent fix-ID compute-ID keyword values ...
|
|
|
|
* N = # of timesteps to run
|
|
* Nevent = check for events every this many steps
|
|
* fix-ID = ID of a fix that applies a global or local bias potential, can be NULL
|
|
* compute-ID = ID of a compute that identifies when an event has occurred
|
|
* zero or more keyword/value pairs may be appended
|
|
* keyword = *min* or *dump* or *rebond*
|
|
|
|
.. parsed-literal::
|
|
|
|
*min* values = etol ftol maxiter maxeval
|
|
etol = stopping tolerance for energy, used in quenching
|
|
ftol = stopping tolerance for force, used in quenching
|
|
maxiter = max iterations of minimize, used in quenching
|
|
maxeval = max number of force/energy evaluations, used in quenching
|
|
*dump* value = dump-ID
|
|
dump-ID = ID of dump to trigger whenever an event takes place
|
|
*rebond* value = Nrebond
|
|
Nrebond = frequency at which to reset bonds, even if no event has occurred
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
compute event all event/displace 1.0
|
|
fix HG mobile hyper/global 3.0 0.3 0.4 800.0
|
|
hyper 5000 100 HG event min 1.0e-6 1.0e-6 100 100 dump 1 dump 5
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
Run a bond-boost hyperdynamics (HD) simulation where time is
|
|
accelerated by application of a bias potential to one or more pairs of
|
|
nearby atoms in the system. This command can be used to run both
|
|
global and local hyperdynamics. In global HD a single bond within the
|
|
system is biased on each timestep. In local HD multiple bonds
|
|
(separated by a sufficient distance) can be biased simultaneously at
|
|
each timestep. In the bond-boost hyperdynamics context, a "bond" is
|
|
not a covalent bond between a pair of atoms in a molecule. Rather it
|
|
is simply a pair of nearby atoms as discussed below.
|
|
|
|
Both global and local HD are described in :ref:`(Voter2013)
|
|
<Voter2013>` by Art Voter and collaborators. Similar to parallel
|
|
replica dynamics (PRD), global and local HD are methods for performing
|
|
accelerated dynamics that are suitable for infrequent-event systems
|
|
that obey first-order kinetics. A good overview of accelerated
|
|
dynamics methods (AMD) for such systems in given in :ref:`(Voter2002)
|
|
<Voter2002hd>` from the same group. To quote from the review paper:
|
|
"The dynamical evolution is characterized by vibrational excursions
|
|
within a potential basin, punctuated by occasional transitions between
|
|
basins. The transition probability is characterized by p(t) =
|
|
k\*exp(-kt) where k is the rate constant."
|
|
|
|
Both HD and PRD produce a time-accurate trajectory that effectively
|
|
extends the timescale over which a system can be simulated, but they
|
|
do it differently. HD uses a single replica of the system and
|
|
accelerates time by biasing the interaction potential in a manner such
|
|
that each timestep is effectively longer. PRD creates Nr replicas of
|
|
the system and runs dynamics on each independently with a normal
|
|
unbiased potential until an event occurs in one of the replicas. The
|
|
time between events is reduced by a factor of Nr replicas. For both
|
|
methods, per CPU second, more physical time elapses and more events
|
|
occur. See the :doc:`prd <prd>` page for more info about PRD.
|
|
|
|
An HD run has several stages, which are repeated each time an event
|
|
occurs, as explained below. The logic for an HD run is as follows:
|
|
|
|
.. parsed-literal::
|
|
|
|
quench
|
|
create initial list of bonds
|
|
|
|
while (time remains):
|
|
run dynamics for Nevent steps
|
|
quench
|
|
check for an event
|
|
if event occurred: reset list of bonds
|
|
restore pre-quench state
|
|
|
|
The list of bonds is the list of atom pairs of atoms that are within a
|
|
short cutoff distance of each other after the system energy is
|
|
minimized (quenched). This list is created and reset by a :doc:`fix hyper/global <fix_hyper_global>` or :doc:`fix hyper/local <fix_hyper_local>` command specified as *fix-ID*\ . At
|
|
every dynamics timestep, the same fix selects one of more bonds to
|
|
apply a bias potential to.
|
|
|
|
.. note::
|
|
|
|
The style of fix associated with the specified *fix-ID*
|
|
determines whether you are running the global versus local
|
|
hyperdynamics algorithm.
|
|
|
|
Dynamics (with the bias potential) is run continuously, stopping every
|
|
*Nevent* steps to check if a transition event has occurred. The
|
|
specified *N* for total steps must be a multiple of *Nevent*\ . check
|
|
is performed by quenching the system and comparing the resulting atom
|
|
coordinates to the coordinates from the previous basin.
|
|
|
|
A quench is an energy minimization and is performed by whichever
|
|
algorithm has been defined by the :doc:`min_style <min_style>` command.
|
|
Minimization parameters may be set via the
|
|
:doc:`min_modify <min_modify>` command and by the *min* keyword of the
|
|
hyper command. The latter are the settings that would be used with
|
|
the :doc:`minimize <minimize>` command. Note that typically, you do not
|
|
need to perform a highly-converged minimization to detect a transition
|
|
event, though you may need to in order to prevent a set of atoms in
|
|
the system from relaxing to a saddle point.
|
|
|
|
The event check is performed by a compute with the specified
|
|
*compute-ID*\ . Currently there is only one compute that works with the
|
|
hyper command, which is the :doc:`compute event/displace <compute_event_displace>` command. Other
|
|
event-checking computes may be added. :doc:`Compute event/displace <compute_event_displace>` checks whether any atom in
|
|
the compute group has moved further than a specified threshold
|
|
distance. If so, an event has occurred.
|
|
|
|
If this happens, the list of bonds is reset, since some bond pairs
|
|
are likely now too far apart, and new pairs are likely close enough
|
|
to be considered a bond. The pre-quenched state of the
|
|
system (coordinates and velocities) is restored, and dynamics continue.
|
|
|
|
At the end of the hyper run, a variety of statistics are output to the
|
|
screen and logfile. These include info relevant to both global and
|
|
local hyperdynamics, such as the number of events and the elapsed
|
|
hyper time (accelerated time), And it includes info specific to one or
|
|
the other, depending on which style of fix was specified by *fix-ID*\ .
|
|
|
|
----------
|
|
|
|
The optional keywords operate as follows.
|
|
|
|
As explained above, the *min* keyword can be used to specify
|
|
parameters for the quench. Their meaning is the same
|
|
as for the :doc:`minimize <minimize>` command
|
|
|
|
The *dump* keyword can be used to trigger a specific dump command with
|
|
the specified *dump-ID* to output a snapshot each time an event is
|
|
detected. It can be specified multiple times with different *dump-ID*
|
|
values, as in the example above. These snapshots will be for the
|
|
quenched state of the system on a timestep that is a multiple of
|
|
*Nevent*, i.e. a timestep after the event has occurred. Note that any
|
|
dump command in the input script will also output snapshots at
|
|
whatever timestep interval it defines via its *N* argument; see the
|
|
:doc:`dump <dump>` command for details. This means if you only want a
|
|
particular dump to output snapshots when events are detected, you
|
|
should specify its *N* as a value larger than the length of the
|
|
hyperdynamics run.
|
|
|
|
As in the code logic above, the bond list is normally only reset when
|
|
an event occurs. The *rebond* keyword will force a reset of the bond
|
|
list every *Nrebond* steps, even if an event has not occurred.
|
|
*Nrebond* must be a multiple of *Nevent*\ . This can be useful to check
|
|
if more frequent resets alter event statistics, perhaps because the
|
|
parameters chosen for defining what is a bond and what is an event are
|
|
producing bad dynamics in the presence of the bias potential.
|
|
|
|
----------
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
|
|
This command can only be used if LAMMPS was built with the REPLICA
|
|
package. See the :doc:`Build package <Build_package>` doc
|
|
page for more info.
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`fix hyper/global <fix_hyper_global>`, :doc:`fix hyper/local <fix_hyper_local>`, :doc:`compute event/displace <compute_event_displace>`, :doc:`prd <prd>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
The option defaults are min = 0.1 0.1 40 50 and time = steps.
|
|
|
|
----------
|
|
|
|
.. _Voter2013:
|
|
|
|
**(Voter2013)** S. Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139,
|
|
144110 (2013).
|
|
|
|
.. _Voter2002hd:
|
|
|
|
**(Voter2002)** Voter, Montalenti, Germann, Annual Review of Materials
|
|
Research 32, 321 (2002).
|