From 7739c7ad90eb651942c5efd04a37c3a370adfe8d Mon Sep 17 00:00:00 2001 From: gplummer317 Date: Tue, 2 Jul 2024 14:50:12 -0700 Subject: [PATCH] Add files via upload --- doc/src/fix_qeq.rst | 46 ++++++++++++++++++++++++++++++++++--------- doc/src/pair_coul.rst | 37 ++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 9 deletions(-) diff --git a/doc/src/fix_qeq.rst b/doc/src/fix_qeq.rst index f353e9a998..0b0d1c32d0 100644 --- a/doc/src/fix_qeq.rst +++ b/doc/src/fix_qeq.rst @@ -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 ` 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 @@ -107,18 +114,18 @@ from a file specified by *qfile*\ . The file has the following format .. parsed-literal:: - 1 chi eta gamma zeta qcore - 2 chi eta gamma zeta qcore + 1 chi eta gamma zeta qcore qmin qmax omega + 2 chi eta gamma zeta qcore qmin qmax omega ... - Ntype chi eta gamma zeta qcore + 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. +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 five +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 @@ -126,6 +133,9 @@ entries per line are required. * *gamma* = shielded Coulomb constant defined by :ref:`ReaxFF force field ` in distance units * *zeta* = Slater type orbital exponent defined by the :ref:`Streitz-Mintmire ` potential in reverse distance units * *qcore* = charge of the nucleus defined by the :ref:`Streitz-Mintmire potential ` potential in charge units +* *qmin* = lower bound on the allowed charge defined by the :ref:`CTIP ` potential in charge units +* *qmax* = upper bound on the allowed charge defined by the :ref:`CTIP ` potential in charge units +* *omega* = penalty parameter used to enforce charge bounds defined by the :ref:`CTIP ` 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 +181,19 @@ 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. +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 +209,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 +289,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 diff --git a/doc/src/pair_coul.rst b/doc/src/pair_coul.rst index 14cc4851f6..4adf751cac 100644 --- a/doc/src/pair_coul.rst +++ b/doc/src/pair_coul.rst @@ -20,6 +20,7 @@ .. index:: pair_style coul/msm .. index:: pair_style coul/msm/omp .. index:: pair_style coul/streitz +.. index:: pair_style coul/ctip .. index:: pair_style coul/wolf .. index:: pair_style coul/wolf/kk .. index:: pair_style coul/wolf/omp @@ -64,6 +65,9 @@ Accelerator Variants: *coul/msm/omp* pair_style coul/streitz command =============================== +pair_style coul/ctip command +=============================== + pair_style coul/wolf command ============================ @@ -92,6 +96,7 @@ Syntax pair_style coul/long cutoff pair_style coul/wolf alpha cutoff pair_style coul/streitz cutoff keyword alpha + pair_style coul/ctip alpha cutoff pair_style tip4p/cut otype htype btype atype qdist cutoff pair_style tip4p/long otype htype btype atype qdist cutoff @@ -131,6 +136,9 @@ Examples pair_style coul/streitz 12.0 wolf 0.30 pair_coeff * * AlO.streitz Al O + pair_style coul/ctip 0.30 12.0 + pair_coeff * * NiO.ctip Ni O + pair_style tip4p/cut 1 2 7 8 0.15 12.0 pair_coeff * * @@ -262,6 +270,30 @@ Streitz-Mintmire parameterization for the material being modeled. ---------- +Style *coul/ctip* computes the Coulomb interations as described in +:ref:`Plummer `. 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 ` +command. Charge equilibration must be performed with the :doc:`fix qeq/ctip +` 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 parametrization are included for use with +the example. + +---------- + Pair style *coul/cut/global* computes the same Coulombic interactions as style *coul/cut* except that it allows only a single global cutoff and thus makes it compatible for use in combination with long-range @@ -412,6 +444,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