<li>one or more keyword/value pairs may be listed</li>
</ul>
<preclass="literal-block">
keyword = <em>mesh</em> or <em>order</em> or <em>order/disp</em> or <em>mix/disp</em> or <em>overlap</em> or <em>minorder</em> or <em>force</em> or <em>gewald</em> or <em>gewald/disp</em> or <em>slab</em> or (nozforce* or <em>compute</em> or <em>cutoff/adjust</em> or <em>fftbench</em> or <em>collective</em> or <em>diff</em> or <em>kmax/ewald</em> or <em>force/disp/real</em> or <em>force/disp/kspace</em> or <em>splittol</em> or <em>disp/auto</em>:l
<em>mesh</em> value = x y z
x,y,z = grid size in each dimension for long-range Coulombics
<em>mesh/disp</em> value = x y z
x,y,z = grid size in each dimension for 1/r^6 dispersion
<em>order</em> value = N
N = extent of Gaussian for PPPM or MSM mapping of charge to grid
<em>order/disp</em> value = N
N = extent of Gaussian for PPPM mapping of dispersion term to grid
<em>mix/disp</em> value = <em>pair</em> or <em>geom</em> or <em>none</em>
<em>overlap</em> = <em>yes</em> or <em>no</em> = whether the grid stencil for PPPM is allowed to overlap into more than the nearest-neighbor processor
<em>minorder</em> value = M
M = min allowed extent of Gaussian when auto-adjusting to minimize grid communication
<em>force</em> value = accuracy (force units)
<em>gewald</em> value = rinv (1/distance units)
rinv = G-ewald parameter for Coulombics
<em>gewald/disp</em> value = rinv (1/distance units)
rinv = G-ewald parameter for dispersion
<em>slab</em> value = volfactor or <em>nozforce</em>
volfactor = ratio of the total extended volume used in the
2d approximation compared with the volume of the simulation domain
<em>nozforce</em> turns off kspace forces in the z direction
<em>compute</em> value = <em>yes</em> or <em>no</em>
<em>cutoff/adjust</em> value = <em>yes</em> or <em>no</em>
<em>pressure/scalar</em> value = <em>yes</em> or <em>no</em>
<em>fftbench</em> value = <em>yes</em> or <em>no</em>
<em>collective</em> value = <em>yes</em> or <em>no</em>
<em>diff</em> value = <em>ad</em> or <em>ik</em> = 2 or 4 FFTs for PPPM in smoothed or non-smoothed mode
<em>kmax/ewald</em> value = kx ky kz
kx,ky,kz = number of Ewald sum kspace vectors in each dimension
<em>force/disp/real</em> value = accuracy (force units)
<em>force/disp/kspace</em> value = accuracy (force units)
<em>splittol</em> value = tol
tol = relative size of two eigenvalues (see discussion below)
<p>The <em>compute</em> keyword allows Kspace computations to be turned off,
even though a <aclass="reference internal"href="kspace_style.html"><spanclass="doc">kspace_style</span></a> is defined. This is
not useful for running a real simulation, but can be useful for
debugging purposes or for computing only partial forces that do not
include the Kspace contribution. You can also do this by simply not
defining a <aclass="reference internal"href="kspace_style.html"><spanclass="doc">kspace_style</span></a>, but a Kspace-compatible
<aclass="reference internal"href="pair_style.html"><spanclass="doc">pair_style</span></a> requires a kspace style to be defined.
This keyword gives you that option.</p>
<p>The <em>cutoff/adjust</em> keyword applies only to MSM. If this option is
turned on, the Coulombic cutoff will be automatically adjusted at the
beginning of the run to give the desired estimated error. Other
cutoffs such as LJ will not be affected. If the grid is not set using
the <em>mesh</em> command, this command will also attempt to use the optimal
grid that minimizes cost using an estimate given by
<aclass="reference internal"href="kspace_style.html#hardy"><spanclass="std std-ref">(Hardy)</span></a>. Note that this cost estimate is not exact, somewhat
experimental, and still may not yield the optimal parameters.</p>
<p>The <em>pressure/scalar</em> keyword applies only to MSM. If this option is
turned on, only the scalar pressure (i.e. (Pxx + Pyy + Pzz)/3.0) will
be computed, which can be used, for example, to run an isotropic barostat.
Computing the full pressure tensor with MSM is expensive, and this option
provides a faster alternative. The scalar pressure is computed using a
relationship between the Coulombic energy and pressure <aclass="reference internal"href="#hummer"><spanclass="std std-ref">(Hummer)</span></a>
instead of using the virial equation. This option cannot be used to access
individual components of the pressure tensor, to compute per-atom virial,
or with suffix kspace/pair styles of MSM, like OMP or GPU.</p>
<p>The <em>fftbench</em> keyword applies only to PPPM. It is on by default. If
this option is turned off, LAMMPS will not take the time at the end
of a run to give FFT benchmark timings, and will finish a few seconds
faster than it would if this option were on.</p>
<p>The <em>collective</em> keyword applies only to PPPM. It is set to <em>no</em> by
default, except on IBM BlueGene machines. If this option is set to
<em>yes</em>, LAMMPS will use MPI collective operations to remap data for
3d-FFT operations instead of the default point-to-point communication.
This is faster on IBM BlueGene machines, and may also be faster on
other machines if they have an efficient implementation of MPI
collective operations and adequate hardware.</p>
<p>The <em>diff</em> keyword specifies the differentiation scheme used by the
PPPM method to compute forces on particles given electrostatic
potentials on the PPPM mesh. The <em>ik</em> approach is the default for
PPPM and is the original formulation used in <aclass="reference internal"href="kspace_style.html#hockney"><spanclass="std std-ref">(Hockney)</span></a>. It
performs differentiation in Kspace, and uses 3 FFTs to transfer each
component of the computed fields back to real space for total of 4
FFTs per timestep.</p>
<p>The analytic differentiation <em>ad</em> approach uses only 1 FFT to transfer
information back to real space for a total of 2 FFTs per timestep. It
then performs analytic differentiation on the single quantity to
generate the 3 components of the electric field at each grid point.
This is sometimes referred to as “smoothed” PPPM. This approach
requires a somewhat larger PPPM mesh to achieve the same accuracy as
the <em>ik</em> method. Currently, only the <em>ik</em> method (default) can be
used for a triclinic simulation cell with PPPM. The <em>ad</em> method is
always used for MSM.</p>
<divclass="admonition note">
<pclass="first admonition-title">Note</p>
<pclass="last">Currently, not all PPPM styles support the <em>ad</em> option. Support
for those PPPM variants will be added later.</p>
</div>
<p>The <em>kmax/ewald</em> keyword sets the number of kspace vectors in each
dimension for kspace style <em>ewald</em>. The three values must be positive
integers, or else (0,0,0), which unsets the option. When this option
is not set, the Ewald sum scheme chooses its own kspace vectors,
consistent with the user-specified accuracy and pairwise cutoff. In
any case, if kspace style <em>ewald</em> is invoked, the values used are
printed to the screen and the log file at the start of the run.</p>
<p>With the <em>mix/disp</em> keyword one can select the mixing rule for the
dispersion coefficients. With <em>pair</em>, the dispersion coefficients of
unlike types are computed as indicated with
<aclass="reference internal"href="pair_modify.html"><spanclass="doc">pair_modify</span></a>. With <em>geom</em>, geometric mixing is
enforced on the dispersion coefficients in the kspace
coefficients. When using the arithmetic mixing rule, this will
speed-up the simulations but introduces some error in the force
computations, as shown in <aclass="reference internal"href="#wennberg"><spanclass="std std-ref">(Wennberg)</span></a>. With <em>none</em>, it is
assumed that no mixing rule is applicable. Splitting of the dispersion
coefficients will be performed as described in
<aclass="reference internal"href="kspace_style.html#isele-holder"><spanclass="std std-ref">(Isele-Holder)</span></a>. This splitting can be influenced with
the <em>splittol</em> keywords. Only the eigenvalues that are larger than tol
compared to the largest eigenvalues are included. Using this keywords
the original matrix of dispersion coefficients is approximated. This
leads to faster computations, but the accuracy in the reciprocal space
computations of the dispersion part is decreased.</p>
<p>The <em>force/disp/real</em> and <em>force/disp/kspace</em> keywords set the force
accuracy for the real and space computations for the dispersion part
of pppm/disp. As shown in <aclass="reference internal"href="kspace_style.html#isele-holder"><spanclass="std std-ref">(Isele-Holder)</span></a>, optimal
performance and accuracy in the results is obtained when these values
are different.</p>
<p>The <em>disp/auto</em> option controlls whether the pppm/disp is allowed to
generate PPPM parameters automatically. If set to <em>no</em>, parameters have
to be specified using the <em>gewald/disp</em>, <em>mesh/disp</em>,
<em>force/disp/real</em> or <em>force/disp/kspace</em> keywords, or
the code will stop with an error message. When this option is set to
<em>yes</em>, the error message will not appear and the simulation will start.
For a typical application, using the automatic parameter generation will provide
simulations that are either inaccurate or slow. Using this option is thus not
recommended. For guidelines on how to obtain good parameters, see the <aclass="reference internal"href="Section_howto.html#howto-23"><spanclass="std std-ref">How-To</span></a> discussion.</p>
Built with <ahref="http://sphinx-doc.org/">Sphinx</a> using a <ahref="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <ahref="https://readthedocs.org">Read the Docs</a>.