lammps/doc/html/fix_qeq.html

389 lines
21 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>fix qeq/point command &mdash; LAMMPS documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinxcontrib-images/LightBox2/lightbox2/css/lightbox.css" type="text/css" />
<link rel="top" title="LAMMPS documentation" href="index.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-nav-search">
<a href="Manual.html" class="icon icon-home"> LAMMPS
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="Section_intro.html">1. Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_start.html">2. Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_commands.html">3. Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_packages.html">4. Packages</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_accelerate.html">5. Accelerating LAMMPS performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_howto.html">6. How-to discussions</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_example.html">7. Example problems</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_perf.html">8. Performance &amp; scalability</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_tools.html">9. Additional tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_modify.html">10. Modifying &amp; extending LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_python.html">11. Python interface to LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_errors.html">12. Errors</a></li>
<li class="toctree-l1"><a class="reference internal" href="Section_history.html">13. Future and history</a></li>
</ul>
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="Manual.html">LAMMPS</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="Manual.html">Docs</a> &raquo;</li>
<li>fix qeq/point command</li>
<li class="wy-breadcrumbs-aside">
<a href="http://lammps.sandia.gov">Website</a>
<a href="Section_commands.html#comm">Commands</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="fix-qeq-point-command">
<span id="index-0"></span><h1>fix qeq/point command</h1>
</div>
<div class="section" id="fix-qeq-shielded-command">
<h1>fix qeq/shielded command</h1>
</div>
<div class="section" id="fix-qeq-slater-command">
<h1>fix qeq/slater command</h1>
</div>
<div class="section" id="fix-qeq-dynamic-command">
<h1>fix qeq/dynamic command</h1>
</div>
<div class="section" id="fix-qeq-fire-command">
<h1>fix qeq/fire command</h1>
<div class="section" id="syntax">
<h2>Syntax</h2>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="n">ID</span> <span class="n">group</span><span class="o">-</span><span class="n">ID</span> <span class="n">style</span> <span class="n">Nevery</span> <span class="n">cutoff</span> <span class="n">tolerance</span> <span class="n">maxiter</span> <span class="n">qfile</span> <span class="n">keyword</span> <span class="o">...</span>
</pre></div>
</div>
<ul class="simple">
<li>ID, group-ID are documented in <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> command</li>
<li>style = <em>qeq/point</em> or <em>qeq/shielded</em> or <em>qeq/slater</em> or <em>qeq/dynamic</em> or <em>qeq/fire</em></li>
<li>Nevery = perform charge equilibration every this many steps</li>
<li>cutoff = global cutoff for charge-charge interactions (distance unit)</li>
<li>tolerance = precision to which charges will be equilibrated</li>
<li>maxiter = maximum iterations to perform charge equilibration</li>
<li>qfile = a filename with QEq parameters</li>
<li>zero or more keyword/value pairs may be appended</li>
<li>keyword = <em>alpha</em> or <em>qdamp</em> or <em>qstep</em></li>
</ul>
<pre class="literal-block">
<em>alpha</em> value = Slater type orbital exponent (qeq/slater only)
<em>qdamp</em> value = damping factor for damped dynamics charge solver (qeq/dynamic and qeq/fire only)
<em>qstep</em> value = time step size for damped dynamics charge solver (qeq/dynamic and qeq/fire only)
</pre>
</div>
<div class="section" id="examples">
<h2>Examples</h2>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">qeq</span><span class="o">/</span><span class="n">point</span> <span class="mi">1</span> <span class="mi">10</span> <span class="mf">1.0e-6</span> <span class="mi">200</span> <span class="n">param</span><span class="o">.</span><span class="n">qeq1</span>
<span class="n">fix</span> <span class="mi">1</span> <span class="n">qeq</span> <span class="n">qeq</span><span class="o">/</span><span class="n">shielded</span> <span class="mi">1</span> <span class="mi">8</span> <span class="mf">1.0e-6</span> <span class="mi">100</span> <span class="n">param</span><span class="o">.</span><span class="n">qeq2</span>
<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">qeq</span><span class="o">/</span><span class="n">slater</span> <span class="mi">5</span> <span class="mi">10</span> <span class="mf">1.0e-6</span> <span class="mi">100</span> <span class="n">params</span> <span class="n">alpha</span> <span class="mf">0.2</span>
<span class="n">fix</span> <span class="mi">1</span> <span class="n">qeq</span> <span class="n">qeq</span><span class="o">/</span><span class="n">dynamic</span> <span class="mi">1</span> <span class="mi">12</span> <span class="mf">1.0e-3</span> <span class="mi">100</span> <span class="n">my_qeq</span>
<span class="n">fix</span> <span class="mi">1</span> <span class="nb">all</span> <span class="n">qeq</span><span class="o">/</span><span class="n">fire</span> <span class="mi">1</span> <span class="mi">10</span> <span class="mf">1.0e-3</span> <span class="mi">100</span> <span class="n">my_qeq</span> <span class="n">qdamp</span> <span class="mf">0.2</span> <span class="n">qstep</span> <span class="mf">0.1</span>
</pre></div>
</div>
</div>
<div class="section" id="description">
<h2>Description</h2>
<p>Perform the charge equilibration (QEq) method as described in <a class="reference internal" href="fix_qeq_reax.html#rappe"><span class="std std-ref">(Rappe and Goddard)</span></a> and formulated in <a class="reference internal" href="neb.html#nakano"><span class="std std-ref">(Nakano)</span></a> (also known
as the matrix inversion method) and in <a class="reference internal" href="pair_smtbq.html#rick"><span class="std std-ref">(Rick and Stuart)</span></a> (also
known as the extended Lagrangian method) based on the
electronegativity equilization principle.</p>
<p>These fixes can be used with any <a class="reference internal" href="pair_style.html"><span class="doc">pair style</span></a> in
LAMMPS, so long as per-atom charges are defined. The most typical
use-case is in conjunction with a <a class="reference internal" href="pair_style.html"><span class="doc">pair style</span></a> that
performs charge equilibration periodically (e.g. every timestep), such
as the ReaxFF or Streitz-Mintmire potential.
But these fixes can also be used with
potentials that normally assume per-atom charges are fixed, e.g. a
<a class="reference internal" href="pair_buck.html"><span class="doc">Buckingham</span></a> or <a class="reference internal" href="pair_lj.html"><span class="doc">LJ/Coulombic</span></a> potential.</p>
<p>Because the charge equilibration calculation is effectively
independent of the pair style, these fixes can also be used to perform
a one-time assignment of charges to atoms. For example, you could
define the QEq fix, perform a zero-timestep run via the <a class="reference internal" href="run.html"><span class="doc">run</span></a>
command without any pair style defined which would set per-atom
charges (based on the current atom configuration), then remove the fix
via the <a class="reference internal" href="unfix.html"><span class="doc">unfix</span></a> command before performing further dynamics.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Computing and using charge values different from published
values defined for a fixed-charge potential like Buckingham or CHARMM
or AMBER, can have a strong effect on energies and forces, and
produces a different model than the published versions.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The <a class="reference internal" href="fix_qeq_comb.html"><span class="doc">fix qeq/comb</span></a> command must still be used
to perform charge equliibration with the <a class="reference internal" href="pair_comb.html"><span class="doc">COMB potential</span></a>. The <a class="reference internal" href="fix_qeq_reax.html"><span class="doc">fix qeq/reax</span></a>
command can be used to perform charge equilibration with the <a class="reference internal" href="pair_reax_c.html"><span class="doc">ReaxFF force field</span></a>, although fix qeq/shielded yields the
same results as fix qeq/reax if <em>Nevery</em>, <em>cutoff</em>, and <em>tolerance</em>
are the same. Eventually the fix qeq/reax command will be deprecated.</p>
</div>
<p>The QEq method minimizes the electrostatic energy of the system (or
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 <em>cutoff</em>. It reqires a few
parameters, in <em>metal</em> units, for each atom type which provided in a
file specified by <em>qfile</em>. The file has the following format</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="n">chi</span> <span class="n">eta</span> <span class="n">gamma</span> <span class="n">zeta</span> <span class="n">qcore</span>
<span class="mi">2</span> <span class="n">chi</span> <span class="n">eta</span> <span class="n">gamma</span> <span class="n">zeta</span> <span class="n">qcore</span>
<span class="o">...</span>
<span class="n">Ntype</span> <span class="n">chi</span> <span class="n">eta</span> <span class="n">gamma</span> <span class="n">zeta</span> <span class="n">qcore</span>
</pre></div>
</div>
<p>There is one line per atom type with the following parameters.
Only a subset of the parameters is used by each QEq style as descibed
below, thus the others can be set to 0.0 if desired.</p>
<ul class="simple">
<li><em>chi</em> = electronegativity in energy units</li>
<li><em>eta</em> = self-Coulomb potential in energy units</li>
<li><em>gamma</em> = shielded Coulomb constant defined by <a class="reference internal" href="#vanduin"><span class="std std-ref">ReaxFF force field</span></a> in distance units</li>
<li><em>zeta</em> = Slater type orbital exponent defined by the <a class="reference internal" href="pair_coul.html#streitz"><span class="std std-ref">Streitz-Mintmire</span></a> potential in reverse distance units</li>
<li><em>qcore</em> = charge of the nucleus defined by the <a class="reference internal" href="pair_coul.html#streitz"><span class="std std-ref">Streitz-Mintmire potential</span></a> potential in charge units</li>
</ul>
<p>The <em>qeq/point</em> style describes partial charges on atoms as point
charges. Interaction between a pair of charged particles is 1/r,
which is the simplest description of the interaction between charges.
Only the <em>chi</em> and <em>eta</em> parameters from the <em>qfile</em> file are used.
Note that Coulomb catastrophe can occur if repulsion between the pair
of charged particles is too weak. This style solves partial charges
on atoms via the matrix inversion method. A tolerance of 1.0e-6 is
usually a good number.</p>
<p>The <em>qeq/shielded</em> style describes partial charges on atoms also as
point charges, but uses a shielded Coulomb potential to describe the
interaction between a pair of charged particles. Interaction through
the shielded Coulomb is given by equation (13) of the <a class="reference internal" href="#vanduin"><span class="std std-ref">ReaxFF force field</span></a> paper. The shielding accounts for charge overlap
between charged particles at small separation. This style is the same
as <a class="reference internal" href="fix_qeq_reax.html"><span class="doc">fix qeq/reax</span></a>, and can be used with <a class="reference internal" href="pair_reax_c.html"><span class="doc">pair_style reax/c</span></a>. Only the <em>chi</em>, <em>eta</em>, and <em>gamma</em>
parameters from the <em>qfile</em> file are used. This style solves partial
charges on atoms via the matrix inversion method. A tolerance of
1.0e-6 is usually a good number.</p>
<p>The <em>qeq/slater</em> style describes partial charges on atoms as spherical
charge densities centered around atoms via the Slater 1<em>s</em> orbital, so
that the interaction between a pair of charged particles is the
product of two Slater 1<em>s</em> orbitals. The expression for the Slater
1<em>s</em> orbital is given under equation (6) of the
<a class="reference internal" href="pair_coul.html#streitz"><span class="std std-ref">Streitz-Mintmire</span></a> paper. Only the <em>chi</em>, <em>eta</em>, <em>zeta</em>, and
<em>qcore</em> parameters from the <em>qfile</em> file are used. This style solves
partial charges on atoms via the matrix inversion method. A tolerance
of 1.0e-6 is usually a good number. Keyword <em>alpha</em> can be used to
change the Slater type orbital exponent.</p>
<p>The <em>qeq/dynamic</em> 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 <em>chi</em> and <em>eta</em>
parameters from the <em>qfile</em> file are used. Note that Coulomb
catastrophe can occur if repulsion between the pair of charged
particles is too weak. A tolerance of 1.0e-3 is usually a good
number. Keyword <em>qdamp</em> can be used to change the damping factor, while
keyword <em>qstep</em> can be used to change the time step size.</p>
<p>The <a class="reference internal" href="#shan"><span class="std std-ref">*qeq/fire*</span></a> style describes the same charge model and charge
solver as the <em>qeq/dynamic</em> style, but employs a FIRE minimization
algorithm to solve for equilibrium charges.
Keyword <em>qdamp</em> can be used to change the damping factor, while
keyword <em>qstep</em> can be used to change the time step size.</p>
<p>Note that <em>qeq/point</em>, <em>qeq/shielded</em>, and <em>qeq/slater</em> describe
different charge models, whereas the matrix inversion method and the
extended Lagrangian method (<em>qeq/dynamic</em> and <em>qeq/fire</em>) are
different solvers.</p>
<p>Note that <em>qeq/point</em>, <em>qeq/dynamic</em> and <em>qeq/fire</em> styles all describe
charges as point charges that interact through 1/r relationship, but
solve partial charges on atoms using different solvers. These three
styles should yield comparable results if
the QEq parameters and <em>Nevery</em>, <em>cutoff</em>, and <em>tolerance</em> are the
same. Style <em>qeq/point</em> is typically faster, <em>qeq/dynamic</em> scales
better on larger sizes, and <em>qeq/fire</em> is faster than <em>qeq/dynamic</em>.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">To avoid the evaluation of the derivative of charge with respect
to position, which is typically ill-defined, the system should have a
zero net charge.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Developing QEq parameters (chi, eta, gamma, zeta, and qcore) is
non-trivial. Charges on atoms are not guaranteed to equilibrate with
arbitrary choices of these parameters. We do not develop these QEq
paramters. See the examples/qeq directory for some examples.</p>
</div>
</div>
<div class="section" id="restart-fix-modify-output-run-start-stop-minimize-info">
<h2>Restart, fix_modify, output, run start/stop, minimize info</h2>
<p>No information about these fixes is written to <a class="reference internal" href="restart.html"><span class="doc">binary restart files</span></a>. No global scalar or vector or per-atom
quantities are stored by these fixes for access by various <a class="reference internal" href="Section_howto.html#howto-15"><span class="std std-ref">output commands</span></a>. No parameter of these fixes
can be used with the <em>start/stop</em> keywords of the <a class="reference internal" href="run.html"><span class="doc">run</span></a>
command.</p>
<p>Thexe fixes are invoked during <a class="reference internal" href="minimize.html"><span class="doc">energy minimization</span></a>.</p>
</div>
<div class="section" id="restrictions">
<h2>Restrictions</h2>
<p>These fixes are part of the QEQ package. They are only enabled if
LAMMPS was built with that package. See the <a class="reference internal" href="Section_start.html#start-3"><span class="std std-ref">Making LAMMPS</span></a> section for more info.</p>
</div>
<div class="section" id="related-commands">
<h2>Related commands</h2>
<p><a class="reference internal" href="fix_qeq_reax.html"><span class="doc">fix qeq/reax</span></a>, <a class="reference internal" href="fix_qeq_comb.html"><span class="doc">fix qeq/comb</span></a></p>
<p><strong>Default:</strong> none</p>
<hr class="docutils" />
<p id="rappe"><strong>(Rappe and Goddard)</strong> A. K. Rappe and W. A. Goddard III, J Physical
Chemistry, 95, 3358-3363 (1991).</p>
<p id="nakano"><strong>(Nakano)</strong> A. Nakano, Computer Physics Communications, 104, 59-69 (1997).</p>
<p id="rick"><strong>(Rick and Stuart)</strong> S. W. Rick, S. J. Stuart, B. J. Berne, J Chemical Physics
101, 16141 (1994).</p>
<p id="streitz"><strong>(Streitz-Mintmire)</strong> F. H. Streitz, J. W. Mintmire, Physical Review B, 50,
16, 11996 (1994)</p>
<p id="vanduin"><strong>(ReaxFF)</strong> A. C. T. van Duin, S. Dasgupta, F. Lorant, W. A. Goddard III, J
Physical Chemistry, 105, 9396-9049 (2001)</p>
<p id="shan"><strong>(QEq/Fire)</strong> T.-R. Shan, A. P. Thompson, S. J. Plimpton, in preparation</p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2013 Sandia Corporation.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2/js/lightbox.min.js"></script>
<script type="text/javascript" src="_static/sphinxcontrib-images/LightBox2/lightbox2-customize/jquery-noconflict.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>