typeset hyperdynamics fix docs with embedded math

This commit is contained in:
Axel Kohlmeyer
2020-02-15 06:50:04 -05:00
parent b0de48e47f
commit fd8cd6faa5
2 changed files with 167 additions and 156 deletions

View File

@ -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
is biased at any one timestep.
Bonds are defined between each pair of I,J atoms whose R0ij distance
is less than *cutbond*\ , when the system is in a quenched state
Bonds are defined between each pair of atoms *ij*\ , whose :math:`R^0_{ij}`
distance is less than *cutbond*\ , when the system is in a quenched state
(minimum) energy. Note that these are not "bonds" in a covalent
sense. A bond is simply any pair of atoms that meet the distance
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 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
equilibrium distance in the quenched state.
where :math:`R_{ij}` is the current distance between atoms *i* and *j*\ ,
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
= 0 otherwise
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}
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
inverse parabola centered at 0.0 with height Vmax and which goes to
0.0 at +/- qfactor.
inverse parabola centered at 0.0 with height :math:`V^{max}` and
which goes to 0.0 at +/- qfactor.
Let Emax = the maximum of abs(Eij) for all IJ bonds in the system on a
given timestep. On that step, Vij is added as a bias potential to
only the single bond with strain Emax, call it Vij(max). Note that
Vij(max) will be 0.0 if Emax >= qfactor on that timestep. Also note
that Vij(max) is added to the normal interatomic potential that is
computed between all atoms in the system at every step.
Let :math:`E^{max}` be the maximum of :math:`\left| E_{ij} \right|`
for all *ij* bonds in the system on a
given timestep. On that step, :math:`V_{ij}` is added as a bias potential
to only the single bond with strain :math:`E^{max}`, call it
:math:`V^{max}_{ij}`. Note that :math:`V^{max}_{ij}` will be 0.0
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
in the Emax bond gives a bias force Fij(max) acting on the bond as
The derivative of :math:`V^{max}_{ij}` with respect to the position of
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
= 0 otherwise
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}
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
.. 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
and an argument to this fix. Note that Bi >= 1 at every step.
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 :math:`B_i >= 1` at every step.
.. 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
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
.. 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 /
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.
Likewise, which bond has Emax strain and thus which pair of atoms the
bias potential is added to, will also vary from timestep to timestep.
Likewise, which bond has :math:`E^{max}` strain and thus which pair of
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
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.
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
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
crystalline lattice is a typical choice for solids, so that bonds
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
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
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
*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:
* 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
* 4 = ID of second atom in the max-strain bond
* 5 = average # of bonds/atom on this step

View File

@ -77,66 +77,66 @@ To understand this description, you should first read the description
of the GHD algorithm on the :doc:`fix hyper/global <fix_hyper_global>`
doc page. This description of LHD builds on the GHD description.
The definition of bonds and Eij are the same for GHD and LHD. The
formulas for Vij(max) and Fij(max) are also the same except for a
pre-factor Cij, explained below.
The definition of bonds and :math:`E_{ij}` are the same for GHD and LHD.
The formulas for :math:`V^{max}_{ij}` and :math:`F^{max}_{ij}` are also
the same except for a pre-factor :math:`C_{ij}`, explained below.
The bias energy Vij applied to a bond IJ with maximum strain is
The bias energy :math:`V_{ij}` applied to a bond *ij* with maximum strain is
.. parsed-literal::
.. math::
Vij(max) = Cij \* Vmax \* (1 - (Eij/q)\^2) for abs(Eij) < qfactor
= 0 otherwise
V^{max}_{ij} = C_{ij} \cdot 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}
The derivative of Vij(max) with respect to the position of each atom
in the IJ bond gives a bias force Fij(max) acting on the bond as
The derivative of :math:`V^{max}_{ij}` with respect to the position of
each atom in the *ij* bond gives a bias force :math:`F^{max}_{ij}` acting
on the bond as
.. parsed-literal::
.. math::
Fij(max) = - dVij(max)/dEij = 2 Cij Vmax Eij / qfactor\^2 for abs(Eij) < qfactor
= 0 otherwise
F^{max}_{ij} = - \frac{dV^{max}_{ij}}{dE_{ij}} = 2 C_{ij} V^{max} \frac{E_{ij}}{qfactor^2} \textrm{ for } \left|E_{ij}\right| < qfactor \textrm{ or } 0 \textrm{ otherwise}
which can be decomposed into an equal and opposite force acting on
only the two I,J atoms in the IJ bond.
only the two atoms *i* and *j* in the *ij* bond.
The key difference is that in GHD a bias energy and force is added (on
a particular timestep) to only one bond (pair of atoms) in the system,
which is the bond with maximum strain Emax.
which is the bond with maximum strain :math:`E^{max}`.
In LHD, a bias energy and force can be added to multiple bonds
separated by the specified *Dcut* distance or more. A bond IJ is
separated by the specified *Dcut* distance or more. A bond *ij* is
biased if it is the maximum strain bond within its local
"neighborhood", which is defined as the bond IJ plus any neighbor
bonds within a distance *Dcut* from IJ. The "distance" between bond
IJ and bond KL is the minimum distance between any of the IK, IL, JK,
JL pairs of atoms.
"neighborhood", which is defined as the bond *ij* plus any neighbor
bonds within a distance *Dcut* from *ij*. The "distance" between bond
*ij* and bond *kl* is the minimum distance between any of the *ik*, *il*,
*jk*, and *jl* pairs of atoms.
For a large system, multiple bonds will typically meet this
requirement, and thus a bias potential Vij(max) will be applied to
many bonds on the same timestep.
requirement, and thus a bias potential :math:`V^{max}_{ij}` will be
applied to many bonds on the same timestep.
In LHD, all bonds store a Cij prefactor which appears in the Vij(max)
and Fij(max) equations above. Note that the Cij factor scales the
strength of the bias energy and forces whenever bond IJ is the maximum
strain bond in its neighborhood.
In LHD, all bonds store a :math:`C_{ij}` prefactor which appears in
the :math:`V^{max}_{ij}` and :math:`F^{max}_{ij}equations above. Note
that the :math:`C_{ij}` factor scales the strength of the bias energy
and forces whenever bond *ij* is the maximum strain bond in its neighborhood.
Cij is initialized to 1.0 when a bond between the I,J atoms is first
defined. The specified *Btarget* factor is then used to adjust the
Cij prefactors for each bond every timestep in the following manner.
:math:`C_{ij}` is initialized to 1.0 when a bond between the *ij* atoms
is first defined. The specified *Btarget* factor is then used to adjust the
:math:`C_{ij}` prefactors for each bond every timestep in the following manner.
An instantaneous boost factor Bij is computed each timestep
An instantaneous boost factor :math:`B_{ij}` is computed each timestep
for each bond, as
.. parsed-literal::
.. math::
Bij = exp(beta \* Vkl(max))
B_{ij} = e^{\beta V^{max}_{kl}}
where Vkl(max) is the bias energy of the maxstrain bond KL within bond
IJ's neighborhood, beta = 1/kTequil, and *Tequil* is the temperature
of the system and an argument to this fix.
where :math:`V^{max}_{kl}` is the bias energy of the maxstrain bond *kl*
within bond *ij*\ 's neighborhood, :math:`\beta = \frac{1}{kT_{equil}}`,
and :math:`T_{equil}` is the temperature of the system and an argument
to this fix.
.. note::
@ -146,28 +146,32 @@ of the system and an argument to this fix.
running constant-temperature (NVT) dynamics. LAMMPS does not check
that this is done.
Note that if IJ = KL, then bond IJ is a biased bond on that timestep,
otherwise it is not. But regardless, the boost factor Bij can be
thought of an estimate of time boost currently being applied within a
local region centered on bond IJ. For LHD, we want this to be the
specified *Btarget* value everywhere in the simulation domain.
Note that if *ij*\ == *kl*\ , then bond *ij* is a biased bond on that
timestep, otherwise it is not. But regardless, the boost factor
:math:`B_{ij}` can be thought of an estimate of time boost currently
being applied within a local region centered on bond *ij*. For LHD,
we want this to be the specified *Btarget* value everywhere in the
simulation domain.
To accomplish this, if Bij < Btarget, the Cij prefactor for bond IJ is
incremented on the current timestep by an amount proportional to the
inverse of the specified *alpha* and the difference (Bij - Btarget).
Conversely if Bij > Btarget, Cij is decremented by the same amount.
This procedure is termed "boostostatting" in
:ref:`(Voter2013) <Voter2013lhd>`. It drives all of the individual Cij to
values such that when Vij\ *max* is applied as a bias to bond IJ, the
resulting boost factor Bij will be close to *Btarget* on average.
To accomplish this, if :math:`B_{ij} < B_{target}`, the :math:`C_{ij}`
prefactor for bond *ij* is incremented on the current timestep by an
amount proportional to the inverse of the specified *alpha* and the
difference (:math:`B_{ij} - B_{target}`).
Conversely if :math:`B_{ij} > B_{target}`, :math:`C_{ij}` is decremented
by the same amount.
This procedure is termed "boostostatting" in :ref:`(Voter2013) <Voter2013lhd>`.
It drives all of the individual :math:`C_{ij}` to
values such that when :math:`V^{max}_{ij}` is applied as a bias to
bond *ij*, the resulting boost factor :math:`B_{ij}` will be close
to :math:`B_{target}` on average.
Thus the LHD time acceleration factor for the overall system is
effectively *Btarget*\ .
Note that in LHD, the boost factor *Btarget* is specified by the user.
Note that in LHD, the boost factor :math:`B_{target}` is specified by the user.
This is in contrast to global hyperdynamics (GHD) where the boost
factor varies each timestep and is computed as a function of *Vmax*\ ,
Emax, and *Tequil*\ ; see the :doc:`fix hyper/global <fix_hyper_global>`
doc page for details.
factor varies each timestep and is computed as a function of :math:`V_{max}`,
:math:`E_{max}`, and :math:`T_{equil}`; see the
:doc:`fix hyper/global <fix_hyper_global>` doc page for details.
----------
@ -182,7 +186,7 @@ The *Dcut*\ , *alpha*\ , and *Btarget* parameters are unique to LHD.
The *cutbond* argument is the cutoff distance for defining bonds
between pairs of nearby atoms. A pair of I,J atoms in their
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
crystalline lattice is a typical choice for solids, so that bonds
exist only between nearest neighbor pairs.
@ -190,37 +194,40 @@ exist only between nearest neighbor pairs.
The *qfactor* argument is the limiting strain at which the bias
potential goes to 0.0. It is dimensionless, so a value of 0.3 means a
bond distance can be up to 30% larger or 30% smaller than the
equilibrium (quenched) R0ij distance and the two atoms in the bond
equilibrium (quenched) :math:`R^0_{ij}` distance and the two atoms in the bond
could still experience a non-zero bias force.
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
transition state (e.g. saddle point). If *qfactor* is set too small
than little boost can be achieved because the Eij strain of some bond in
than little boost can be achieved because the :math:`E_{ij}` strain of
some bond in
the system will (nearly) always exceed *qfactor*\ . A value of 0.3 for
*qfactor* is typically a reasonable value.
The *Vmax* argument is a fixed prefactor on the bias potential. There
is a also a dynamic prefactor Cij, driven by the choice of *Btarget*
as discussed above. The product of these should be a value less than
is a also a dynamic prefactor :math:`C_{ij}`, driven by the choice of
*Btarget* as discussed above. The product of these should be a value less than
the smallest barrier height for an event to occur. Otherwise the
applied bias potential may be large enough (when added to the
interatomic potential) to produce a local energy basin with a maxima
in the center. This can produce artificial energy minima in the same
basin that trap an atom. Or if Cij\*\ *Vmax* is even larger, it may
basin that trap an atom. Or if :math:`C_{ij} \cdot V^{max}` is even
larger, it may
induce an atom(s) to rapidly transition to another energy basin. Both
cases are "bad dynamics" which violate the assumptions of LHD that
guarantee an accelerated time-accurate trajectory of the system.
.. note::
It may seem that *Vmax* can be set to any value, and Cij will
compensate to reduce the overall prefactor if necessary. However the
Cij are initialized to 1.0 and the boostostatting procedure typically
operates slowly enough that there can be a time period of bad dynamics
if *Vmax* is set too large. A better strategy is to set *Vmax* to the
It may seem that :math:`V^{max}` can be set to any value, and
:math:`C_{ij}` will compensate to reduce the overall prefactor
if necessary. However the :math:`C_{ij}` are initialized to 1.0
and the boostostatting procedure typically operates slowly enough
that there can be a time period of bad dynamics if :math:`V^{max}`
is set too large. A better strategy is to set :math:`V^{max}` to the
slightly smaller than the lowest barrier height for an event (the same
as for GHD), so that the Cij remain near unity.
as for GHD), so that the :math:`C_{ij}` remain near unity.
The *Tequil* argument is the temperature at which the system is
simulated; see the comment above about the :doc:`fix langevin <fix_langevin>` thermostatting. It is also part of the
@ -262,11 +269,11 @@ half the *cutbond* parameter as an estimate to warn if the ghost
cutoff is not long enough.
As described above the *alpha* argument is a pre-factor in the
boostostat update equation for each bond's Cij prefactor. *Alpha* is
specified in time units, similar to other thermostat or barostat
boostostat update equation for each bond's :math:`C_{ij}` prefactor.
*Alpha* is specified in time units, similar to other thermostat or barostat
damping parameters. It is roughly the physical time it will take the
boostostat to adjust a Cij value from a too high (or too low) value to
a correct one. An *alpha* setting of a few ps is typically good for
boostostat to adjust a :math:`C_{ij}` value from a too high (or too low)
value to a correct one. An *alpha* setting of a few ps is typically good for
solid-state systems. Note that the *alpha* argument here is the
inverse of the alpha parameter discussed in
:ref:`(Voter2013) <Voter2013lhd>`.
@ -276,25 +283,26 @@ that all the atoms in the system will experience. The elapsed time
t\_hyper for an LHD simulation running for *N* timesteps is simply
.. parsed-literal::
.. math::
t_hyper = Btarget \* N\*dt
t_{hyper} = B_{target} \cdot N \cdot dt
where dt is the timestep size defined by the :doc:`timestep <timestep>`
command. The effective time acceleration due to LHD is thus t\_hyper /
N\*dt = Btarget, where N\*dt is elapsed time for a normal MD run
of N timesteps.
where *dt* is the timestep size defined by the :doc:`timestep <timestep>`
command. The effective time acceleration due to LHD is thus
:math:`\frac{t_{hyper}}{N\cdot dt} = B_{target}`, where :math:`N\cdot dt`
is the elapsed time for a normal MD run of N timesteps.
You cannot choose an arbitrarily large setting for *Btarget*\ . The
maximum value you should choose is
.. parsed-literal::
.. math::
Btarget = exp(beta \* Vsmall)
B_{target} = e^{\beta V_{small}}
where Vsmall is the smallest event barrier height in your system, beta
= 1/kTequil, and *Tequil* is the specified temperature of the system
where :math:`V_{small}` is the smallest event barrier height in your
system, :math:`\beta = \frac{1}{kT_{equil}}`, and :math:`T_{equil}`
is the specified temperature of the system
(both by this fix and the Langevin thermostat).
Note that if *Btarget* is set smaller than this, the LHD simulation
@ -315,41 +323,42 @@ time (t\_hyper equation above) will be shorter.
Here is additional information on the optional keywords for this fix.
The *bound* keyword turns on min/max bounds for bias coefficients Cij
for all bonds. Cij is a prefactor for each bond on the bias potential
of maximum strength Vmax. Depending on the choice of *alpha* and
*Btarget* and *Vmax*\ , the boostostatting can cause individual Cij
values to fluctuate. If the fluctuations are too large Cij\*Vmax can
exceed low barrier heights and induce bad event dynamics. Bounding
the Cij values is a way to prevent this. If *Bfrac* is set to -1 or
any negative value (the default) then no bounds are enforced on Cij
values (except they must always be >= 0.0). A *Bfrac* setting >= 0.0
sets a lower bound of 1.0 - Bfrac and upper bound of 1.0 + Bfrac on
each Cij value. Note that all Cij values are initialized to 1.0 when
a bond is created for the first time. Thus *Bfrac* limits the bias
potential height to *Vmax* +/- *Bfrac*\ \*\ *Vmax*\ .
The *bound* keyword turns on min/max bounds for bias coefficients
:math:`C_{ij}` for all bonds. :math:`C_{ij}` is a prefactor for each bond on
the bias potential of maximum strength :math:`V^{max}`. Depending on the
choice of *alpha* and *Btarget* and *Vmax*\ , the boostostatting can cause
individual :math:`C_{ij}` values to fluctuate. If the fluctuations are too
large :math:`C_{ij} \cdot V^{max}` can exceed low barrier heights and induce
bad event dynamics. Bounding the :math:`C_{ij}` values is a way to prevent
this. If *Bfrac* is set to -1 or any negative value (the default) then no
bounds are enforced on :math:`C_{ij}` values (except they must always
be >= 0.0). A *Bfrac* setting >= 0.0
sets a lower bound of 1.0 - Bfrac and upper bound of 1.0 + Bfrac on each
:math:`C_{ij}` value. Note that all :math:`C_{ij}` values are initialized
to 1.0 when a bond is created for the first time. Thus *Bfrac* limits the
bias potential height to *Vmax* +/- *Bfrac*\ \*\ *Vmax*\ .
The *reset* keyword allow *Vmax* to be adjusted dynamically depending
on the average value of all Cij prefactors. This can be useful if you
The *reset* keyword allow *Vmax* to be adjusted dynamically depending on the
average value of all :math:`C_{ij}` prefactors. This can be useful if you
are unsure what value of *Vmax* will match the *Btarget* boost for the
system. The Cij values will then adjust in aggregate (up or down) so
that Cij\*Vmax produces a boost of *Btarget*\ , but this may conflict
with the *bound* keyword settings. By using *bound* and *reset*
together, *Vmax* itself can be reset, and desired bounds still applied
to the Cij values.
system. The :math:`C_{ij}` values will then adjust in aggregate (up or down)
so that :math:`C_{ij} \cdot V^{max}` produces a boost of *Btarget*\ , but this
may conflict with the *bound* keyword settings. By using *bound* and *reset*
together, :math:`V^{max}` itself can be reset, and desired bounds still applied
to the :math:`C_{ij}` values.
A setting for *Rfreq* of -1 (the default) means *Vmax* never changes.
A setting of 0 means *Vmax* is adjusted every time an event occurs and
A setting of 0 means :math:`V^{max}` is adjusted every time an event occurs and
bond pairs are recalculated. A setting of N > 0 timesteps means
*Vmax* is adjusted on the first time an event occurs on a timestep >=
N steps after the previous adjustment. The adjustment to *Vmax* is
computed as follows. The current average of all Cij\*Vmax values is
computed and the *Vmax* is reset to that value. All Cij values are
changed to new prefactors such the new Cij\*Vmax is the same as it was
previously. If the *bound* keyword was used, those bounds are
enforced on the new Cij values. Henceforth, new bonds are assigned a
Cij = 1.0, which means their bias potential magnitude is the new
*Vmax*\ .
:math:`V^{max}` is adjusted on the first time an event occurs on a timestep >=
N steps after the previous adjustment. The adjustment to :math:`V^{max}` is
computed as follows. The current average of all :math:`C_{ij} \cdot V^{max}`
values is computed and the :math:`V^{max}` is reset to that value. All
:math:`C_{ij}` values are changed to new prefactors such the new
:math:`C_{ij} \cdot V^{max}` is the same as it was previously. If the
*bound* keyword was used, those bounds are enforced on the new :math:`C_{ij}`
values. Henceforth, new bonds are assigned a :math:`C_{ij} = 1.0`, which
means their bias potential magnitude is the new :math:`V^{max}`.
The *check/ghost* keyword turns on extra computation each timestep to
compute statistics about ghost atoms used to determine which bonds to
@ -390,8 +399,8 @@ vector stores the following quantities:
* 1 = average boost for all bonds on this step (unitless)
* 2 = # of biased bonds on this step
* 3 = max strain Eij of any bond on this step (absolute value, unitless)
* 4 = value of Vmax on this step (energy units)
* 3 = max strain :math:`E_{ij}` of any bond on this step (absolute value, unitless)
* 4 = value of :math:`V^{max}` on this step (energy units)
* 5 = average bias coeff for all bonds on this step (unitless)
* 6 = min bias coeff for all bonds on this step (unitless)
* 7 = max bias coeff for all bonds on this step (unitless)
@ -428,12 +437,12 @@ multiple runs (since the point in the input script the fix was
defined).
For value 10, each bond instantaneous boost factor is given by the
equation for Bij above. The total system boost (average across all
equation for :math:`B_{ij}` above. The total system boost (average across all
bonds) fluctuates, but should average to a value close to the
specified Btarget.
specified :math:`B_{target}`.
For value 12, the numerator is a count of all biased bonds on each
timestep whose bias energy = 0.0 due to Eij >= *qfactor*\ . The
timestep whose bias energy = 0.0 due to :math:`E_{ij} >= qfactor`. The
denominator is the count of all biased bonds on all timesteps.
For value 13, the numerator is a count of all biased bonds on each
@ -522,12 +531,12 @@ The scalar and vector values calculated by this fix are all
"intensive".
This fix also computes a local vector of length the number of bonds
currently in the system. The value for each bond is its Cij prefactor
(bias coefficient). These values can be can be accessed by various
currently in the system. The value for each bond is its :math:`C_{ij}`
prefactor (bias coefficient). These values can be can be accessed by various
:doc:`output commands <Howto_output>`. A particularly useful one is the
:doc:`fix ave/histo <fix_ave_histo>` command which can be used to
histogram the Cij values to see if they are distributed reasonably
close to 1.0, which indicates a good choice of *Vmax*\ .
close to 1.0, which indicates a good choice of :math:`V^{max}`.
The local values calculated by this fix are unitless.