Merge branch 'develop' of github.com:lammps/lammps into alphataubio-kokkos-fixes
This commit is contained in:
@ -178,6 +178,7 @@ OPT.
|
||||
* :doc:`python/move <fix_python_move>`
|
||||
* :doc:`qbmsst <fix_qbmsst>`
|
||||
* :doc:`qeq/comb (o) <fix_qeq_comb>`
|
||||
* :doc:`qeq/ctip <fix_qeq>`
|
||||
* :doc:`qeq/dynamic <fix_qeq>`
|
||||
* :doc:`qeq/fire <fix_qeq>`
|
||||
* :doc:`qeq/point <fix_qeq>`
|
||||
|
||||
@ -59,6 +59,7 @@ OPT.
|
||||
* :doc:`comb (o) <pair_comb>`
|
||||
* :doc:`comb3 <pair_comb>`
|
||||
* :doc:`cosine/squared <pair_cosine_squared>`
|
||||
* :doc:`coul/ctip <pair_coul>`
|
||||
* :doc:`coul/cut (gko) <pair_coul>`
|
||||
* :doc:`coul/cut/dielectric <pair_dielectric>`
|
||||
* :doc:`coul/cut/global (o) <pair_coul>`
|
||||
|
||||
@ -81,7 +81,7 @@ includes *xx*, *xy*, *yx*, and *yy*. In 3D, this includes *xx*, *xy*, *xz*,
|
||||
Many properties require their respective fixes, listed below in related
|
||||
commands, be defined. For instance, the *viscosity* attribute is the
|
||||
viscosity of a particle calculated by
|
||||
:doc:`fix rheo/viscous <fix_rheo_viscosity>`. The meaning of less obvious
|
||||
:doc:`fix rheo/viscosity <fix_rheo_viscosity>`. The meaning of less obvious
|
||||
properties is described below.
|
||||
|
||||
The *phase* property indicates whether the particle is in a fluid state,
|
||||
|
||||
@ -357,6 +357,7 @@ accelerated styles exist.
|
||||
* :doc:`python/move <fix_python_move>` - move particles using a Python function during a simulation run
|
||||
* :doc:`qbmsst <fix_qbmsst>` - quantum bath multi-scale shock technique time integrator
|
||||
* :doc:`qeq/comb <fix_qeq_comb>` - charge equilibration for COMB potential
|
||||
* :doc:`qeq/ctip <fix_qeq>` - charge equilibration for CTIP potential
|
||||
* :doc:`qeq/dynamic <fix_qeq>` - charge equilibration via dynamic method
|
||||
* :doc:`qeq/fire <fix_qeq>` - charge equilibration via FIRE minimizer
|
||||
* :doc:`qeq/point <fix_qeq>` - charge equilibration via point method
|
||||
|
||||
@ -102,7 +102,6 @@ zeroed. The *update* reference style implies the reference state will be updated
|
||||
*nstep* timesteps. The *offset* reference will update the reference state *nstep*
|
||||
timesteps before a multiple of *nevery* timesteps.
|
||||
|
||||
|
||||
----------
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
@ -129,6 +128,12 @@ This compute is part of the EXTRA-FIX package. It is only enabled if
|
||||
LAMMPS was built with that package. See the
|
||||
:doc:`Build package <Build_package>` page for more info.
|
||||
|
||||
As this fix depends on a run including specific reference timesteps, it
|
||||
currently does not update peratom values if used in conjunction with the
|
||||
:doc:`rerun command <rerun>` since it cannot ensure the necessary reference
|
||||
timesteps are included.
|
||||
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
|
||||
@ -155,6 +155,22 @@ many timesteps until the desired # of particles has been inserted.
|
||||
the :doc:`compute_modify dynamic/dof yes <compute_modify>` command
|
||||
for the temperature compute you are using.
|
||||
|
||||
.. admonition:: Implementation Notes
|
||||
:class: Hint
|
||||
|
||||
The exact insertion procedure depends on many factors (e.g. the range of
|
||||
diameters inserted or whether molecules are being inserted). However, in
|
||||
the simplest scenario of monodisperse atoms, the procedure works as
|
||||
follows. First, the number of timesteps between two insertion events is
|
||||
calculated as the time for a particle to fall through the insertion region,
|
||||
accounting for gravity and any region motion. Next, the target number of
|
||||
particles inserted per event (assuming no failed insertions due to overlaps)
|
||||
is calculated as the product of the volume fraction and the volume of the
|
||||
insertion region divided by the volume of a particle (or area in 2D).
|
||||
Events are repeated until all N particles have been inserted, where
|
||||
the final event is likely interrupted upon reaching N. Estimates of this
|
||||
process are printed to the log/screen at the start of a run.
|
||||
|
||||
----------
|
||||
|
||||
All other keywords are optional with defaults as shown below.
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
.. index:: fix qeq/point
|
||||
.. index:: fix qeq/shielded
|
||||
.. index:: fix qeq/slater
|
||||
.. index:: fix qeq/ctip
|
||||
.. index:: fix qeq/dynamic
|
||||
.. index:: fix qeq/fire
|
||||
|
||||
@ -13,6 +14,9 @@ fix qeq/shielded command
|
||||
fix qeq/slater command
|
||||
======================
|
||||
|
||||
fix qeq/ctip command
|
||||
====================
|
||||
|
||||
fix qeq/dynamic command
|
||||
=======================
|
||||
|
||||
@ -27,18 +31,20 @@ Syntax
|
||||
fix ID group-ID style Nevery cutoff tolerance maxiter qfile keyword ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* style = *qeq/point* or *qeq/shielded* or *qeq/slater* or *qeq/dynamic* or *qeq/fire*
|
||||
* style = *qeq/point* or *qeq/shielded* or *qeq/slater* or *qeq/ctip* or *qeq/dynamic* or *qeq/fire*
|
||||
* Nevery = perform charge equilibration every this many steps
|
||||
* cutoff = global cutoff for charge-charge interactions (distance unit)
|
||||
* tolerance = precision to which charges will be equilibrated
|
||||
* maxiter = maximum iterations to perform charge equilibration
|
||||
* qfile = a filename with QEq parameters or *coul/streitz* or *reaxff*
|
||||
* qfile = a filename with QEq parameters or *coul/streitz* or *coul/ctip* or *reaxff*
|
||||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *alpha* or *qdamp* or *qstep* or *warn*
|
||||
* keyword = *alpha* or *cdamp* or *maxrepeat* or *qdamp* or *qstep* or *warn*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*alpha* value = Slater type orbital exponent (qeq/slater only)
|
||||
*cdamp* value = damping parameter for Coulomb interactions (qeq/ctip only)
|
||||
*maxrepeat* value = number of equilibration cycles allowed to ensure no atoms cross charge bounds (qeq/ctip only)
|
||||
*qdamp* value = damping factor for damped dynamics charge solver (qeq/dynamic and qeq/fire only)
|
||||
*qstep* value = time step size for damped dynamics charge solver (qeq/dynamic and qeq/fire only)
|
||||
*warn* value = do (=yes) or do not (=no) print a warning when the maximum number of iterations is reached
|
||||
@ -51,6 +57,7 @@ Examples
|
||||
fix 1 all qeq/point 1 10 1.0e-6 200 param.qeq1
|
||||
fix 1 qeq qeq/shielded 1 8 1.0e-6 100 param.qeq2
|
||||
fix 1 all qeq/slater 5 10 1.0e-6 100 params alpha 0.2
|
||||
fix 1 all qeq/ctip 1 12 1.0e-8 100 coul/ctip cdamp 0.30 maxrepeat 10
|
||||
fix 1 qeq qeq/dynamic 1 12 1.0e-3 100 my_qeq
|
||||
fix 1 all qeq/fire 1 10 1.0e-3 100 my_qeq qdamp 0.2 qstep 0.1
|
||||
|
||||
@ -103,7 +110,7 @@ equalizes the derivative of energy with respect to charge of all the
|
||||
atoms) by adjusting the partial charge on individual atoms based on
|
||||
interactions with their neighbors within *cutoff*\ . It requires a few
|
||||
parameters in the appropriate units for each atom type which are read
|
||||
from a file specified by *qfile*\ . The file has the following format
|
||||
from a file specified by *qfile*\ . The file has the following format:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
@ -112,20 +119,32 @@ from a file specified by *qfile*\ . The file has the following format
|
||||
...
|
||||
Ntype chi eta gamma zeta qcore
|
||||
|
||||
except for fix style *qeq/ctip* where the format is:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
1 chi eta gamma zeta qcore qmin qmax omega
|
||||
2 chi eta gamma zeta qcore qmin qmax omega
|
||||
...
|
||||
Ntype chi eta gamma zeta qcore qmin qmax omega
|
||||
|
||||
There have to be parameters given for every atom type. Wildcard entries
|
||||
are possible using the same type range syntax as for "coeff" commands
|
||||
(i.e., n\*m, n\*, \*m, \*). Later entries will overwrite previous ones.
|
||||
Empty lines or any text following the pound sign (#) are ignored.
|
||||
Each line starts with the atom type followed by five parameters.
|
||||
Only a subset of the parameters is used by each QEq style as described
|
||||
below, thus the others can be set to 0.0 if desired, but all five
|
||||
entries per line are required.
|
||||
Empty lines or any text following the pound sign (#) are ignored. Each
|
||||
line starts with the atom type followed by eight parameters. Only a
|
||||
subset of the parameters is used by each QEq style as described below,
|
||||
thus the others can be set to 0.0 if desired, but all eight entries per
|
||||
line are required.
|
||||
|
||||
* *chi* = electronegativity in energy units
|
||||
* *eta* = self-Coulomb potential in energy units
|
||||
* *gamma* = shielded Coulomb constant defined by :ref:`ReaxFF force field <vanDuin>` in distance units
|
||||
* *zeta* = Slater type orbital exponent defined by the :ref:`Streitz-Mintmire <Streitz1>` potential in reverse distance units
|
||||
* *qcore* = charge of the nucleus defined by the :ref:`Streitz-Mintmire potential <Streitz1>` potential in charge units
|
||||
* *qmin* = lower bound on the allowed charge defined by the :ref:`CTIP <CTIP1>` potential in charge units
|
||||
* *qmax* = upper bound on the allowed charge defined by the :ref:`CTIP <CTIP1>` potential in charge units
|
||||
* *omega* = penalty parameter used to enforce charge bounds defined by the :ref:`CTIP <CTIP1>` potential in energy units
|
||||
|
||||
The fix qeq styles will print a warning if the charges are not
|
||||
equilibrated within *tolerance* by *maxiter* steps, unless the
|
||||
@ -171,6 +190,22 @@ on atoms via the matrix inversion method. A tolerance of 1.0e-6 is
|
||||
usually a good number. Keyword *alpha* can be used to change the Slater
|
||||
type orbital exponent.
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
The *qeq/ctip* style describes partial charges on atoms in the same way
|
||||
as style *qeq/shielded* but also enables the definition of charge
|
||||
bounds. Only the *chi*, *eta*, *gamma*, *qmin*, *qmax*, and *omega*
|
||||
parameters from the *qfile* file are used. When using the string
|
||||
*coul/ctip* as filename, these parameters are extracted directly from an
|
||||
active *coul/ctip* pair style. This style solves partial charges on
|
||||
atoms via the matrix inversion method. Keyword *cdamp* can be used to
|
||||
change the damping parameter used to calculate Coulomb interactions.
|
||||
Keyword *maxrepeat* can be used to adjust the number of equilibration
|
||||
cycles allowed to ensure no atoms have crossed the charge bounds. A
|
||||
value of 10 is usually a good choice. A tolerance between 1.0e-6 and
|
||||
1.0e-8 is usually a good choice but should be checked in conjunction
|
||||
with the timestep for adequate energy conservation during dynamic runs.
|
||||
|
||||
The *qeq/dynamic* style describes partial charges on atoms as point
|
||||
charges that interact through 1/r, but the extended Lagrangian method is
|
||||
used to solve partial charges on atoms. Only the *chi* and *eta*
|
||||
@ -186,7 +221,7 @@ minimization algorithm to solve for equilibrium charges. Keyword
|
||||
*qdamp* can be used to change the damping factor, while keyword *qstep*
|
||||
can be used to change the time step size.
|
||||
|
||||
Note that *qeq/point*, *qeq/shielded*, and *qeq/slater* describe
|
||||
Note that *qeq/point*, *qeq/shielded*, *qeq/slater*, and *qeq/ctip* describe
|
||||
different charge models, whereas the matrix inversion method and the
|
||||
extended Lagrangian method (\ *qeq/dynamic* and *qeq/fire*\ ) are
|
||||
different solvers.
|
||||
@ -266,6 +301,11 @@ Chemistry, 95, 3358-3363 (1991).
|
||||
**(Streitz-Mintmire)** F. H. Streitz, J. W. Mintmire, Physical Review B, 50,
|
||||
16, 11996 (1994)
|
||||
|
||||
.. _CTIP1:
|
||||
|
||||
**(CTIP)** G. Plummer, J. P. Tavenner, M. I. Mendelev, Z. Wu, J. W. Lawson,
|
||||
in preparation
|
||||
|
||||
.. _vanDuin:
|
||||
|
||||
**(ReaxFF)** A. C. T. van Duin, S. Dasgupta, F. Lorant, W. A. Goddard III, J
|
||||
|
||||
@ -16,8 +16,7 @@ Syntax
|
||||
* kstyle = *quintic* or *RK0* or *RK1* or *RK2*
|
||||
* zmin = minimal number of neighbors for reproducing kernels
|
||||
* zero or more keyword/value pairs may be appended to args
|
||||
* keyword = *thermal* or *interface/reconstruct* or *surface/detection* or
|
||||
*shift* or *rho/sum* or *density* or *self/mass* or *speed/sound*
|
||||
* keyword = *thermal* or *interface/reconstruct* or *surface/detection* or *shift* or *rho/sum* or *density* or *self/mass* or *speed/sound*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
.. index:: pair_style coul/cut/omp
|
||||
.. index:: pair_style coul/cut/global
|
||||
.. index:: pair_style coul/cut/global/omp
|
||||
.. index:: pair_style coul/ctip
|
||||
.. index:: pair_style coul/debye
|
||||
.. index:: pair_style coul/debye/gpu
|
||||
.. index:: pair_style coul/debye/kk
|
||||
@ -38,6 +39,9 @@ pair_style coul/cut/global command
|
||||
|
||||
Accelerator Variants: *coul/cut/omp*
|
||||
|
||||
pair_style coul/ctip command
|
||||
============================
|
||||
|
||||
pair_style coul/debye command
|
||||
=============================
|
||||
|
||||
@ -79,7 +83,6 @@ pair_style tip4p/long command
|
||||
|
||||
Accelerator Variants: *tip4p/long/omp*
|
||||
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
@ -87,6 +90,7 @@ Syntax
|
||||
|
||||
pair_style coul/cut cutoff
|
||||
pair_style coul/cut/global cutoff
|
||||
pair_style coul/ctip alpha cutoff
|
||||
pair_style coul/debye kappa cutoff
|
||||
pair_style coul/dsf alpha cutoff
|
||||
pair_style coul/exclude cutoff
|
||||
@ -116,6 +120,9 @@ Examples
|
||||
pair_coeff * *
|
||||
pair_coeff 2 2 3.5
|
||||
|
||||
pair_style coul/ctip 0.30 12.0
|
||||
pair_coeff * * NiO.ctip Ni O
|
||||
|
||||
pair_style coul/debye 1.4 3.0
|
||||
pair_coeff * *
|
||||
pair_coeff 2 2 3.5
|
||||
@ -173,6 +180,33 @@ coulomb styles in :doc:`hybrid pair styles <pair_hybrid>`.
|
||||
|
||||
----------
|
||||
|
||||
.. versionadded:: TBD
|
||||
|
||||
Style *coul/ctip* computes the Coulomb interactions as described in
|
||||
:ref:`Plummer <Plummer1>`. It uses the the damped shifted model as in
|
||||
style *coul/dsf* but is further extended to the second derivative of the
|
||||
potential and incorporates empirical charge shielding meant to
|
||||
approximate the more expensive Coulomb integrals used in style
|
||||
*coul/streitz*. More details can be found in the referenced paper. Like
|
||||
the style *coul/streitz*, style *coul/ctip* is a variable charge
|
||||
potential and must be hybridized with a short-range potential via the
|
||||
:doc:`pair_style hybrid/overlay <pair_hybrid>` command. Charge
|
||||
equilibration must be performed with the :doc:`fix qeq/ctip <fix_qeq>`
|
||||
command. For example:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style hybrid/overlay eam/fs coul/ctip 0.30 12.0
|
||||
pair_coeff * * eam/fs NiO.eam.fs Ni O
|
||||
pair_coeff * * coul/ctip NiO.ctip Ni O
|
||||
fix 1 all qeq/ctip 1 12.0 1.0e-8 100 coul/ctip cdamp 0.30 maxrepeat 10
|
||||
|
||||
See the examples/ctip directory for an example input script using the
|
||||
CTIP potential. An Ni-O CTIP and EAM/FS parameterization are included
|
||||
for use with the example.
|
||||
|
||||
----------
|
||||
|
||||
Style *coul/debye* adds an additional exp() damping factor to the
|
||||
Coulombic term, given by
|
||||
|
||||
@ -399,16 +433,18 @@ Restrictions
|
||||
""""""""""""
|
||||
|
||||
The *coul/long*, *coul/msm*, *coul/streitz*, and *tip4p/long* styles are
|
||||
part of the KSPACE package. The *coul/cut/global*, *coul/exclude* styles are
|
||||
part of the EXTRA-PAIR package. The *tip4p/cut* style is part of the MOLECULE
|
||||
package. A pair style is only enabled if LAMMPS was built with its
|
||||
corresponding package. See the :doc:`Build package <Build_package>`
|
||||
doc page for more info.
|
||||
part of the KSPACE package. The *coul/cut/global*, *coul/exclude*, and
|
||||
*coul/ctip* styles are part of the EXTRA-PAIR package. The *tip4p/cut*
|
||||
style is part of the MOLECULE package. A pair style is only enabled if
|
||||
LAMMPS was built with its corresponding package. See the
|
||||
:doc:`Build package <Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`pair_coeff <pair_coeff>`, :doc:`pair_style, hybrid/overlay <pair_hybrid>`, :doc:`kspace_style <kspace_style>`
|
||||
:doc:`pair_coeff <pair_coeff>`,
|
||||
:doc:`pair_style hybrid/overlay <pair_hybrid>`,
|
||||
:doc:`kspace_style <kspace_style>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
@ -432,6 +468,11 @@ Phys, 110, 8254 (1999).
|
||||
**(Streitz)** F. H. Streitz, J. W. Mintmire, Phys Rev B, 50, 11996-12003
|
||||
(1994).
|
||||
|
||||
.. _Plummer1:
|
||||
|
||||
**(Plummer)** G. Plummer, J. P. Tavenner, M. I. Mendelev, Z. Wu, J. W. Lawson,
|
||||
in preparation
|
||||
|
||||
.. _Jorgensen3:
|
||||
|
||||
**(Jorgensen)** Jorgensen, Chandrasekhar, Madura, Impey, Klein, J Chem
|
||||
|
||||
@ -151,6 +151,7 @@ accelerated styles exist.
|
||||
* :doc:`comb <pair_comb>` - charge-optimized many-body (COMB) potential
|
||||
* :doc:`comb3 <pair_comb>` - charge-optimized many-body (COMB3) potential
|
||||
* :doc:`cosine/squared <pair_cosine_squared>` - Cooke-Kremer-Deserno membrane model potential
|
||||
* :doc:`coul/ctip <pair_coul>` - Charge Transfer Interatomic (Coulomb) Potential
|
||||
* :doc:`coul/cut <pair_coul>` - cutoff Coulomb potential
|
||||
* :doc:`coul/cut/dielectric <pair_dielectric>` -
|
||||
* :doc:`coul/cut/global <pair_coul>` - cutoff Coulomb potential
|
||||
|
||||
Reference in New Issue
Block a user