Merge pull request #1202 from lammps/hyper
Add Hyper-dynamics to REPLICA package
|
@ -59,6 +59,7 @@ An alphabetic list of all LAMMPS commands.
|
|||
"fix_modify"_fix_modify.html,
|
||||
"group"_group.html,
|
||||
"group2ndx"_group2ndx.html,
|
||||
"hyper"_hyper.html,
|
||||
"if"_if.html,
|
||||
"info"_info.html,
|
||||
"improper_coeff"_improper_coeff.html,
|
||||
|
|
|
@ -78,6 +78,8 @@ OPT.
|
|||
"grem"_fix_grem.html,
|
||||
"halt"_fix_halt.html,
|
||||
"heat"_fix_heat.html,
|
||||
"hyper/global"_fix_hyper_global.html,
|
||||
"hyper/local"_fix_hyper_local.html,
|
||||
"imd"_fix_imd.html,
|
||||
"indent"_fix_indent.html,
|
||||
"ipi"_fix_ipi.html,
|
||||
|
@ -108,7 +110,7 @@ OPT.
|
|||
"nph/asphere (o)"_fix_nph_asphere.html,
|
||||
"nph/body"_fix_nph_body.html,
|
||||
"nph/eff"_fix_nh_eff.html,
|
||||
"nph/sphere (ko)"_fix_nph_sphere.html,
|
||||
"nph/sphere (o)"_fix_nph_sphere.html,
|
||||
"nphug (o)"_fix_nphug.html,
|
||||
"npt (iko)"_fix_nh.html,
|
||||
"npt/asphere (o)"_fix_npt_asphere.html,
|
||||
|
@ -128,7 +130,7 @@ OPT.
|
|||
"nve/line"_fix_nve_line.html,
|
||||
"nve/manifold/rattle"_fix_nve_manifold_rattle.html,
|
||||
"nve/noforce"_fix_nve_noforce.html,
|
||||
"nve/sphere (o)"_fix_nve_sphere.html,
|
||||
"nve/sphere (ko)"_fix_nve_sphere.html,
|
||||
"nve/spin"_fix_nve_spin.html,
|
||||
"nve/tri"_fix_nve_tri.html,
|
||||
"nvk"_fix_nvk.html,
|
||||
|
@ -147,6 +149,7 @@ OPT.
|
|||
"phonon"_fix_phonon.html,
|
||||
"pimd"_fix_pimd.html,
|
||||
"planeforce"_fix_planeforce.html,
|
||||
"plumed"_fix_plumed.html,
|
||||
"poems"_fix_poems.html,
|
||||
"pour"_fix_pour.html,
|
||||
"precession/spin"_fix_precession_spin.html,
|
||||
|
|
|
@ -68,7 +68,7 @@ Package, Description, Doc page, Example, Library
|
|||
"USER-QUIP"_Packages_details.html#PKG-USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
|
||||
"USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, no
|
||||
"USER-SCAFACOS"_Packages_details.html#PKG-USER-SCAFACOS, wrapper on ScaFaCoS solver,"kspace_style scafacos"_kspace_style.html, USER/scafacos, ext
|
||||
"USER-SDPD"_Packages_details.html#PKG-USER-SDPD, smoothed dissipative particle dynamics,"pair_style sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal, USER/sdpd, no
|
||||
"USER-SDPD"_Packages_details.html#PKG-USER-SDPD, smoothed dissipative particle dynamics,"pair_style sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal.html, USER/sdpd, no
|
||||
"USER-SMD"_Packages_details.html#PKG-USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
|
||||
"USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, no
|
||||
"USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, no
|
||||
|
|
|
@ -44,6 +44,7 @@ Commands :h1
|
|||
fix_modify
|
||||
group
|
||||
group2ndx
|
||||
hyper
|
||||
if
|
||||
improper_coeff
|
||||
improper_style
|
||||
|
|
|
@ -176,6 +176,7 @@ compute"_Commands_compute.html doc page are followed by one or more of
|
|||
(g,i,k,o,t) to indicate which accelerated styles exist.
|
||||
|
||||
"ackland/atom"_compute_ackland_atom.html -
|
||||
"adf"_compute_adf.html - angular distribution function
|
||||
"aggregate/atom"_compute_cluster_atom.html - aggregate ID for each atom
|
||||
"angle"_compute_angle.html -
|
||||
"angle/local"_compute_angle_local.html -
|
||||
|
|
|
@ -221,6 +221,8 @@ accelerated styles exist.
|
|||
"grem"_fix_grem.html -
|
||||
"halt"_fix_halt.html - terminate a dynamics run or minimization
|
||||
"heat"_fix_heat.html - add/subtract momentum-conserving heat
|
||||
"hyper/global"_fix_hyper_global.html - global hyperdynamics
|
||||
"hyper/local"_fix_hyper_local.html - local hyperdynamics
|
||||
"imd"_fix_imd.html -
|
||||
"indent"_fix_indent.html - impose force due to an indenter
|
||||
"ipi"_fix_ipi.html -
|
||||
|
@ -238,6 +240,7 @@ accelerated styles exist.
|
|||
"manifoldforce"_fix_manifoldforce.html -
|
||||
"meso"_fix_meso.html -
|
||||
"meso"_fix_meso_move.html - move mesoscopic SPH/SDPD particles in a prescribed fashion
|
||||
"meso/move"_fix_meso_move.html -
|
||||
"meso/stationary"_fix_meso_stationary.html -
|
||||
"momentum"_fix_momentum.html - zero the linear and/or angular momentum of a group of atoms
|
||||
"move"_fix_move.html - move atoms in a prescribed fashion
|
||||
|
@ -293,6 +296,7 @@ accelerated styles exist.
|
|||
"phonon"_fix_phonon.html -
|
||||
"pimd"_fix_pimd.html -
|
||||
"planeforce"_fix_planeforce.html - constrain atoms to move in a plane
|
||||
"plumed"_fix_plumed.html - wrapper on PLUMED free energy library
|
||||
"poems"_fix_poems.html - constrain clusters of atoms to move as coupled rigid bodies
|
||||
"pour"_fix_pour.html - pour new atoms/molecules into a granular simulation domain
|
||||
"precession/spin"_fix_precession_spin.html -
|
||||
|
|
|
@ -0,0 +1,260 @@
|
|||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
fix hyper/global command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID hyper/global cutbond qfactor Vmax Tequil :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command
|
||||
hyper/global = style name of this fix command
|
||||
cutbond = max distance at which a pair of atoms is considered bonded (distance units)
|
||||
qfactor = max strain at which bias potential goes to 0.0 (unitless)
|
||||
Vmax = height of bias potential (energy units)
|
||||
Tequil = equilibration temperature (temperature units) :ul
|
||||
|
||||
[Examples:]
|
||||
|
||||
fix 1 all hyper/global 1.0 0.3 0.8 300.0 :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
This fix is meant to be used with the "hyper"_hyper.html command to
|
||||
perform a bond-boost global hyperdynamics (GHD) simulation. The role
|
||||
of this fix is to a select a single pair of atoms in the system at
|
||||
each timestep to add a global bias potential to, which will alter the
|
||||
dynamics of the system in a manner that effectively accelerates time.
|
||||
This is in contrast to the "fix hyper/local"_fix_hyper_local.html
|
||||
command, which can be user to perform a local hyperdynamics (LHD)
|
||||
simulation, by adding a local bias potential to multiple pairs of
|
||||
atoms at each timestep. GHD can time accelerate a small simulation
|
||||
with up to a few 100 atoms. For larger systems, LHD is needed to
|
||||
achieve good time acceleration.
|
||||
|
||||
For a system that undergoes rare transition events, where one or more
|
||||
atoms move over an energy barrier to a new potential energy basin, the
|
||||
effect of the bias potential is to induce more rapid transitions.
|
||||
This can lead to a dramatic speed-up in the rate at which events
|
||||
occurs, without altering their relative frequencies, thus leading to
|
||||
an overall increase in the elapsed real time of the simulation as
|
||||
compared to running for the same number of timesteps with normal MD.
|
||||
See the "hyper"_hyper.html doc page for a more general discussion of
|
||||
hyperdynamics and citations that explain both GHD and LHD.
|
||||
|
||||
The equations and logic used by this fix and described here to perform
|
||||
GHD follow the description given in "(Voter2013)"_#Voter2013ghd. The
|
||||
bond-boost form of a bias potential for HD is due to Miron and
|
||||
Fichthorn as described in "(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
|
||||
(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
|
||||
the specified group.
|
||||
|
||||
The current strain of bond IJ (when running dynamics) is defined as
|
||||
|
||||
Eij = (Rij - R0ij) / R0ij :pre
|
||||
|
||||
where Rij is the current distance between atoms I,J, and R0ij is the
|
||||
equilibrium distance in the quenched state.
|
||||
|
||||
The bias energy Vij of any bond IJ is defined as
|
||||
|
||||
Vij = Vmax * (1 - (Eij/q)^2) for abs(Eij) < qfactor
|
||||
= 0 otherwise :pre
|
||||
|
||||
where the prefactor {Vmax} 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.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
Fij(max) = - dVij(max)/dEij = 2 Vmax Eij / qfactor^2 for abs(Eij) < qfactor
|
||||
= 0 otherwise :pre
|
||||
|
||||
which can be decomposed into an equal and opposite force acting on
|
||||
only the two I,J atoms in the Emax bond.
|
||||
|
||||
The time boost factor for the system is given each timestep I by
|
||||
|
||||
Bi = exp(beta * Vij(max)) :pre
|
||||
|
||||
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.
|
||||
|
||||
NOTE: To run GHD, the input script must also use the "fix
|
||||
langevin"_fix_langevin.html command to thermostat the atoms at the
|
||||
same {Tequil} as specified by this fix, so that the system is running
|
||||
constant-temperature (NVT) dynamics. LAMMPS does not check that this
|
||||
is done.
|
||||
|
||||
The elapsed time t_hyper for a GHD simulation running for {N}
|
||||
timesteps is simply
|
||||
|
||||
t_hyper = Sum (i = 1 to N) Bi * dt :pre
|
||||
|
||||
where dt is the timestep size defined by the "timestep"_timestep.html
|
||||
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.
|
||||
This is in contrast to local hyperdynamics (LHD) where the boost
|
||||
factor is an input parameter; see the "fix
|
||||
hyper/local"_fix_hyper_local.html doc page for details.
|
||||
|
||||
:line
|
||||
|
||||
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
|
||||
equilibrium, minimum-energy configuration, which are separated by a
|
||||
distance Rij < {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.
|
||||
|
||||
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
|
||||
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
|
||||
the system will (nearly) always exceed {qfactor}. A value of 0.3 for
|
||||
{qfactor} is typically reasonable.
|
||||
|
||||
The {Vmax} argument is the prefactor on the bias potential. Ideally,
|
||||
tt should be set to a value slightly 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 {Vmax} 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 GHD that guarantee an accelerated
|
||||
time-accurate trajectory of the system.
|
||||
|
||||
Note that if {Vmax} is set too small, the GHD simulation will run
|
||||
correctly. There will just be fewer events because the hyper time
|
||||
(t_hyper equation above) will be shorter.
|
||||
|
||||
NOTE: If you have no physical intuition as to the smallest barrier
|
||||
height in your system, a reasonable strategy to determine the largest
|
||||
{Vmax} you can use for an LHD model, is to run a sequence of
|
||||
simulations with smaller and smaller {Vmax} values, until the event
|
||||
rate does not change.
|
||||
|
||||
The {Tequil} argument is the temperature at which the system is
|
||||
simulated; see the comment above about the "fix
|
||||
langevin"_fix_langevin.html thermostatting. It is also part of the
|
||||
beta term in the exponential factor that determines how much boost is
|
||||
achieved as a function of the bias potential.
|
||||
|
||||
In general, the lower the value of {Tequil} and the higher the value
|
||||
of {Vmax}, the more boost will be achievable by the GHD algorithm.
|
||||
|
||||
:line
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
No information about this fix is written to "binary restart
|
||||
files"_restart.html.
|
||||
|
||||
The "fix_modify"_fix_modify.html {energy} option is supported by this
|
||||
fix to add the energy of the bias potential to the the system's
|
||||
potential energy as part of "thermodynamic output"_thermo_style.html.
|
||||
|
||||
This fix computes a global scalar and global vector of length 11, which
|
||||
can be accessed by various "output commands"_Howto_output.html. The
|
||||
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 (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 :ul
|
||||
|
||||
6 = fraction of timesteps with bias = 0.0 during this run
|
||||
7 = max drift distance of any atom during this run (distance units)
|
||||
8 = max bond length during this run (distance units) :ul
|
||||
|
||||
9 = cummulative hyper time since fix was defined (time units)
|
||||
10 = cummulative count of event timesteps since fix was defined
|
||||
11 = cummulative count of atoms in events since fix was defined :ul
|
||||
|
||||
The first 5 quantities are for the current timestep. Quantities 6-8
|
||||
are for the current hyper run. Quantities 9-11 are cummulative across
|
||||
multiple runs (since the fix was defined in the input script).
|
||||
|
||||
For value 7, drift is the distance an atom moves between timesteps
|
||||
when the bond list is reset, i.e. between events. Atoms involved in
|
||||
an event will typically move the greatest distance since others are
|
||||
typically oscillating around their lattice site.
|
||||
|
||||
For value 10, events are checked for by the "hyper"_hyper.html command
|
||||
once every {Nevent} timesteps. This value is the count of those
|
||||
timesteps on which one (or more) events was detected. It is NOT the
|
||||
number of distinct events, since more than one event may occur in the
|
||||
same {Nevent} time window.
|
||||
|
||||
For value 11, each time the "hyper"_hyper.html command checks for an
|
||||
event, it invokes a compute to flag zero or more atoms as
|
||||
participating in one or more events. E.g. atoms that have displaced
|
||||
more than some distance from the previous quench state. Value 11 is
|
||||
the cummulative count of the number of atoms participating in any of
|
||||
the events that were found.
|
||||
|
||||
The scalar and vector values calculated by this fix are all
|
||||
"intensive".
|
||||
|
||||
No parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command. This fix is not invoked during "energy
|
||||
minimization"_minimize.html.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This command can only be used if LAMMPS was built with the REPLICA
|
||||
package. See the "Build package"_Build_package.html doc page for more
|
||||
info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"hyper"_hyper.html, "fix hyper/local"_fix_hyper_local.html
|
||||
|
||||
[Default:] None
|
||||
|
||||
:line
|
||||
|
||||
:link(Voter2013ghd)
|
||||
[(Voter2013)] S. Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139,
|
||||
144110 (2013).
|
||||
|
||||
:link(Mironghd)
|
||||
[(Miron)] R. A. Miron and K. A. Fichthorn, J Chem Phys, 119, 6210 (2003).
|
|
@ -0,0 +1,404 @@
|
|||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
fix hyper/local command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID hyper/local cutbond qfactor Vmax Tequil Dcut alpha Btarget :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
hyper/local = style name of this fix command :l
|
||||
cutbond = max distance at which a pair of atoms is considered bonded (distance units) :l
|
||||
qfactor = max strain at which bias potential goes to 0.0 (unitless) :l
|
||||
Vmax = estimated height of bias potential (energy units) :l
|
||||
Tequil = equilibration temperature (temperature units) :l
|
||||
Dcut = minimum distance between boosted bonds (distance units) :l
|
||||
alpha = boostostat relaxation time (time units) :l
|
||||
Btarget = desired time boost factor (unitless) :l
|
||||
zero or more keyword/value pairs may be appended :l
|
||||
keyword = {lost} or {check/bias} or {check/coeff}
|
||||
{lostbond} value = error/warn/ignore
|
||||
{check/bias} values = Nevery error/warn/ignore
|
||||
{check/coeff} values = Nevery error/warn/ignore :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
fix 1 all hyper/local 1.0 0.3 0.8 300.0 :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
This fix is meant to be used with the "hyper"_hyper.html command to
|
||||
perform a bond-boost local hyperdynamics (LHD) simulation. The role
|
||||
of this fix is to a select multiple pairs of atoms in the system at
|
||||
each timestep to add a local bias potential to, which will alter the
|
||||
dynamics of the system in a manner that effectively accelerates time.
|
||||
This is in contrast to the "fix hyper/global"_fix_hyper_global.html
|
||||
command, which can be user to perform a global hyperdynamics (GHD)
|
||||
simulation, by adding a global bias potential to a single pair of
|
||||
atoms at each timestep. GHD can time accelerate a small simulation
|
||||
with up to a few 100 atoms. For larger systems, LHD is needed to
|
||||
achieve good time acceleration.
|
||||
|
||||
For a system that undergoes rare transition events, where one or more
|
||||
atoms move over an energy barrier to a new potential energy basin, the
|
||||
effect of the bias potential is to induce more rapid transitions.
|
||||
This can lead to a dramatic speed-up in the rate at which events
|
||||
occurs, without altering their relative frequencies, thus leading to
|
||||
an overall increase in the elapsed real time of the simulation as
|
||||
compared to running for the same number of timesteps with normal MD.
|
||||
See the "hyper"_hyper.html doc page for a more general discussion of
|
||||
hyperdynamics and citations that explain both GHD and LHD.
|
||||
|
||||
The equations and logic used by this fix and described here to perform
|
||||
LHD follow the description given in "(Voter2013)"_#Voter2013lhd. The
|
||||
bond-boost form of a bias potential for HD is due to Miron and
|
||||
Fichthorn as described in "(Miron)"_#Mironlhd.
|
||||
|
||||
To understand this description, you should first read the description
|
||||
of the GHD algorithm on the "fix hyper/global"_fix_hyper_global.html
|
||||
doc page. This description of LHD builds on the GHD description.
|
||||
|
||||
The definition of bonds, Eij, and Emax 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 bias energy Vij applied to a bond IJ with maximum strain is
|
||||
|
||||
Vij(max) = Cij * Vmax * (1 - (Eij/q)^2) for abs(Eij) < qfactor
|
||||
= 0 otherwise :pre
|
||||
|
||||
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
|
||||
|
||||
Fij(max) = - dVij(max)/dEij = 2 Cij Vmax Eij / qfactor^2 for abs(Eij) < qfactor
|
||||
= 0 otherwise :pre
|
||||
|
||||
which can be decomposed into an equal and opposite force acting on
|
||||
only the two I,J atoms 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.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
An instantaneous boost factor Bij is computed each timestep
|
||||
for each bond, as
|
||||
|
||||
Bij = exp(beta * Vkl(max)) :pre
|
||||
|
||||
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.
|
||||
|
||||
NOTE: To run LHD, the input script must also use the "fix
|
||||
langevin"_fix_langevin.html command to thermostat the atoms at the
|
||||
same {Tequil} as specified by this fix, so that the system is 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.
|
||||
|
||||
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
|
||||
"(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.
|
||||
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.
|
||||
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 "fix hyper/global"_fix_hyper_global.html
|
||||
doc page for details.
|
||||
|
||||
:line
|
||||
|
||||
Here is additional information on the input parameters for LHD.
|
||||
|
||||
Note that the {cutbond}, {qfactor}, and {Tequil} arguments have the
|
||||
same meaning as for GHD. The {Vmax} argument is slightly different.
|
||||
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
|
||||
{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.
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
smallest barrier height for an event (the same as for GHD), so that
|
||||
the Cij remain near unity.
|
||||
|
||||
The {Tequil} argument is the temperature at which the system is
|
||||
simulated; see the comment above about the "fix
|
||||
langevin"_fix_langevin.html thermostatting. It is also part of the
|
||||
beta term in the exponential factor that determines how much boost is
|
||||
achieved as a function of the bias potential. See the discussion of
|
||||
the {Btarget} argument below.
|
||||
|
||||
As discussed above, the {Dcut} argument is the distance required
|
||||
between two locally maxstrain bonds for them to both be selected as
|
||||
biased bonds on the same timestep. Computationally, the larger {Dcut}
|
||||
is, the more work (computation and communication) must be done each
|
||||
timestep within the LHD algorithm. And the fewer bonds can be
|
||||
simultaneously biased, which may mean the specified {Btarget} time
|
||||
acceleration cannot be achieved.
|
||||
|
||||
Physically {Dcut} should be a long enough distance that biasing two
|
||||
pairs of atoms that close together will not influence the dynamics of
|
||||
each pair. E.g. something like 2x the cutoff of the interatomic
|
||||
potential. In practice a {Dcut} value of ~10 Angstroms seems to work
|
||||
well for many solid-state systems.
|
||||
|
||||
NOTE: You must also insure that ghost atom communication is performed
|
||||
for a distance of at least {Dcut} + {cutevent} where {cutevent} = the
|
||||
distance one or more atoms move (between quenched states) to be
|
||||
considered an "event". It is an argument to the "compute
|
||||
event/displace" command used to detect events. By default the ghost
|
||||
communication distance is set by the pair_style cutoff, which will
|
||||
typically be < {Dcut}. The "comm_modify cutoff"_comm_modify.html
|
||||
command can be used to set the ghost cutoff explicitly, e.g.
|
||||
|
||||
comm_modify cutoff 12.0 :pre
|
||||
|
||||
This fix does not know the {cutevent} parameter, but uses half the
|
||||
bond length 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
|
||||
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
|
||||
solid-state systems. Note that the {alpha} argument here is the
|
||||
inverse of the alpha parameter discussed in
|
||||
"(Voter2013)"_#Voter2013lhd.
|
||||
|
||||
The {Btarget} argument is the desired time boost factor (a value > 1)
|
||||
that all the atoms in the system will experience. The elapsed time
|
||||
t_hyper for an LHD simulation running for {N} timesteps is simply
|
||||
|
||||
t_hyper = Btarget * N*dt :pre
|
||||
|
||||
where dt is the timestep size defined by the "timestep"_timestep.html
|
||||
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.
|
||||
|
||||
You cannot choose an arbitrarily large setting for {Btarget}. The
|
||||
maximum value you should choose is
|
||||
|
||||
Btarget = exp(beta * Vsmall) :pre
|
||||
|
||||
where Vsmall is the smallest event barrier height in your system, beta
|
||||
= 1/kTequil, and {Tequil} 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
|
||||
will run correctly. There will just be fewer events because the hyper
|
||||
time (t_hyper equation above) will be shorter.
|
||||
|
||||
NOTE: If you have no physical intuition as to the smallest barrier
|
||||
height in your system, a reasonable strategy to determine the largest
|
||||
{Btarget} you can use for an LHD model, is to run a sequence of
|
||||
simulations with smaller and smaller {Btarget} values, until the event
|
||||
rate does not change.
|
||||
|
||||
:line
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
No information about this fix is written to "binary restart
|
||||
files"_restart.html.
|
||||
|
||||
The "fix_modify"_fix_modify.html {energy} option is supported by this
|
||||
fix to add the energy of the bias potential to the the system's
|
||||
potential energy as part of "thermodynamic output"_thermo_style.html.
|
||||
|
||||
This fix computes a global scalar and global vector of length 23,
|
||||
which can be accessed by various "output
|
||||
commands"_Howto_output.html. The scalar is the magnitude of
|
||||
the bias potential (energy units) applied on the current timestep,
|
||||
summed over all biased bonds. The vector stores the following
|
||||
quantities:
|
||||
|
||||
1 = # of biased bonds on this step
|
||||
2 = max strain Eij of any bond on this step (unitless)
|
||||
3 = average bias potential for all biased bonds on this step (energy units)
|
||||
4 = average # of bonds/atom on this step
|
||||
5 = average neighbor bonds/bond on this step within {Dcut} :ul
|
||||
|
||||
6 = fraction of steps and bonds with no bias during this run
|
||||
7 = max drift distance of any atom during this run (distance units)
|
||||
8 = max bond length during this run (distance units)
|
||||
9 = average # of biased bonds/step during this run
|
||||
10 = average bias potential for all biased bonds during this run (energy units)
|
||||
11 = max bias potential for any biased bond during this run (energy units)
|
||||
12 = min bias potential for any biased bond during this run (energy units)
|
||||
13 = max distance from my sub-box of any ghost atom with maxstrain < qfactor during this run (distance units)
|
||||
14 = max distance outside my box of any ghost atom with any maxstrain during this run (distance units)
|
||||
15 = count of ghost neighbor atoms not found on reneighbor steps during this run
|
||||
16 = count of lost bond partners during this run
|
||||
17 = average bias coeff for lost bond partners during this run
|
||||
18 = count of bias overlaps found during this run
|
||||
19 = count of non-matching bias coefficients found during this run :ul
|
||||
|
||||
20 = cummulative hyper time since fix created (time units)
|
||||
21 = cummulative count of event timesteps since fix created
|
||||
22 = cummulative count of atoms in events since fix created
|
||||
23 = cummulative # of new bonds since fix created :ul
|
||||
|
||||
The first quantities (1-5) are for the current timestep. Quantities
|
||||
6-19 are for the current hyper run. They are reset each time a new
|
||||
hyper run is performed. Quantities 20-23 are cummulative across
|
||||
multiple runs (since the fix was defined in the input script).
|
||||
|
||||
For value 6, the numerator is a count of all biased bonds on every
|
||||
timestep whose bias energy = 0.0 due to Eij >= {qfactor}. The
|
||||
denominator is the count of all biased bonds on all timesteps.
|
||||
|
||||
For value 7, drift is the distance an atom moves between timesteps
|
||||
when the bond list is reset, i.e. between events. Atoms involved in
|
||||
an event will typically move the greatest distance since others are
|
||||
typically oscillating around their lattice site.
|
||||
|
||||
For values 13 and 14, the maxstrain of a ghost atom is the maxstrain
|
||||
of any bond it is part of, and it is checked for ghost atoms within
|
||||
the bond neighbor cutoff.
|
||||
|
||||
Values 15-19 are mostly useful for debugging and diagnositc purposes.
|
||||
|
||||
For values 15-17, it is possible that a ghost atom owned by another
|
||||
processor will move far enough (e.g. as part of an event-in-progress)
|
||||
that it will no longer be within the communication cutoff distance for
|
||||
acquiring ghost atoms. Likewise it may be a ghost atom bond partner
|
||||
that cannot be found because it has moved too far. These values count
|
||||
those occurrences. Because they typically involve atoms that are part
|
||||
of events, they do not usually indicate bad dynamics. Value 16 is the
|
||||
average bias coefficient for bonds where a partner atom was lost.
|
||||
|
||||
For value 18, no two bonds should be biased if they are within a
|
||||
{Dcut} distance of each other. This value should be zero, indicating
|
||||
that no pair of bonds "overlap", meaning they are closer than {Dcut}
|
||||
from each other.
|
||||
|
||||
For value 19, the same bias coefficient is stored by both atoms in an
|
||||
IJ bond. This value should be zero, indicating that for all bonds,
|
||||
each atom in the bond stores the a bias coefficient with the same
|
||||
value.
|
||||
|
||||
Value 20 is simply the specified {boost} factor times the number of
|
||||
timestep times the timestep size.
|
||||
|
||||
For value 21, events are checked for by the "hyper"_hyper.html command
|
||||
once every {Nevent} timesteps. This value is the count of those
|
||||
timesteps on which one (or more) events was detected. It is NOT the
|
||||
number of distinct events, since more than one event may occur in the
|
||||
same {Nevent} time window.
|
||||
|
||||
For value 22, each time the "hyper"_hyper.html command checks for an
|
||||
event, it invokes a compute to flag zero or more atoms as
|
||||
participating in one or more events. E.g. atoms that have displaced
|
||||
more than some distance from the previous quench state. Value 22 is
|
||||
the cummulative count of the number of atoms participating in any of
|
||||
the events that were found.
|
||||
|
||||
Value 23 tallies the number of new bonds created by the bond reset
|
||||
operation. Bonds between a specific I,J pair of atoms may persist for
|
||||
the entire hyperdynamics simulation if neither I or J are involved in
|
||||
an event.
|
||||
|
||||
The scalar and vector values calculated by this fix are all
|
||||
"intensive".
|
||||
|
||||
No parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command. This fix is not invoked during "energy
|
||||
minimization"_minimize.html.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This fix is part of the REPLICA package. It is only enabled if LAMMPS
|
||||
was built with that package. See the "Build package"_Build_package.html
|
||||
doc page for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"hyper"_hyper.html, "fix hyper/global"_fix_hyper_global.html
|
||||
|
||||
[Default:] None
|
||||
|
||||
:line
|
||||
|
||||
:link(Voter2013lhd)
|
||||
[(Voter2013)] S. Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139,
|
||||
144110 (2013).
|
||||
|
||||
:link(Mironlhd)
|
||||
[(Miron)] R. A. Miron and K. A. Fichthorn, J Chem Phys, 119, 6210 (2003).
|
|
@ -57,6 +57,8 @@ Fixes :h1
|
|||
fix_grem
|
||||
fix_halt
|
||||
fix_heat
|
||||
fix_hyper_global
|
||||
fix_hyper_local
|
||||
fix_imd
|
||||
fix_indent
|
||||
fix_ipi
|
||||
|
|
|
@ -0,0 +1,192 @@
|
|||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Section_commands.html#comm)
|
||||
|
||||
:line
|
||||
|
||||
hyper command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
hyper N Nevent fix-ID compute-ID keyword values ... :pre
|
||||
|
||||
N = # of timesteps to run :ulb,l
|
||||
Nevent = check for events every this many steps :l
|
||||
fix-ID = ID of a fix that applies a global or local bias potential, can be NULL :l
|
||||
compute-ID = ID of a compute that identifies when an event has occurred :l
|
||||
zero or more keyword/value pairs may be appended :l
|
||||
keyword = {min} or {dump} or {rebond} :l
|
||||
{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
|
||||
:pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
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 :pre
|
||||
|
||||
[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 hyperdyamics. 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 "(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
|
||||
for such systems in given in "(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. Running multiple replicas gives an effective enhancement in
|
||||
the timescale spanned by the multiple simulations, while waiting for
|
||||
an event to occur.
|
||||
|
||||
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 "prd"_prd.html doc 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:
|
||||
|
||||
quench
|
||||
create initial list of bonds :pre
|
||||
|
||||
while (time remains):
|
||||
run dynamics for Nevent steps
|
||||
quench
|
||||
check for an event
|
||||
if event occurred: reset list of bonds
|
||||
restore pre-quench state :pre
|
||||
|
||||
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 "fix
|
||||
hyper/global"_fix_hyper_global.html or "fix
|
||||
hyper/local"_fix_hyper_local.html command specified as {fix-ID}. At
|
||||
every dynamics timestep, the same fix selects one of more bonds to
|
||||
apply a bias potential to.
|
||||
|
||||
IMPORTANT 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 "min_style"_min_style.html command.
|
||||
Minimization parameters may be set via the
|
||||
"min_modify"_min_modify.html command and by the {min} keyword of the
|
||||
hyper command. The latter are the settings that would be used with
|
||||
the "minimize"_minimize.html 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 "compute
|
||||
event/displace"_compute_event_displace.html command. Other
|
||||
event-checking computes may be added. "Compute
|
||||
event/displace"_compute_event_displace.html 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 (acclerated time), And it includes info specific to one or
|
||||
the other, depending on which style of fix was specified by {fix-ID}.
|
||||
|
||||
:line
|
||||
|
||||
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 "minimize"_minimize.html 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
|
||||
"dump"_dump.html 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.
|
||||
|
||||
:line
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This command can only be used if LAMMPS was built with the REPLICA
|
||||
package. See the "Build package"_Build_package.html doc
|
||||
page for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"fix hyper/global"_fix_hyper_global.html, "fix
|
||||
hyper/local"_fix_hyper_local.html, "compute
|
||||
event/displace"_compute_event_displace.html, "prd"_prd.html
|
||||
|
||||
[Default:]
|
||||
|
||||
The option defaults are min = 0.1 0.1 40 50 and time = steps.
|
||||
|
||||
:line
|
||||
|
||||
:link(Voter2013)
|
||||
[(Voter2013)] S. Y. Kim, D. Perez, A. F. Voter, J Chem Phys, 139,
|
||||
144110 (2013).
|
||||
|
||||
:link(Voter2002hd)
|
||||
[(Voter2002)] Voter, Montalenti, Germann, Annual Review of Materials
|
||||
Research 32, 321 (2002).
|
|
@ -160,6 +160,7 @@ dump_cfg_uef.html
|
|||
echo.html
|
||||
group.html
|
||||
group2ndx.html
|
||||
hyper.html
|
||||
if.html
|
||||
include.html
|
||||
info.html
|
||||
|
@ -277,6 +278,8 @@ fix_gravity.html
|
|||
fix_grem.html
|
||||
fix_halt.html
|
||||
fix_heat.html
|
||||
fix_hyper_global.html
|
||||
fix_hyper_local.html
|
||||
fix_imd.html
|
||||
fix_indent.html
|
||||
fix_ipi.html
|
||||
|
|
|
@ -48,11 +48,12 @@ replicas of a system. One or more replicas can be used. The total
|
|||
number of steps {N} to run can be interpreted in one of two ways; see
|
||||
discussion of the {time} keyword below.
|
||||
|
||||
PRD is described in "this paper"_#Voter1998 by Art Voter. It is a method
|
||||
for performing accelerated dynamics that is suitable for
|
||||
infrequent-event systems that obey first-order kinetics. A good
|
||||
overview of accelerated dynamics methods for such systems in given in
|
||||
"this review paper"_#Voter2002prd from the same group. To quote from the
|
||||
PRD is described in "(Voter1998)"_#Voter1998 by Art Voter. Similar to
|
||||
global or local hyperdynamics (HD), PRD is a method for performing
|
||||
accelerated dynamics that is suitable for infrequent-event systems
|
||||
that obey first-order kinetics. A good overview of accelerated
|
||||
dynamics methods for such systems in given in this review paper
|
||||
"(Voter2002)"_#Voter2002prd from Art's group. To quote from the
|
||||
paper: "The dynamical evolution is characterized by vibrational
|
||||
excursions within a potential basin, punctuated by occasional
|
||||
transitions between basins." The transition probability is
|
||||
|
@ -61,15 +62,26 @@ Running multiple replicas gives an effective enhancement in the
|
|||
timescale spanned by the multiple simulations, while waiting for an
|
||||
event to occur.
|
||||
|
||||
Each replica runs on a partition of one or more processors. Processor
|
||||
partitions are defined at run-time using the "-partition command-line
|
||||
switch"_Run_options.html. Note that if you have MPI installed, you
|
||||
can run a multi-replica simulation with more replicas (partitions)
|
||||
than you have physical processors, e.g you can run a 10-replica
|
||||
simulation on one or two processors. However for PRD, this makes
|
||||
little sense, since running a replica on virtual instead of physical
|
||||
processors,offers no effective parallel speed-up in searching for
|
||||
infrequent events. See the "Howto replica"_Howto_replica.html doc
|
||||
Both PRD and HD produce a time-accurate trajectory that effectively
|
||||
extends the timescale over which a system can be simulated, but they
|
||||
do it differently. 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. 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. For both
|
||||
methods, per CPU second, more physical time elapses and more events
|
||||
occur. See the "hyper"_hyper.html doc page for more info about HD.
|
||||
|
||||
In PRD, each replica runs on a partition of one or more processors.
|
||||
Processor partitions are defined at run-time using the "-partition
|
||||
command-line switch"_Run_options.html. Note that if you have MPI
|
||||
installed, you can run a multi-replica simulation with more replicas
|
||||
(partitions) than you have physical processors, e.g you can run a
|
||||
10-replica simulation on one or two processors. However for PRD, this
|
||||
makes little sense, since running a replica on virtual instead of
|
||||
physical processors,offers no effective parallel speed-up in searching
|
||||
for infrequent events. See the "Howto replica"_Howto_replica.html doc
|
||||
page for further discussion.
|
||||
|
||||
When a PRD simulation is performed, it is assumed that each replica is
|
||||
|
@ -78,8 +90,8 @@ I.e. the simulation domain, the number of atoms, the interaction
|
|||
potentials, etc should be the same for every replica.
|
||||
|
||||
A PRD run has several stages, which are repeated each time an "event"
|
||||
occurs in one of the replicas, as defined below. The logic for a PRD
|
||||
run is as follows:
|
||||
occurs in one of the replicas, as explained below. The logic for a
|
||||
PRD run is as follows:
|
||||
|
||||
while (time remains):
|
||||
dephase for n_dephase*t_dephase steps
|
||||
|
@ -129,7 +141,8 @@ Minimization parameters may be set via the
|
|||
PRD command. The latter are the settings that would be used with the
|
||||
"minimize"_minimize.html command. Note that typically, you do not
|
||||
need to perform a highly-converged minimization to detect a transition
|
||||
event.
|
||||
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
|
||||
|
@ -307,7 +320,7 @@ deposit"_fix_deposit.html.
|
|||
"min_modify"_min_modify.html, "min_style"_min_style.html,
|
||||
"run_style"_run_style.html, "minimize"_minimize.html,
|
||||
"velocity"_velocity.html, "temper"_temper.html, "neb"_neb.html,
|
||||
"tad"_tad.html
|
||||
"tad"_tad.html, "hyper"_hyper.html
|
||||
|
||||
[Default:]
|
||||
|
||||
|
|
|
@ -78,6 +78,7 @@ friction: frictional contact of spherical asperities between 2d surfaces
|
|||
gcmc: Grand Canonical Monte Carlo (GCMC) via the fix gcmc command
|
||||
granregion: use of fix wall/region/gran as boundary on granular particles
|
||||
hugoniostat: Hugoniostat shock dynamics
|
||||
hyper: global and local hyperdynamics of diffusion on Pt surface
|
||||
indent: spherical indenter into a 2d solid
|
||||
kim: use of potentials in Knowledge Base for Interatomic Models (KIM)
|
||||
latte: use of LATTE density-functional tight-binding quantum code
|
||||
|
|
|
@ -0,0 +1,184 @@
|
|||
create_atoms 1 single 27.5 9.5 4
|
||||
create_atoms 1 single 16 9 4
|
||||
create_atoms 1 single 10 12 4
|
||||
create_atoms 1 single 31 44 4
|
||||
create_atoms 1 single 13 17 4
|
||||
create_atoms 1 single 8.5 28.5 4
|
||||
create_atoms 1 single 23 26 4
|
||||
create_atoms 1 single 38 27 4
|
||||
create_atoms 1 single 37.5 4.5 4
|
||||
create_atoms 1 single 41.5 47.5 4
|
||||
create_atoms 1 single 20.5 37.5 4
|
||||
create_atoms 1 single 5 8 4
|
||||
create_atoms 1 single 2.5 16.5 4
|
||||
create_atoms 1 single 38.5 45.5 4
|
||||
create_atoms 1 single 9 0 4
|
||||
create_atoms 1 single 39 32 4
|
||||
create_atoms 1 single 45.5 11.5 4
|
||||
create_atoms 1 single 40 0 4
|
||||
create_atoms 1 single 44.5 2.5 4
|
||||
create_atoms 1 single 4.5 44.5 4
|
||||
create_atoms 1 single 24.5 13.5 4
|
||||
create_atoms 1 single 47.5 23.5 4
|
||||
create_atoms 1 single 1 20 4
|
||||
create_atoms 1 single 38.5 31.5 4
|
||||
create_atoms 1 single 12.5 12.5 4
|
||||
create_atoms 1 single 2 27 4
|
||||
create_atoms 1 single 21 5 4
|
||||
create_atoms 1 single 47 12 4
|
||||
create_atoms 1 single 32.5 46.5 4
|
||||
create_atoms 1 single 9.5 40.5 4
|
||||
create_atoms 1 single 8.5 2.5 4
|
||||
create_atoms 1 single 41.5 22.5 4
|
||||
create_atoms 1 single 29 11 4
|
||||
create_atoms 1 single 3.5 3.5 4
|
||||
create_atoms 1 single 5 21 4
|
||||
create_atoms 1 single 46.5 31.5 4
|
||||
create_atoms 1 single 35 46 4
|
||||
create_atoms 1 single 40.5 41.5 4
|
||||
create_atoms 1 single 10 22 4
|
||||
create_atoms 1 single 43.5 14.5 4
|
||||
create_atoms 1 single 42 42 4
|
||||
create_atoms 1 single 4 26 4
|
||||
create_atoms 1 single 19 34 4
|
||||
create_atoms 1 single 33 9 4
|
||||
create_atoms 1 single 0.5 45.5 4
|
||||
create_atoms 1 single 30.5 32.5 4
|
||||
create_atoms 1 single 25.5 5.5 4
|
||||
create_atoms 1 single 47.5 39.5 4
|
||||
create_atoms 1 single 15 13 4
|
||||
create_atoms 1 single 21 21 4
|
||||
create_atoms 1 single 14 28 4
|
||||
create_atoms 1 single 9 34 4
|
||||
create_atoms 1 single 7 38 4
|
||||
create_atoms 1 single 11 35 4
|
||||
create_atoms 1 single 20.5 45.5 4
|
||||
create_atoms 1 single 30.5 31.5 4
|
||||
create_atoms 1 single 32.5 2.5 4
|
||||
create_atoms 1 single 21.5 3.5 4
|
||||
create_atoms 1 single 23 12 4
|
||||
create_atoms 1 single 4.5 33.5 4
|
||||
create_atoms 1 single 46 43 4
|
||||
create_atoms 1 single 42.5 45.5 4
|
||||
create_atoms 1 single 4.5 10.5 4
|
||||
create_atoms 1 single 33.5 15.5 4
|
||||
create_atoms 1 single 24 5 4
|
||||
create_atoms 1 single 13 16 4
|
||||
create_atoms 1 single 16.5 23.5 4
|
||||
create_atoms 1 single 45.5 28.5 4
|
||||
create_atoms 1 single 44.5 5.5 4
|
||||
create_atoms 1 single 27.5 46.5 4
|
||||
create_atoms 1 single 44.5 12.5 4
|
||||
create_atoms 1 single 12 41 4
|
||||
create_atoms 1 single 6 4 4
|
||||
create_atoms 1 single 31.5 10.5 4
|
||||
create_atoms 1 single 1 44 4
|
||||
create_atoms 1 single 31 4 4
|
||||
create_atoms 1 single 21 33 4
|
||||
create_atoms 1 single 3 33 4
|
||||
create_atoms 1 single 15 10 4
|
||||
create_atoms 1 single 28.5 22.5 4
|
||||
create_atoms 1 single 43 1 4
|
||||
create_atoms 1 single 3.5 0.5 4
|
||||
create_atoms 1 single 41 37 4
|
||||
create_atoms 1 single 18.5 43.5 4
|
||||
create_atoms 1 single 17 27 4
|
||||
create_atoms 1 single 3 5 4
|
||||
create_atoms 1 single 18.5 23.5 4
|
||||
create_atoms 1 single 31.5 14.5 4
|
||||
create_atoms 1 single 41 31 4
|
||||
create_atoms 1 single 22 3 4
|
||||
create_atoms 1 single 14.5 40.5 4
|
||||
create_atoms 1 single 9 38 4
|
||||
create_atoms 1 single 36 42 4
|
||||
create_atoms 1 single 33 22 4
|
||||
create_atoms 1 single 15.5 47.5 4
|
||||
create_atoms 1 single 3 0 4
|
||||
create_atoms 1 single 25.5 27.5 4
|
||||
create_atoms 1 single 2.5 28.5 4
|
||||
create_atoms 1 single 29.5 28.5 4
|
||||
create_atoms 1 single 44.5 18.5 4
|
||||
create_atoms 1 single 26 40 4
|
||||
create_atoms 1 single 41 27 4
|
||||
create_atoms 1 single 39.5 5.5 4
|
||||
create_atoms 1 single 3 38 4
|
||||
create_atoms 1 single 35 29 4
|
||||
create_atoms 1 single 11 19 4
|
||||
create_atoms 1 single 18 1 4
|
||||
create_atoms 1 single 39.5 40.5 4
|
||||
create_atoms 1 single 46 17 4
|
||||
create_atoms 1 single 1.5 23.5 4
|
||||
create_atoms 1 single 28.5 23.5 4
|
||||
create_atoms 1 single 10 28 4
|
||||
create_atoms 1 single 19 47 4
|
||||
create_atoms 1 single 10.5 16.5 4
|
||||
create_atoms 1 single 38 45 4
|
||||
create_atoms 1 single 42.5 41.5 4
|
||||
create_atoms 1 single 47.5 42.5 4
|
||||
create_atoms 1 single 38 7 4
|
||||
create_atoms 1 single 10 44 4
|
||||
create_atoms 1 single 29.5 27.5 4
|
||||
create_atoms 1 single 45 30 4
|
||||
create_atoms 1 single 3 9 4
|
||||
create_atoms 1 single 8.5 35.5 4
|
||||
create_atoms 1 single 24 44 4
|
||||
create_atoms 1 single 47 4 4
|
||||
create_atoms 1 single 7.5 8.5 4
|
||||
create_atoms 1 single 32.5 41.5 4
|
||||
create_atoms 1 single 0.5 34.5 4
|
||||
create_atoms 1 single 11 8 4
|
||||
create_atoms 1 single 2 40 4
|
||||
create_atoms 1 single 25 24 4
|
||||
create_atoms 1 single 47.5 6.5 4
|
||||
create_atoms 1 single 39.5 28.5 4
|
||||
create_atoms 1 single 17 21 4
|
||||
create_atoms 1 single 32 43 4
|
||||
create_atoms 1 single 16.5 29.5 4
|
||||
create_atoms 1 single 34 34 4
|
||||
create_atoms 1 single 11.5 3.5 4
|
||||
create_atoms 1 single 39 22 4
|
||||
create_atoms 1 single 24.5 36.5 4
|
||||
create_atoms 1 single 33 31 4
|
||||
create_atoms 1 single 35.5 35.5 4
|
||||
create_atoms 1 single 14.5 34.5 4
|
||||
create_atoms 1 single 34 28 4
|
||||
create_atoms 1 single 37 41 4
|
||||
create_atoms 1 single 33 46 4
|
||||
create_atoms 1 single 27.5 28.5 4
|
||||
create_atoms 1 single 40.5 22.5 4
|
||||
create_atoms 1 single 27.5 1.5 4
|
||||
create_atoms 1 single 12 2 4
|
||||
create_atoms 1 single 36 43 4
|
||||
create_atoms 1 single 28.5 9.5 4
|
||||
create_atoms 1 single 20.5 25.5 4
|
||||
create_atoms 1 single 3 3 4
|
||||
create_atoms 1 single 38 33 4
|
||||
create_atoms 1 single 3 20 4
|
||||
create_atoms 1 single 35 11 4
|
||||
create_atoms 1 single 5 25 4
|
||||
create_atoms 1 single 36.5 6.5 4
|
||||
create_atoms 1 single 19.5 24.5 4
|
||||
create_atoms 1 single 27 41 4
|
||||
create_atoms 1 single 39.5 11.5 4
|
||||
create_atoms 1 single 21.5 2.5 4
|
||||
create_atoms 1 single 46.5 15.5 4
|
||||
create_atoms 1 single 13 24 4
|
||||
create_atoms 1 single 11 37 4
|
||||
create_atoms 1 single 11.5 31.5 4
|
||||
create_atoms 1 single 47 0 4
|
||||
create_atoms 1 single 25.5 17.5 4
|
||||
create_atoms 1 single 32 11 4
|
||||
create_atoms 1 single 8 17 4
|
||||
create_atoms 1 single 27.5 12.5 4
|
||||
create_atoms 1 single 25 7 4
|
||||
create_atoms 1 single 25.5 37.5 4
|
||||
create_atoms 1 single 12 15 4
|
||||
create_atoms 1 single 1 7 4
|
||||
create_atoms 1 single 18.5 47.5 4
|
||||
create_atoms 1 single 5 38 4
|
||||
create_atoms 1 single 42 19 4
|
||||
create_atoms 1 single 30.5 7.5 4
|
||||
create_atoms 1 single 42.5 7.5 4
|
||||
create_atoms 1 single 26.5 18.5 4
|
||||
create_atoms 1 single 18.5 1.5 4
|
||||
create_atoms 1 single 41.5 10.5 4
|
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 70 KiB |
|
@ -0,0 +1,95 @@
|
|||
# 3d EAM surface for global HD
|
||||
|
||||
# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92
|
||||
# hop event on (100) surface is same distance
|
||||
# exchange event is 2 atoms moving same distance
|
||||
|
||||
variable Tequil index 500.0
|
||||
variable Vmax index 0.5
|
||||
variable qfactor index 0.3
|
||||
variable cutbond index 3.2
|
||||
variable cutevent index 1.1
|
||||
variable steps index 100000
|
||||
variable nevent index 1000
|
||||
variable zoom index 1.8
|
||||
|
||||
units metal
|
||||
atom_style atomic
|
||||
atom_modify map array
|
||||
boundary p p p
|
||||
|
||||
lattice fcc 3.92
|
||||
region box block 0 6 0 6 0 4
|
||||
create_box 3 box
|
||||
create_atoms 1 box
|
||||
|
||||
mass * 1.0
|
||||
|
||||
change_box all z final -0.1 5.0 boundary p p f
|
||||
create_atoms 2 single 3.5 3.5 4
|
||||
|
||||
# define frozen substrate and mobile atoms
|
||||
|
||||
group adatom type 2
|
||||
region base block INF INF INF INF 0 1.8
|
||||
set region base type 3
|
||||
group base type 3
|
||||
group mobile type 1 2
|
||||
|
||||
# pair style
|
||||
|
||||
pair_style eam/alloy
|
||||
pair_coeff * * ptvoterlammps.eam Pt Pt Pt
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 1 delay 5 check yes
|
||||
|
||||
fix 1 mobile nve
|
||||
fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 858872873 zero yes
|
||||
|
||||
timestep 0.005
|
||||
|
||||
compute tmobile mobile temp
|
||||
|
||||
thermo 100
|
||||
thermo_modify temp tmobile
|
||||
|
||||
# thermal equilibration
|
||||
|
||||
run 1000
|
||||
reset_timestep 0
|
||||
|
||||
# pin base so will not move during quenches
|
||||
|
||||
fix freeze base setforce 0.0 0.0 0.0
|
||||
|
||||
# event detection
|
||||
|
||||
compute event all event/displace ${cutevent}
|
||||
|
||||
# hyper/global
|
||||
|
||||
fix HG mobile hyper/global ${cutbond} ${qfactor} ${Vmax} ${Tequil}
|
||||
|
||||
# thermo output
|
||||
|
||||
thermo_style custom step temp pe f_HG f_HG[*]
|
||||
|
||||
thermo_modify lost ignore
|
||||
thermo_modify temp tmobile
|
||||
|
||||
thermo ${nevent}
|
||||
|
||||
# dump output options
|
||||
|
||||
region substrate block INF INF INF INF 1.8 3.8
|
||||
region adatoms block INF INF INF INF 3.8 INF
|
||||
variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms)
|
||||
|
||||
dump 1 all image 1000000 global.*.jpg v_acolor type &
|
||||
zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01
|
||||
dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green
|
||||
|
||||
# run
|
||||
|
||||
hyper ${steps} ${nevent} HG event min 1.0e-6 1.0e-6 100 100 dump 1
|
|
@ -0,0 +1,112 @@
|
|||
# 3d EAM surface for local HD
|
||||
|
||||
# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92
|
||||
# hop event on (100) surface is same distance
|
||||
# exchange event is 2 atoms moving same distance
|
||||
|
||||
variable Tequil index 400.0
|
||||
variable Vmax index 0.4
|
||||
variable qfactor index 0.3
|
||||
variable cutbond index 3.2
|
||||
variable Dcut index 10.0
|
||||
variable cutevent index 1.1
|
||||
variable alpha index 200.0
|
||||
variable boost index 4000.0
|
||||
variable ghostcut index 12.0
|
||||
variable steps index 1500
|
||||
variable nevent index 100
|
||||
variable nx index 8
|
||||
variable ny index 8
|
||||
variable zoom index 1.8
|
||||
variable seed index 826626413
|
||||
variable tol index 1.0e-15
|
||||
variable add index 37K
|
||||
|
||||
units metal
|
||||
atom_style atomic
|
||||
atom_modify map array
|
||||
boundary p p p
|
||||
comm_modify cutoff ${ghostcut}
|
||||
|
||||
lattice fcc 3.92
|
||||
region box block 0 6 0 6 0 4
|
||||
create_box 2 box
|
||||
create_atoms 1 box
|
||||
|
||||
mass * 1.0
|
||||
|
||||
change_box all z final -0.1 5.0 boundary p p f
|
||||
|
||||
# replicate in xy
|
||||
|
||||
replicate ${nx} ${ny} 1
|
||||
|
||||
# add adatoms
|
||||
|
||||
include adatoms.list.${add}
|
||||
|
||||
# define frozen substrate and mobile atoms
|
||||
|
||||
region base block INF INF INF INF 0 1.8
|
||||
set region base type 2
|
||||
group base type 2
|
||||
group mobile type 1
|
||||
|
||||
# pair style
|
||||
|
||||
pair_style eam/alloy
|
||||
pair_coeff * * ptvoterlammps.eam Pt Pt
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 1 delay 5 check yes
|
||||
|
||||
fix 1 mobile nve
|
||||
fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes
|
||||
|
||||
timestep 0.005
|
||||
|
||||
compute tmobile mobile temp
|
||||
|
||||
thermo 100
|
||||
thermo_modify temp tmobile
|
||||
|
||||
# thermal equilibration
|
||||
|
||||
run 1000
|
||||
reset_timestep 0
|
||||
|
||||
# pin base so will not move during quenches
|
||||
|
||||
fix freeze base setforce 0.0 0.0 0.0
|
||||
|
||||
# event detection
|
||||
|
||||
compute event all event/displace ${cutevent}
|
||||
|
||||
# hyper/local
|
||||
|
||||
fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} &
|
||||
${Dcut} ${alpha} ${boost}
|
||||
|
||||
# thermo output
|
||||
|
||||
thermo_style custom step temp pe f_HL f_HL[*]
|
||||
|
||||
thermo_modify lost ignore
|
||||
thermo_modify temp tmobile
|
||||
|
||||
thermo ${nevent}
|
||||
|
||||
# dump
|
||||
|
||||
region substrate block INF INF INF INF 1.8 3.8
|
||||
region adatoms block INF INF INF INF 3.8 INF
|
||||
variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms)
|
||||
|
||||
dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 &
|
||||
zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01
|
||||
dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green
|
||||
|
||||
# run
|
||||
|
||||
hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1
|
After Width: | Height: | Size: 482 KiB |
After Width: | Height: | Size: 479 KiB |
After Width: | Height: | Size: 477 KiB |
After Width: | Height: | Size: 479 KiB |
|
@ -0,0 +1,993 @@
|
|||
LAMMPS (10 Oct 2018)
|
||||
# 3d EAM surface for local HD
|
||||
|
||||
# nearest neighbor distance = a * sqrt(2)/2 = 2.77 Angs for Pt with a = 3.92
|
||||
# hop event on (100) surface is same distance
|
||||
# exchange event is 2 atoms moving same distance
|
||||
|
||||
variable Tequil index 400.0
|
||||
variable Vmax index 0.4
|
||||
variable qfactor index 0.3
|
||||
variable cutbond index 3.2
|
||||
variable Dcut index 10.0
|
||||
variable cutevent index 1.1
|
||||
variable alpha index 200.0
|
||||
variable boost index 4000.0
|
||||
variable ghostcut index 12.0
|
||||
variable steps index 1500
|
||||
variable nevent index 100
|
||||
variable nx index 8
|
||||
variable ny index 8
|
||||
variable zoom index 1.8
|
||||
variable seed index 826626413
|
||||
variable tol index 1.0e-15
|
||||
variable add index 37K
|
||||
|
||||
units metal
|
||||
atom_style atomic
|
||||
atom_modify map array
|
||||
boundary p p p
|
||||
comm_modify cutoff ${ghostcut}
|
||||
comm_modify cutoff 12.0
|
||||
|
||||
lattice fcc 3.92
|
||||
Lattice spacing in x,y,z = 3.92 3.92 3.92
|
||||
region box block 0 6 0 6 0 4
|
||||
create_box 2 box
|
||||
Created orthogonal box = (0 0 0) to (23.52 23.52 15.68)
|
||||
2 by 4 by 2 MPI processor grid
|
||||
create_atoms 1 box
|
||||
Created 576 atoms
|
||||
Time spent = 0.00108504 secs
|
||||
|
||||
mass * 1.0
|
||||
|
||||
change_box all z final -0.1 5.0 boundary p p f
|
||||
orthogonal box = (0 0 -0.392) to (23.52 23.52 19.6)
|
||||
|
||||
# replicate in xy
|
||||
|
||||
replicate ${nx} ${ny} 1
|
||||
replicate 8 ${ny} 1
|
||||
replicate 8 8 1
|
||||
orthogonal box = (0 0 -0.392) to (188.16 188.16 19.6)
|
||||
4 by 4 by 1 MPI processor grid
|
||||
36864 atoms
|
||||
Time spent = 0.0028758 secs
|
||||
|
||||
# add adatoms
|
||||
|
||||
include adatoms.list.${add}
|
||||
include adatoms.list.37K
|
||||
create_atoms 1 single 27.5 9.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000183105 secs
|
||||
create_atoms 1 single 16 9 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000178099 secs
|
||||
create_atoms 1 single 10 12 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000179768 secs
|
||||
create_atoms 1 single 31 44 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000184059 secs
|
||||
create_atoms 1 single 13 17 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000173807 secs
|
||||
create_atoms 1 single 8.5 28.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000167847 secs
|
||||
create_atoms 1 single 23 26 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000179052 secs
|
||||
create_atoms 1 single 38 27 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000169992 secs
|
||||
create_atoms 1 single 37.5 4.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000166178 secs
|
||||
create_atoms 1 single 41.5 47.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000172138 secs
|
||||
create_atoms 1 single 20.5 37.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000165939 secs
|
||||
create_atoms 1 single 5 8 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.00018096 secs
|
||||
create_atoms 1 single 2.5 16.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000165939 secs
|
||||
create_atoms 1 single 38.5 45.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 9 0 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000168085 secs
|
||||
create_atoms 1 single 39 32 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000170946 secs
|
||||
create_atoms 1 single 45.5 11.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.00018096 secs
|
||||
create_atoms 1 single 40 0 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000168085 secs
|
||||
create_atoms 1 single 44.5 2.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000165939 secs
|
||||
create_atoms 1 single 4.5 44.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000168085 secs
|
||||
create_atoms 1 single 24.5 13.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000165939 secs
|
||||
create_atoms 1 single 47.5 23.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.00018096 secs
|
||||
create_atoms 1 single 1 20 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000166893 secs
|
||||
create_atoms 1 single 38.5 31.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000168085 secs
|
||||
create_atoms 1 single 12.5 12.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000169992 secs
|
||||
create_atoms 1 single 2 27 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000188828 secs
|
||||
create_atoms 1 single 21 5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000174999 secs
|
||||
create_atoms 1 single 47 12 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 32.5 46.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000165939 secs
|
||||
create_atoms 1 single 9.5 40.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000166893 secs
|
||||
create_atoms 1 single 8.5 2.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 41.5 22.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000174046 secs
|
||||
create_atoms 1 single 29 11 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000166893 secs
|
||||
create_atoms 1 single 3.5 3.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000165224 secs
|
||||
create_atoms 1 single 5 21 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 46.5 31.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000166178 secs
|
||||
create_atoms 1 single 35 46 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000183105 secs
|
||||
create_atoms 1 single 40.5 41.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 10 22 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 43.5 14.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000169992 secs
|
||||
create_atoms 1 single 42 42 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000165939 secs
|
||||
create_atoms 1 single 4 26 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000174999 secs
|
||||
create_atoms 1 single 19 34 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000163078 secs
|
||||
create_atoms 1 single 33 9 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 0.5 45.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000163078 secs
|
||||
create_atoms 1 single 30.5 32.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 25.5 5.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000178099 secs
|
||||
create_atoms 1 single 47.5 39.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000165939 secs
|
||||
create_atoms 1 single 15 13 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 21 21 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 14 28 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 9 34 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000174999 secs
|
||||
create_atoms 1 single 7 38 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000175953 secs
|
||||
create_atoms 1 single 11 35 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 20.5 45.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000156879 secs
|
||||
create_atoms 1 single 30.5 31.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000159979 secs
|
||||
create_atoms 1 single 32.5 2.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000166178 secs
|
||||
create_atoms 1 single 21.5 3.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000157833 secs
|
||||
create_atoms 1 single 23 12 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000155926 secs
|
||||
create_atoms 1 single 4.5 33.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000156879 secs
|
||||
create_atoms 1 single 46 43 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000155926 secs
|
||||
create_atoms 1 single 42.5 45.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000156879 secs
|
||||
create_atoms 1 single 4.5 10.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000158072 secs
|
||||
create_atoms 1 single 33.5 15.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000157833 secs
|
||||
create_atoms 1 single 24 5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154018 secs
|
||||
create_atoms 1 single 13 16 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000158072 secs
|
||||
create_atoms 1 single 16.5 23.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000156164 secs
|
||||
create_atoms 1 single 45.5 28.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000247002 secs
|
||||
create_atoms 1 single 44.5 5.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000156164 secs
|
||||
create_atoms 1 single 27.5 46.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000155926 secs
|
||||
create_atoms 1 single 44.5 12.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000157833 secs
|
||||
create_atoms 1 single 12 41 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000156879 secs
|
||||
create_atoms 1 single 6 4 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.0001688 secs
|
||||
create_atoms 1 single 31.5 10.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.00015521 secs
|
||||
create_atoms 1 single 1 44 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 31 4 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000156879 secs
|
||||
create_atoms 1 single 21 33 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000156879 secs
|
||||
create_atoms 1 single 3 33 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164032 secs
|
||||
create_atoms 1 single 15 10 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.0001719 secs
|
||||
create_atoms 1 single 28.5 22.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000153065 secs
|
||||
create_atoms 1 single 43 1 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000155926 secs
|
||||
create_atoms 1 single 3.5 0.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 41 37 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000153065 secs
|
||||
create_atoms 1 single 18.5 43.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000213146 secs
|
||||
create_atoms 1 single 17 27 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000159979 secs
|
||||
create_atoms 1 single 3 5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000153065 secs
|
||||
create_atoms 1 single 18.5 23.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 31.5 14.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 41 31 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000155926 secs
|
||||
create_atoms 1 single 22 3 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.00015521 secs
|
||||
create_atoms 1 single 14.5 40.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154018 secs
|
||||
create_atoms 1 single 9 38 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154018 secs
|
||||
create_atoms 1 single 36 42 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000155926 secs
|
||||
create_atoms 1 single 33 22 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000163078 secs
|
||||
create_atoms 1 single 15.5 47.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 3 0 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 25.5 27.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000176907 secs
|
||||
create_atoms 1 single 2.5 28.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 29.5 28.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000162125 secs
|
||||
create_atoms 1 single 44.5 18.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000152826 secs
|
||||
create_atoms 1 single 26 40 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000155926 secs
|
||||
create_atoms 1 single 41 27 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000158072 secs
|
||||
create_atoms 1 single 39.5 5.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000155926 secs
|
||||
create_atoms 1 single 3 38 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000152826 secs
|
||||
create_atoms 1 single 35 29 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 11 19 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164986 secs
|
||||
create_atoms 1 single 18 1 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146866 secs
|
||||
create_atoms 1 single 39.5 40.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146866 secs
|
||||
create_atoms 1 single 46 17 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 1.5 23.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154018 secs
|
||||
create_atoms 1 single 28.5 23.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145912 secs
|
||||
create_atoms 1 single 10 28 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000159979 secs
|
||||
create_atoms 1 single 19 47 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000148058 secs
|
||||
create_atoms 1 single 10.5 16.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000147104 secs
|
||||
create_atoms 1 single 38 45 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 42.5 41.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000161886 secs
|
||||
create_atoms 1 single 47.5 42.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000147104 secs
|
||||
create_atoms 1 single 38 7 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 10 44 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145912 secs
|
||||
create_atoms 1 single 29.5 27.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 45 30 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145912 secs
|
||||
create_atoms 1 single 3 9 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154018 secs
|
||||
create_atoms 1 single 8.5 35.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 24 44 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145912 secs
|
||||
create_atoms 1 single 47 4 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 7.5 8.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 32.5 41.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000157833 secs
|
||||
create_atoms 1 single 0.5 34.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145912 secs
|
||||
create_atoms 1 single 11 8 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000147104 secs
|
||||
create_atoms 1 single 2 40 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 25 24 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 47.5 6.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000147104 secs
|
||||
create_atoms 1 single 39.5 28.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 17 21 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000164032 secs
|
||||
create_atoms 1 single 32 43 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 16.5 29.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 34 34 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145912 secs
|
||||
create_atoms 1 single 11.5 3.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154018 secs
|
||||
create_atoms 1 single 39 22 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 24.5 36.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 33 31 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 35.5 35.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 14.5 34.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146866 secs
|
||||
create_atoms 1 single 34 28 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000153065 secs
|
||||
create_atoms 1 single 37 41 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145912 secs
|
||||
create_atoms 1 single 33 46 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 27.5 28.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145197 secs
|
||||
create_atoms 1 single 40.5 22.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000150919 secs
|
||||
create_atoms 1 single 27.5 1.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 12 2 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000151873 secs
|
||||
create_atoms 1 single 36 43 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144005 secs
|
||||
create_atoms 1 single 28.5 9.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 20.5 25.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 3 3 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144005 secs
|
||||
create_atoms 1 single 38 33 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 3 20 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000154972 secs
|
||||
create_atoms 1 single 35 11 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000145912 secs
|
||||
create_atoms 1 single 5 25 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144005 secs
|
||||
create_atoms 1 single 36.5 6.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144005 secs
|
||||
create_atoms 1 single 19.5 24.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000236988 secs
|
||||
create_atoms 1 single 27 41 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000169992 secs
|
||||
create_atoms 1 single 39.5 11.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138998 secs
|
||||
create_atoms 1 single 21.5 2.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000136852 secs
|
||||
create_atoms 1 single 46.5 15.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138998 secs
|
||||
create_atoms 1 single 13 24 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000137091 secs
|
||||
create_atoms 1 single 11 37 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144005 secs
|
||||
create_atoms 1 single 11.5 31.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000144958 secs
|
||||
create_atoms 1 single 47 0 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138044 secs
|
||||
create_atoms 1 single 25.5 17.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.00014019 secs
|
||||
create_atoms 1 single 32 11 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138044 secs
|
||||
create_atoms 1 single 8 17 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138044 secs
|
||||
create_atoms 1 single 27.5 12.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000137806 secs
|
||||
create_atoms 1 single 25 7 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000146151 secs
|
||||
create_atoms 1 single 25.5 37.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000139952 secs
|
||||
create_atoms 1 single 12 15 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138044 secs
|
||||
create_atoms 1 single 1 7 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138998 secs
|
||||
create_atoms 1 single 18.5 47.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138044 secs
|
||||
create_atoms 1 single 5 38 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000136852 secs
|
||||
create_atoms 1 single 42 19 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000149012 secs
|
||||
create_atoms 1 single 30.5 7.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138044 secs
|
||||
create_atoms 1 single 42.5 7.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000138998 secs
|
||||
create_atoms 1 single 26.5 18.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000153065 secs
|
||||
create_atoms 1 single 18.5 1.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000137091 secs
|
||||
create_atoms 1 single 41.5 10.5 4
|
||||
Created 1 atoms
|
||||
Time spent = 0.000140905 secs
|
||||
|
||||
# define frozen substrate and mobile atoms
|
||||
|
||||
region base block INF INF INF INF 0 1.8
|
||||
set region base type 2
|
||||
18432 settings made for type
|
||||
group base type 2
|
||||
18432 atoms in group base
|
||||
group mobile type 1
|
||||
18616 atoms in group mobile
|
||||
|
||||
# pair style
|
||||
|
||||
pair_style eam/alloy
|
||||
pair_coeff * * ptvoterlammps.eam Pt Pt
|
||||
|
||||
neighbor 0.5 bin
|
||||
neigh_modify every 1 delay 5 check yes
|
||||
|
||||
fix 1 mobile nve
|
||||
fix 2 mobile langevin ${Tequil} ${Tequil} 1.0 ${seed} zero yes
|
||||
fix 2 mobile langevin 400.0 ${Tequil} 1.0 ${seed} zero yes
|
||||
fix 2 mobile langevin 400.0 400.0 1.0 ${seed} zero yes
|
||||
fix 2 mobile langevin 400.0 400.0 1.0 826626413 zero yes
|
||||
|
||||
timestep 0.005
|
||||
|
||||
compute tmobile mobile temp
|
||||
|
||||
thermo 100
|
||||
thermo_modify temp tmobile
|
||||
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:488)
|
||||
|
||||
# thermal equilibration
|
||||
|
||||
run 1000
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 5 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.07583
|
||||
ghost atom cutoff = 12
|
||||
binsize = 3.03792, bins = 62 62 7
|
||||
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||
(1) pair eam/alloy, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 3.359 | 3.359 | 3.36 Mbytes
|
||||
Step Temp E_pair E_mol TotEng Press
|
||||
0 0 -206220.22 0 -206220.22 -52155.664
|
||||
100 188.18127 -206044.43 0 -205591.63 -25068.83
|
||||
200 274.34464 -205860.78 0 -205200.66 -40191.797
|
||||
300 325.66286 -205750.01 0 -204966.4 -31510.222
|
||||
400 352.48242 -205675.42 0 -204827.28 -35058.064
|
||||
500 370.88571 -205619.66 0 -204727.25 -32735.022
|
||||
600 388.62129 -205592.87 0 -204657.78 -33904.556
|
||||
700 389.54874 -205579.73 0 -204642.4 -32769.852
|
||||
800 395.56074 -205576.82 0 -204625.03 -33755.948
|
||||
900 398.03458 -205564.48 0 -204606.74 -32777.103
|
||||
1000 401.24089 -205562.85 0 -204597.4 -33785.341
|
||||
Loop time of 4.3687 on 16 procs for 1000 steps with 37048 atoms
|
||||
|
||||
Performance: 98.885 ns/day, 0.243 hours/ns, 228.901 timesteps/s
|
||||
98.4% CPU use with 16 MPI tasks x no OpenMP threads
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 3.2988 | 3.3828 | 3.4667 | 2.3 | 77.43
|
||||
Neigh | 0.20856 | 0.23127 | 0.24382 | 1.9 | 5.29
|
||||
Comm | 0.33313 | 0.45075 | 0.55485 | 9.2 | 10.32
|
||||
Output | 0.00042987 | 0.00044042 | 0.00049591 | 0.0 | 0.01
|
||||
Modify | 0.18811 | 0.28363 | 0.36798 | 9.7 | 6.49
|
||||
Other | | 0.01983 | | | 0.45
|
||||
|
||||
Nlocal: 2315.5 ave 2332 max 2297 min
|
||||
Histogram: 2 0 0 3 4 0 2 1 2 2
|
||||
Nghost: 3186.31 ave 3205 max 3170 min
|
||||
Histogram: 2 1 3 0 2 3 2 1 0 2
|
||||
Neighs: 55590.9 ave 56174 max 55103 min
|
||||
Histogram: 2 2 1 1 4 1 3 0 0 2
|
||||
|
||||
Total # of neighbors = 889454
|
||||
Ave neighs/atom = 24.0082
|
||||
Neighbor list builds = 105
|
||||
Dangerous builds = 0
|
||||
reset_timestep 0
|
||||
|
||||
# pin base so will not move during quenches
|
||||
|
||||
fix freeze base setforce 0.0 0.0 0.0
|
||||
|
||||
# event detection
|
||||
|
||||
compute event all event/displace ${cutevent}
|
||||
compute event all event/displace 1.1
|
||||
|
||||
# hyper/local
|
||||
|
||||
fix HL mobile hyper/local ${cutbond} ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
|
||||
fix HL mobile hyper/local 3.2 ${qfactor} ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
|
||||
fix HL mobile hyper/local 3.2 0.3 ${Vmax} ${Tequil} ${Dcut} ${alpha} ${boost}
|
||||
fix HL mobile hyper/local 3.2 0.3 0.4 ${Tequil} ${Dcut} ${alpha} ${boost}
|
||||
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 ${Dcut} ${alpha} ${boost}
|
||||
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 ${alpha} ${boost}
|
||||
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 ${boost}
|
||||
fix HL mobile hyper/local 3.2 0.3 0.4 400.0 10.0 200.0 4000.0
|
||||
|
||||
# thermo output
|
||||
|
||||
thermo_style custom step temp pe f_HL f_HL[*]
|
||||
WARNING: New thermo_style command, previous thermo_modify settings will be lost (../output.cpp:705)
|
||||
|
||||
thermo_modify lost ignore
|
||||
thermo_modify temp tmobile
|
||||
WARNING: Temperature for thermo pressure is not for group all (../thermo.cpp:488)
|
||||
|
||||
thermo ${nevent}
|
||||
thermo 100
|
||||
|
||||
# dump
|
||||
|
||||
region substrate block INF INF INF INF 1.8 3.8
|
||||
region adatoms block INF INF INF INF 3.8 INF
|
||||
variable acolor atom rmask(base)+2*rmask(substrate)+3*rmask(adatoms)
|
||||
|
||||
dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom ${zoom} adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01
|
||||
dump 1 all image 10000000 local.*.jpg v_acolor type size 1024 1024 zoom 1.8 adiam 2.5 view 0.0 0.0 up 0 1 0 axes yes 0.9 0.01
|
||||
dump_modify 1 pad 6 amap 1 3 sa 1 3 blue red green
|
||||
|
||||
# run
|
||||
|
||||
hyper ${steps} ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1
|
||||
hyper 1500 ${nevent} HL event min ${tol} ${tol} 1000 1000 dump 1
|
||||
hyper 1500 100 HL event min ${tol} ${tol} 1000 1000 dump 1
|
||||
hyper 1500 100 HL event min 1.0e-15 ${tol} 1000 1000 dump 1
|
||||
hyper 1500 100 HL event min 1.0e-15 1.0e-15 1000 1000 dump 1
|
||||
WARNING: Resetting reneighboring criteria during hyper (../hyper.cpp:133)
|
||||
Neighbor list info ...
|
||||
update every 1 steps, delay 0 steps, check yes
|
||||
max neighbors/atom: 2000, page size: 100000
|
||||
master list distance cutoff = 6.07583
|
||||
ghost atom cutoff = 12
|
||||
binsize = 3.03792, bins = 62 62 7
|
||||
2 neighbor lists, perpetual/occasional/extra = 1 1 0
|
||||
(1) pair eam/alloy, perpetual
|
||||
attributes: half, newton on
|
||||
pair build: half/bin/atomonly/newton
|
||||
stencil: half/bin/3d/newton
|
||||
bin: standard
|
||||
(2) fix hyper/local, occasional
|
||||
attributes: full, newton on, cut 10
|
||||
pair build: full/bin/atomonly
|
||||
stencil: full/bin/3d
|
||||
bin: standard
|
||||
Per MPI rank memory allocation (min/avg/max) = 7.566 | 7.567 | 7.567 Mbytes
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
0 401.24089 -205562.85 0 0 0 1 0 0 0 0 0 0 0 0 4e+19 0 0 0 0 0 0 0 0 0 0 0
|
||||
77 401.24089 -206534.96 0 0 0 1 0 0 0 0 0 0 0 0 4e+19 0 0 0 0 0 0 0 1540 0 0 0
|
||||
Loop time of 0.540347 on 16 procs for 77 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
0 401.24089 -205562.85 23.271302 74 0.18753621 1 6.0138739 703.62325 0 0.55802338 3.5350432 0 0 0 4e+19 10.115141 10.115141 0 0 0 0 0 0 0 0 0
|
||||
100 399.15639 -205546.21 22.904368 90 0.32935524 0.39929142 6.0138739 703.62325 0.026229865 0.91517139 3.9968927 91.88 0.3995539 0.4009724 0.39695676 10.262823 10.262823 0 0 0 0 0 2000 0 0 0
|
||||
Loop time of 0.579085 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
100 399.15639 -205546.21 22.904368 90 0.32935524 0.39929142 6.0138739 703.62325 0.026229865 0.91517139 3.9968927 91.88 0.3995539 0.4009724 0.39695676 10.262823 10.262823 0 0 0 0 0 2000 0 0 0
|
||||
184 399.15639 -206534.96 22.904368 90 0.32935524 0.39929142 6.0138739 703.62325 0.026229865 0.91517139 3.9968927 49.934783 0.21714886 0.4009724 0.39695676 10.262823 10.262823 0 0 0 0 0 3680 0 0 0
|
||||
Loop time of 0.556056 on 16 procs for 84 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
100 399.15639 -205546.21 22.903938 90 0.32935524 0.39929142 6.0138739 703.62325 0.026229865 0.91517139 3.9968927 91.88 0.3995539 0.4009724 0.39695676 10.262823 10.262823 0 0 0 0 0 2000 0 0 0
|
||||
200 403.01717 -205543.17 20.844359 90 0.3291605 0.39888693 6.0138739 703.62325 0.039527213 0.94418421 4.0368484 90.95 0.39930574 0.4019706 0.39554353 10.262823 10.262823 0 0 0 0 0 4000 0 0 0
|
||||
Loop time of 0.581214 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
200 403.01717 -205543.17 20.844359 90 0.3291605 0.39888693 6.0138739 703.62325 0.039527213 0.94418421 4.0368484 90.95 0.39930574 0.4019706 0.39554353 10.262823 10.262823 0 0 0 0 0 4000 0 0 0
|
||||
275 403.01717 -206534.96 20.844359 90 0.3291605 0.39888693 6.0138739 703.62325 0.039527213 0.94418421 4.0368484 66.145455 0.29040418 0.4019706 0.39554353 10.262823 10.262823 0 0 0 0 0 5500 0 0 0
|
||||
Loop time of 0.481812 on 16 procs for 75 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
200 403.01717 -205543.17 21.115577 91 0.3291605 0.39888693 6.0138739 703.62325 0.039527213 0.94418421 4.0368484 90.95 0.39930574 0.4019706 0.39554353 10.262823 10.262823 0 0 0 0 0 4000 0 0 0
|
||||
300 399.01963 -205541.46 19.137336 85 0.32442182 0.39862755 6.0138739 703.62325 0.046873868 0.94776891 4.0368484 92.02 0.39912484 0.40296919 0.39497622 10.288936 10.288936 0 0 0 0 0 6000 0 0 0
|
||||
Loop time of 0.5757 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
300 399.01963 -205541.46 19.137336 85 0.32442182 0.39862755 6.0138739 703.62325 0.046873868 0.94776891 4.0368484 92.02 0.39912484 0.40296919 0.39497622 10.288936 10.288936 0 0 0 0 0 6000 0 0 0
|
||||
377 399.01963 -206534.96 19.137336 85 0.32442182 0.39862755 6.0138739 703.62325 0.046873868 0.94776891 4.0368484 73.225464 0.31760598 0.40296919 0.39497622 10.288936 10.288936 0 0 0 0 0 7540 0 0 0
|
||||
Loop time of 0.514907 on 16 procs for 77 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
300 399.01963 -205541.46 19.137003 85 0.32442182 0.39862755 6.0138739 703.62325 0.046873868 0.94776891 4.0368484 92.02 0.39912484 0.40296919 0.39497622 10.288936 10.288936 0 0 0 0 0 6000 0 0 0
|
||||
400 398.15351 -205544.87 20.470844 93 0.34589451 0.39828754 6.0138739 703.62325 0.049952465 0.94776891 4.0779385 92.0375 0.39894967 0.40395328 0.3932824 10.307052 10.307052 0 0 0 0 0 8000 0 0 0
|
||||
Loop time of 0.577371 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
400 398.15351 -205544.87 20.470844 93 0.34589451 0.39828754 6.0138739 703.62325 0.049952465 0.94776891 4.0779385 92.0375 0.39894967 0.40395328 0.3932824 10.307052 10.307052 0 0 0 0 0 8000 0 0 0
|
||||
471 398.15351 -206534.96 20.470844 93 0.34589451 0.39828754 6.0138739 703.62325 0.049952465 0.94776891 4.0779385 78.163482 0.33881076 0.40395328 0.3932824 10.307052 10.307052 0 0 0 0 0 9420 0 0 0
|
||||
Loop time of 0.465473 on 16 procs for 71 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
400 398.15351 -205544.87 20.470689 93 0.34589451 0.39828754 6.0138739 703.62325 0.049952465 0.94776891 4.0779385 92.0375 0.39894967 0.40395328 0.3932824 10.307052 10.307052 0 0 0 0 0 8000 0 0 0
|
||||
500 400.29399 -205544.98 17.051242 83 0.42140172 0.39805251 6.0138739 703.62325 0.056986933 1.0907861 4.0779385 91.986 0.39879563 0.40493836 0.39165573 10.307052 10.307052 0 0 0 0 0 10000 0 0 0
|
||||
Loop time of 0.579188 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
500 400.29399 -205544.98 17.051242 83 0.42140172 0.39805251 6.0138739 703.62325 0.056986933 1.0907861 4.0779385 91.986 0.39879563 0.40493836 0.39165573 10.307052 10.307052 0 0 0 0 0 10000 0 0 0
|
||||
577 400.29399 -206534.96 17.051242 83 0.42140172 0.39805251 6.0138739 703.62325 0.056986933 1.0910651 4.0779385 79.710572 0.3455768 0.40493836 0.39165573 10.307052 10.307052 0 0 0 0 0 11540 0 0 0
|
||||
Loop time of 0.502193 on 16 procs for 77 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
500 400.29399 -205544.98 17.051107 83 0.42140172 0.39805251 6.0138739 703.62325 0.056986933 1.0910651 4.0779385 91.986 0.39879563 0.40493836 0.39165573 10.307052 10.307052 0 0 0 0 0 10000 0 0 0
|
||||
600 400.96099 -205544.56 20.904479 91 0.41219484 0.39780769 6.0138739 703.62325 0.061331691 1.1358732 4.0779385 92.013333 0.39864794 0.40593806 0.39067432 10.307052 10.307052 0 0 0 0 0 12000 0 0 0
|
||||
Loop time of 0.694955 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
600 400.96099 -205544.56 20.904479 91 0.41219484 0.39780769 6.0138739 703.62325 0.061331691 1.1358732 4.0779385 92.013333 0.39864794 0.40593806 0.39067432 10.307052 10.307052 0 0 0 0 0 12000 0 0 0
|
||||
680 400.96099 -206534.96 20.904479 91 0.41219484 0.39780769 6.0138739 703.62325 0.061331691 1.1358732 4.0779385 81.188235 0.35174818 0.40593806 0.39067432 10.307052 10.307052 0 0 0 0 0 13600 0 0 0
|
||||
Loop time of 0.529041 on 16 procs for 80 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
600 400.96099 -205544.56 20.904088 91 0.41219484 0.39780769 6.0138739 703.62325 0.061331691 1.1358732 4.0779385 92.013333 0.39864794 0.40593806 0.39067432 10.307052 10.307052 0 0 0 0 0 12000 0 0 0
|
||||
700 397.78618 -205534.96 20.361513 95 0.54466603 0.39757442 6.0138739 703.62325 0.061146951 1.1853748 4.1995704 92.12 0.39850836 0.40693553 0.38981834 10.307052 10.307052 0 0 0 0 0 14000 0 0 0
|
||||
Loop time of 0.590093 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
700 397.78618 -205534.96 20.361513 95 0.54466603 0.39757442 6.0138739 703.62325 0.061146951 1.2139704 4.1995704 92.12 0.39850836 0.40693553 0.38981834 10.307052 10.307052 0 0 0 0 0 14000 0 0 0
|
||||
790 397.78618 -206534.96 20.361513 95 0.54466603 0.39757442 6.0138739 703.62325 0.061146951 2.2107138 4.1995704 81.625316 0.35310868 0.40693553 0.38981834 10.307052 10.307052 0 0 0 0 0 15800 0 0 0
|
||||
Loop time of 0.594281 on 16 procs for 90 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
700 397.78618 -205534.96 20.236364 94 0.51088027 0.39757442 6.0138739 703.62325 0.061146951 2.2107138 4.205089 92.12 0.39850836 0.40693553 0.38981834 10.307052 10.307052 0 0 0 0 0 14000 1 2 6
|
||||
800 399.66919 -205547.44 21.285461 94 0.56079766 0.39739855 6.0138739 703.62325 0.06556778 2.2107138 4.3041291 92.36625 0.3983806 0.40793368 0.38875 10.307052 10.385797 0 0 0 0 0 16000 1 2 6
|
||||
Loop time of 0.583824 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
800 399.66919 -205547.44 21.285461 94 0.56079766 0.39739855 6.0138739 703.62325 0.06556778 2.2107138 4.3041291 92.36625 0.3983806 0.40793368 0.38875 10.307052 10.385797 0 0 0 0 0 16000 1 2 6
|
||||
872 399.66919 -206535.54 21.285461 94 0.56079766 0.39739855 6.0138739 703.62325 0.06556778 2.3177682 4.3041291 84.739679 0.36548679 0.40793368 0.38875 10.307052 10.385797 0 0 0 0 0 17440 1 2 6
|
||||
Loop time of 0.46886 on 16 procs for 72 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
800 399.66919 -205547.44 21.2852 94 0.44964213 0.39739855 6.0138739 703.62325 0.06556778 2.3177682 4.3041291 92.36625 0.3983806 0.40793368 0.38875 10.307052 10.385797 0 0 0 0 0 16000 2 4 13
|
||||
900 401.5853 -205544.22 19.308189 94 0.47610389 0.39719191 6.0138739 703.62325 0.066991886 2.3177682 4.3041291 92.017778 0.39825974 0.40893337 0.3878576 10.307052 10.385797 0 0 0 0 0 18000 2 4 13
|
||||
Loop time of 0.585137 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
900 401.5853 -205544.22 19.308189 94 0.47610389 0.39719191 6.0138739 703.62325 0.066991886 2.3177682 4.3041291 92.017778 0.39825974 0.40893337 0.3878576 10.307052 10.385797 0 0 0 0 0 18000 2 4 13
|
||||
975 401.5853 -206535.54 19.308189 94 0.47610389 0.39719191 6.0138739 703.62325 0.066991886 2.3177682 4.3041291 84.939487 0.36762438 0.40893337 0.3878576 10.307052 10.385797 0 0 0 0 0 19500 2 4 13
|
||||
Loop time of 0.502012 on 16 procs for 75 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
900 401.5853 -205544.22 19.307938 94 0.47610389 0.39719191 6.0138739 703.62325 0.066991886 2.3177682 4.3041291 92.017778 0.39825974 0.40893337 0.3878576 10.307052 10.385797 0 0 0 0 0 18000 2 4 13
|
||||
1000 395.06218 -205526.35 17.514295 91 0.42044925 0.39716259 6.0138739 703.62325 0.067937867 2.3177682 4.3041291 92.511 0.39814962 0.40993184 0.3867545 10.307052 10.385797 0 0 0 0 0 20000 2 4 13
|
||||
Loop time of 0.588597 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1000 395.06218 -205526.35 17.514295 91 0.42044925 0.39716259 6.0138739 703.62325 0.067937867 2.3177682 4.3041291 92.511 0.39814962 0.40993184 0.3867545 10.307052 10.385797 0 0 0 0 0 20000 2 4 13
|
||||
1083 395.06218 -206535.54 17.514295 91 0.42044925 0.39716259 6.0138739 703.62325 0.067937867 2.3177682 4.3041291 85.421053 0.36763584 0.40993184 0.3867545 10.307052 10.385797 0 0 0 0 0 21660 2 4 13
|
||||
Loop time of 0.543222 on 16 procs for 83 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1000 395.06218 -205526.35 17.514191 91 0.42044925 0.39716259 6.0138739 703.62325 0.067937867 2.3177682 4.3041291 92.511 0.39814962 0.40993184 0.3867545 10.307052 10.385797 0 0 0 0 0 20000 2 4 13
|
||||
1100 400.04484 -205545.92 19.52012 89 0.58919981 0.39704631 6.0138739 703.62325 0.069136967 2.3177682 4.4265979 92.517273 0.39805636 0.41093134 0.38574293 10.307052 10.385797 0 0 0 0 0 22000 2 4 13
|
||||
Loop time of 0.590075 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1100 400.04484 -205545.92 19.52012 89 0.58919981 0.39704631 6.0138739 703.62325 0.069136967 2.3177682 4.4265979 92.517273 0.39805636 0.41093134 0.38574293 10.307052 10.385797 0 0 0 0 0 22000 2 4 13
|
||||
1177 400.04484 -206535.53 19.52012 89 0.58919981 0.39704631 6.0138739 703.62325 0.069136967 2.3177682 4.4265979 86.464741 0.37201529 0.41093134 0.38574293 10.307052 10.385797 0 0 0 0 0 23540 2 4 13
|
||||
Loop time of 0.500839 on 16 procs for 77 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1100 400.04484 -205545.92 19.518413 89 0.429675 0.39705701 6.0137119 703.6043 0.069136967 2.3177682 4.4265979 92.517273 0.39805636 0.41093134 0.38574293 10.307052 10.385797 0 0 0 0 0 22000 3 6 19
|
||||
1200 400.7462 -205543.2 21.169548 91 0.32511134 0.39679665 6.0137119 703.6043 0.06750442 2.3177682 4.4265979 92.376667 0.39796198 0.41191655 0.3846039 10.307052 10.385797 0 0 0 0 0 24000 3 6 19
|
||||
Loop time of 0.583971 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1200 400.7462 -205543.2 21.169548 91 0.32511134 0.39679665 6.0137119 703.6043 0.06750442 2.3177682 4.4265979 92.376667 0.39796198 0.41191655 0.3846039 10.307052 10.385797 0 0 0 0 0 24000 3 6 19
|
||||
1277 400.7462 -206535.53 21.169548 91 0.32511134 0.39679665 6.0137119 703.6043 0.06750442 2.3177682 4.4265979 86.806578 0.37396584 0.41191655 0.3846039 10.307052 10.385797 0 0 0 0 0 25540 3 6 19
|
||||
Loop time of 0.509118 on 16 procs for 77 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1200 400.7462 -205543.2 21.169281 91 0.32511134 0.39679665 6.0137119 703.6043 0.06750442 2.3177682 4.4265979 92.376667 0.39796198 0.41191655 0.3846039 10.307052 10.385797 0 0 0 0 0 24000 3 6 19
|
||||
1300 398.53702 -205539.33 21.35815 94 0.38773898 0.39659935 6.0137119 703.6043 0.067808168 2.3177682 4.4265979 92.500769 0.39786514 0.41289519 0.3846039 10.307052 10.385797 0 0 0 0 0 26000 3 6 19
|
||||
Loop time of 0.587306 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1300 398.53702 -205539.33 21.35815 94 0.38773898 0.39659935 6.0137119 703.6043 0.067808168 2.3177682 4.4265979 92.500769 0.39786514 0.41289519 0.3846039 10.307052 10.385797 0 0 0 0 0 26000 3 6 19
|
||||
1375 398.53702 -206535.53 21.35815 94 0.38773898 0.39659935 6.0137119 703.6043 0.067808168 2.3177682 4.4265979 87.455273 0.37616341 0.41289519 0.3846039 10.307052 10.385797 0 0 0 0 0 27500 3 6 19
|
||||
Loop time of 0.483781 on 16 procs for 75 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1300 398.53702 -205539.33 21.35787 94 0.38773898 0.39659935 6.0137119 703.6043 0.067808168 2.3177682 4.4265979 92.500769 0.39786514 0.41289519 0.3846039 10.307052 10.385797 0 0 0 0 0 26000 3 6 19
|
||||
1400 402.80537 -205549.3 19.481887 95 0.32554201 0.39648737 6.0137119 703.6043 0.069550538 2.3177682 4.4265979 92.666429 0.39776836 0.41389491 0.38420043 10.307052 10.385797 0 0 0 0 0 28000 3 6 19
|
||||
Loop time of 0.586411 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1400 402.80537 -205549.3 19.481887 95 0.32554201 0.39648737 6.0137119 703.6043 0.069550538 2.3177682 4.4265979 92.666429 0.39776836 0.41389491 0.38420043 10.307052 10.385797 0 0 0 0 0 28000 3 6 19
|
||||
1471 402.80537 -206535.53 19.481887 95 0.32554201 0.39648737 6.0137119 703.6043 0.069550538 2.3177682 4.4265979 88.193746 0.37856948 0.41389491 0.38420043 10.307052 10.385797 0 0 0 0 0 29420 3 6 19
|
||||
Loop time of 0.473799 on 16 procs for 71 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1400 402.80537 -205549.3 19.481632 95 0.32554201 0.39648737 6.0137119 703.6043 0.069550538 2.3177682 4.4265979 92.666429 0.39776836 0.41389491 0.38420043 10.307052 10.385797 0 0 0 0 0 28000 3 6 19
|
||||
1500 402.0803 -205537.7 20.903964 99 0.3340498 0.39635609 6.0137119 703.6043 0.070409086 2.3177682 4.4265979 92.857333 0.39767858 0.41489448 0.38372784 10.333041 10.385797 0 0 0 0 0 30000 3 6 19
|
||||
Loop time of 0.587342 on 16 procs for 100 steps with 37048 atoms
|
||||
|
||||
Step Temp PotEng f_HL f_HL[1] f_HL[2] f_HL[3] f_HL[4] f_HL[5] f_HL[6] f_HL[7] f_HL[8] f_HL[9] f_HL[10] f_HL[11] f_HL[12] f_HL[13] f_HL[14] f_HL[15] f_HL[16] f_HL[17] f_HL[18] f_HL[19] f_HL[20] f_HL[21] f_HL[22] f_HL[23]
|
||||
1500 402.0803 -205537.7 20.903964 99 0.3340498 0.39635609 6.0137119 703.6043 0.070409086 2.3177682 4.4265979 92.857333 0.39767858 0.41489448 0.38372784 10.333041 10.385797 0 0 0 0 0 30000 3 6 19
|
||||
1574 402.0803 -206535.53 20.903964 99 0.3340498 0.39635609 6.0137119 703.6043 0.070409086 2.3177682 4.4265979 88.491741 0.37898213 0.41489448 0.38372784 10.333041 10.385797 0 0 0 0 0 31480 3 6 19
|
||||
Loop time of 0.493982 on 16 procs for 74 steps with 37048 atoms
|
||||
|
||||
Final hyper stats ...
|
||||
|
||||
Cummulative quantities for fix hyper:
|
||||
hyper time = 30000
|
||||
event timesteps = 3
|
||||
# of atoms in events = 6
|
||||
Quantities for this hyper run:
|
||||
event timesteps = 3
|
||||
# of atoms in events = 6
|
||||
max length of any bond = 4.4266
|
||||
max drift distance of any atom = 2.31777
|
||||
fraction of steps & bonds with zero bias = 0.0704091
|
||||
Current quantities:
|
||||
ave bonds/atom = 6.01371
|
||||
Cummulative quantities specific tofix hyper/local:
|
||||
# of new bonds formed = 19
|
||||
max bonds/atom = 13
|
||||
Quantities for this hyper run specific to fix hyper/local:
|
||||
ave boosted bonds/step = 92.8573
|
||||
ave boost coeff of all bonds = 0.397679
|
||||
max boost coeff of any bond = 0.414894
|
||||
min boost coeff of any bond = 0.383728
|
||||
max dist from my box of any non-maxstrain bond ghost atom = 10.333
|
||||
max dist from my box of any bond ghost atom = 10.3858
|
||||
count of ghost bond neighbors not found on reneighbor steps = 0
|
||||
lost bond partners = 0
|
||||
ave bias coeff for lost bond partners = 0
|
||||
bias overlaps = 0
|
||||
non-matching bias coeffs = 0
|
||||
CPU time for bond builds = 0.044807
|
||||
Current quantities specific to fix hyper/local:
|
||||
neighbor bonds/bond = 703.604
|
||||
ave boost coeff for all bonds = 0.396356
|
||||
|
||||
Loop time of 17.9972 on 16 procs for 1500 steps with 37048 atoms
|
||||
|
||||
Performance: 36.006 ns/day, 0.667 hours/ns, 83.346 timesteps/s
|
||||
120.7% CPU use with 16 MPI tasks x no OpenMP threads
|
||||
|
||||
Hyper stats:
|
||||
Dynamics time (%) = 8.87027 (49.2869)
|
||||
Quench time (%) = 8.15972 (45.3388)
|
||||
Other time (%) = 1.2212 (6.78552)
|
||||
|
||||
MPI task timing breakdown:
|
||||
Section | min time | avg time | max time |%varavg| %total
|
||||
---------------------------------------------------------------
|
||||
Pair | 11.6 | 11.848 | 12.043 | 3.9 | 65.83
|
||||
Neigh | 0.50025 | 0.52638 | 0.55163 | 2.1 | 2.92
|
||||
Comm | 0.34528 | 0.49905 | 0.66742 | 13.3 | 2.77
|
||||
Output | 0.0021305 | 0.0021461 | 0.0022686 | 0.1 | 0.01
|
||||
Modify | 3.7498 | 3.9009 | 3.9786 | 2.8 | 21.67
|
||||
Other | | 1.221 | | | 6.79
|
||||
|
||||
Nlocal: 2315.5 ave 2361 max 2267 min
|
||||
Histogram: 1 1 0 4 2 1 3 3 0 1
|
||||
Nghost: 3187.88 ave 3236 max 3141 min
|
||||
Histogram: 1 0 3 2 2 1 4 1 1 1
|
||||
Neighs: 53950.6 ave 54989 max 53049 min
|
||||
Histogram: 2 0 3 2 1 2 4 1 0 1
|
||||
FullNghs: 542951 ave 554654 max 533224 min
|
||||
Histogram: 1 2 3 1 2 2 2 2 0 1
|
||||
|
||||
Total # of neighbors = 8687214
|
||||
Ave neighs/atom = 234.485
|
||||
Neighbor list builds = 165
|
||||
Dangerous builds = 0
|
||||
Total wall time: 0:00:22
|
|
@ -0,0 +1,95 @@
|
|||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include "fix_event_hyper.h"
|
||||
#include "atom.h"
|
||||
#include "update.h"
|
||||
#include "domain.h"
|
||||
#include "neighbor.h"
|
||||
#include "comm.h"
|
||||
#include "universe.h"
|
||||
#include "memory.h"
|
||||
#include "error.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixEventHyper::FixEventHyper(LAMMPS *lmp, int narg, char **arg) :
|
||||
FixEvent(lmp, narg, arg)
|
||||
{
|
||||
if (narg != 3) error->all(FLERR,"Illegal fix event command");
|
||||
|
||||
restart_global = 1;
|
||||
|
||||
event_number = 0;
|
||||
event_timestep = update->ntimestep;
|
||||
clock = 0;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
save current atom coords as an event (via call to base class)
|
||||
called when an event occurs in some replica
|
||||
set event_timestep = when event occurred in a particular replica
|
||||
update clock = elapsed time since last event, across all replicas
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void FixEventHyper::store_event_hyper(bigint ntimestep, int delta_clock)
|
||||
{
|
||||
store_event();
|
||||
event_timestep = ntimestep;
|
||||
clock += delta_clock;
|
||||
event_number++;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
pack entire state of Fix into one write
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void FixEventHyper::write_restart(FILE *fp)
|
||||
{
|
||||
int n = 0;
|
||||
double list[6];
|
||||
list[n++] = event_number;
|
||||
list[n++] = event_timestep;
|
||||
list[n++] = clock;
|
||||
list[n++] = replica_number;
|
||||
list[n++] = correlated_event;
|
||||
list[n++] = ncoincident;
|
||||
|
||||
if (comm->me == 0) {
|
||||
int size = n * sizeof(double);
|
||||
fwrite(&size,sizeof(int),1,fp);
|
||||
fwrite(list,sizeof(double),n,fp);
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
use state info from restart file to restart the Fix
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void FixEventHyper::restart(char *buf)
|
||||
{
|
||||
int n = 0;
|
||||
double *list = (double *) buf;
|
||||
|
||||
event_number = static_cast<int> (list[n++]);
|
||||
event_timestep = static_cast<bigint> (list[n++]);
|
||||
clock = static_cast<bigint> (list[n++]);
|
||||
replica_number = static_cast<int> (list[n++]);
|
||||
correlated_event = static_cast<int> (list[n++]);
|
||||
ncoincident = static_cast<int> (list[n++]);
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
FixStyle(EVENT/HYPER,FixEventHyper)
|
||||
|
||||
#else
|
||||
|
||||
#ifndef LMP_FIX_EVENT_HYPER_H
|
||||
#define LMP_FIX_EVENT_HYPER_H
|
||||
|
||||
#include "fix_event.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixEventHyper : public FixEvent {
|
||||
public:
|
||||
int event_number; // event counter
|
||||
bigint event_timestep; // timestep of last event on any replica
|
||||
bigint clock; // total elapsed timesteps across all replicas
|
||||
int replica_number; // replica where last event occured
|
||||
int correlated_event; // 1 if last event was correlated, 0 otherwise
|
||||
int ncoincident; // # of simultaneous events on different replicas
|
||||
|
||||
FixEventHyper(class LAMMPS *, int, char **);
|
||||
~FixEventHyper() {}
|
||||
|
||||
void write_restart(FILE *);
|
||||
void restart(char *);
|
||||
|
||||
// methods specific to FixEventHyper, invoked by hyper
|
||||
|
||||
void store_event_hyper(bigint, int);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* ERROR/WARNING messages:
|
||||
|
||||
E: Illegal ... command
|
||||
|
||||
Self-explanatory. Check the input script syntax and compare to the
|
||||
documentation for the command. You can use -echo screen as a
|
||||
command-line option when running LAMMPS to see the offending line.
|
||||
|
||||
*/
|
|
@ -0,0 +1,35 @@
|
|||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <cstring>
|
||||
#include "fix_hyper.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixHyper::FixHyper(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) {}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
extract hyper flag setting for all Fixes that perform hyperdynamics
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void *FixHyper::extract(const char *str, int &dim)
|
||||
{
|
||||
dim = 0;
|
||||
if (strcmp(str,"hyperflag") == 0) {
|
||||
return &hyperflag;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LMP_FIX_HYPER_H
|
||||
#define LMP_FIX_HYPER_H
|
||||
|
||||
#include "fix.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixHyper : public Fix {
|
||||
public:
|
||||
FixHyper(class LAMMPS *, int, char **);
|
||||
virtual ~FixHyper() {}
|
||||
void *extract(const char *, int &);
|
||||
|
||||
// must be provided by child class
|
||||
|
||||
virtual void init_hyper() = 0;
|
||||
virtual void build_bond_list(int) = 0;
|
||||
virtual double query(int) = 0;
|
||||
|
||||
protected:
|
||||
int hyperflag;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* ERROR/WARNING messages:
|
||||
|
||||
*/
|
|
@ -0,0 +1,500 @@
|
|||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <mpi.h>
|
||||
#include <cmath>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include "fix_hyper_global.h"
|
||||
#include "atom.h"
|
||||
#include "update.h"
|
||||
#include "force.h"
|
||||
#include "domain.h"
|
||||
#include "comm.h"
|
||||
#include "neighbor.h"
|
||||
#include "neigh_request.h"
|
||||
#include "neigh_list.h"
|
||||
#include "modify.h"
|
||||
#include "math_extra.h"
|
||||
#include "memory.h"
|
||||
#include "error.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using namespace FixConst;
|
||||
|
||||
#define DELTA 16384
|
||||
#define VECLEN 5
|
||||
|
||||
// NOTE: count/output # of timesteps on which bias is non-zero
|
||||
// NOTE: should there be a virial contribution from boosted bond?
|
||||
// NOTE: allow newton off? see Note in pre_reverse()
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixHyperGlobal::FixHyperGlobal(LAMMPS *lmp, int narg, char **arg) :
|
||||
FixHyper(lmp, narg, arg), blist(NULL), xold(NULL), tagold(NULL)
|
||||
{
|
||||
if (atom->map_style == 0)
|
||||
error->all(FLERR,"Fix hyper/global command requires atom map");
|
||||
|
||||
if (narg != 7) error->all(FLERR,"Illegal fix hyper/global command");
|
||||
|
||||
hyperflag = 1;
|
||||
scalar_flag = 1;
|
||||
vector_flag = 1;
|
||||
size_vector = 11;
|
||||
global_freq = 1;
|
||||
extscalar = 0;
|
||||
extvector = 0;
|
||||
|
||||
cutbond = force->numeric(FLERR,arg[3]);
|
||||
qfactor = force->numeric(FLERR,arg[4]);
|
||||
vmax = force->numeric(FLERR,arg[5]);
|
||||
tequil = force->numeric(FLERR,arg[6]);
|
||||
|
||||
if (cutbond < 0.0 || qfactor <= 0.0 || vmax < 0.0 || tequil <= 0.0)
|
||||
error->all(FLERR,"Illegal fix hyper/global command");
|
||||
|
||||
invqfactorsq = 1.0 / (qfactor*qfactor);
|
||||
cutbondsq = cutbond*cutbond;
|
||||
beta = 1.0 / (force->boltz * tequil);
|
||||
|
||||
maxbond = 0;
|
||||
nblocal = 0;
|
||||
blist = NULL;
|
||||
|
||||
maxold = 0;
|
||||
xold = NULL;
|
||||
tagold = NULL;
|
||||
|
||||
me = comm->me;
|
||||
firstflag = 1;
|
||||
bcastflag = 0;
|
||||
for (int i = 0; i < VECLEN; i++) outvec[i] = 0.0;
|
||||
|
||||
nevent = 0;
|
||||
nevent_atom = 0;
|
||||
t_hyper = 0.0;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
FixHyperGlobal::~FixHyperGlobal()
|
||||
{
|
||||
memory->sfree(blist);
|
||||
memory->destroy(xold);
|
||||
memory->destroy(tagold);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
int FixHyperGlobal::setmask()
|
||||
{
|
||||
int mask = 0;
|
||||
mask |= PRE_NEIGHBOR;
|
||||
mask |= PRE_FORCE;
|
||||
mask |= PRE_REVERSE;
|
||||
mask |= THERMO_ENERGY;
|
||||
return mask;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::init_hyper()
|
||||
{
|
||||
maxdriftsq = 0.0;
|
||||
maxbondlen = 0.0;
|
||||
nobias = 0;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::init()
|
||||
{
|
||||
if (force->newton_pair == 0)
|
||||
error->all(FLERR,"Hyper global requires newton pair on");
|
||||
|
||||
dt = update->dt;
|
||||
|
||||
// need an occasional half neighbor list
|
||||
|
||||
int irequest = neighbor->request(this,instance_me);
|
||||
neighbor->requests[irequest]->pair = 0;
|
||||
neighbor->requests[irequest]->fix = 1;
|
||||
neighbor->requests[irequest]->occasional = 1;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::init_list(int /* id */, NeighList *ptr)
|
||||
{
|
||||
list = ptr;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::setup_pre_neighbor()
|
||||
{
|
||||
pre_neighbor();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::setup_pre_reverse(int eflag, int vflag)
|
||||
{
|
||||
// no increment in nobias or hyper time when pre-run forces are calculated
|
||||
|
||||
int nobias_hold = nobias;
|
||||
double t_hyper_hold = t_hyper;
|
||||
|
||||
pre_reverse(eflag,vflag);
|
||||
|
||||
nobias = nobias_hold;
|
||||
t_hyper = t_hyper_hold;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::pre_neighbor()
|
||||
{
|
||||
int m,iold,jold,ilocal,jlocal;
|
||||
double distsq;
|
||||
|
||||
// reset local IDs for owned bond atoms, since atoms have migrated
|
||||
// uses xold and tagold from when bonds were created
|
||||
// must be done after ghost atoms are setup via comm->borders()
|
||||
|
||||
double **x = atom->x;
|
||||
|
||||
int flag = 0;
|
||||
|
||||
for (m = 0; m < nblocal; m++) {
|
||||
iold = blist[m].iold;
|
||||
jold = blist[m].jold;
|
||||
ilocal = atom->map(tagold[iold]);
|
||||
jlocal = atom->map(tagold[jold]);
|
||||
ilocal = domain->closest_image(xold[iold],ilocal);
|
||||
jlocal = domain->closest_image(xold[iold],jlocal);
|
||||
blist[m].i = ilocal;
|
||||
blist[m].j = jlocal;
|
||||
|
||||
if (ilocal < 0 || jlocal < 0) flag++;
|
||||
else {
|
||||
distsq = MathExtra::distsq3(x[ilocal],xold[iold]);
|
||||
maxdriftsq = MAX(distsq,maxdriftsq);
|
||||
}
|
||||
}
|
||||
|
||||
if (flag) error->one(FLERR,"Fix hyper/global bond atom not found");
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::pre_reverse(int /* eflag */, int /* vflag */)
|
||||
{
|
||||
int i,j,m,imax,jmax;
|
||||
double delx,dely,delz;
|
||||
double r,r0,estrain,rmax,r0max,emax,dt_boost;
|
||||
double vbias,fbias,fbiasr;
|
||||
|
||||
// compute current strain of each owned bond
|
||||
// emax = maximum strain of any bond I own
|
||||
// imax,jmax = local indices of my 2 atoms in that bond
|
||||
|
||||
double **x = atom->x;
|
||||
emax = 0.0;
|
||||
|
||||
for (m = 0; m < nblocal; m++) {
|
||||
i = blist[m].i;
|
||||
j = blist[m].j;
|
||||
delx = x[i][0] - x[j][0];
|
||||
dely = x[i][1] - x[j][1];
|
||||
delz = x[i][2] - x[j][2];
|
||||
r = sqrt(delx*delx + dely*dely + delz*delz);
|
||||
maxbondlen = MAX(r,maxbondlen);
|
||||
r0 = blist[m].r0;
|
||||
estrain = fabs(r-r0) / r0;
|
||||
|
||||
if (estrain > emax) {
|
||||
emax = estrain;
|
||||
rmax = r;
|
||||
r0max = r0;
|
||||
imax = i;
|
||||
jmax = j;
|
||||
}
|
||||
}
|
||||
|
||||
// perform Allreduce() on pairme = double/int pair
|
||||
// finds max strain and what proc owns it
|
||||
// owner = proc that owns that bond
|
||||
|
||||
pairme.value = emax;
|
||||
pairme.proc = me;
|
||||
MPI_Allreduce(&pairme,&pairall,1,MPI_DOUBLE_INT,MPI_MAXLOC,world);
|
||||
owner = pairall.proc;
|
||||
|
||||
bcastflag = 1;
|
||||
|
||||
// all procs acquire t_hyper from owner proc
|
||||
// MPI_Bcast call by owner proc is below
|
||||
|
||||
for (int i = 0; i < VECLEN; i++) outvec[i] = 0.0;
|
||||
|
||||
if (owner != me) {
|
||||
MPI_Bcast(&t_hyper,1,MPI_DOUBLE,owner,world);
|
||||
return;
|
||||
}
|
||||
|
||||
// I own the bond with max strain
|
||||
// compute Vbias and apply force to atoms imax,jmax
|
||||
// NOTE: logic would need to be different for newton off
|
||||
|
||||
double **f = atom->f;
|
||||
|
||||
vbias = fbias = 0.0;
|
||||
dt_boost = 1.0;
|
||||
|
||||
if (emax < qfactor) {
|
||||
vbias = vmax * (1.0 - emax*emax*invqfactorsq);
|
||||
fbias = 2.0 * vmax * emax / (qfactor*qfactor * r0max);
|
||||
dt_boost = exp(beta*vbias);
|
||||
|
||||
delx = x[imax][0] - x[jmax][0];
|
||||
dely = x[imax][1] - x[jmax][1];
|
||||
delz = x[imax][2] - x[jmax][2];
|
||||
|
||||
fbiasr = fbias / rmax;
|
||||
f[imax][0] += delx*fbiasr;
|
||||
f[imax][1] += dely*fbiasr;
|
||||
f[imax][2] += delz*fbiasr;
|
||||
|
||||
f[jmax][0] -= delx*fbiasr;
|
||||
f[jmax][1] -= dely*fbiasr;
|
||||
f[jmax][2] -= delz*fbiasr;
|
||||
} else nobias++;
|
||||
|
||||
// output quantities
|
||||
|
||||
outvec[0] = vbias;
|
||||
outvec[1] = dt_boost;
|
||||
outvec[2] = emax;
|
||||
outvec[3] = atom->tag[imax];
|
||||
outvec[4] = atom->tag[jmax];
|
||||
|
||||
t_hyper += dt_boost*dt;
|
||||
MPI_Bcast(&t_hyper,1,MPI_DOUBLE,owner,world);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::build_bond_list(int natom)
|
||||
{
|
||||
int i,j,ii,jj,inum,jnum;
|
||||
double xtmp,ytmp,ztmp,delx,dely,delz,rsq;
|
||||
int *ilist,*jlist,*numneigh,**firstneigh;
|
||||
|
||||
if (natom) {
|
||||
nevent++;
|
||||
nevent_atom += natom;
|
||||
}
|
||||
|
||||
// trigger neighbor list build
|
||||
|
||||
neighbor->build_one(list);
|
||||
|
||||
// identify bonds assigned to each owned atom
|
||||
// do not create a bond between two non-group atoms
|
||||
|
||||
double **x = atom->x;
|
||||
int *mask = atom->mask;
|
||||
|
||||
inum = list->inum;
|
||||
ilist = list->ilist;
|
||||
numneigh = list->numneigh;
|
||||
firstneigh = list->firstneigh;
|
||||
|
||||
nblocal = 0;
|
||||
|
||||
for (ii = 0; ii < inum; ii++) {
|
||||
i = ilist[ii];
|
||||
xtmp = x[i][0];
|
||||
ytmp = x[i][1];
|
||||
ztmp = x[i][2];
|
||||
jlist = firstneigh[i];
|
||||
jnum = numneigh[i];
|
||||
|
||||
for (jj = 0; jj < jnum; jj++) {
|
||||
j = jlist[jj];
|
||||
j &= NEIGHMASK;
|
||||
|
||||
// skip if neither atom I or J are in fix group
|
||||
|
||||
if (!(mask[i] & groupbit) && !(mask[j] & groupbit)) continue;
|
||||
|
||||
delx = xtmp - x[j][0];
|
||||
dely = ytmp - x[j][1];
|
||||
delz = ztmp - x[j][2];
|
||||
rsq = delx*delx + dely*dely + delz*delz;
|
||||
|
||||
if (rsq < cutbondsq) {
|
||||
if (nblocal == maxbond) grow_bond();
|
||||
blist[nblocal].i = i;
|
||||
blist[nblocal].j = j;
|
||||
blist[nblocal].iold = i;
|
||||
blist[nblocal].jold = j;
|
||||
blist[nblocal].r0 = sqrt(rsq);
|
||||
nblocal++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// store IDs and coords for owned+ghost atoms at time of bond creation
|
||||
// realloc xold and tagold as needed
|
||||
|
||||
if (atom->nmax > maxold) {
|
||||
memory->destroy(xold);
|
||||
memory->destroy(tagold);
|
||||
maxold = atom->nmax;
|
||||
memory->create(xold,maxold,3,"hyper/global:xold");
|
||||
memory->create(tagold,maxold,"hyper/global:tagold");
|
||||
}
|
||||
|
||||
tagint *tag = atom->tag;
|
||||
int nall = atom->nlocal + atom->nghost;
|
||||
|
||||
for (i = 0; i < nall; i++) {
|
||||
xold[i][0] = x[i][0];
|
||||
xold[i][1] = x[i][1];
|
||||
xold[i][2] = x[i][2];
|
||||
tagold[i] = tag[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
grow bond list by a chunk
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void FixHyperGlobal::grow_bond()
|
||||
{
|
||||
// NOTE: could add int arg to do initial large alloc:
|
||||
// maxbond = maxbond/DELTA * DELTA; maxbond += DELTA;
|
||||
|
||||
maxbond += DELTA;
|
||||
if (maxbond < 0 || maxbond > MAXSMALLINT)
|
||||
error->one(FLERR,"Fix hyper/local per-processor bond count is too big");
|
||||
blist = (OneBond *)
|
||||
memory->srealloc(blist,maxbond*sizeof(OneBond),"hyper/local:blist");
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
double FixHyperGlobal::compute_scalar()
|
||||
{
|
||||
if (bcastflag) {
|
||||
MPI_Bcast(outvec,VECLEN,MPI_DOUBLE,owner,world);
|
||||
bcastflag = 0;
|
||||
}
|
||||
return outvec[0];
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
double FixHyperGlobal::compute_vector(int i)
|
||||
{
|
||||
if (bcastflag) {
|
||||
MPI_Bcast(outvec,VECLEN,MPI_DOUBLE,owner,world);
|
||||
bcastflag = 0;
|
||||
}
|
||||
|
||||
// 11 vector outputs returned for i = 0-10
|
||||
|
||||
// i = 0 = boost factor on this step
|
||||
// i = 1 = max strain of any bond on this step
|
||||
// i = 2 = ID of atom I in max-strain bond on this step
|
||||
// i = 3 = ID of atom J in max-strain bond on this step
|
||||
// i = 4 = ave bonds/atom on this step
|
||||
|
||||
// i = 5 = fraction of steps with no bias during this run
|
||||
// i = 6 = max drift of any atom during this run
|
||||
// i = 7 = max bond length during this run
|
||||
|
||||
// i = 8 = cummulative hyper time since fix created
|
||||
// i = 9 = cummulative # of event timesteps since fix created
|
||||
// i = 10 = cummulative # of atoms in events since fix created
|
||||
|
||||
if (i == 0) return outvec[1];
|
||||
if (i == 1) return outvec[2];
|
||||
if (i == 2) return outvec[3];
|
||||
if (i == 3) return outvec[4];
|
||||
|
||||
if (i == 4) {
|
||||
int allbonds; // NOTE: bigint?
|
||||
MPI_Allreduce(&nblocal,&allbonds,1,MPI_INT,MPI_SUM,world);
|
||||
return 2.0*allbonds/atom->natoms;
|
||||
}
|
||||
|
||||
if (i == 5) {
|
||||
if (update->ntimestep == update->firststep) return 0.0;
|
||||
int allnobias;
|
||||
MPI_Allreduce(&nobias,&allnobias,1,MPI_INT,MPI_SUM,world);
|
||||
return 1.0*allnobias / (update->ntimestep - update->firststep);
|
||||
}
|
||||
|
||||
if (i == 6) {
|
||||
double alldriftsq;
|
||||
MPI_Allreduce(&maxdriftsq,&alldriftsq,1,MPI_DOUBLE,MPI_MAX,world);
|
||||
return sqrt(alldriftsq);
|
||||
}
|
||||
|
||||
if (i == 7) {
|
||||
double allbondlen;
|
||||
MPI_Allreduce(&maxbondlen,&allbondlen,1,MPI_DOUBLE,MPI_MAX,world);
|
||||
return allbondlen;
|
||||
}
|
||||
|
||||
if (i == 8) return t_hyper;
|
||||
if (i == 9) return (double) nevent;
|
||||
if (i == 10) return (double) nevent_atom;
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
wrapper on compute_vector()
|
||||
used by hyper.cpp to call FixHyper
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
double FixHyperGlobal::query(int i)
|
||||
{
|
||||
if (i == 1) return compute_vector(8); // cummulative hyper time
|
||||
if (i == 2) return compute_vector(9); // nevent
|
||||
if (i == 3) return compute_vector(10); // nevent_atom
|
||||
if (i == 4) return compute_vector(4); // ave bonds/atom
|
||||
if (i == 5) return compute_vector(6); // maxdrift
|
||||
if (i == 6) return compute_vector(7); // maxbondlen
|
||||
if (i == 7) return compute_vector(5); // fraction with zero bias
|
||||
|
||||
error->all(FLERR,"Invalid query to fix hyper/global");
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
memory usage of local atom-based arrays
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
double FixHyperGlobal::memory_usage()
|
||||
{
|
||||
double bytes = maxbond * sizeof(OneBond); // blist
|
||||
return bytes;
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
FixStyle(hyper/global,FixHyperGlobal)
|
||||
|
||||
#else
|
||||
|
||||
#ifndef LMP_FIX_HYPER_GLOBAL_H
|
||||
#define LMP_FIX_HYPER_GLOBAL_H
|
||||
|
||||
#include "fix_hyper.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixHyperGlobal : public FixHyper {
|
||||
public:
|
||||
FixHyperGlobal(class LAMMPS *, int, char **);
|
||||
~FixHyperGlobal();
|
||||
int setmask();
|
||||
void init();
|
||||
void init_list(int, class NeighList *);
|
||||
void setup_pre_neighbor();
|
||||
void setup_pre_reverse(int, int);
|
||||
void pre_neighbor();
|
||||
void pre_reverse(int, int);
|
||||
double compute_scalar();
|
||||
double compute_vector(int);
|
||||
double query(int);
|
||||
|
||||
double memory_usage();
|
||||
|
||||
// extra methods visible to callers
|
||||
|
||||
void init_hyper();
|
||||
void build_bond_list(int);
|
||||
|
||||
private:
|
||||
int me;
|
||||
double cutbond,qfactor,vmax,tequil;
|
||||
|
||||
int firstflag,bcastflag,owner,nevent,nevent_atom;
|
||||
double cutbondsq,beta,dt,t_hyper,invqfactorsq;
|
||||
double outvec[5]; // same as VECLEN in *.cpp
|
||||
double maxbondlen; // max length of any bond
|
||||
double maxdriftsq; // max distance any atom drifts from original pos
|
||||
int nobias; // # of steps when bias = 0, b/c bond too long
|
||||
|
||||
class NeighList *list;
|
||||
|
||||
// list of my owned bonds
|
||||
// persists on a proc from one event until the next
|
||||
|
||||
int maxbond; // allocated size of blist
|
||||
|
||||
struct OneBond { // single IJ bond, atom I is owner
|
||||
int i,j; // current local indices of 2 bond atoms
|
||||
int iold,jold; // local indices when bonds were formed
|
||||
double r0; // relaxed bond length
|
||||
};
|
||||
|
||||
struct OneBond *blist; // list of owned bonds
|
||||
int nblocal; // # of owned bonds
|
||||
|
||||
// coords and IDs of owned+ghost atoms when bonds were formed
|
||||
// persists on a proc from one event until the next
|
||||
|
||||
int maxold; // allocated size of old atoms
|
||||
|
||||
double **xold; // coords of atoms when bonds were formed
|
||||
tagint *tagold; // IDs of atoms when bonds were formed
|
||||
|
||||
// MPI data struct for finding bond with max strain via Allreduce
|
||||
|
||||
struct Two {
|
||||
double value;
|
||||
int proc;
|
||||
};
|
||||
Two pairme,pairall;
|
||||
|
||||
// internal methods
|
||||
|
||||
void grow_bond();
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* ERROR/WARNING messages:
|
||||
|
||||
E: Illegal ... command
|
||||
|
||||
Self-explanatory. Check the input script syntax and compare to the
|
||||
documentation for the command. You can use -echo screen as a
|
||||
command-line option when running LAMMPS to see the offending line.
|
||||
|
||||
*/
|
|
@ -0,0 +1,168 @@
|
|||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef FIX_CLASS
|
||||
|
||||
FixStyle(hyper/local,FixHyperLocal)
|
||||
|
||||
#else
|
||||
|
||||
#ifndef LMP_FIX_HYPER_LOCAL_H
|
||||
#define LMP_FIX_HYPER_LOCAL_H
|
||||
|
||||
#include "fix_hyper.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class FixHyperLocal : public FixHyper {
|
||||
public:
|
||||
FixHyperLocal(class LAMMPS *, int, char **);
|
||||
~FixHyperLocal();
|
||||
int setmask();
|
||||
void init();
|
||||
void init_list(int, class NeighList *);
|
||||
void setup_pre_neighbor();
|
||||
void setup_pre_reverse(int, int);
|
||||
void pre_neighbor();
|
||||
void pre_reverse(int, int);
|
||||
void min_pre_neighbor();
|
||||
double compute_scalar();
|
||||
double compute_vector(int);
|
||||
double query(int);
|
||||
|
||||
int pack_forward_comm(int, int *, double *, int, int *);
|
||||
void unpack_forward_comm(int, int, double *);
|
||||
int pack_reverse_comm(int, int, double *);
|
||||
void unpack_reverse_comm(int, int *, double *);
|
||||
|
||||
void grow_arrays(int);
|
||||
void copy_arrays(int, int, int);
|
||||
int pack_exchange(int, double *);
|
||||
int unpack_exchange(int, double *);
|
||||
|
||||
double memory_usage();
|
||||
|
||||
// extra methods visible to callers
|
||||
|
||||
void init_hyper();
|
||||
void build_bond_list(int);
|
||||
|
||||
private:
|
||||
int me;
|
||||
double cutbond,qfactor,vmax,tequil,dcut;
|
||||
double alpha_user; // timescale to apply boostostat (time units)
|
||||
double alpha; // unitless dt/alpha_user
|
||||
double boosttarget; // target value of boost
|
||||
int histoflag;
|
||||
int lostbond,lostbond_partner;
|
||||
double lostbond_coeff;
|
||||
int checkbias,checkbias_every,checkbias_flag,checkbias_count;
|
||||
int checkcoeff,checkcoeff_every,checkcoeff_flag,checkcoeff_count;
|
||||
|
||||
int setupflag; // 1 during setup, 0 during run
|
||||
int firstflag; // set for first time bond_build takes place
|
||||
int nostrainyet; // 1 until maxstrain is first computed
|
||||
|
||||
int nboost_running,nobias_running;
|
||||
int nbondbuild;
|
||||
double time_bondbuild;
|
||||
bigint starttime;
|
||||
double sumboostcoeff; // sum of aveboost at every timestep
|
||||
int allbonds; // sum of bond count on this step
|
||||
double allboost; // sum of boostcoeff on all bonds on this step
|
||||
|
||||
int nnewbond; // running tally of number of new bonds created
|
||||
int maxbondperatom; // max # of bonds any atom ever has
|
||||
int commflag; // flag for communication mode
|
||||
int nevent; // # of events that trigger bond rebuild
|
||||
int nevent_atom; // # of atoms that experienced an event
|
||||
double cutbondsq,dcutsq;
|
||||
double beta,t_hyper,invqfactorsq;
|
||||
double mybias;
|
||||
double maxbondlen; // cummulative max length of any bond
|
||||
double maxdriftsq; // max distance any atom drifts from original pos
|
||||
double maxboostcoeff; // cummulative max boost coeff for any bond
|
||||
double minboostcoeff; // cummulative min boost coeff for any bond
|
||||
double rmaxever,rmaxeverbig;
|
||||
int ghost_toofar;
|
||||
|
||||
// extra timers
|
||||
|
||||
//double timefirst,timesecond,timethird,timefourth;
|
||||
//double timefifth,timesixth,timeseventh,timetotal;
|
||||
|
||||
// data structs for per-atom and per-bond info
|
||||
// all of these are for current owned and ghost atoms
|
||||
// except list and old2now are for atom indices at time of last bond build
|
||||
|
||||
class NeighList *list; // full neigh list up to Dcut distance
|
||||
// created only when bonds are rebuilt
|
||||
|
||||
int *old2now; // o2n[i] = current local index of old atom i
|
||||
// stored for old owned and ghost atoms
|
||||
// I = old index when bonds were last created
|
||||
// old indices are stored in old neighbor list
|
||||
|
||||
double **xold; // coords of owned+ghost atoms when bonds created
|
||||
tagint *tagold; // global IDs of owned+ghost atoms when b created
|
||||
|
||||
int maxold; // allocated size of old2now
|
||||
int maxbond; // allocated size of bonds
|
||||
int old_nall; // nlocal+nghost when old2now was last setup
|
||||
|
||||
struct OneBond { // single IJ bond, atom I is owner
|
||||
double r0; // original relaxed bond length
|
||||
double boostcoeff; // boost coefficient
|
||||
tagint jtag; // global index of J atom in bond IJ
|
||||
int j; // local index of J atom in bond IJ
|
||||
};
|
||||
|
||||
struct OneBond **bonds; // 2d array of bonds for owned atoms
|
||||
int *numbond; // number of bonds for each owned atom
|
||||
|
||||
double *maxstrain; // max-strain of any bond atom I is part of
|
||||
// for owned and ghost atoms
|
||||
double *maxstrain_region; // max-strain of any neighbor atom J of atom I
|
||||
// for owned and ghost atoms
|
||||
int *maxstrain_bondindex; // index of max-strain bond of each atom I
|
||||
// just for owned atoms
|
||||
tagint *biasflag; // atoms in biased bonds marked with bond partner
|
||||
// for owned and ghost atoms
|
||||
|
||||
// list of boosted bonds that this proc will bias
|
||||
|
||||
int maxboost; // allocated size of boost list
|
||||
int nboost; // # of boosted bonds I own
|
||||
int *boost; // index of atom I in each boosted bond
|
||||
|
||||
// histogramming of bond boost cooeficients
|
||||
|
||||
int histo_flag,histo_every,histo_count,histo_print,histo_steps;
|
||||
double histo_delta,invhisto_delta,histo_lo;
|
||||
bigint *histo,*allhisto;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* ERROR/WARNING messages:
|
||||
|
||||
E: Illegal ... command
|
||||
|
||||
Self-explanatory. Check the input script syntax and compare to the
|
||||
documentation for the command. You can use -echo screen as a
|
||||
command-line option when running LAMMPS to see the offending line.
|
||||
|
||||
*/
|
|
@ -0,0 +1,535 @@
|
|||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include "hyper.h"
|
||||
#include "update.h"
|
||||
#include "atom.h"
|
||||
#include "domain.h"
|
||||
#include "region.h"
|
||||
#include "integrate.h"
|
||||
#include "min.h"
|
||||
#include "force.h"
|
||||
#include "neighbor.h"
|
||||
#include "modify.h"
|
||||
#include "compute_event_displace.h"
|
||||
#include "fix_hyper.h"
|
||||
#include "fix_event_hyper.h"
|
||||
#include "output.h"
|
||||
#include "dump.h"
|
||||
#include "finish.h"
|
||||
#include "timer.h"
|
||||
#include "memory.h"
|
||||
#include "error.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
enum{NOHYPER,GLOBAL,LOCAL};
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
Hyper::Hyper(LAMMPS *lmp) :
|
||||
Pointers(lmp), dumplist(NULL)
|
||||
{}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
perform hyperdynamics simulation
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void Hyper::command(int narg, char **arg)
|
||||
{
|
||||
MPI_Comm_rank(world,&me);
|
||||
MPI_Comm_size(world,&nprocs);
|
||||
|
||||
// error checks
|
||||
|
||||
if (domain->box_exist == 0)
|
||||
error->all(FLERR,"Hyper command before simulation box is defined");
|
||||
|
||||
if (narg < 4) error->all(FLERR,"Illegal hyper command");
|
||||
|
||||
int nsteps = force->inumeric(FLERR,arg[0]);
|
||||
t_event = force->inumeric(FLERR,arg[1]);
|
||||
|
||||
char *id_fix = new char[strlen(arg[2])+1];
|
||||
strcpy(id_fix,arg[2]);
|
||||
|
||||
char *id_compute = new char[strlen(arg[3])+1];
|
||||
strcpy(id_compute,arg[3]);
|
||||
|
||||
options(narg-4,&arg[4]);
|
||||
|
||||
// total # of timesteps must be multiple of t_event
|
||||
|
||||
if (t_event <= 0)
|
||||
error->all(FLERR,"Invalid t_event in hyper command");
|
||||
if (nsteps % t_event)
|
||||
error->all(FLERR,"Hyper nsteps must be multiple of t_event");
|
||||
if (rebond < 0)
|
||||
error->all(FLERR,"Invalid rebond in hyper command");
|
||||
if (rebond && rebond % t_event)
|
||||
error->all(FLERR,"Hyper rebond must be multiple of t_event");
|
||||
|
||||
// FixHyper class performs global or local hyperdynamics
|
||||
|
||||
int hyperenable,hyperstyle;
|
||||
|
||||
if (strcmp(id_fix,"NULL") == 0) {
|
||||
hyperenable = 0;
|
||||
hyperstyle = NOHYPER;
|
||||
} else {
|
||||
int ifix = modify->find_fix(id_fix);
|
||||
if (ifix < 0) error->all(FLERR,"Could not find fix ID for hyper");
|
||||
fix_hyper = (FixHyper *) modify->fix[ifix];
|
||||
int dim;
|
||||
int *hyperflag = (int *) fix_hyper->extract("hyperflag",dim);
|
||||
if (hyperflag == NULL || *hyperflag == 0)
|
||||
error->all(FLERR,"Hyper fix is not a valid hyperdynamics fix");
|
||||
if (*hyperflag == 1) hyperstyle = GLOBAL;
|
||||
if (*hyperflag == 2) hyperstyle = LOCAL;
|
||||
hyperenable = 1;
|
||||
}
|
||||
|
||||
// create FixEventHyper class to store event and pre-quench states
|
||||
|
||||
char **args = new char*[3];
|
||||
args[0] = (char *) "hyper_event";
|
||||
args[1] = (char *) "all";
|
||||
args[2] = (char *) "EVENT/HYPER";
|
||||
modify->add_fix(3,args);
|
||||
fix_event = (FixEventHyper *) modify->fix[modify->nfix-1];
|
||||
delete [] args;
|
||||
|
||||
// create Finish for timing output
|
||||
|
||||
finish = new Finish(lmp);
|
||||
|
||||
// assign FixEventHyper to event-detection compute
|
||||
// necessary so it will know atom coords at last event
|
||||
|
||||
int icompute = modify->find_compute(id_compute);
|
||||
if (icompute < 0) error->all(FLERR,"Could not find compute ID for hyper");
|
||||
compute_event = (ComputeEventDisplace *) modify->compute[icompute];
|
||||
compute_event->reset_extra_compute_fix("hyper_event");
|
||||
|
||||
// reset reneighboring criteria since will perform minimizations
|
||||
|
||||
neigh_every = neighbor->every;
|
||||
neigh_delay = neighbor->delay;
|
||||
neigh_dist_check = neighbor->dist_check;
|
||||
|
||||
if (neigh_every != 1 || neigh_delay != 0 || neigh_dist_check != 1) {
|
||||
if (me == 0)
|
||||
error->warning(FLERR,"Resetting reneighboring criteria during hyper");
|
||||
}
|
||||
|
||||
neighbor->every = 1;
|
||||
neighbor->delay = 0;
|
||||
neighbor->dist_check = 1;
|
||||
|
||||
// initialize hyper as if one long dynamics run
|
||||
|
||||
update->whichflag = 1;
|
||||
update->nsteps = nsteps;
|
||||
update->beginstep = update->firststep = update->ntimestep;
|
||||
update->endstep = update->laststep = update->firststep + nsteps;
|
||||
if (update->laststep < 0)
|
||||
error->all(FLERR,"Too many timesteps");
|
||||
|
||||
lmp->init();
|
||||
|
||||
// init minimizer settings and minimizer itself
|
||||
|
||||
update->etol = etol;
|
||||
update->ftol = ftol;
|
||||
update->max_eval = maxeval;
|
||||
|
||||
// cannot use hyper with a changing box
|
||||
// removing this restriction would require saving/restoring box params
|
||||
|
||||
if (domain->box_change)
|
||||
error->all(FLERR,"Cannot use hyper with a changing box");
|
||||
|
||||
// cannot use hyper with time-dependent fixes or regions
|
||||
|
||||
for (int i = 0; i < modify->nfix; i++)
|
||||
if (modify->fix[i]->time_depend)
|
||||
error->all(FLERR,"Cannot use hyper with a time-dependent fix defined");
|
||||
|
||||
for (int i = 0; i < domain->nregion; i++)
|
||||
if (domain->regions[i]->dynamic_check())
|
||||
error->all(FLERR,"Cannot use hyper with a time-dependent region defined");
|
||||
|
||||
// perform hyperdynamics simulation
|
||||
|
||||
timer->init();
|
||||
timer->barrier_start();
|
||||
time_start = timer->get_wall(Timer::TOTAL);
|
||||
|
||||
nbuild = ndanger = 0;
|
||||
time_dynamics = time_quench = 0.0;
|
||||
|
||||
if (hyperenable) fix_hyper->init_hyper();
|
||||
|
||||
timer->barrier_start();
|
||||
time_start = timer->get_wall(Timer::TOTAL);
|
||||
|
||||
// perform initial minimization and bond list creation
|
||||
|
||||
int nevent = 0;
|
||||
int nevent_atoms = 0;
|
||||
|
||||
fix_event->store_state_quench();
|
||||
quench(1);
|
||||
if (dumpflag)
|
||||
for (int idump = 0; idump < ndump; idump++)
|
||||
output->dump[dumplist[idump]]->write();
|
||||
fix_event->store_event();
|
||||
if (hyperenable) fix_hyper->build_bond_list(0);
|
||||
fix_event->restore_state_quench();
|
||||
|
||||
// main loop: dynamics, store state, quench, check event, restore state
|
||||
|
||||
int ecount;
|
||||
int istep = 0;
|
||||
|
||||
while (istep < nsteps) {
|
||||
dynamics(t_event,time_dynamics);
|
||||
fix_event->store_state_quench();
|
||||
quench(0);
|
||||
|
||||
ecount = compute_event->all_events();
|
||||
|
||||
if (ecount) {
|
||||
nevent++;
|
||||
nevent_atoms += ecount;
|
||||
|
||||
if (dumpflag)
|
||||
for (int idump = 0; idump < ndump; idump++)
|
||||
output->dump[dumplist[idump]]->write();
|
||||
fix_event->store_event();
|
||||
if (hyperenable) fix_hyper->build_bond_list(ecount);
|
||||
|
||||
} else if (rebond && update->ntimestep % rebond == 0) {
|
||||
fix_event->store_event();
|
||||
if (hyperenable) fix_hyper->build_bond_list(ecount);
|
||||
}
|
||||
|
||||
fix_event->restore_state_quench();
|
||||
istep = update->ntimestep - update->beginstep;
|
||||
}
|
||||
|
||||
nsteps = update->ntimestep - update->beginstep;
|
||||
|
||||
// set total timers and counters so Finish() will process them
|
||||
|
||||
timer->set_wall(Timer::TOTAL,time_start);
|
||||
timer->barrier_stop();
|
||||
|
||||
timer->set_wall(Timer::DYNAMICS,time_dynamics);
|
||||
timer->set_wall(Timer::QUENCH,time_quench);
|
||||
|
||||
neighbor->ncalls = nbuild;
|
||||
neighbor->ndanger = ndanger;
|
||||
|
||||
update->nsteps = nsteps;
|
||||
|
||||
if (me == 0) {
|
||||
if (screen) fprintf(screen,"Final hyper stats ...\n\n");
|
||||
if (logfile) fprintf(logfile,"Final hyper stats ...\n\n");
|
||||
}
|
||||
|
||||
// subset of quantities also available in fix hyper output
|
||||
|
||||
int nevent_running = 0;
|
||||
int nevent_atoms_running = 0;
|
||||
double t_hyper = 0.0;
|
||||
double avebonds = 0.0;
|
||||
double maxdrift = 0.0;
|
||||
double maxbondlen = 0.0;
|
||||
double fraczero = 1.0;
|
||||
|
||||
double nnewbond,avenboost,aveboostcoeff,maxboostcoeff,minboostcoeff;
|
||||
double maxbondperatom,neighbondperbond,aveboostnow;
|
||||
double tbondbuild,rmaxever,rmaxeverbig,allghost_toofar;
|
||||
double lostbond,lostbondcoeff,biasoverlap,nonmatchbiascoeff;
|
||||
|
||||
if (hyperenable) {
|
||||
t_hyper = fix_hyper->query(1);
|
||||
nevent_running = fix_hyper->query(2);
|
||||
nevent_atoms_running = fix_hyper->query(3);
|
||||
avebonds = fix_hyper->query(4);
|
||||
maxdrift = fix_hyper->query(5);
|
||||
maxbondlen = fix_hyper->query(6);
|
||||
fraczero = fix_hyper->query(7);
|
||||
|
||||
if (hyperstyle == LOCAL) {
|
||||
nnewbond = fix_hyper->query(8);
|
||||
maxbondperatom = fix_hyper->query(9);
|
||||
avenboost = fix_hyper->query(10);
|
||||
aveboostcoeff = fix_hyper->query(11);
|
||||
maxboostcoeff = fix_hyper->query(12);
|
||||
minboostcoeff = fix_hyper->query(13);
|
||||
neighbondperbond = fix_hyper->query(14);
|
||||
aveboostnow = fix_hyper->query(15);
|
||||
tbondbuild = fix_hyper->query(16);
|
||||
rmaxever = fix_hyper->query(17);
|
||||
rmaxeverbig = fix_hyper->query(18);
|
||||
allghost_toofar = fix_hyper->query(19);
|
||||
lostbond = fix_hyper->query(20);
|
||||
lostbondcoeff = fix_hyper->query(21);
|
||||
biasoverlap = fix_hyper->query(22);
|
||||
nonmatchbiascoeff = fix_hyper->query(23);
|
||||
}
|
||||
}
|
||||
|
||||
if (me == 0) {
|
||||
if (screen) {
|
||||
fprintf(screen,"Cummulative quantities for fix hyper:\n");
|
||||
fprintf(screen," hyper time = %g\n",t_hyper);
|
||||
fprintf(screen," time boost factor = %g\n",t_hyper/(nsteps*update->dt));
|
||||
fprintf(screen," event timesteps = %d\n",nevent_running);
|
||||
fprintf(screen," # of atoms in events = %d\n",nevent_atoms_running);
|
||||
fprintf(screen,"Quantities for this hyper run:\n");
|
||||
fprintf(screen," event timesteps = %d\n",nevent);
|
||||
fprintf(screen," # of atoms in events = %d\n",nevent_atoms);
|
||||
fprintf(screen," max length of any bond = %g\n",maxbondlen);
|
||||
fprintf(screen," max drift distance of any atom = %g\n",maxdrift);
|
||||
fprintf(screen," fraction of steps & bonds with zero bias = %g\n",
|
||||
fraczero);
|
||||
fprintf(screen,"Current quantities:\n");
|
||||
fprintf(screen," ave bonds/atom = %g\n",avebonds);
|
||||
|
||||
if (hyperstyle == LOCAL) {
|
||||
fprintf(screen,"Cummulative quantities specific to fix hyper/local:\n");
|
||||
fprintf(screen," # of new bonds formed = %g\n",nnewbond);
|
||||
fprintf(screen," max bonds/atom = %g\n",maxbondperatom);
|
||||
fprintf(screen,"Quantities for this hyper run specific to "
|
||||
"fix hyper/local:\n");
|
||||
fprintf(screen," ave boosted bonds/step = %g\n",avenboost);
|
||||
fprintf(screen," ave boost coeff of all bonds = %g\n",aveboostcoeff);
|
||||
fprintf(screen," max boost coeff of any bond = %g\n",maxboostcoeff);
|
||||
fprintf(screen," min boost coeff of any bond = %g\n",minboostcoeff);
|
||||
fprintf(screen," max dist from my box of any "
|
||||
"non-maxstrain bond ghost atom = %g\n",rmaxever);
|
||||
fprintf(screen," max dist from my box of any bond ghost atom = %g\n",
|
||||
rmaxeverbig);
|
||||
fprintf(screen," count of bond ghost neighbors "
|
||||
"not found on reneighbor steps = %g\n",allghost_toofar);
|
||||
fprintf(screen," lost bond partners = %g\n",lostbond);
|
||||
fprintf(screen," ave bias coeff for lost bond partners = %g\n",
|
||||
lostbondcoeff);
|
||||
fprintf(screen," bias overlaps = %g\n",biasoverlap);
|
||||
fprintf(screen," non-matching bias coeffs = %g\n",nonmatchbiascoeff);
|
||||
fprintf(screen," CPU time for bond builds = %g\n",tbondbuild);
|
||||
fprintf(screen,"Current quantities specific to fix hyper/local:\n");
|
||||
fprintf(screen," neighbor bonds/bond = %g\n",neighbondperbond);
|
||||
fprintf(screen," ave boost coeff for all bonds = %g\n",aveboostnow);
|
||||
}
|
||||
fprintf(screen,"\n");
|
||||
}
|
||||
|
||||
if (logfile) {
|
||||
fprintf(logfile,"Cummulative quantities for fix hyper:\n");
|
||||
fprintf(logfile," hyper time = %g\n",t_hyper);
|
||||
fprintf(logfile," event timesteps = %d\n",nevent_running);
|
||||
fprintf(logfile," # of atoms in events = %d\n",nevent_atoms_running);
|
||||
fprintf(logfile,"Quantities for this hyper run:\n");
|
||||
fprintf(logfile," event timesteps = %d\n",nevent);
|
||||
fprintf(logfile," # of atoms in events = %d\n",nevent_atoms);
|
||||
fprintf(logfile," max length of any bond = %g\n",maxbondlen);
|
||||
fprintf(logfile," max drift distance of any atom = %g\n",maxdrift);
|
||||
fprintf(logfile," fraction of steps & bonds with zero bias = %g\n",
|
||||
fraczero);
|
||||
fprintf(logfile,"Current quantities:\n");
|
||||
fprintf(logfile," ave bonds/atom = %g\n",avebonds);
|
||||
|
||||
if (hyperstyle == LOCAL) {
|
||||
fprintf(logfile,"Cummulative quantities specific tofix hyper/local:\n");
|
||||
fprintf(logfile," # of new bonds formed = %g\n",nnewbond);
|
||||
fprintf(logfile," max bonds/atom = %g\n",maxbondperatom);
|
||||
fprintf(logfile,"Quantities for this hyper run specific to "
|
||||
"fix hyper/local:\n");
|
||||
fprintf(logfile," ave boosted bonds/step = %g\n",avenboost);
|
||||
fprintf(logfile," ave boost coeff of all bonds = %g\n",aveboostcoeff);
|
||||
fprintf(logfile," max boost coeff of any bond = %g\n",maxboostcoeff);
|
||||
fprintf(logfile," min boost coeff of any bond = %g\n",minboostcoeff);
|
||||
fprintf(logfile," max dist from my box of any "
|
||||
"non-maxstrain bond ghost atom = %g\n",rmaxever);
|
||||
fprintf(logfile," max dist from my box of any bond ghost atom = %g\n",
|
||||
rmaxeverbig);
|
||||
fprintf(logfile," count of ghost bond neighbors "
|
||||
"not found on reneighbor steps = %g\n",allghost_toofar);
|
||||
fprintf(logfile," lost bond partners = %g\n",lostbond);
|
||||
fprintf(logfile," ave bias coeff for lost bond partners = %g\n",
|
||||
lostbondcoeff);
|
||||
fprintf(logfile," bias overlaps = %g\n",biasoverlap);
|
||||
fprintf(logfile," non-matching bias coeffs = %g\n",nonmatchbiascoeff);
|
||||
fprintf(logfile," CPU time for bond builds = %g\n",tbondbuild);
|
||||
fprintf(logfile,"Current quantities specific to fix hyper/local:\n");
|
||||
fprintf(logfile," neighbor bonds/bond = %g\n",neighbondperbond);
|
||||
fprintf(logfile," ave boost coeff for all bonds = %g\n",aveboostnow);
|
||||
}
|
||||
fprintf(logfile,"\n");
|
||||
}
|
||||
}
|
||||
|
||||
// timing stats
|
||||
|
||||
finish->end(4);
|
||||
|
||||
update->whichflag = 0;
|
||||
update->firststep = update->laststep = 0;
|
||||
update->beginstep = update->endstep = 0;
|
||||
|
||||
// reset reneighboring criteria
|
||||
|
||||
neighbor->every = neigh_every;
|
||||
neighbor->delay = neigh_delay;
|
||||
neighbor->dist_check = neigh_dist_check;
|
||||
|
||||
delete [] id_fix;
|
||||
delete [] id_compute;
|
||||
memory->destroy(dumplist);
|
||||
delete finish;
|
||||
modify->delete_fix("hyper_event");
|
||||
|
||||
compute_event->reset_extra_compute_fix(NULL);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
short dynamics run
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void Hyper::dynamics(int nsteps, double & /* time_category */)
|
||||
{
|
||||
update->whichflag = 1;
|
||||
update->nsteps = nsteps;
|
||||
|
||||
// full init works
|
||||
// need to try partial init or setup
|
||||
|
||||
lmp->init();
|
||||
update->integrate->setup(0);
|
||||
// this may be needed if don't do full init
|
||||
//modify->addstep_compute_all(update->ntimestep);
|
||||
bigint ncalls = neighbor->ncalls;
|
||||
|
||||
timer->barrier_start();
|
||||
update->integrate->run(nsteps);
|
||||
timer->barrier_stop();
|
||||
time_dynamics += timer->get_wall(Timer::TOTAL);
|
||||
|
||||
nbuild += neighbor->ncalls - ncalls;
|
||||
ndanger += neighbor->ndanger;
|
||||
|
||||
update->integrate->cleanup();
|
||||
finish->end(0);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
quench minimization
|
||||
flag = 1 to trigger output of memory in setup() call
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void Hyper::quench(int flag)
|
||||
{
|
||||
bigint ntimestep_hold = update->ntimestep;
|
||||
bigint endstep_hold = update->endstep;
|
||||
|
||||
// need to change whichflag so that minimize->setup() calling
|
||||
// modify->setup() will call fix->min_setup()
|
||||
|
||||
update->whichflag = 2;
|
||||
update->nsteps = maxiter;
|
||||
update->endstep = update->laststep = update->firststep + maxiter;
|
||||
if (update->laststep < 0)
|
||||
error->all(FLERR,"Too many iterations");
|
||||
update->restrict_output = 1;
|
||||
|
||||
// full init works
|
||||
|
||||
lmp->init();
|
||||
update->minimize->setup(flag);
|
||||
|
||||
// partial init does not work
|
||||
|
||||
//modify->addstep_compute_all(update->ntimestep);
|
||||
//update->minimize->setup_minimal(1);
|
||||
|
||||
timer->barrier_start();
|
||||
update->minimize->run(maxiter);
|
||||
timer->barrier_stop();
|
||||
time_quench += timer->get_wall(Timer::TOTAL);
|
||||
|
||||
update->minimize->cleanup();
|
||||
finish->end(0);
|
||||
|
||||
// reset timestep as if quench did not occur
|
||||
// clear timestep storage from computes, since now invalid
|
||||
|
||||
update->restrict_output = 0;
|
||||
update->ntimestep = ntimestep_hold;
|
||||
update->endstep = update->laststep = endstep_hold;
|
||||
for (int i = 0; i < modify->ncompute; i++)
|
||||
if (modify->compute[i]->timeflag) modify->compute[i]->clearstep();
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
parse optional parameters at end of hyper input line
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void Hyper::options(int narg, char **arg)
|
||||
{
|
||||
// set defaults
|
||||
|
||||
etol = 1.0e-4;
|
||||
ftol = 1.0e-4;
|
||||
maxiter = 40;
|
||||
maxeval = 50;
|
||||
dumpflag = 0;
|
||||
ndump = 0;
|
||||
dumplist = NULL;
|
||||
rebond = 0;
|
||||
|
||||
int iarg = 0;
|
||||
while (iarg < narg) {
|
||||
if (strcmp(arg[iarg],"min") == 0) {
|
||||
if (iarg+5 > narg) error->all(FLERR,"Illegal hyper command");
|
||||
etol = force->numeric(FLERR,arg[iarg+1]);
|
||||
ftol = force->numeric(FLERR,arg[iarg+2]);
|
||||
maxiter = force->inumeric(FLERR,arg[iarg+3]);
|
||||
maxeval = force->inumeric(FLERR,arg[iarg+4]);
|
||||
if (maxiter < 0) error->all(FLERR,"Illegal hyper command");
|
||||
iarg += 5;
|
||||
|
||||
} else if (strcmp(arg[iarg],"dump") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal hyper command");
|
||||
dumpflag = 1;
|
||||
int idump = output->find_dump(arg[iarg+1]);
|
||||
if (idump < 0)
|
||||
error->all(FLERR,"Dump ID in hyper command does not exist");
|
||||
memory->grow(dumplist,ndump+1,"hyper:dumplist");
|
||||
dumplist[ndump++] = idump;
|
||||
iarg += 2;
|
||||
|
||||
} else if (strcmp(arg[iarg],"rebond") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal hyper command");
|
||||
rebond = force->inumeric(FLERR,arg[iarg+1]);
|
||||
iarg += 2;
|
||||
|
||||
} else error->all(FLERR,"Illegal hyper command");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
/* -*- c++ -*- ----------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
http://lammps.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifdef COMMAND_CLASS
|
||||
|
||||
CommandStyle(hyper,Hyper)
|
||||
|
||||
#else
|
||||
|
||||
#ifndef LMP_HYPER_H
|
||||
#define LMP_HYPER_H
|
||||
|
||||
#include "pointers.h"
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
class Hyper : protected Pointers {
|
||||
public:
|
||||
Hyper(class LAMMPS *);
|
||||
~Hyper() {}
|
||||
void command(int, char **);
|
||||
|
||||
private:
|
||||
int me,nprocs;
|
||||
int t_event;
|
||||
double etol,ftol;
|
||||
int maxiter,maxeval;
|
||||
int stepmode,dumpflag,ndump,rebond;
|
||||
int *dumplist;
|
||||
|
||||
int neigh_every,neigh_delay,neigh_dist_check;
|
||||
int quench_reneighbor;
|
||||
bigint nbuild,ndanger;
|
||||
|
||||
double time_dynamics,time_quench;
|
||||
double time_start;
|
||||
|
||||
class FixHyper *fix_hyper;
|
||||
class FixEventHyper *fix_event;
|
||||
class ComputeEventDisplace *compute_event;
|
||||
class Finish *finish;
|
||||
|
||||
void dynamics(int, double &);
|
||||
void quench(int flag);
|
||||
void options(int, char **);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* ERROR/WARNING messages:
|
||||
|
||||
*/
|