Unverified Commit fd8cd6fa authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

typeset hyperdynamics fix docs with embedded math

parent b0de48e4
Loading
Loading
Loading
Loading
+43 −41
Original line number Original line Diff line number Diff line
@@ -58,65 +58,67 @@ Fichthorn as described in :ref:`(Miron) <Mironghd>`. In LAMMPS we use a
simplified version of bond-boost GHD where a single bond in the system
simplified version of bond-boost GHD where a single bond in the system
is biased at any one timestep.
is biased at any one timestep.


Bonds are defined between each pair of I,J atoms whose R0ij distance
Bonds are defined between each pair of atoms *ij*\ , whose :math:`R^0_{ij}`
is less than *cutbond*\ , when the system is in a quenched state
distance is less than *cutbond*\ , when the system is in a quenched state
(minimum) energy.  Note that these are not "bonds" in a covalent
(minimum) energy.  Note that these are not "bonds" in a covalent
sense.  A bond is simply any pair of atoms that meet the distance
sense.  A bond is simply any pair of atoms that meet the distance
criterion.  *Cutbond* is an argument to this fix; it is discussed
criterion.  *Cutbond* is an argument to this fix; it is discussed
below.  A bond is only formed if one or both of the I.J atoms are in
below.  A bond is only formed if one or both of the *ij* atoms are in
the specified group.
the specified group.


The current strain of bond IJ (when running dynamics) is defined as
The current strain of bond *ij* (when running dynamics) is defined as




.. parsed-literal::
.. math::


   Eij = (Rij - R0ij) / R0ij
   E_{ij} = \frac{R_{ij} - R^0_{ij}}{R^0_{ij}}


where Rij is the current distance between atoms I,J, and R0ij is the
where :math:`R_{ij}` is the current distance between atoms *i* and *j*\ ,
equilibrium distance in the quenched state.
and :math:`R^0_{ij}` is the equilibrium distance in the quenched state.


The bias energy Vij of any bond IJ is defined as
The bias energy :math:`V_{ij}` of any bond between atoms *i* and *j*
is defined as




.. parsed-literal::
.. math::


   Vij = Vmax \* (1 - (Eij/q)\^2) for abs(Eij) < qfactor
   V_{ij} = V^{max} \cdot \left( 1 - \left(\frac{E_{ij}}{q}\right)^2 \right) \textrm{ for } \left|E_{ij}\right| < qfactor \textrm{ or } 0 \textrm{ otherwise}
       = 0 otherwise


where the prefactor *Vmax* and the cutoff *qfactor* are arguments to
where the prefactor :math:`V^{max}` and the cutoff *qfactor* are arguments to
this fix; they are discussed below.  This functional form is an
this fix; they are discussed below.  This functional form is an
inverse parabola centered at 0.0 with height Vmax and which goes to
inverse parabola centered at 0.0 with height :math:`V^{max}` and
0.0 at +/- qfactor.
which goes to 0.0 at +/- qfactor.


Let Emax = the maximum of abs(Eij) for all IJ bonds in the system on a
Let :math:`E^{max}` be the maximum of :math:`\left| E_{ij} \right|`
given timestep.  On that step, Vij is added as a bias potential to
for all *ij* bonds in the system on a
only the single bond with strain Emax, call it Vij(max).  Note that
given timestep.  On that step, :math:`V_{ij}` is added as a bias potential
Vij(max) will be 0.0 if Emax >= qfactor on that timestep.  Also note
to only the single bond with strain :math:`E^{max}`, call it
that Vij(max) is added to the normal interatomic potential that is
:math:`V^{max}_{ij}`.  Note that :math:`V^{max}_{ij}` will be 0.0
computed between all atoms in the system at every step.
if :math:`E^{max} >= \textrm{qfactor}` on that timestep.  Also note
that :math:`V^{max}_{ij}` is added to the normal interatomic potential
that is computed between all atoms in the system at every step.


The derivative of Vij(max) with respect to the position of each atom
The derivative of :math:`V^{max}_{ij}` with respect to the position of
in the Emax bond gives a bias force Fij(max) acting on the bond as
each atom in the :math:`E^{max}` bond gives a bias force
:math:`F^{max}_{ij}` acting on the bond as




.. parsed-literal::
.. math::


   Fij(max) = - dVij(max)/dEij = 2 Vmax Eij / qfactor\^2   for abs(Eij) < qfactor
   F^{max}_{ij} = - \frac{dV^{max}_{ij}}{dE_{ij}} = \frac{2 V^{max} E-{ij}}{\textrm{qfactor}^2}   \textrm{ for } \left|E_{ij}\right| < \textrm{qfactor} \textrm{ or } 0 \textrm{ otherwise}
            = 0 otherwise


which can be decomposed into an equal and opposite force acting on
which can be decomposed into an equal and opposite force acting on
only the two I,J atoms in the Emax bond.
only the two *ij* atoms in the :math:`E^{max}` bond.


The time boost factor for the system is given each timestep I by
The time boost factor for the system is given each timestep I by




.. parsed-literal::
.. math::


   Bi = exp(beta \* Vij(max))
   B_i = e^{\beta V^{max}_{ij}}


where beta = 1/kTequil, and *Tequil* is the temperature of the system
where :math:`\beta = \frac{1}{kT_{equil}}`, and :math:`T_{equil}` is the temperature of the system
and an argument to this fix.  Note that Bi >= 1 at every step.
and an argument to this fix.  Note that :math:`B_i >= 1` at every step.


.. note::
.. note::


@@ -125,21 +127,21 @@ and an argument to this fix. Note that Bi >= 1 at every step.
   constant-temperature (NVT) dynamics.  LAMMPS does not check that this
   constant-temperature (NVT) dynamics.  LAMMPS does not check that this
   is done.
   is done.


The elapsed time t\_hyper for a GHD simulation running for *N*
The elapsed time :math:`t_{hyper}` for a GHD simulation running for *N*
timesteps is simply
timesteps is simply




.. parsed-literal::
.. math::


   t_hyper = Sum (i = 1 to N) Bi \* dt
   t_{hyper} = \sum_{i=1,N} B-i \cdot dt


where dt is the timestep size defined by the :doc:`timestep <timestep>`
where *dt* is the timestep size defined by the :doc:`timestep <timestep>`
command.  The effective time acceleration due to GHD is thus t\_hyper /
command.  The effective time acceleration due to GHD is thus t\_hyper /
N\*dt, where N\*dt is elapsed time for a normal MD run of N timesteps.
N\*dt, where N\*dt is elapsed time for a normal MD run of N timesteps.


Note that in GHD, the boost factor varies from timestep to timestep.
Note that in GHD, the boost factor varies from timestep to timestep.
Likewise, which bond has Emax strain and thus which pair of atoms the
Likewise, which bond has :math:`E^{max}` strain and thus which pair of
bias potential is added to, will also vary from timestep to timestep.
atoms the bias potential is added to, will also vary from timestep to timestep.
This is in contrast to local hyperdynamics (LHD) where the boost
This is in contrast to local hyperdynamics (LHD) where the boost
factor is an input parameter; see the :doc:`fix hyper/local <fix_hyper_local>` doc page for details.
factor is an input parameter; see the :doc:`fix hyper/local <fix_hyper_local>` doc page for details.


@@ -150,9 +152,9 @@ factor is an input parameter; see the :doc:`fix hyper/local <fix_hyper_local>` d
Here is additional information on the input parameters for GHD.
Here is additional information on the input parameters for GHD.


The *cutbond* argument is the cutoff distance for defining bonds
The *cutbond* argument is the cutoff distance for defining bonds
between pairs of nearby atoms.  A pair of I,J atoms in their
between pairs of nearby atoms.  A pair of *ij* atoms in their
equilibrium, minimum-energy configuration, which are separated by a
equilibrium, minimum-energy configuration, which are separated by a
distance Rij < *cutbond*\ , are flagged as a bonded pair.  Setting
distance :math:`R_{ij} < cutbond`, are flagged as a bonded pair.  Setting
*cubond* to be ~25% larger than the nearest-neighbor distance in a
*cubond* to be ~25% larger than the nearest-neighbor distance in a
crystalline lattice is a typical choice for solids, so that bonds
crystalline lattice is a typical choice for solids, so that bonds
exist only between nearest neighbor pairs.
exist only between nearest neighbor pairs.
@@ -166,7 +168,7 @@ could still experience a non-zero bias force.
If *qfactor* is set too large, then transitions from one energy basin
If *qfactor* is set too large, then transitions from one energy basin
to another are affected because the bias potential is non-zero at the
to another are affected because the bias potential is non-zero at the
transition state (e.g. saddle point).  If *qfactor* is set too small
transition state (e.g. saddle point).  If *qfactor* is set too small
than little boost is achieved because the Eij strain of some bond in
than little boost is achieved because the :math:`E_{ij}` strain of some bond in
the system will (nearly) always exceed *qfactor*\ .  A value of 0.3 for
the system will (nearly) always exceed *qfactor*\ .  A value of 0.3 for
*qfactor* is typically reasonable.
*qfactor* is typically reasonable.


@@ -220,7 +222,7 @@ scalar is the magnitude of the bias potential (energy units) applied on
the current timestep.  The vector stores the following quantities:
the current timestep.  The vector stores the following quantities:


* 1 = boost factor on this step (unitless)
* 1 = boost factor on this step (unitless)
* 2 = max strain Eij of any bond on this step (absolute value, unitless)
* 2 = max strain :math:`E_{ij}` of any bond on this step (absolute value, unitless)
* 3 = ID of first atom in the max-strain bond
* 3 = ID of first atom in the max-strain bond
* 4 = ID of second atom in the max-strain bond
* 4 = ID of second atom in the max-strain bond
* 5 = average # of bonds/atom on this step
* 5 = average # of bonds/atom on this step
+126 −117

File changed.

Preview size limit exceeded, changes collapsed.