+ C = \left(\frac{\gamma_{rep}}{\gamma_{rep}-\gamma_{att}}\right) \left(\frac{\gamma_{rep}}{\gamma_{att}}\right)^{\left(\frac{\gamma_{att}}{\gamma_{rep}-\gamma_{att}}\right)}
+<TR><TD >enable the accelerator package </TD><TD > via "-c on" and "-k on" <A HREF = "Section_start.html#start_7">command-line switches</A>, <br> only for USER-CUDA and KOKKOS packages </TD></TR>
+<TR><TD >set any needed options for the package </TD><TD > via "-pk" <A HREF = "Section_start.html#start_7">command-line switch</A> or <A HREF = "package.html">package</A> command, <br> only if defaults need to be changed </TD></TR>
+<TR><TD >use accelerated styles in your input script </TD><TD > via "-sf" <A HREF = "Section_start.html#start_7">command-line switch</A> or <A HREF = "suffix.html">suffix</A> command
+</TD></TR></TABLE></DIV>
+
+<P>The first 4 steps can be done as a single command, using the
+src/Make.py tool. The Make.py tool is discussed in <A HREF = "Section_start.html#start_4">Section
+2.4</A> of the manual, and its use is
+illustrated in the individual accelerator sections. Typically these
+steps only need to be done once, to create an executable that uses one
+or more accelerator packages.
+</P>
+<P>The last 4 steps can all be done from the command-line when LAMMPS is
+launched, without changing your input script, as illustrated in the
+individual accelerator sections. Or you can add
+<A HREF = "package.html">package</A> and <A HREF = "suffix.html">suffix</A> commands to your input
+script.
+</P>
+<P>IMPORTANT NOTE: With a few exceptions, you can build a single LAMMPS
+executable with all its accelerator packages installed. Note that the
+USER-INTEL and KOKKOS packages require you to choose one of their
+options when building. I.e. CPU or Phi for USER-INTEL. OpenMP, Cuda,
+or Phi for KOKKOS. Here are the exceptions; you cannot build a single
+executable with:
+</P>
+<UL><LI>both the USER-INTEL Phi and KOKKOS Phi options
+<LI>the USER-INTEL Phi or Kokkos Phi option, and either the USER-CUDA or GPU packages
+</UL>
+<P>See the examples/accelerate/README and make.list files for sample
+Make.py commands that build LAMMPS with any or all of the accelerator
+packages. As an example, here is a command that builds with all the
+GPU related packages installed (USER-CUDA, GPU, KOKKOS with Cuda),
+including settings to build the needed auxiliary USER-CUDA and GPU
+<DD>This is not allowed if the kspace_modify overlap setting is no.
+
+<DT><I>PPPM order < minimum allowed order</I>
+
+<DD>The default minimum order is 2. This can be reset by the
+kspace_modify minorder command.
+
+<DT><I>PPPM order cannot be < 2 or > than %d</I>
+
+<DD>This is a limitation of the PPPM implementation in LAMMPS.
+
+<DT><I>PPPMDisp Coulomb grid is too large</I>
+
+<DD>The global PPPM grid is larger than OFFSET in one or more dimensions.
+OFFSET is currently set to 4096. You likely need to decrease the
+requested accuracy.
+
+<DT><I>PPPMDisp Dispersion grid is too large</I>
+
+<DD>The global PPPM grid is larger than OFFSET in one or more dimensions.
+OFFSET is currently set to 4096. You likely need to decrease the
+requested accuracy.
+
+<DT><I>PPPMDisp can only currently be used with comm_style brick</I>
+
+<DD>This is a current restriction in LAMMPS.
+
+<DT><I>PPPMDisp coulomb order cannot be greater than %d</I>
+
+<DD>This is a limitation of the PPPM implementation in LAMMPS.
+
+<DT><I>PPPMDisp used but no parameters set, for further information please see the pppm/disp documentation</I>
+
+<DD>An efficient and accurate usage of the pppm/disp requires settings via the kspace_modify command. Please see the pppm/disp documentation for further instructions.
+
+<DT><I>PRD command before simulation box is defined</I>
+
+<DD>The prd command cannot be used before a read_data,
+read_restart, or create_box command.
+
+<DT><I>PRD nsteps must be multiple of t_event</I>
+
+<DD>Self-explanatory.
+
+<DT><I>PRD t_corr must be multiple of t_event</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Package command after simulation box is defined</I>
+
+<DD>The package command cannot be used afer a read_data, read_restart, or
+create_box command.
+
+<DT><I>Package cuda command without USER-CUDA package enabled</I>
+
+<DD>The USER-CUDA package must be installed via "make yes-user-cuda"
+before LAMMPS is built, and the "-c on" must be used to enable the
+package.
+
+<DT><I>Package gpu command without GPU package installed</I>
+
+<DD>The GPU package must be installed via "make yes-gpu" before LAMMPS is
+built.
+
+<DT><I>Package intel command without USER-INTEL package installed</I>
+
+<DD>The USER-INTEL package must be installed via "make yes-user-intel"
+before LAMMPS is built.
+
+<DT><I>Package kokkos command without KOKKOS package enabled</I>
+
+<DD>The KOKKOS package must be installed via "make yes-kokkos" before
+LAMMPS is built, and the "-k on" must be used to enable the package.
+
+<DT><I>Package omp command without USER-OMP package installed</I>
+
+<DD>The USER-OMP package must be installed via "make yes-user-omp" before
+LAMMPS is built.
+
+<DT><I>Pair body requires atom style body</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Pair body requires body style nparticle</I>
+
+<DD>This pair style is specific to the nparticle body style.
+
+<DT><I>Pair brownian requires atom style sphere</I>
+<DT><I>Pair style in data file differs from currently defined pair style</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Particle deposition was unsuccessful</I>
+
+<DD>The fix deposit command was not able to insert as many atoms as
+needed. The requested volume fraction may be too high, or other atoms
+may be in the insertion region.
+
+<DT><I>Proc sub-domain size < neighbor skin, could lead to lost atoms</I>
+
+<DD>The decomposition of the physical domain (likely due to load
+balancing) has led to a processor's sub-domain being smaller than the
+neighbor skin in one or more dimensions. Since reneighboring is
+triggered by atoms moving the skin distance, this may lead to lost
+atoms, if an atom moves all the way across a neighboring processor's
+sub-domain before reneighboring is triggered.
+
+<DT><I>Reducing PPPM order b/c stencil extends beyond nearest neighbor processor</I>
+
+<DD>This may lead to a larger grid than desired. See the kspace_modify overlap
+command to prevent changing of the PPPM order.
+
+<DT><I>Reducing PPPMDisp Coulomb order b/c stencil extends beyond neighbor processor</I>
+
+<DD>This may lead to a larger grid than desired. See the kspace_modify overlap
+command to prevent changing of the PPPM order.
+
+<DT><I>Reducing PPPMDisp dispersion order b/c stencil extends beyond neighbor processor</I>
+
+<DD>This may lead to a larger grid than desired. See the kspace_modify overlap
+command to prevent changing of the PPPM order.
+
+<DT><I>Replacing a fix, but new group != old group</I>
+
+<DD>The ID and style of a fix match for a fix you are changing with a fix
+command, but the new group you are specifying does not match the old
+group.
+
+<DT><I>Replicating in a non-periodic dimension</I>
+
+<DD>The parameters for a replicate command will cause a non-periodic
+dimension to be replicated; this may cause unwanted behavior.
+
+<DT><I>Resetting reneighboring criteria during PRD</I>
+
+<DD>A PRD simulation requires that neigh_modify settings be delay = 0,
+every = 1, check = yes. Since these settings were not in place,
+LAMMPS changed them and will restore them to their original values
+after the PRD simulation.
+
+<DT><I>Resetting reneighboring criteria during TAD</I>
+
+<DD>A TAD simulation requires that neigh_modify settings be delay = 0,
+every = 1, check = yes. Since these settings were not in place,
+LAMMPS changed them and will restore them to their original values
+after the PRD simulation.
+
+<DT><I>Resetting reneighboring criteria during minimization</I>
+
+<DD>Minimization requires that neigh_modify settings be delay = 0, every =
+1, check = yes. Since these settings were not in place, LAMMPS
+changed them and will restore them to their original values after the
+minimization.
+
+<DT><I>Restart file used different # of processors</I>
+
+<DD>The restart file was written out by a LAMMPS simulation running on a
+different number of processors. Due to round-off, the trajectories of
+your restarted simulation may diverge a little more quickly than if
+you ran on the same # of processors.
+
+<DT><I>Restart file used different 3d processor grid</I>
+
+<DD>The restart file was written out by a LAMMPS simulation running on a
+different 3d grid of processors. Due to round-off, the trajectories
+of your restarted simulation may diverge a little more quickly than if
+you ran on the same # of processors.
+
+<DT><I>Restart file used different boundary settings, using restart file values</I>
+
+<DD>Your input script cannot change these restart file settings.
+
+<DT><I>Restart file used different newton bond setting, using restart file value</I>
+
+<DD>The restart file value will override the setting in the input script.
+
+<DT><I>Restart file used different newton pair setting, using input script value</I>
+
+<DD>The input script value will override the setting in the restart file.
+
+<DT><I>Restrain problem: %d %ld %d %d %d %d</I>
+
+<DD>Conformation of the 4 listed dihedral atoms is extreme; you may want
+to check your simulation geometry.
+
+<DT><I>Running PRD with only one replica</I>
+
+<DD>This is allowed, but you will get no parallel speed-up.
+
+<DT><I>SRD bin shifting turned on due to small lamda</I>
+
+<DD>This is done to try to preserve accuracy.
+
+<DT><I>SRD bin size for fix srd differs from user request</I>
+
+<DD>Fix SRD had to adjust the bin size to fit the simulation box. See the
+cubic keyword if you want this message to be an error vs warning.
+
+<DT><I>SRD bins for fix srd are not cubic enough</I>
+
+<DD>The bin shape is not within tolerance of cubic. See the cubic
+keyword if you want this message to be an error vs warning.
+
+<DT><I>SRD particle %d started inside big particle %d on step %ld bounce %d</I>
+
+<DD>See the inside keyword if you want this message to be an error vs
+warning.
+
+<DT><I>SRD particle %d started inside wall %d on step %ld bounce %d</I>
+
+<DD>See the inside keyword if you want this message to be an error vs
+warning.
+
+<DT><I>Shake determinant < 0.0</I>
+
+<DD>The determinant of the quadratic equation being solved for a single
+cluster specified by the fix shake command is numerically suspect. LAMMPS
+will set it to 0.0 and continue.
+
+<DT><I>Should not allow rigid bodies to bounce off relecting walls</I>
+
+<DD>LAMMPS allows this, but their dynamics are not computed correctly.
+
+<DT><I>Should not use fix nve/limit with fix shake</I>
+
+<DD>This will lead to invalid constraint forces in the SHAKE computation.
+
+<DT><I>Simulations might be very slow because of large number of structure factors</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Slab correction not needed for MSM</I>
+
+<DD>Slab correction is intended to be used with Ewald or PPPM and is not needed by MSM.
+
+<DT><I>System is not charge neutral, net charge = %g</I>
+
+<DD>The total charge on all atoms on the system is not 0.0, which
+is not valid for the long-range Coulombic solvers.
+
+<DT><I>Table inner cutoff >= outer cutoff</I>
+
+<DD>You specified an inner cutoff for a Coulombic table that is longer
+than the global cutoff. Probably not what you wanted.
+
+<DT><I>Temperature for MSST is not for group all</I>
+
+<DD>User-assigned temperature to MSST fix does not compute temperature for
+all atoms. Since MSST computes a global pressure, the kinetic energy
+contribution from the temperature is assumed to also be for all atoms.
+Thus the pressure used by MSST could be inaccurate.
+
+<DT><I>Temperature for NPT is not for group all</I>
+
+<DD>User-assigned temperature to NPT fix does not compute temperature for
+all atoms. Since NPT computes a global pressure, the kinetic energy
+contribution from the temperature is assumed to also be for all atoms.
+Thus the pressure used by NPT could be inaccurate.
+
+<DT><I>Temperature for fix modify is not for group all</I>
+
+<DD>The temperature compute is being used with a pressure calculation
+which does operate on group all, so this may be inconsistent.
+
+<DT><I>Temperature for thermo pressure is not for group all</I>
+
+<DD>User-assigned temperature to thermo via the thermo_modify command does
+not compute temperature for all atoms. Since thermo computes a global
+pressure, the kinetic energy contribution from the temperature is
+assumed to also be for all atoms. Thus the pressure printed by thermo
+could be inaccurate.
+
+<DT><I>The fix ave/spatial command has been replaced by the more flexible fix ave/chunk and compute chunk/atom commands -- fix ave/spatial will be removed in the summer of 2015</I>
+
+<DD>Self-explanatory.
+
+<DT><I>The minimizer does not re-orient dipoles when using fix efield</I>
+
+<DD>This means that only the atom coordinates will be minimized,
+not the orientation of the dipoles.
+
+<DT><I>Too many common neighbors in CNA %d times</I>
+
+<DD>More than the maximum # of neighbors was found multiple times. This
+was unexpected.
+
+<DT><I>Too many inner timesteps in fix ttm</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Too many neighbors in CNA for %d atoms</I>
+
+<DD>More than the maximum # of neighbors was found multiple times. This
+was unexpected.
+
+<DT><I>Triclinic box skew is large</I>
+
+<DD>The displacement in a skewed direction is normally required to be less
+than half the box length in that dimension. E.g. the xy tilt must be
+between -half and +half of the x box length. You have relaxed the
+constraint using the box tilt command, but the warning means that a
+LAMMPS simulation may be inefficient as a result.
+
+<DT><I>Use special bonds = 0,1,1 with bond style fene</I>
+
+<DD>Most FENE models need this setting for the special_bonds command.
+
+<DT><I>Use special bonds = 0,1,1 with bond style fene/expand</I>
+
+<DD>Most FENE models need this setting for the special_bonds command.
+
+<DT><I>Using a manybody potential with bonds/angles/dihedrals and special_bond exclusions</I>
+
+<DD>This is likely not what you want to do. The exclusion settings will
+eliminate neighbors in the neighbor list, which the manybody potential
+needs to calculated its terms correctly.
+
+<DT><I>Using compute temp/deform with inconsistent fix deform remap option</I>
+
+<DD>Fix nvt/sllod assumes deforming atoms have a velocity profile provided
+by "remap v" or "remap none" as a fix deform option.
+
+<DT><I>Using compute temp/deform with no fix deform defined</I>
+
+<DD>This is probably an error, since it makes little sense to use
+compute temp/deform in this case.
+
+<DT><I>Using fix srd with box deformation but no SRD thermostat</I>
+
+<DD>The deformation will heat the SRD particles so this can
+be dangerous.
+
+<DT><I>Using kspace solver on system with no charge</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Using largest cut-off for lj/long/dipole/long long long</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Using largest cutoff for buck/long/coul/long</I>
+
+<DD>Self-exlanatory.
+
+<DT><I>Using largest cutoff for lj/long/coul/long</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Using largest cutoff for pair_style lj/long/tip4p/long</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Using package gpu without any pair style defined</I>
+
+<DD>Self-explanatory.
+
+<DT><I>Using pair tail corrections with nonperiodic system</I>
+
+<DD>This is probably a bogus thing to do, since tail corrections are
+computed by integrating the density of a periodic system out to
+<LI>any of the <A HREF = "compute.html">compute */chunk</A> commands
+</UL>
+<P>Here, each of the 3 kinds of chunk-related commands is briefly
+overviewed. Then some examples are given of how to compute different
+properties with chunk commands.
+</P>
+<H5>Compute chunk/atom command:
+</H5>
+<P>This compute can assign atoms to chunks of various styles. Only atoms
+in the specified group and optional specified region are assigned to a
+chunk. Here are some possible chunk definitions:
+</P>
+<DIV ALIGN=center><TABLE BORDER=1 >
+<TR><TD >atoms in same molecule </TD><TD > chunk ID = molecule ID </TD></TR>
+<TR><TD >atoms of same atom type </TD><TD > chunk ID = atom type </TD></TR>
+<TR><TD >all atoms with same atom property (charge, radius, etc) </TD><TD > chunk ID = output of compute property/atom </TD></TR>
+<TR><TD >atoms in same cluster </TD><TD > chunk ID = output of <A HREF = "compute_cluster_atom.html">compute cluster/atom</A> command </TD></TR>
+<TR><TD >atoms in same spatial bin </TD><TD > chunk ID = bin ID </TD></TR>
+<TR><TD >atoms in same rigid body </TD><TD > chunk ID = molecule ID used to define rigid bodies </TD></TR>
+<TR><TD >atoms with similar potential energy </TD><TD > chunk ID = output of <A HREF = "compute_pe_atom.html">compute pe/atom</A> </TD></TR>
+<TR><TD >atoms with same local defect structure </TD><TD > chunk ID = output of <A HREF = "compute_centro_atom.html">compute centro/atom</A> or <A HREF = "compute_coord_atom.html">compute coord/atom</A> command
+</TD></TR></TABLE></DIV>
+
+<P>Note that chunk IDs are integer values, so for atom properties or
+computes that produce a floating point value, they will be truncated
+to an integer. You could also use the compute in a variable that
+scales the floating point value to spread it across multiple intergers.
+</P>
+<P>Spatial bins can be of various kinds, e.g. 1d bins = slabs, 2d bins =
+pencils, 3d bins = boxes, spherical bins, cylindrical bins.
+</P>
+<P>This compute also calculates the number of chunks <I>Nchunk</I>, which is
+used by other commands to tally per-chunk data. <I>Nchunk</I> can be a
+static value or change over time (e.g. the number of clusters). The
+chunk ID for an individual atom can also be static (e.g. a molecule
+ID), or dynamic (e.g. what spatial bin an atom is in as it moves).
+</P>
+<P>Note that this compute allows the per-atom output of other
+<A HREF = "compute.html">computes</A>, <A HREF = "fix.html">fixes</A>, and
+<A HREF = "variable.html">variables</A> to be used to define chunk IDs for each
+atom. This means you can write your own compute or fix to output a
+per-atom quantity to use as chunk ID. See
+<A HREF = "Section_modify.html">Section_modify</A> of the documentation for how to
+do this. You can also define a <A HREF = "variable.html">per-atom variable</A> in
+the input script that uses a formula to generate a chunk ID for each
+atom.
+</P>
+<H5>Fix ave/chunk command:
+</H5>
+<P>This fix takes the ID of a <A HREF = "compute_chunk_atom.html">compute
+chunk/atom</A> command as input. For each chunk,
+it then sums one or more specified per-atom values over the atoms in
+each chunk. The per-atom values can be any atom property, such as
+<LI>perform sophisticated analyses of your MD simulation
+<LI>visualize your MD simulation
+<LI>plot your output data
+</UL>
+<P>A few tools for pre- and post-processing tasks are provided as part of
+the LAMMPS package; they are described in <A HREF = "Section_tools.html">this
+section</A>. However, many people use other codes or
+write their own tools for these tasks.
+</P>
+<P>As noted above, our group has also written and released a separate
+toolkit called <A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py</A> which addresses some of the listed
+bullets. It provides tools for doing setup, analysis, plotting, and
+visualization for LAMMPS simulations. Pizza.py is written in
+<A HREF = "http://www.python.org">Python</A> and is available for download from <A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">the Pizza.py WWW
+site</A>.
+</P>
+<P>LAMMPS requires as input a list of initial atom coordinates and types,
+molecular topology information, and force-field coefficients assigned
+to all atoms and bonds. LAMMPS will not build molecular systems and
+assign force-field parameters for you.
+</P>
+<P>For atomic systems LAMMPS provides a <A HREF = "create_atoms.html">create_atoms</A>
+command which places atoms on solid-state lattices (fcc, bcc,
+user-defined, etc). Assigning small numbers of force field
+coefficients can be done via the <A HREF = "pair_coeff.html">pair coeff</A>, <A HREF = "bond_coeff.html">bond
+<LI>If you find a bug, <A HREF = "Section_errors.html#err_2">Section_errors 2</A>
+describes how to report it.
+
+<LI>If you publish a paper using LAMMPS results, send the citation (and
+any cool pictures or movies if you like) to add to the Publications,
+Pictures, and Movies pages of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A>, with links
+and attributions back to you.
+
+<LI>Create a new Makefile.machine that can be added to the src/MAKE
+directory.
+
+<LI>The tools sub-directory of the LAMMPS distribution has various
+stand-alone codes for pre- and post-processing of LAMMPS data. More
+details are given in <A HREF = "Section_tools.html">Section_tools</A>. If you write
+a new tool that users will find useful, it can be added to the LAMMPS
+distribution.
+
+<LI>LAMMPS is designed to be easy to extend with new code for features
+like potentials, boundary conditions, diagnostic computations, etc.
+<A HREF = "Section_modify.html">This section</A> gives details. If you add a
+feature of general interest, it can be added to the LAMMPS
+distribution.
+
+<LI>The Benchmark page of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> lists LAMMPS
+performance on various platforms. The files needed to run the
+benchmarks are part of the LAMMPS distribution. If your machine is
+sufficiently different from those listed, your timing data can be
+added to the page.
+
+<LI>You can send feedback for the User Comments page of the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW
+Site</A>. It might be added to the page. No promises.
+
+<LI>Cash. Small denominations, unmarked bills preferred. Paper sack OK.
+Leave on desk. VISA also accepted. Chocolate chip cookies
+encouraged.
+</UL>
+<HR>
+
+<H4><A NAME = "intro_5"></A>1.5 Acknowledgments and citations
+</H4>
+<P>LAMMPS development has been funded by the <A HREF = "http://www.doe.gov">US Department of
+Energy</A> (DOE), through its CRADA, LDRD, ASCI, and Genomes-to-Life
+programs and its <A HREF = "http://www.sc.doe.gov/ascr/home.html">OASCR</A> and <A HREF = "http://www.er.doe.gov/production/ober/ober_top.html">OBER</A> offices.
+</P>
+<P>Specifically, work on the latest version was funded in part by the US
+Department of Energy's Genomics:GTL program
+(<A HREF = "http://www.doegenomestolife.org">www.doegenomestolife.org</A>) under the <A HREF = "http://www.genomes2life.org">project</A>, "Carbon
+Sequestration in Synechococcus Sp.: From Molecular Machines to
+Hierarchical Modeling".
+</P>
+
+
+
+
+
+
+
+
+
+
+<P>The following paper describe the basic parallel algorithms used in
+LAMMPS. If you use LAMMPS results in your published work, please cite
+this paper and include a pointer to the <A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A>
+(http://lammps.sandia.gov):
+</P>
+<P>S. J. Plimpton, <B>Fast Parallel Algorithms for Short-Range Molecular
+Dynamics</B>, J Comp Phys, 117, 1-19 (1995).
+</P>
+<P>Other papers describing specific algorithms used in LAMMPS are listed
+under the <A HREF = "http://lammps.sandia.gov/cite.html">Citing LAMMPS link</A> of
+the LAMMPS WWW page.
+</P>
+<P>The <A HREF = "http://lammps.sandia.gov/papers.html">Publications link</A> on the
+LAMMPS WWW page lists papers that have cited LAMMPS. If your paper is
+not listed there for some reason, feel free to send us the info. If
+the simulations in your paper produced cool pictures or animations,
+we'll be pleased to add them to the
+<A HREF = "http://lammps.sandia.gov/pictures.html">Pictures</A> or
+<A HREF = "http://lammps.sandia.gov/movies.html">Movies</A> pages of the LAMMPS WWW
+site.
+</P>
+<P>The core group of LAMMPS developers is at Sandia National Labs:
+</P>
+<UL><LI>Steve Plimpton, sjplimp at sandia.gov
+<LI>Aidan Thompson, athomps at sandia.gov
+<LI>Paul Crozier, pscrozi at sandia.gov
+</UL>
+<P>The following folks are responsible for significant contributions to
+the code, or other aspects of the LAMMPS development effort. Many of
+the packages they have written are somewhat unique to LAMMPS and the
+code would not be as general-purpose as it is without their expertise
+and efforts.
+</P>
+<UL><LI>Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CG-CMM and USER-OMP packages
+<LI>Roy Pollock (LLNL), Ewald and PPPM solvers
+<LI>Mike Brown (ORNL), brownw at ornl.gov, GPU package
+<LI>Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential
+<LI>Mike Parks (Sandia), mlparks at sandia.gov, PERI package for Peridynamics
+<LI>Rudra Mukherjee (JPL), Rudranarayan.M.Mukherjee at jpl.nasa.gov, POEMS package for articulated rigid body motion
+<LI>Reese Jones (Sandia) and collaborators, rjones at sandia.gov, USER-ATC package for atom/continuum coupling
+<LI>Ilya Valuev (JIHT), valuev at physik.hu-berlin.de, USER-AWPMD package for wave-packet MD
+<LI>Christian Trott (U Tech Ilmenau), christian.trott at tu-ilmenau.de, USER-CUDA package
+<LI>Andres Jaramillo-Botero (Caltech), ajaramil at wag.caltech.edu, USER-EFF package for electron force field
+<LI>Christoph Kloss (JKU), Christoph.Kloss at jku.at, USER-LIGGGHTS package for granular models and granular/fluid coupling
+<LI>Metin Aktulga (LBL), hmaktulga at lbl.gov, USER-REAXC package for C version of ReaxFF
+<LI>Georg Gunzenmuller (EMI), georg.ganzenmueller at emi.fhg.de, USER-SPH package
+</UL>
+<P>As discussed in <A HREF = "Section_history.html">Section_history</A>, LAMMPS
+originated as a cooperative project between DOE labs and industrial
+partners. Folks involved in the design and testing of the original
+version of LAMMPS were the following:
+</P>
+<UL><LI>John Carpenter (Mayo Clinic, formerly at Cray Research)
+<LI>Terry Stouch (Lexicon Pharmaceuticals, formerly at Bristol Myers Squibb)
+10.6 <A HREF = "#mod_6">Fix styles</A> which include integrators, temperature and pressure control, force constraints, boundary conditions, diagnostic output, etc<BR>
+extract_fix(), and extract_variable() methods return values or
+pointers to data structures internal to LAMMPS.
+</P>
+<P>For extract_global() see the src/library.cpp file for the list of
+valid names. New names could easily be added. A double or integer is
+returned. You need to specify the appropriate data type via the type
+argument.
+</P>
+<P>For extract_atom(), a pointer to internal LAMMPS atom-based data is
+returned, which you can use via normal Python subscripting. See the
+extract() method in the src/atom.cpp file for a list of valid names.
+Again, new names could easily be added. A pointer to a vector of
+doubles or integers, or a pointer to an array of doubles (double **)
+or integers (int **) is returned. You need to specify the appropriate
+data type via the type argument.
+</P>
+<P>For extract_compute() and extract_fix(), the global, per-atom, or
+local data calulated by the compute or fix can be accessed. What is
+returned depends on whether the compute or fix calculates a scalar or
+vector or array. For a scalar, a single double value is returned. If
+the compute or fix calculates a vector or array, a pointer to the
+internal LAMMPS data is returned, which you can use via normal Python
+subscripting. The one exception is that for a fix that calculates a
+global vector or array, a single double value from the vector or array
+is returned, indexed by I (vector) or I and J (array). I,J are
+zero-based indices. The I,J arguments can be left out if not needed.
+See <A HREF = "Section_howto.html#howto_15">Section_howto 15</A> of the manual for a
+discussion of global, per-atom, and local data, and of scalar, vector,
+and array data types. See the doc pages for individual
+<A HREF = "compute.html">computes</A> and <A HREF = "fix.html">fixes</A> for a description of what
+they calculate and store.
+</P>
+<P>For extract_variable(), an <A HREF = "variable.html">equal-style or atom-style
+variable</A> is evaluated and its result returned.
+</P>
+<P>For equal-style variables a single double value is returned and the
+group argument is ignored. For atom-style variables, a vector of
+doubles is returned, one value per atom, which you can use via normal
+Python subscripting. The values will be zero for atoms not in the
+specified group.
+</P>
+<P>The get_natoms() method returns the total number of atoms in the
+simulation, as an int.
+</P>
+<P>The gather_atoms() method returns a ctypes vector of ints or doubles
+as specified by type, of length count*natoms, for the property of all
+the atoms in the simulation specified by name, ordered by count and
+then by atom ID. The vector can be used via normal Python
+subscripting. If atom IDs are not consecutively ordered within
+LAMMPS, a None is returned as indication of an error.
+</P>
+<P>Note that the data structure gather_atoms("x") returns is different
+from the data structure returned by extract_atom("x") in four ways.
+(1) Gather_atoms() returns a vector which you index as x[i];
+extract_atom() returns an array which you index as x[i][j]. (2)
+Gather_atoms() orders the atoms by atom ID while extract_atom() does
+not. (3) Gathert_atoms() returns a list of all atoms in the
+simulation; extract_atoms() returns just the atoms local to each
+processor. (4) Finally, the gather_atoms() data structure is a copy
+of the atom coords stored internally in LAMMPS, whereas extract_atom()
+returns an array that effectively points directly to the internal
+data. This means you can change values inside LAMMPS from Python by
+assigning a new values to the extract_atom() array. To do this with
+the gather_atoms() vector, you need to change values in the vector,
+then invoke the scatter_atoms() method.
+</P>
+<P>The scatter_atoms() method takes a vector of ints or doubles as
+specified by type, of length count*natoms, for the property of all the
+atoms in the simulation specified by name, ordered by bount and then
+by atom ID. It uses the vector of data to overwrite the corresponding
+properties for each atom inside LAMMPS. This requires LAMMPS to have
+its "map" option enabled; see the <A HREF = "atom_modify.html">atom_modify</A>
+command for details. If it is not, or if atom IDs are not
+consecutively ordered, no coordinates are reset.
+</P>
+<P>The array of coordinates passed to scatter_atoms() must be a ctypes
+vector of ints or doubles, allocated and initialized something like
+this:
+</P>
+<PRE>from ctypes import *
+natoms = lmp.get_natoms()
+n3 = 3*natoms
+x = (n3*c_double)()
+x[0] = x coord of atom with ID 1
+x[1] = y coord of atom with ID 1
+x[2] = z coord of atom with ID 1
+x[3] = x coord of atom with ID 2
+...
+x[n3-1] = z coord of atom with ID natoms
+lmp.scatter_coords("x",1,3,x)
+</PRE>
+<P>Alternatively, you can just change values in the vector returned by
+gather_atoms("x",1,3), since it is a ctypes vector of doubles.
+</P>
+<HR>
+
+<P>As noted above, these Python class methods correspond one-to-one with
+the functions in the LAMMPS library interface in src/library.cpp and
+library.h. This means you can extend the Python wrapper via the
+following steps:
+</P>
+<UL><LI>Add a new interface function to src/library.cpp and
+src/library.h.
+
+<LI>Rebuild LAMMPS as a shared library.
+
+<LI>Add a wrapper method to python/lammps.py for this interface
+function.
+
+<LI>You should now be able to invoke the new interface function from a
+Python script. Isn't ctypes amazing?
+</UL>
+<HR>
+
+<HR>
+
+<A NAME = "py_8"></A><H4>11.8 Example Python scripts that use LAMMPS
+</H4>
+<P>These are the Python scripts included as demos in the python/examples
+directory of the LAMMPS distribution, to illustrate the kinds of
+things that are possible when Python wraps LAMMPS. If you create your
+own scripts, send them to us and we can include them in the LAMMPS
+distribution.
+</P>
+<DIV ALIGN=center><TABLE BORDER=1 >
+<TR><TD >trivial.py</TD><TD > read/run a LAMMPS input script thru Python</TD></TR>
+<TR><TD >demo.py</TD><TD > invoke various LAMMPS library interface routines</TD></TR>
+<TR><TD >simple.py</TD><TD > mimic operation of couple/simple/simple.cpp in Python</TD></TR>
+<TR><TD >gui.py</TD><TD > GUI go/stop/temperature-slider to control LAMMPS</TD></TR>
+<TR><TD >plot.py</TD><TD > real-time temeperature plot with GnuPlot via Pizza.py</TD></TR>
+<TR><TD >viz_tool.py</TD><TD > real-time viz via some viz package</TD></TR>
+<TR><TD >vizplotgui_tool.py</TD><TD > combination of viz_tool.py and plot.py and gui.py
+</TD></TR></TABLE></DIV>
+
+<HR>
+
+<P>For the viz_tool.py and vizplotgui_tool.py commands, replace "tool"
+with "gl" or "atomeye" or "pymol" or "vmd", depending on what
+visualization package you have installed.
+</P>
+<P>Note that for GL, you need to be able to run the Pizza.py GL tool,
+which is included in the pizza sub-directory. See the <A HREF = "http://www.sandia.gov/~sjplimp/pizza.html">Pizza.py doc
+pages</A> for more info:
+</P>
+
+
+<P>Note that for AtomEye, you need version 3, and there is a line in the
+scripts that specifies the path and name of the executable. See the
+AtomEye WWW pages <A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">here</A> or <A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html">here</A> for more details:
+<TR><TD >Build specific auxiliary libs</TD><TD > Make.py -a lib-atc lib-meam</TD></TR>
+<TR><TD >Build libs for all installed packages</TD><TD > Make.py -p cuda gpu -gpu mode=double arch=31 -a lib-all</TD></TR>
+<TR><TD >Create a Makefile from scratch with compiler and MPI settings</TD><TD > Make.py -m none -cc g++ -mpi mpich -a file</TD></TR>
+<TR><TD >Augment Makefile.serial with settings for installed packages</TD><TD > Make.py -p intel -intel cpu -m serial -a file</TD></TR>
+<TR><TD >Add JPG and FFTW support to Makefile.mpi</TD><TD > Make.py -m mpi -jpg -fft fftw -a file</TD></TR>
+<TR><TD >Build LAMMPS with a parallel make using Makefile.mpi</TD><TD > Make.py -j 16 -m mpi -a exe</TD></TR>
+<TR><TD >Build LAMMPS and libs it needs using Makefile.serial with accelerator settings</TD><TD > Make.py -p gpu intel -intel cpu -a lib-all file serial
+</TD></TR></TABLE></DIV>
+
+<P>The bench and examples directories give Make.py commands that can be
+used to build LAMMPS with the various packages and options needed to
+run all the benchmark and example input scripts. See these files for
+more details:
+</P>
+<UL><LI>bench/README
+<LI>bench/FERMI/README
+<LI>bench/KEPLER/README
+<LI>bench/PHI/README
+<LI>examples/README
+<LI>examples/accelerate/README
+<LI>examples/accelerate/make.list
+</UL>
+<P>All of the Make.py options and syntax help can be accessed by using
+the "-h" switch.
+</P>
+<P>E.g. typing "Make.py -h" gives
+</P>
+<PRE>Syntax: Make.py switch args ...
+ switches can be listed in any order
+ help switch:
+ -h prints help and syntax for all other specified switches
+ switch for actions:
+ -a lib-all, lib-dir, clean, file, exe or machine
+ list one or more actions, in any order
+ machine is a Makefile.machine suffix, must be last if used
+<P>Note that if the "-sf omp" switch is used, it also issues a default
+<A HREF = "package.html">package omp 0</A> command, which sets the number of threads
+per MPI task via the OMP_NUM_THREADS environment variable.
+</P>
+<P>Using the "-pk" switch explicitly allows for direct setting of the
+number of threads and additional options. Its syntax is the same as
+the "package omp" command. See the <A HREF = "package.html">package</A> command doc
+page for details, including the default values used for all its
+options if it is not specified, and how to set the number of threads
+via the OMP_NUM_THREADS environment variable if desired.
+</P>
+<P><B>Or run with the USER-OMP package by editing an input script:</B>
+</P>
+<P>The discussion above for the mpirun/mpiexec command, MPI tasks/node,
+and threads/MPI task is the same.
+</P>
+<P>Use the <A HREF = "suffix.html">suffix omp</A> command, or you can explicitly add an
+"omp" suffix to individual styles in your input script, e.g.
+</P>
+<PRE>pair_style lj/cut/omp 2.5
+</PRE>
+<P>You must also use the <A HREF = "package.html">package omp</A> command to enable the
+USER-OMP package, unless the "-sf omp" or "-pk omp" <A HREF = "Section_start.html#start_7">command-line
+switches</A> were used. It specifies how many
+threads per MPI task to use, as well as other options. Its doc page
+explains how to set the number of threads via an environment variable
+if desired.
+</P>
+<P><B>Speed-ups to expect:</B>
+</P>
+<P>Depending on which styles are accelerated, you should look for a
+reduction in the "Pair time", "Bond time", "KSpace time", and "Loop
+time" values printed at the end of a run.
+</P>
+<P>You may see a small performance advantage (5 to 20%) when running a
+USER-OMP style (in serial or parallel) with a single thread per MPI
+task, versus running standard LAMMPS with its standard
+(un-accelerated) styles (in serial or all-MPI parallelization with 1
+task/core). This is because many of the USER-OMP styles contain
+similar optimizations to those used in the OPT package, as described
+above.
+</P>
+<P>With multiple threads/task, the optimal choice of MPI tasks/node and
+OpenMP threads/task can vary a lot and should always be tested via
+benchmark runs for a specific simulation running on a specific
+machine, paying attention to guidelines discussed in the next
+sub-section.
+</P>
+<P>A description of the multi-threading strategy used in the USER-OMP
+package and some performance examples are <A HREF = "http://sites.google.com/site/akohlmey/software/lammps-icms/lammps-icms-tms2011-talk.pdf?attredirects=0&d=1">presented
+here</A>
+</P>
+<P><B>Guidelines for best performance:</B>
+</P>
+<P>For many problems on current generation CPUs, running the USER-OMP
+package with a single thread/task is faster than running with multiple
+threads/task. This is because the MPI parallelization in LAMMPS is
+often more efficient than multi-threading as implemented in the
+USER-OMP package. The parallel efficiency (in a threaded sense) also
+varies for different USER-OMP styles.
+</P>
+<P>Using multiple threads/task can be more effective under the following
+circumstances:
+</P>
+<UL><LI>Individual compute nodes have a significant number of CPU cores but
+the CPU itself has limited memory bandwidth, e.g. for Intel Xeon 53xx
+(Clovertown) and 54xx (Harpertown) quad core processors. Running one
+MPI task per CPU core will result in significant performance
+degradation, so that running with 4 or even only 2 MPI tasks per node
+is faster. Running in hybrid MPI+OpenMP mode will reduce the
+inter-node communication bandwidth contention in the same way, but
+offers an additional speedup by utilizing the otherwise idle CPU
+cores.
+
+<LI>The interconnect used for MPI communication does not provide
+sufficient bandwidth for a large number of MPI tasks per node. For
+example, this applies to running over gigabit ethernet or on Cray XT4
+or XT5 series supercomputers. As in the aforementioned case, this
+effect worsens when using an increasing number of nodes.
+
+<LI>The system has a spatially inhomogeneous particle density which does
+not map well to the <A HREF = "processors.html">domain decomposition scheme</A> or
+<A HREF = "balance.html">load-balancing</A> options that LAMMPS provides. This is
+because multi-threading achives parallelism over the number of
+particles, not via their distribution in space.
+
+<LI>A machine is being used in "capability mode", i.e. near the point
+where MPI parallelism is maxed out. For example, this can happen when
+using the <A HREF = "kspace_style.html">PPPM solver</A> for long-range
+electrostatics on large numbers of nodes. The scaling of the KSpace
+calculation (see the <A HREF = "kspace_style.html">kspace_style</A> command) becomes
+the performance-limiting factor. Using multi-threading allows less
+MPI tasks to be invoked and can speed-up the long-range solver, while
+increasing overall performance by parallelizing the pairwise and
+bonded calculations via OpenMP. Likewise additional speedup can be
+sometimes be achived by increasing the length of the Coulombic cutoff
+and thus reducing the work done by the long-range solver. Using the
+<A HREF = "run_style.html">run_style verlet/split</A> command, which is compatible
+with the USER-OMP package, is an alternative way to reduce the number
+of MPI tasks assigned to the KSpace calculation.
+</UL>
+<P>Additional performance tips are as follows:
+</P>
+<UL><LI>The best parallel efficiency from <I>omp</I> styles is typically achieved
+when there is at least one MPI task per physical processor,
+i.e. socket or die.
+
+<LI>It is usually most efficient to restrict threading to a single
+socket, i.e. use one or more MPI task per socket.
+
+<LI>Several current MPI implementation by default use a processor affinity
+setting that restricts each MPI task to a single CPU core. Using
+multi-threading in this mode will force the threads to share that core
+and thus is likely to be counterproductive. Instead, binding MPI
+tasks to a (multi-core) socket, should solve this issue.
+<UL><LI>style = <I>angle</I> or <I>atomic</I> or <I>body</I> or <I>bond</I> or <I>charge</I> or <I>dipole</I> or <I>electron</I> or <I>ellipsoid</I> or <I>full</I> or <I>line</I> or <I>meso</I> or <I>molecular</I> or <I>peri</I> or <I>sphere</I> or <I>tri</I> or <I>template</I> or <I>hybrid</I>
+
+<PRE> args = none for any style except <I>body</I> and <I>hybrid</I>
+ <I>body</I> args = bstyle bstyle-args
+ bstyle = style of body particles
+ bstyle-args = additional arguments specific to the bstyle
+ see the <A HREF = "body.html">body</A> doc page for details
+ <I>template</I> args = template-ID
+ template-ID = ID of molecule template specified in a separate <A HREF = "molecule.html">molecule</A> command
+ <I>hybrid</I> args = list of one or more sub-styles, each with their args
+</PRE>
+<LI>accelerated styles (with same args) = <I>angle/cuda</I> or <I>angle/kk</I> or <I>atomic/cuda</I> or <I>atomic/kk</I> or <I>bond/kk</I> or <I>charge/cuda</I> or <I>charge/kk</I> or <I>full/cuda</I> or <I>full/kk</I> or <I>molecular/kk</I>
+
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>atom_style atomic
+atom_style bond
+atom_style full
+atom_style full/cuda
+atom_style body nparticle 2 10
+atom_style hybrid charge bond
+atom_style hybrid charge body nparticle 2 5
+atom_style template myMols
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Define what style of atoms to use in a simulation. This determines
+what attributes are associated with the atoms. This command must be
+used before a simulation is setup via a <A HREF = "read_data.html">read_data</A>,
+<A HREF = "read_restart.html">read_restart</A>, or <A HREF = "create_box.html">create_box</A>
+command.
+</P>
+<P>Once a style is assigned, it cannot be changed, so use a style general
+enough to encompass all attributes. E.g. with style <I>bond</I>, angular
+terms cannot be used or added later to the model. It is OK to use a
+style more general than needed, though it may be slightly inefficient.
+</P>
+<P>The choice of style affects what quantities are stored by each atom,
+what quantities are communicated between processors to enable forces
+to be computed, and what quantities are listed in the data file read
+by the <A HREF = "read_data.html">read_data</A> command.
+</P>
+<P>These are the additional attributes of each style and the typical
+kinds of physical systems they are used to model. All styles store
+coordinates, velocities, atom IDs and types. See the
+<A HREF = "read_data.html">read_data</A>, <A HREF = "create_atoms.html">create_atoms</A>, and
+<A HREF = "set.html">set</A> commands for info on how to set these various
+quantities.
+</P>
+<DIV ALIGN=center><TABLE BORDER=1 >
+<TR><TD ><I>angle</I> </TD><TD > bonds and angles </TD><TD > bead-spring polymers with stiffness </TD></TR>
+<TR><TD ><I>atomic</I> </TD><TD > only the default values </TD><TD > coarse-grain liquids, solids, metals </TD></TR>
+<UL><LI>style = <I>none</I> or <I>hybrid</I> or <I>class2</I> or <I>fene</I> or <I>fene/expand</I> or <I>harmonic</I> or <I>morse</I> or <I>nonlinear</I> or <I>quartic</I>
+</UL>
+<PRE> args = none for any style except <I>hybrid</I>
+ <I>hybrid</I> args = list of one or more styles
+</PRE>
+<P><B>Examples:</B>
+</P>
+<PRE>bond_style harmonic
+bond_style fene
+bond_style hybrid harmonic fene
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Set the formula(s) LAMMPS uses to compute bond interactions between
+pairs of atoms. In LAMMPS, a bond differs from a pairwise
+interaction, which are set via the <A HREF = "pair_style.html">pair_style</A>
+command. Bonds are defined between specified pairs of atoms and
+remain in force for the duration of the simulation (unless the bond
+breaks which is possible in some bond potentials). The list of bonded
+atoms is read in by a <A HREF = "read_data.html">read_data</A> or
+<A HREF = "read_restart.html">read_restart</A> command from a data or restart file.
+By contrast, pair potentials are typically defined between all pairs
+of atoms within a cutoff distance and the set of active interactions
+changes over time.
+</P>
+<P>Hybrid models where bonds are computed using different bond potentials
+can be setup using the <I>hybrid</I> bond style.
+</P>
+<P>The coefficients associated with a bond style can be specified in a
+data or restart file or via the <A HREF = "bond_coeff.html">bond_coeff</A> command.
+</P>
+<P>All bond potentials store their coefficient data in binary restart
+files which means bond_style and <A HREF = "bond_coeff.html">bond_coeff</A> commands
+do not need to be re-specified in an input script that restarts a
+simulation. See the <A HREF = "read_restart.html">read_restart</A> command for
+details on how to do this. The one exception is that bond_style
+<I>hybrid</I> only stores the list of sub-styles in the restart file; bond
+coefficients need to be re-specified.
+</P>
+<P>IMPORTANT NOTE: When both a bond and pair style is defined, the
+<A HREF = "special_bonds.html">special_bonds</A> command often needs to be used to
+turn off (or weight) the pairwise interaction that would otherwise
+exist between 2 bonded atoms.
+</P>
+<P>In the formulas listed for each bond style, <I>r</I> is the distance
+between the 2 atoms in the bond.
+</P>
+<HR>
+
+<P>Here is an alphabetic list of bond styles defined in LAMMPS. Click on
+the style to display the formula it computes and coefficients
+specified by the associated <A HREF = "bond_coeff.html">bond_coeff</A> command.
+</P>
+<P>Note that there are also additional bond styles submitted by users
+which are included in the LAMMPS distribution. The list of these with
+links to the individual styles are given in the bond section of <A HREF = "Section_commands.html#cmd_5">this
+page</A>.
+</P>
+<UL><LI><A HREF = "bond_none.html">bond_style none</A> - turn off bonded interactions
+<LI><A HREF = "bond_hybrid.html">bond_style hybrid</A> - define multiple styles of bond interactions
+</UL>
+<UL><LI><A HREF = "bond_class2.html">bond_style class2</A> - COMPASS (class 2) bond
+<UL><LI>group-ID = ID of group of atoms to (optionally) displace
+
+<LI>one or more parameter/arg pairs may be appended
+
+<PRE>parameter = <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>xz</I> or <I>yz</I> or <I>boundary</I> or <I>ortho</I> or <I>triclinic</I> or <I>set</I> or <I>remap</I>
+<PRE>compute ID group-ID pressure temp-ID keyword ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
+<LI>pressure = style name of this compute command
+<LI>temp-ID = ID of compute that calculates temperature, can be NULL if not needed
+<LI>zero or more keywords may be appended
+<LI>keyword = <I>ke</I> or <I>pair</I> or <I>bond</I> or <I>angle</I> or <I>dihedral</I> or <I>improper</I> or <I>kspace</I> or <I>fix</I> or <I>virial</I>
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>compute 1 all pressure thermo_temp
+compute 1 all pressure NULL pair bond
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Define a computation that calculates the pressure of the entire system
+of atoms. The specified group must be "all". See the <A HREF = "compute_stress_atom.html">compute
+stress/atom</A> command if you want per-atom
+pressure (stress). These per-atom values could be summed for a group
+of atoms via the <A HREF = "compute_reduce.html">compute reduce</A> command.
+</P>
+<P>The pressure is computed by the formula
+</P>
+<CENTER><IMG SRC = "Eqs/pressure.jpg">
+</CENTER>
+<P>where N is the number of atoms in the system (see discussion of DOF
+below), Kb is the Boltzmann constant, T is the temperature, d is the
+dimensionality of the system (2 or 3 for 2d/3d), V is the system
+volume (or area in 2d), and the second term is the virial, computed
+within LAMMPS for all pairwise as well as 2-body, 3-body, and 4-body,
+and long-range interactions. <A HREF = "fix.html">Fixes</A> that impose constraints
+(e.g. the <A HREF = "fix_shake.html">fix shake</A> command) also contribute to the
+virial term.
+</P>
+<P>A symmetric pressure tensor, stored as a 6-element vector, is also
+calculated by this compute. The 6 components of the vector are
+ordered xx, yy, zz, xy, xz, yz. The equation for the I,J components
+(where I and J = x,y,z) is similar to the above formula, except that
+the first term uses components of the kinetic energy tensor and the
+second term uses components of the virial tensor:
+</P>
+<CENTER><IMG SRC = "Eqs/pressure_tensor.jpg">
+</CENTER>
+<P>If no extra keywords are listed, the entire equations above are
+calculated. This includes a kinetic energy (temperature) term and the
+virial as the sum of pair, bond, angle, dihedral, improper, kspace
+(long-range), and fix contributions to the force on each atom. If any
+extra keywords are listed, then only those components are summed to
+compute temperature or ke and/or the virial. The <I>virial</I> keyword
+means include all terms except the kinetic energy <I>ke</I>.
+</P>
+<P>Details of how LAMMPS computes the virial efficiently for the entire
+system, including the effects of periodic boundary conditions is
+discussed in <A HREF = "#Thompson">(Thompson)</A>.
+</P>
+<P>The temperature and kinetic energy tensor is not calculated by this
+compute, but rather by the temperature compute specified with the
+command. If the kinetic energy is not included in the pressure, than
+the temperature compute is not used and can be specified as NULL.
+Normally the temperature compute used by compute pressure should
+calculate the temperature of all atoms for consistency with the virial
+term, but any compute style that calculates temperature can be used,
+e.g. one that excludes frozen atoms or other degrees of freedom.
+</P>
+<P>Note that if desired the specified temperature compute can be one that
+subtracts off a bias to calculate a temperature using only the thermal
+velocity of the atoms, e.g. by subtracting a background streaming
+velocity. See the doc pages for individual <A HREF = "compute.html">compute
+commands</A> to determine which ones include a bias.
+</P>
+<P>Also note that the N in the first formula above is really
+degrees-of-freedom divided by d = dimensionality, where the DOF value
+is calcluated by the temperature compute. See the various <A HREF = "compute.html">compute
+temperature</A> styles for details.
+</P>
+<P>A compute of this style with the ID of "thermo_press" is created when
+LAMMPS starts up, as if this command were in the input script:
+</P>
+<PRE>compute thermo_press all pressure thermo_temp
+</PRE>
+<P>where "thermo_temp" is the ID of a similarly defined compute of style
+"temp". See the "thermo_style" command for more details.
+</P>
+<HR>
+
+<P>Styles with a <I>cuda</I> suffix are functionally the same as the
+corresponding style without the suffix. They have been optimized to
+run faster, depending on your available hardware, as discussed in
+<A HREF = "Section_accelerate.html">Section_accelerate</A> of the manual. The
+accelerated styles take the same arguments and should produce the same
+results, except for round-off and precision issues.
+</P>
+<P>These accelerated styles are part of the USER-CUDA package. They are
+only enabled if LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info.
+</P>
+<P>You can specify the accelerated styles explicitly in your input script
+by including their suffix, or you can use the <A HREF = "Section_start.html#start_7">-suffix command-line
+switch</A> when you invoke LAMMPS, or you can
+use the <A HREF = "suffix.html">suffix</A> command in your input script.
+</P>
+<P>See <A HREF = "Section_accelerate.html">Section_accelerate</A> of the manual for
+more instructions on how to use the accelerated styles effectively.
+</P>
+<HR>
+
+<P><B>Output info:</B>
+</P>
+<P>This compute calculates a global scalar (the pressure) and a global
+vector of length 6 (pressure tensor), which can be accessed by indices
+1-6. These values can be used by any command that uses global scalar
+or vector values from a compute as input. See <A HREF = "Section_howto.html#howto_15">this
+section</A> for an overview of LAMMPS output
+options.
+</P>
+<P>The scalar and vector values calculated by this compute are
+"intensive". The scalar and vector values will be in pressure
+<PRE>compute ID group-ID stress/atom temp-ID keyword ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
+<LI>stress/atom = style name of this compute command
+<LI>temp-ID = ID of compute that calculates temperature, can be NULL if not needed
+<LI>zero or more keywords may be appended
+<LI>keyword = <I>ke</I> or <I>pair</I> or <I>bond</I> or <I>angle</I> or <I>dihedral</I> or <I>improper</I> or <I>kspace</I> or <I>fix</I> or <I>virial</I>
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>compute 1 mobile stress/atom NULL
+compute 1 mobile stress/atom myRamp
+compute 1 all stress/atom NULL pair bond
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Define a computation that computes the symmetric per-atom stress
+tensor for each atom in a group. The tensor for each atom has 6
+components and is stored as a 6-element vector in the following order:
+xx, yy, zz, xy, xz, yz. See the <A HREF = "compute_pressure.html">compute
+pressure</A> command if you want the stress tensor
+(pressure) of the entire system.
+</P>
+<P>The stress tensor for atom <I>I</I> is given by the following formula,
+where <I>a</I> and <I>b</I> take on values x,y,z to generate the 6 components of
+the symmetric tensor:
+</P>
+<CENTER><IMG SRC = "Eqs/stress_tensor.jpg">
+</CENTER>
+<P>The first term is a kinetic energy contribution for atom <I>I</I>. See
+details below on how the specified <I>temp-ID</I> can affect the velocities
+used in this calculation. The second term is a pairwise energy
+contribution where <I>n</I> loops over the <I>Np</I> neighbors of atom <I>I</I>, <I>r1</I>
+and <I>r2</I> are the positions of the 2 atoms in the pairwise interaction,
+and <I>F1</I> and <I>F2</I> are the forces on the 2 atoms resulting from the
+pairwise interaction. The third term is a bond contribution of
+similar form for the <I>Nb</I> bonds which atom <I>I</I> is part of. There are
+similar terms for the <I>Na</I> angle, <I>Nd</I> dihedral, and <I>Ni</I> improper
+interactions atom <I>I</I> is part of. There is also a term for the KSpace
+contribution from long-range Coulombic interactions, if defined.
+Finally, there is a term for the <I>Nf</I> <A HREF = "fix.html">fixes</A> that apply
+internal constraint forces to atom <I>I</I>. Currently, only the <A HREF = "fix_shake.html">fix
+shake</A> and <A HREF = "fix_rigid.html">fix rigid</A> commands
+contribute to this term.
+</P>
+<P>As the coefficients in the formula imply, a virial contribution
+produced by a small set of atoms (e.g. 4 atoms in a dihedral or 3
+atoms in a Tersoff 3-body interaction) is assigned in equal portions
+to each atom in the set. E.g. 1/4 of the dihedral virial to each of
+the 4 atoms, or 1/3 of the fix virial due to SHAKE constraints applied
+to atoms in a a water molecule via the <A HREF = "fix_shake.html">fix shake</A>
+command.
+</P>
+<P>If no extra keywords are listed, all of the terms in this formula are
+included in the per-atom stress tensor. If any extra keywords are
+listed, only those terms are summed to compute the tensor. The
+<I>virial</I> keyword means include all terms except the kinetic energy
+<I>ke</I>.
+</P>
+<P>Note that the stress for each atom is due to its interaction with all
+other atoms in the simulation, not just with other atoms in the group.
+</P>
+<P>Details of how LAMMPS computes the virial for individual atoms for
+either pairwise or manybody potentials, and including the effects of
+periodic boundary conditions is discussed in <A HREF = "#Thompson">(Thompson)</A>.
+The basic idea for manybody potentials is to treat each component of
+the force computation between a small cluster of atoms in the same
+manner as in the formula above for bond, angle, dihedral, etc
+interactions. Namely the quantity R dot F is summed over the atoms in
+the interaction, with the R vectors unwrapped by periodic boundaries
+so that the cluster of atoms is close together. The total
+contribution for the cluster interaction is divided evenly among those
+<UL><LI>N = # of atom types to use in this simulation
+
+<LI>region-ID = ID of region to use as simulation domain
+
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>bond/types</I> or <I>angle/types</I> or <I>dihedral/types</I> or <I>improper/types</I> or <I>extra/bond/per/atom</I> or <I>extra/angle/per/atom</I> or <I>extra/dihedral/per/atom</I> or <I>extra/improper/per/atom</I>
+
+<PRE> <I>bond/types</I> value = # of bond types
+ <I>angle/types</I> value = # of angle types
+ <I>dihedral/types</I> value = # of dihedral types
+ <I>improper/types</I> value = # of improper types
+ <I>extra/bond/per/atom</I> value = # of bonds per atom
+ <I>extra/angle/per/atom</I> value = # of angles per atom
+ <I>extra/dihedral/per/atom</I> value = # of dihedrals per atom
+ <I>extra/improper/per/atom</I> value = # of impropers per atom
+ <I>extra/special/per/atom</I> value = # of special neighbors per atom
+<UL><LI>style = <I>none</I> or <I>hybrid</I> or <I>charmm</I> or <I>class2</I> or <I>harmonic</I> or <I>helix</I> or <I>multi/harmonic</I> or <I>opls</I>
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>dihedral_style harmonic
+dihedral_style multi/harmonic
+dihedral_style hybrid harmonic charmm
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Set the formula(s) LAMMPS uses to compute dihedral interactions
+between quadruplets of atoms, which remain in force for the duration
+of the simulation. The list of dihedral quadruplets is read in by a
+<A HREF = "read_data.html">read_data</A> or <A HREF = "read_restart.html">read_restart</A> command
+from a data or restart file.
+</P>
+<P>Hybrid models where dihedrals are computed using different dihedral
+potentials can be setup using the <I>hybrid</I> dihedral style.
+</P>
+<P>The coefficients associated with a dihedral style can be specified in
+a data or restart file or via the <A HREF = "dihedral_coeff.html">dihedral_coeff</A>
+command.
+</P>
+<P>All dihedral potentials store their coefficient data in binary restart
+files which means dihedral_style and
+<A HREF = "dihedral_coeff.html">dihedral_coeff</A> commands do not need to be
+re-specified in an input script that restarts a simulation. See the
+<A HREF = "read_restart.html">read_restart</A> command for details on how to do
+this. The one exception is that dihedral_style <I>hybrid</I> only stores
+the list of sub-styles in the restart file; dihedral coefficients need
+to be re-specified.
+</P>
+<P>IMPORTANT NOTE: When both a dihedral and pair style is defined, the
+<A HREF = "special_bonds.html">special_bonds</A> command often needs to be used to
+turn off (or weight) the pairwise interaction that would otherwise
+exist between 4 bonded atoms.
+</P>
+<P>In the formulas listed for each dihedral style, <I>phi</I> is the torsional
+angle defined by the quadruplet of atoms. This angle has a sign
+convention as shown in this diagram:
+</P>
+<CENTER><IMG SRC = "Eqs/dihedral_sign.jpg">
+</CENTER>
+<P>where the I,J,K,L ordering of the 4 atoms that define the dihedral
+is from left to right.
+</P>
+<P>This sign convention effects several of the dihedral styles listed
+below (e.g. charmm, helix) in the sense that the energy formula
+depends on the sign of phi, which may be reflected in the value of the
+coefficients you specify.
+</P>
+<P>IMPORTANT NOTE: When comparing the formulas and coefficients for
+various LAMMPS dihedral styles with dihedral equations defined by
+other force fields, note that some force field implementations
+divide/multiply the energy prefactor <I>K</I> by the multiple number of
+torsions that contain the J-K bond in an I-J-K-L torsion. LAMMPS does
+not do this, i.e. the listed dihedral equation applies to each
+individual dihedral. Thus you need to define <I>K</I> appropriately via
+the <A HREF = "dihedral_coeff.html">dihedral_coeff</A> command to account for this
+difference if necessary.
+</P>
+<HR>
+
+<P>Here is an alphabetic list of dihedral styles defined in LAMMPS. Click on
+the style to display the formula it computes and coefficients
+specified by the associated <A HREF = "dihedral_coeff.html">dihedral_coeff</A> command.
+</P>
+<P>Note that there are also additional dihedral styles submitted by users
+which are included in the LAMMPS distribution. The list of these with
+links to the individual styles are given in the dihedral section of
+<LI>group-ID = ID of the group of atoms to be dumped
+
+<LI>style = <I>atom</I> or <I>atom/mpiio</I> or <I>cfg</I> or <I>cfg/mpiio</I> or <I>dcd</I> or <I>xtc</I> or <I>xyz</I> or <I>xyz/mpiio</I> or <I>image</I> or <I>movie</I> or <I>molfile</I> or <I>local</I> or <I>custom</I> or <I>custom/mpiio</I>
+
+<LI>N = dump every this many timesteps
+
+<LI>file = name of file to write dump info to
+
+<LI>args = list of arguments for a particular style
+
+<PRE> <I>atom</I> args = none
+ <I>atom/mpiio</I> args = none
+ <I>cfg</I> args = same as <I>custom</I> args, see below
+ <I>cfg/mpiio</I> args = same as <I>custom</I> args, see below
+<PRE>dump ID group-ID style N file color diameter keyword value ...
+</PRE>
+<UL><LI>ID = user-assigned name for the dump
+
+<LI>group-ID = ID of the group of atoms to be imaged
+
+<LI>style = <I>image</I> or <I>movie</I> = style of dump command (other styles <I>atom</I> or <I>cfg</I> or <I>dcd</I> or <I>xtc</I> or <I>xyz</I> or <I>local</I> or <I>custom</I> are discussed on the <A HREF = "dump.html">dump</A> doc page)
+
+<LI>N = dump every this many timesteps
+
+<LI>file = name of file to write image to
+
+<LI>color = atom attribute that determines color of each atom
+
+<LI>diameter = atom attribute that determines size of each atom
+
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>adiam</I> or <I>atom</I> or <I>bond</I> or <I>size</I> or <I>view</I> or <I>center</I> or <I>up</I> or <I>zoom</I> or <I>persp</I> or <I>box</I> or <I>axes</I> or <I>subbox</I> or <I>shiny</I> or <I>ssao</I>
+
+<PRE> <I>adiam</I> value = number = numeric value for atom diameter (distance units)
+ <I>atom</I> = yes/no = do or do not draw atoms
+ <I>bond</I> values = color width = color and width of bonds
+ color = <I>atom</I> or <I>type</I> or <I>none</I>
+ width = number or <I>atom</I> or <I>type</I> or <I>none</I>
+ number = numeric value for bond width (distance units)
+ <I>size</I> values = width height = size of images
+<LI>one or more keyword/value pairs may be appended
+
+<LI>these keywords apply to various dump styles
+
+<LI>keyword = <I>append</I> or <I>buffer</I> or <I>element</I> or <I>every</I> or <I>fileper</I> or <I>first</I> or <I>flush</I> or <I>format</I> or <I>image</I> or <I>label</I> or <I>nfile</I> or <I>pad</I> or <I>precision</I> or <I>region</I> or <I>scale</I> or <I>sort</I> or <I>thresh</I> or <I>unwrap</I>
+
+<PRE> <I>append</I> arg = <I>yes</I> or <I>no</I>
+ <I>buffer</I> arg = <I>yes</I> or <I>no</I>
+ <I>element</I> args = E1 E2 ... EN, where N = # of atom types
+ E1,...,EN = element name, e.g. C or Fe or Ga
+ <I>every</I> arg = N
+ N = dump every this many timesteps
+ N can be a variable (see below)
+ <I>fileper</I> arg = Np
+ Np = write one file for every this many processors
+ <I>first</I> arg = <I>yes</I> or <I>no</I>
+ <I>format</I> arg = C-style format string for one line of output
+ <I>flush</I> arg = <I>yes</I> or <I>no</I>
+ <I>image</I> arg = <I>yes</I> or <I>no</I>
+ <I>label</I> arg = string
+ string = character string (e.g. BONDS) to use in header of dump local file
+ <I>nfile</I> arg = Nf
+ Nf = write this many files, one from each of Nf processors
+ <I>pad</I> arg = Nchar = # of characters to convert timestep to
+ <I>precision</I> arg = power-of-10 value from 10 to 1000000
+ <I>tfactor</I> arg = time scaling factor (> 0.0)
+ <I>sort</I> arg = <I>off</I> or <I>id</I> or N or -N
+ off = no sorting of per-atom lines within a snapshot
+ id = sort per-atom lines by atom ID
+ N = sort per-atom lines in ascending order by the Nth column
+ -N = sort per-atom lines in descending order by the Nth column
+ <I>thresh</I> args = attribute operation value
+ attribute = same attributes (x,fy,etotal,sxx,etc) used by dump custom style
+ operation = "<" or "<=" or ">" or ">=" or "==" or "!="
+ value = numeric value to compare to
+ these 3 args can be replaced by the word "none" to turn off thresholding
+ <I>unwrap</I> arg = <I>yes</I> or <I>no</I>
+</PRE>
+<LI>these keywords apply only to the <I>image</I> and <I>movie</I> <A HREF = "dump_image.html">styles</A>
+
+<LI>keyword = <I>acolor</I> or <I>adiam</I> or <I>amap</I> or <I>backcolor</I> or <I>bcolor</I> or <I>bdiam</I> or <I>boxcolor</I> or <I>color</I> or <I>bitrate</I> or <I>framerate</I>
+
+<PRE> <I>acolor</I> args = type color
+ type = atom type or range of types (see below)
+ color = name of color or color1/color2/...
+ <I>adiam</I> args = type diam
+ type = atom type or range of types (see below)
+ diam = diameter of atoms of that type (distance units)
+ <I>amap</I> args = lo hi style delta N entry1 entry2 ... entryN
+ lo = number or <I>min</I> = lower bound of range of color map
+ hi = number or <I>max</I> = upper bound of range of color map
+ style = 2 letters = "c" or "d" or "s" plus "a" or "f"
+ "c" for continuous
+ "d" for discrete
+ "s" for sequential
+ "a" for absolute
+ "f" for fractional
+ delta = binsize (only used for style "s", otherwise ignored)
+ binsize = range is divided into bins of this width
+ N = # of subsequent entries
+ entry = value color (for continuous style)
+ value = number or <I>min</I> or <I>max</I> = single value within range
+ color = name of color used for that value
+ entry = lo hi color (for discrete style)
+ lo/hi = number or <I>min</I> or <I>max</I> = lower/upper bound of subset of range
+ color = name of color used for that subset of values
+ entry = color (for sequential style)
+ color = name of color used for a bin of values
+ <I>backcolor</I> arg = color
+ color = name of color for background
+ <I>bcolor</I> args = type color
+ type = bond type or range of types (see below)
+ color = name of color or color1/color2/...
+ <I>bdiam</I> args = type diam
+ type = bond type or range of types (see below)
+ diam = diameter of bonds of that type (distance units)
+ <I>boxcolor</I> arg = color
+ color = name of color for simulation box lines and processor sub-domain lines
+ <I>color</I> args = name R G B
+ name = name of color
+ R,G,B = red/green/blue numeric values from 0.0 to 1.0
+ <I>bitrate</I> arg = rate
+ rate = target bitrate for movie in kbps
+ <I>framerate</I> arg = fps
+ fps = frames per second for movie
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>dump_modify 1 format "%d %d %20.15g %g %g" scale yes
+dump_modify myDump image yes scale no flush yes
+dump_modify 1 region mySphere thresh x < 0.0 thresh epair >= 3.2
+dump_modify xtcdump precision 10000 sfactor 0.1
+dump_modify 1 every 1000 nfile 20
+dump_modify 1 every v_myVar
+dump_modify 1 amap min max cf 0.0 3 min green 0.5 yellow max blue boxcolor red
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Modify the parameters of a previously defined dump command. Not all
+parameters are relevant to all dump styles.
+</P>
+<P>As explained on the <A HREF = "dump.html">dump</A> doc page, the <I>atom/mpiio</I>,
+<I>custom/mpiio</I>, and <I>xyz/mpiio</I> dump styles are identical in command
+syntax and in the format of the dump files they create, to the
+corresponding styles without "mpiio", except the single dump file they
+produce is written in parallel via the MPI-IO library. Thus if a
+dump_modify option below is valid for the <I>atom</I> style, it is also
+valid for the <I>atom/mpiio</I> style, and similarly for the other styles
+which allow for use of MPI-IO.
+</P>
+<HR>
+
+<HR>
+
+<P>These keywords apply to various dump styles, including the <A HREF = "dump_image.html">dump
+image</A> and <A HREF = "dump_image.html">dump movie</A> styles. The
+description gives details.
+</P>
+<HR>
+
+<P>The <I>append</I> keyword applies to all dump styles except <I>cfg</I> and <I>xtc</I>
+and <I>dcd</I>. It also applies only to text output files, not to binary
+or gzipped or image/movie files. If specified as <I>yes</I>, then dump
+snapshots are appended to the end of an existing dump file. If
+specified as <I>no</I>, then a new dump file will be created which will
+overwrite an existing file with the same name. This keyword can only
+take effect if the dump_modify command is used after the
+<A HREF = "dump.html">dump</A> command, but before the first command that causes
+dump snapshots to be output, e.g. a <A HREF = "run.html">run</A> or
+<A HREF = "minimize.html">minimize</A> command. Once the dump file has been opened,
+this keyword has no further effect.
+</P>
+<HR>
+
+<P>The <I>buffer</I> keyword applies only to dump styles <I>atom</I>, <I>cfg</I>,
+<I>custom</I>, <I>local</I>, and <I>xyz</I>. It also applies only to text output
+files, not to binary or gzipped files. If specified as <I>yes</I>, which
+is the default, then each processor writes its output into an internal
+text buffer, which is then sent to the processor(s) which perform file
+writes, and written by those processors(s) as one large chunk of text.
+If specified as <I>no</I>, each processor sends its per-atom data in binary
+format to the processor(s) which perform file wirtes, and those
+processor(s) format and write it line by line into the output file.
+</P>
+<P>The buffering mode is typically faster since each processor does the
+relatively expensive task of formatting the output for its own atoms.
+However it requires about twice the memory (per processor) for the
+extra buffering.
+</P>
+<HR>
+
+<P>The <I>element</I> keyword applies only to the the dump <I>cfg</I>, <I>xyz</I>, and
+<I>image</I> styles. It associates element names (e.g. H, C, Fe) with
+LAMMPS atom types. See the list of element names at the bottom of
+this page.
+</P>
+<P>In the case of dump <I>cfg</I>, this allows the <A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</A>
+visualization package to read the dump file and render atoms with the
+appropriate size and color.
+</P>
+<P>In the case of dump <I>image</I>, the output images will follow the same
+<A HREF = "http://mt.seas.upenn.edu/Archive/Graphics/A">AtomEye</A> convention. An element name is specified for each
+atom type (1 to Ntype) in the simulation. The same element name can
+be given to multiple atom types.
+</P>
+<P>In the case of <I>xyz</I> format dumps, there are no restrictions to what
+label can be used as an element name. Any whitespace separated text
+will be accepted.
+</P>
+
+
+<HR>
+
+<P>The <I>every</I> keyword changes the dump frequency originally specified by
+the <A HREF = "dump.html">dump</A> command to a new value. The every keyword can be
+specified in one of two ways. It can be a numeric value in which case
+it must be > 0. Or it can be an <A HREF = "variable.html">equal-style variable</A>,
+which should be specified as v_name, where name is the variable name.
+</P>
+<P>In this case, the variable is evaluated at the beginning of a run to
+determine the next timestep at which a dump snapshot will be written
+out. On that timestep the variable will be evaluated again to
+determine the next timestep, etc. Thus the variable should return
+timestep values. See the stagger() and logfreq() and stride() math
+functions for <A HREF = "variable.html">equal-style variables</A>, as examples of
+useful functions to use in this context. Other similar math functions
+could easily be added as options for <A HREF = "variable.html">equal-style
+variables</A>. Also see the next() function, which allows
+use of a file-style variable which reads successive values from a
+file, each time the variable is evaluated. Used with the <I>every</I>
+keyword, if the file contains a list of ascending timesteps, you can
+output snapshots whenever you wish.
+</P>
+<P>Note that when using the variable option with the <I>every</I> keyword, you
+need to use the <I>first</I> option if you want an initial snapshot written
+to the dump file. The <I>every</I> keyword cannot be used with the dump
+<I>dcd</I> style.
+</P>
+<P>For example, the following commands will
+write snapshots at timesteps 0,10,20,30,100,200,300,1000,2000,etc:
+</P>
+<PRE>variable s equal logfreq(10,3,10)
+dump 1 all atom 100 tmp.dump
+dump_modify 1 every v_s first yes
+</PRE>
+<P>The following commands would write snapshots at the timesteps listed
+in file tmp.times:
+</P>
+<PRE>variable f file tmp.times
+variable s equal next(f)
+dump 1 all atom 100 tmp.dump
+dump_modify 1 every v_s
+</PRE>
+<P>IMPORTANT NOTE: When using a file-style variable with the <I>every</I>
+keyword, the file of timesteps must list a first timestep that is
+beyond the current timestep (e.g. it cannot be 0). And it must list
+one or more timesteps beyond the length of the run you perform. This
+is because the dump command will generate an error if the next
+timestep it reads from the file is not a value greater than the
+current timestep. Thus if you wanted output on steps 0,15,100 of a
+100-timestep run, the file should contain the values 15,100,101 and
+you should also use the dump_modify first command. Any final value >
+100 could be used in place of 101.
+</P>
+<HR>
+
+<P>The <I>first</I> keyword determines whether a dump snapshot is written on
+the very first timestep after the dump command is invoked. This will
+always occur if the current timestep is a multiple of N, the frequency
+specified in the <A HREF = "dump.html">dump</A> command, including timestep 0. But
+if this is not the case, a dump snapshot will only be written if the
+setting of this keyword is <I>yes</I>. If it is <I>no</I>, which is the
+default, then it will not be written.
+</P>
+<HR>
+
+<P>The <I>flush</I> keyword determines whether a flush operation is invoked
+after a dump snapshot is written to the dump file. A flush insures
+the output in that file is current (no buffering by the OS), even if
+LAMMPS halts before the simulation completes. Flushes cannot be
+performed with dump style <I>xtc</I>.
+</P>
+<HR>
+
+<P>The text-based dump styles have a default C-style format string which
+simply specifies %d for integers and %g for floating-point values.
+The <I>format</I> keyword can be used to override the default with a new
+C-style format string. Do not include a trailing "\n" newline
+character in the format string. This option has no effect on the
+<I>dcd</I> and <I>xtc</I> dump styles since they write binary files. Note that
+for the <I>cfg</I> style, the first two fields (atom id and type) are not
+actually written into the CFG file, though you must include formats
+for them in the format string.
+</P>
+<P>IMPORTANT NOTE: Any value written to a text-based dump file that is a
+per-atom quantity calculated by a <A HREF = "compute.html">compute</A> or
+<A HREF = "fix.html">fix</A> is stored internally as a floating-point value. If the
+value is actually an integer and you wish it to appear in the text
+dump file as a (large) integer, then you need to use an appropriate
+format. For example, these commands:
+</P>
+<PRE>compute 1 all property/local batom1 batom2
+dump 1 all local 100 tmp.bonds index c_1[1] c_1[2]
+dump_modify 1 format "%d %0.0f %0.0f"
+</PRE>
+<P>will output the two atom IDs for atoms in each bond as integers. If
+the dump_modify command were omitted, they would appear as
+floating-point values, assuming they were large integers (more than 6
+digits). The "index" keyword should use the "%d" format since it is
+not generated by a compute or fix, and is stored internally as an
+integer.
+</P>
+<HR>
+
+<P>The <I>fileper</I> keyword is documented below with the <I>nfile</I> keyword.
+</P>
+<HR>
+
+<P>The <I>image</I> keyword applies only to the dump <I>atom</I> style. If the
+image value is <I>yes</I>, 3 flags are appended to each atom's coords which
+are the absolute box image of the atom in each dimension. For
+example, an x image flag of -2 with a normalized coord of 0.5 means
+the atom is in the center of the box, but has passed thru the box
+boundary 2 times and is really 2 box lengths to the left of its
+current coordinate. Note that for dump style <I>custom</I> these various
+values can be printed in the dump file by using the appropriate atom
+attributes in the dump command itself.
+</P>
+<HR>
+
+<P>The <I>label</I> keyword applies only to the dump <I>local</I> style. When
+it writes local information, such as bond or angle topology
+to a dump file, it will use the specified <I>label</I> to format
+the header. By default this includes 2 lines:
+</P>
+<PRE>ITEM: NUMBER OF ENTRIES
+ITEM: ENTRIES ...
+</PRE>
+<P>The word "ENTRIES" will be replaced with the string specified,
+e.g. BONDS or ANGLES.
+</P>
+<HR>
+
+<P>The <I>nfile</I> or <I>fileper</I> keywords can be used in conjunction with the
+"%" wildcard character in the specified dump file name, for all dump
+styles except the <I>dcd</I>, <I>image</I>, <I>movie</I>, <I>xtc</I>, and <I>xyz</I> styles
+(for which "%" is not allowed). As explained on the <A HREF = "dump.html">dump</A>
+command doc page, the "%" character causes the dump file to be written
+in pieces, one piece for each of P processors. By default P = the
+number of processors the simulation is running on. The <I>nfile</I> or
+<I>fileper</I> keyword can be used to set P to a smaller value, which can
+be more efficient when running on a large number of processors.
+</P>
+<P>The <I>nfile</I> keyword sets P to the specified Nf value. For example, if
+Nf = 4, and the simulation is running on 100 processors, 4 files will
+be written, by processors 0,25,50,75. Each will collect information
+from itself and the next 24 processors and write it to a dump file.
+</P>
+<P>For the <I>fileper</I> keyword, the specified value of Np means write one
+file for every Np processors. For example, if Np = 4, every 4th
+processor (0,4,8,12,etc) will collect information from itself and the
+next 3 processors and write it to a dump file.
+</P>
+<HR>
+
+<P>The <I>pad</I> keyword only applies when the dump filename is specified
+with a wildcard "*" character which becomes the timestep. If <I>pad</I> is
+0, which is the default, the timestep is converted into a string of
+unpadded length, e.g. 100 or 12000 or 2000000. When <I>pad</I> is
+specified with <I>Nchar</I> > 0, the string is padded with leading zeroes
+so they are all the same length = <I>Nchar</I>. For example, pad 7 would
+yield 0000100, 0012000, 2000000. This can be useful so that
+post-processing programs can easily read the files in ascending
+timestep order.
+</P>
+<HR>
+
+<P>The <I>precision</I> keyword only applies to the dump <I>xtc</I> style. A
+specified value of N means that coordinates are stored to 1/N
+nanometer accuracy, e.g. for N = 1000, the coordinates are written to
+1/1000 nanometer accuracy.
+</P>
+<HR>
+
+<P>The <I>sfactor</I> and <I>tfactor</I> keywords only apply to the dump <I>xtc</I>
+style. They allow customization of the unit conversion factors used
+when writing to XTC files. By default they are initialized for
+whatever <A HREF = "units.html">units</A> style is being used, to write out
+coordinates in nanometers and time in picoseconds. I.e. for <I>real</I>
+units, LAMMPS defines <I>sfactor</I> = 0.1 and <I>tfactor</I> = 0.001, since the
+Angstroms and fmsec used by <I>real</I> units are 0.1 nm and 0.001 psec
+respectively. If you are using a units system with distance and time
+units far from nm and psec, you may wish to write XTC files with
+different units, since the compression algorithm used in XTC files is
+most effective when the typical magnitude of position data is between
+10.0 and 0.1.
+</P>
+<HR>
+
+<P>The <I>region</I> keyword only applies to the dump <I>custom</I>, <I>cfg</I>,
+<I>image</I>, and <I>movie</I> styles. If specified, only atoms in the region
+will be written to the dump file or included in the image/movie. Only
+one region can be applied as a filter (the last one specified). See
+the <A HREF = "region.html">region</A> command for more details. Note that a region
+can be defined as the "inside" or "outside" of a geometric shape, and
+it can be the "union" or "intersection" of a series of simpler
+regions.
+</P>
+<HR>
+
+<P>The <I>scale</I> keyword applies only to the dump <I>atom</I> style. A scale
+value of <I>yes</I> means atom coords are written in normalized units from
+0.0 to 1.0 in each box dimension. If the simluation box is triclinic
+(tilted), then all atom coords will still be between 0.0 and 1.0. A
+value of <I>no</I> means they are written in absolute distance units
+(e.g. Angstroms or sigma).
+</P>
+<HR>
+
+<P>The <I>sort</I> keyword determines whether lines of per-atom output in a
+snapshot are sorted or not. A sort value of <I>off</I> means they will
+typically be written in indeterminate order, either in serial or
+parallel. This is the case even in serial if the <A HREF = "atom_modify.html">atom_modify
+sort</A> option is turned on, which it is by default, to
+improve performance. A sort value of <I>id</I> means sort the output by
+atom ID. A sort value of N or -N means sort the output by the value
+in the Nth column of per-atom info in either ascending or descending
+order.
+</P>
+<P>The dump <I>local</I> style cannot be sorted by atom ID, since there are
+typically multiple lines of output per atom. Some dump styles, such
+as <I>dcd</I> and <I>xtc</I>, require sorting by atom ID to format the output
+file correctly. If multiple processors are writing the dump file, via
+the "%" wildcard in the dump filename, then sorting cannot be
+performed.
+</P>
+<P>IMPORTANT NOTE: Unless it is required by the dump style, sorting dump
+file output requires extra overhead in terms of CPU and communication
+cost, as well as memory, versus unsorted output.
+</P>
+<HR>
+
+<P>The <I>thresh</I> keyword only applies to the dump <I>custom</I>, <I>cfg</I>,
+<I>image</I>, and <I>movie</I> styles. Multiple thresholds can be specified.
+Specifying "none" turns off all threshold criteria. If thresholds are
+specified, only atoms whose attributes meet all the threshold criteria
+are written to the dump file or included in the image. The possible
+attributes that can be tested for are the same as those that can be
+specified in the <A HREF = "dump.html">dump custom</A> command, with the exception
+of the <I>element</I> attribute, since it is not a numeric value. Note
+that different attributes can be output by the dump custom command
+than are used as threshold criteria by the dump_modify command.
+E.g. you can output the coordinates and stress of atoms whose energy
+is above some threshold.
+</P>
+<HR>
+
+<P>The <I>unwrap</I> keyword only applies to the dump <I>dcd</I> and <I>xtc</I> styles.
+If set to <I>yes</I>, coordinates will be written "unwrapped" by the image
+flags for each atom. Unwrapped means that if the atom has passed thru
+a periodic boundary one or more times, the value is printed for what
+the coordinate would be if it had not been wrapped back into the
+periodic box. Note that these coordinates may thus be far outside the
+box size stored with the snapshot.
+</P>
+<HR>
+
+<HR>
+
+<P>These keywords apply only to the <A HREF = "dump_image.html">dump image</A> and
+<A HREF = "dump_image.html">dump movie</A> styles. Any keyword that affects an
+image, also affects a movie, since the movie is simply a collection of
+images. Some of the keywords only affect the <A HREF = "dump_image.html">dump
+movie</A> style. The descriptions give details.
+</P>
+<HR>
+
+<P>The <I>acolor</I> keyword can be used with the <A HREF = "dump_image.html">dump image</A>
+command, when its atom color setting is <I>type</I>, to set the color that
+atoms of each type will be drawn in the image.
+</P>
+<P>The specified <I>type</I> should be an integer from 1 to Ntypes = the
+number of atom types. A wildcard asterisk can be used in place of or
+in conjunction with the <I>type</I> argument to specify a range of atom
+types. This takes the form "*" or "*n" or "n*" or "m*n". If N = the
+number of atom types, then an asterisk with no numeric values means
+all types from 1 to N. A leading asterisk means all types from 1 to n
+(inclusive). A trailing asterisk means all types from n to N
+(inclusive). A middle asterisk means all types from m to n
+(inclusive).
+</P>
+<P>The specified <I>color</I> can be a single color which is any of the 140
+pre-defined colors (see below) or a color name defined by the
+dump_modify color option. Or it can be two or more colors separated
+by a "/" character, e.g. red/green/blue. In the former case, that
+color is assigned to all the specified atom types. In the latter
+case, the list of colors are assigned in a round-robin fashion to each
+of the specified atom types.
+</P>
+<HR>
+
+<P>The <I>adiam</I> keyword can be used with the <A HREF = "dump_image.html">dump image</A>
+command, when its atom diameter setting is <I>type</I>, to set the size
+that atoms of each type will be drawn in the image. The specified
+<I>type</I> should be an integer from 1 to Ntypes. As with the <I>acolor</I>
+keyword, a wildcard asterisk can be used as part of the <I>type</I>
+argument to specify a range of atomt types. The specified <I>diam</I> is
+the size in whatever distance <A HREF = "units.html">units</A> the input script is
+using, e.g. Angstroms.
+</P>
+<HR>
+
+<P>The <I>amap</I> keyword can be used with the <A HREF = "dump_image.html">dump image</A>
+command, with its <I>atom</I> keyword, when its atom setting is an
+atom-attribute, to setup a color map. The color map is used to assign
+a specific RGB (red/green/blue) color value to an individual atom when
+it is drawn, based on the atom's attribute, which is a numeric value,
+e.g. its x-component of velocity if the atom-attribute "vx" was
+specified.
+</P>
+<P>The basic idea of a color map is that the atom-attribute will be
+within a range of values, and that range is associated with a a series
+of colors (e.g. red, blue, green). An atom's specific value (vx =
+-3.2) can then mapped to the series of colors (e.g. halfway between
+red and blue), and a specific color is determined via an interpolation
+procedure.
+</P>
+<P>There are many possible options for the color map, enabled by the
+<I>amap</I> keyword. Here are the details.
+</P>
+<P>The <I>lo</I> and <I>hi</I> settings determine the range of values allowed for
+the atom attribute. If numeric values are used for <I>lo</I> and/or <I>hi</I>,
+then values that are lower/higher than that value are set to the
+value. I.e. the range is static. If <I>lo</I> is specified as <I>min</I> or
+<I>hi</I> as <I>max</I> then the range is dynamic, and the lower and/or
+upper bound will be calculated each time an image is drawn, based
+on the set of atoms being visualized.
+</P>
+<P>The <I>style</I> setting is two letters, such as "ca". The first letter is
+either "c" for continuous, "d" for discrete, or "s" for sequential.
+The second letter is either "a" for absolute, or "f" for fractional.
+</P>
+<P>A continuous color map is one in which the color changes continuously
+from value to value within the range. A discrete color map is one in
+which discrete colors are assigned to sub-ranges of values within the
+range. A sequential color map is one in which discrete colors are
+assigned to a sequence of sub-ranges of values covering the entire
+range.
+</P>
+<P>An absolute color map is one in which the values to which colors are
+assigned are specified explicitly as values within the range. A
+fractional color map is one in which the values to which colors are
+assigned are specified as a fractional portion of the range. For
+example if the range is from -10.0 to 10.0, and the color red is to be
+assigned to atoms with a value of 5.0, then for an absolute color map
+the number 5.0 would be used. But for a fractional map, the number
+0.75 would be used since 5.0 is 3/4 of the way from -10.0 to 10.0.
+</P>
+<P>The <I>delta</I> setting must be specified for all styles, but is only used
+for the sequential style; otherwise the value is ignored. It
+specifies the bin size to use within the range for assigning
+consecutive colors to. For example, if the range is from -10.0 to
+10.0 and a <I>delta</I> of 1.0 is used, then 20 colors will be assigned to
+the range. The first will be from -10.0 <= color1 < -9.0, then 2nd
+from -9.0 <= color2 < -8.0, etc.
+</P>
+<P>The <I>N</I> setting is how many entries follow. The format of the entries
+depends on whether the color map style is continuous, discrete or
+sequential. In all cases the <I>color</I> setting can be any of the 140
+pre-defined colors (see below) or a color name defined by the
+dump_modify color option.
+</P>
+<P>For continuous color maps, each entry has a <I>value</I> and a <I>color</I>.
+The <I>value</I> is either a number within the range of values or <I>min</I> or
+<I>max</I>. The <I>value</I> of the first entry must be <I>min</I> and the <I>value</I>
+of the last entry must be <I>max</I>. Any entries in between must have
+increasing values. Note that numeric values can be specified either
+as absolute numbers or as fractions (0.0 to 1.0) of the range,
+depending on the "a" or "f" in the style setting for the color map.
+</P>
+<P>Here is how the entries are used to determine the color of an
+individual atom, given the value X of its atom attribute. X will fall
+between 2 of the entry values. The color of the atom is linearly
+interpolated (in each of the RGB values) between the 2 colors
+associated with those entries. For example, if X = -5.0 and the 2
+surrounding entries are "red" at -10.0 and "blue" at 0.0, then the
+atom's color will be halfway between "red" and "blue", which happens
+to be "purple".
+</P>
+<P>For discrete color maps, each entry has a <I>lo</I> and <I>hi</I> value and a
+<I>color</I>. The <I>lo</I> and <I>hi</I> settings are either numbers within the
+range of values or <I>lo</I> can be <I>min</I> or <I>hi</I> can be <I>max</I>. The <I>lo</I>
+and <I>hi</I> settings of the last entry must be <I>min</I> and <I>max</I>. Other
+entries can have any <I>lo</I> and <I>hi</I> values and the sub-ranges of
+different values can overlap. Note that numeric <I>lo</I> and <I>hi</I> values
+can be specified either as absolute numbers or as fractions (0.0 to
+1.0) of the range, depending on the "a" or "f" in the style setting
+for the color map.
+</P>
+<P>Here is how the entries are used to determine the color of an
+individual atom, given the value X of its atom attribute. The entries
+are scanned from first to last. The first time that <I>lo</I> <= X <=
+<I>hi</I>, X is assigned the color associated with that entry. You can
+think of the last entry as assigning a default color (since it will
+always be matched by X), and the earlier entries as colors that
+override the default. Also note that no interpolation of a color RGB
+is done. All atoms will be drawn with one of the colors in the list
+of entries.
+</P>
+<P>For sequential color maps, each entry has only a <I>color</I>. Here is how
+the entries are used to determine the color of an individual atom,
+given the value X of its atom attribute. The range is partitioned
+into N bins of width <I>binsize</I>. Thus X will fall in a specific bin
+from 1 to N, say the Mth bin. If it falls on a boundary between 2
+bins, it is considered to be in the higher of the 2 bins. Each bin is
+assigned a color from the E entries. If E < N, then the colors are
+repeated. For example if 2 entries with colors red and green are
+specified, then the odd numbered bins will be red and the even bins
+green. The color of the atom is the color of its bin. Note that the
+sequential color map is really a shorthand way of defining a discrete
+color map without having to specify where all the bin boundaries are.
+</P>
+<P>Here is an example of using a sequential color map to color all the
+atoms in individual molecules with a different color. See the
+examples/pour/in.pour.2d.molecule input script for an example of how
+this is used.
+</P>
+<PRE>variable colors string &
+ "red green blue yellow white &
+ purple pink orange lime gray"
+variable mol atom mol%10
+dump 1 all image 250 image.*.jpg v_mol type &
+ zoom 1.6 adiam 1.5
+dump_modify 1 pad 5 amap 0 10 sa 1 10 ${colors}
+</PRE>
+<P>In this case, 10 colors are defined, and molecule IDs are
+mapped to one of the colors, even if there are 1000s of molecules.
+</P>
+<HR>
+
+<P>The <I>backcolor</I> sets the background color of the images. The color
+name can be any of the 140 pre-defined colors (see below) or a color
+name defined by the dump_modify color option.
+</P>
+<HR>
+
+<P>The <I>bcolor</I> keyword can be used with the <A HREF = "dump_image.html">dump image</A>
+command, with its <I>bond</I> keyword, when its color setting is <I>type</I>, to
+set the color that bonds of each type will be drawn in the image.
+</P>
+<P>The specified <I>type</I> should be an integer from 1 to Nbondtypes = the
+number of bond types. A wildcard asterisk can be used in place of or
+in conjunction with the <I>type</I> argument to specify a range of bond
+types. This takes the form "*" or "*n" or "n*" or "m*n". If N = the
+number of bond types, then an asterisk with no numeric values means
+all types from 1 to N. A leading asterisk means all types from 1 to n
+(inclusive). A trailing asterisk means all types from n to N
+(inclusive). A middle asterisk means all types from m to n
+(inclusive).
+</P>
+<P>The specified <I>color</I> can be a single color which is any of the 140
+pre-defined colors (see below) or a color name defined by the
+dump_modify color option. Or it can be two or more colors separated
+by a "/" character, e.g. red/green/blue. In the former case, that
+color is assigned to all the specified bond types. In the latter
+case, the list of colors are assigned in a round-robin fashion to each
+of the specified bond types.
+</P>
+<HR>
+
+<P>The <I>bdiam</I> keyword can be used with the <A HREF = "dump_image.html">dump image</A>
+command, with its <I>bond</I> keyword, when its diam setting is <I>type</I>, to
+set the diameter that bonds of each type will be drawn in the image.
+The specified <I>type</I> should be an integer from 1 to Nbondtypes. As
+with the <I>bcolor</I> keyword, a wildcard asterisk can be used as part of
+the <I>type</I> argument to specify a range of bond types. The specified
+<I>diam</I> is the size in whatever distance <A HREF = "units.html">units</A> you are
+using, e.g. Angstroms.
+</P>
+<HR>
+
+<P>The <I>bitrate</I> keyword can be used with the <A HREF = "dump_image.html">dump
+movie</A> command to define the size of the resulting
+movie file and its quality via setting how many kbits per second are
+to be used for the movie file. Higher bitrates require less
+compression and will result in higher quality movies. The quality is
+also determined by the compression format and encoder. The default
+setting is 2000 kbit/s, which will result in average quality with
+older compression formats.
+</P>
+<P>IMPORTANT NOTE: Not all movie file formats supported by dump movie
+allow the bitrate to be set. If not, the setting is silently ignored.
+</P>
+<HR>
+
+<P>The <I>boxcolor</I> keyword sets the color of the simulation box drawn
+around the atoms in each image as well as the color of processor
+sub-domain boundaries. See the "dump image box" command for how to
+specify that a box be drawn via the <I>box</I> keyword, and the sub-domain
+boundaries via the <I>subbox</I> keyword. The color name can be any of the
+140 pre-defined colors (see below) or a color name defined by the
+dump_modify color option.
+</P>
+<HR>
+
+<P>The <I>color</I> keyword allows definition of a new color name, in addition
+to the 140-predefined colors (see below), and associates 3
+red/green/blue RGB values with that color name. The color name can
+then be used with any other dump_modify keyword that takes a color
+name as a value. The RGB values should each be floating point values
+between 0.0 and 1.0 inclusive.
+</P>
+<P>When a color name is converted to RGB values, the user-defined color
+names are searched first, then the 140 pre-defined color names. This
+means you can also use the <I>color</I> keyword to overwrite one of the
+pre-defined color names with new RBG values.
+</P>
+<HR>
+
+<P>The <I>framerate</I> keyword can be used with the <A HREF = "dump_image.html">dump
+movie</A> command to define the duration of the resulting
+movie file. Movie files written by the dump <I>movie</I> command have a
+default frame rate of 24 frames per second and the images generated
+will be converted at that rate. Thus a sequence of 1000 dump images
+will result in a movie of about 42 seconds. To make a movie run
+longer you can either generate images more frequently or lower the
+frame rate. To speed a movie up, you can do the inverse. Using a
+frame rate higher than 24 is not recommended, as it will result in
+simply dropping the rendered images. It is more efficient to dump
+<LI>group-ID = ID of the group of atoms to be imaged
+
+<LI>molfile = style of dump command (other styles <I>atom</I> or <I>cfg</I> or <I>dcd</I> or <I>xtc</I> or <I>xyz</I> or <I>local</I> or <I>custom</I> are discussed on the <A HREF = "dump.html">dump</A> doc page)
+
+<LI>N = dump every this many timesteps
+
+<LI>file = name of file to write to
+
+<LI>format = file format to be used
+
+<LI>path = file path with plugins (optional)
+
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>dump mf1 all molfile 10 melt1.xml hoomd
+dump mf2 all molfile 10 melt2-*.pdb pdb .
+dump mf3 all molfile 50 melt3.xyz xyz .:/home/akohlmey/vmd/plugins/LINUX/molfile
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Dump a snapshot of atom coordinates and selected additional quantities
+to one or more files every N timesteps in one of several formats.
+Only information for atoms in the specified group is dumped. This
+specific dump style uses molfile plugins that are bundled with the
+<A HREF = "http://www.ks.uiuc.edu/Research/vmd">VMD</A> molecular visualization and
+analysis program. See <A HREF = "Section_tools.html#vmd">Section tools</A> of the
+manual and the tools/lmp2vmd/README.txt file for more information
+about support in VMD for reading and visualizing native LAMMPS dump
+files.
+</P>
+<P>Unless the filename contains a * character, the output will be written
+to one single file with the specified format. Otherwise there will be
+one file per snapshot and the * will be replaced by the time step number
+when the snapshot is written.
+</P>
+<P>IMPORTANT NOTE: Because periodic boundary conditions are enforced only
+on timesteps when neighbor lists are rebuilt, the coordinates of an
+atom written to a dump file may be slightly outside the simulation
+box.
+</P>
+<P>The molfile plugin API has a few restrictions that have to be honored
+by this dump style: the number of atoms must not change, the atoms
+must be sorted, outside of the coordinates no change in atom properties
+(like type, mass, charge) will be recorded.
+</P>
+<HR>
+
+<P>The <I>format</I> keyword determines what format is used to write out the
+dump. For this to work, LAMMPS must be able to find and load a
+compatible molfile plugin that supports this format. Settings made via
+the <A HREF = "dump_modify.html">dump_modify</A> command can alter per atom properties
+like element names.
+</P>
+<P>The <I>path</I> keyword determines which in directories. This is a "path"
+like other search paths, i.e. it can contain multiple directories
+separated by a colon (or semi-colon on windows). This keyword is
+optional and default to ".", the current directory.
+</P>
+<P>The <I>unwrap</I> option of the <A HREF = "dump_modify.html">dump_modify</A> command allows
+coordinates to be written "unwrapped" by the image flags for each atom.
+Unwrapped means that if the atom has passed through a periodic boundary
+one or more times, the value is printed for what the coordinate would be
+if it had not been wrapped back into the periodic box. Note that these
+coordinates may thus be far outside the box size stored with the
+snapshot.
+</P>
+<HR>
+
+<P>Dumps are performed on timesteps that are a multiple of N (including
+timestep 0) and on the last timestep of a minimization if the
+minimization converges. Note that this means a dump will not be
+performed on the initial timestep after the dump command is invoked,
+if the current timestep is not a multiple of N. This behavior can be
+changed via the <A HREF = "dump_modify.html">dump_modify first</A> command, which can
+be useful if the dump command is invoked after a minimization ended on
+an arbitrary timestep. N can be changed between runs by using the
+<LI><A HREF = "fix_qeq_comb.html">qeq/comb</A> - charge equilibration for COMB potential <A HREF = "fix_qeq.html">qeq/dynamic</A> - charge equilibration via dynamic method <A HREF = "fix_qeq.html">qeq/point</A> - charge equilibration via point method <A HREF = "fix_qeq.html">qeq/shielded</A> - charge equilibration via shielded method <A HREF = "fix_qeq.html">qeq/slater</A> - charge equilibration via Slater method <A HREF = "fix_reax_bonds.html">reax/bonds</A> - write out ReaxFF bond information <A HREF = "fix_recenter.html">recenter</A> - constrain the center-of-mass position of a group of atoms
+<LI><A HREF = "fix_restrain.html">restrain</A> - constrain a bond, angle, dihedral
+<LI><A HREF = "fix_rigid.html">rigid</A> - constrain one or more clusters of atoms to move as a rigid body with NVE integration
+<LI><A HREF = "fix_rigid.html">rigid/nph</A> - constrain one or more clusters of atoms to move as a rigid body with NPH integration
+<LI><A HREF = "fix_rigid.html">rigid/npt</A> - constrain one or more clusters of atoms to move as a rigid body with NPT integration
+<LI><A HREF = "fix_rigid.html">rigid/nve</A> - constrain one or more clusters of atoms to move as a rigid body with alternate NVE integration
+<LI><A HREF = "fix_rigid.html">rigid/nvt</A> - constrain one or more clusters of atoms to move as a rigid body with NVT integration
+<LI><A HREF = "fix_rigid.html">rigid/small</A> - constrain many small clusters of atoms to move as a rigid body with NVE integration
+<LI><A HREF = "fix_setforce.html">setforce</A> - set the force on each atom
+<LI>type = <I>thermal</I> or <I>two_temperature</I> or <I>hardy</I> or <I>field</I>
+
+<PRE> <I>thermal</I> = thermal coupling with fields: temperature
+ <I>two_temperature</I> = electron-phonon coupling with field: temperature and electron_temperature
+ <I>hardy</I> = on-the-fly post-processing using kernel localization functions (see "related" section for possible fields)
+ <I>field</I> = on-the-fly post-processing using mesh-based localization functions (see "related" section for possible fields)
+</PRE>
+<LI>parameter_file = name of the file with material parameters. Note: Neither hardy nor field requires a parameter file
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix AtC internal atc thermal Ar_thermal.dat
+fix AtC internal atc two_temperature Ar_ttm.mat
+fix AtC internal atc hardy
+fix AtC internal atc field
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>This fix is the beginning to creating a coupled FE/MD simulation and/or an on-the-fly estimation of continuum fields. The coupled versions of this fix do Verlet integration and the post-processing does not. After instantiating this fix, several other fix_modify commands will be needed to set up the problem, e.g. define the finite element mesh and prescribe initial and boundary conditions.
+</P>
+<CENTER><IMG SRC = "JPG/atc_nanotube.jpg">
+</CENTER>
+<PRE>The following coupling example is typical, but non-exhaustive:
+ # ... commands to create and initialize the MD system
+</PRE>
+<PRE> # initial fix to designate coupling type and group to apply it to
+ # tag group physics material_file
+ fix AtC internal atc thermal Ar_thermal.mat
+</PRE>
+<PRE> # create a uniform 12 x 2 x 2 mesh that covers region contain the group
+ # nx ny nz region periodicity
+ fix_modify AtC mesh create 12 2 2 mdRegion f p p
+</PRE>
+<PRE> # specify the control method for the type of coupling
+ # physics control_type
+ fix_modify AtC thermal control flux
+</PRE>
+<PRE> # specify the initial values for the empirical field "temperature"
+ # field node_group value
+ fix_modify AtC initial temperature all 30
+</PRE>
+<PRE> # create an output stream for nodal fields
+ # filename output_frequency
+ fix_modify AtC output atc_fe_output 100
+</PRE>
+<PRE> run 1000
+</PRE>
+<P>likewise for this post-processing example:
+</P>
+<PRE> # ... commands to create and initialize the MD system
+</PRE>
+<PRE> # initial fix to designate post-processing and the group to apply it to
+ # no material file is allowed nor required
+ fix AtC internal atc hardy
+</PRE>
+<PRE> # for hardy fix, specific kernel function (function type and range) to # be used as a localization function
+ fix AtC kernel quartic_sphere 10.0
+</PRE>
+<PRE> # create a uniform 1 x 1 x 1 mesh that covers region contain the group
+ # with periodicity this effectively creats a system average
+ fix_modify AtC mesh create 1 1 1 box p p p
+</PRE>
+<PRE> # change from default lagrangian map to eulerian
+ # refreshed every 100 steps
+ fix_modify AtC atom_element_map eulerian 100
+</PRE>
+<PRE> # start with no field defined
+ # add mass density, potential energy density, stress and temperature
+ fix_modify AtC fields add density energy stress temperature
+</PRE>
+<PRE> # create an output stream for nodal fields
+ # filename output_frequency
+ fix_modify AtC output nvtFE 100 text
+</PRE>
+<PRE> run 1000
+</PRE>
+<P>the mesh's linear interpolation functions can be used as the localization function
+ by using the field option:
+</P>
+<P> fix AtC internal atc field
+</P>
+<P> fix_modify AtC mesh create 1 1 1 box p p p
+</P>
+<P> ...
+</P>
+<P>Note coupling and post-processing can be combined in the same simulations using separate fixes.
+</P>
+<HR>
+
+<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
+</P>
+<P>No information about this fix is written to <A HREF = "restart.html">binary restart files</A>. The <A HREF = "fix_modify.html">fix_modify</A> options relevant to this fix are listed below. No global scalar or vector or per-atom quantities are stored by this fix for access by various <A HREF = "Section_howto.html#howto_15">output commands</A>. No parameter of this fix can be used with the <I>start/stop</I> keywords of the <A HREF = "run.html">run</A> command. This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
+</P>
+<P><B>Restrictions:</B>
+</P>
+<P>Thermal and two_temperature (coupling) types use a Verlet time-integration algorithm. The hardy type does not contain its own time-integrator and must be used with a separate fix that does contain one, e.g. nve, nvt, etc.
+</P>
+<UL><LI>Currently,
+<LI>- the coupling is restricted to thermal physics
+<LI>- the FE computations are done in serial on each processor.
+</UL>
+<P><B>Related commands:</B>
+</P>
+<P>After specifying this fix in your input script, several other <A HREF = "fix_modify.html">fix_modify</A> commands are used to setup the problem, e.g. define the finite element mesh and prescribe initial and boundary conditions.
+<P>Note: a set of example input files with the attendant material files are included with this package
+</P>
+<P><B>Default:</B>
+None
+</P>
+<HR>
+
+<P>For detailed exposition of the theory and algorithms please see:
+</P>
+<A NAME = "Wagner"></A>
+
+<P><B>(Wagner)</B> Wagner, GJ; Jones, RE; Templeton, JA; Parks, MA, "An atomistic-to-continuum coupling method for heat transfer in solids." Special Issue of Computer Methods and Applied Mechanics (2008) 197:3351.
+</P>
+<A NAME = "Zimmeman2004"></A>
+
+<P><B>(Zimmerman2004)</B> Zimmerman, JA; Webb, EB; Hoyt, JJ;. Jones, RE; Klein, PA; Bammann, DJ, "Calculation of stress in atomistic simulation." Special Issue of Modelling and Simulation in Materials Science and Engineering (2004), 12:S319.
+</P>
+<A NAME = "Zimmerman2010"></A>
+
+<P><B>(Zimmerman2010)</B> Zimmerman, JA; Jones, RE; Templeton, JA, "A material frame approach for evaluating continuum variables in atomistic simulations." Journal of Computational Physics (2010), 229:2364.
+</P>
+<A NAME = "Templeton2010"></A>
+
+<P><B>(Templeton2010)</B> Templeton, JA; Jones, RE; Wagner, GJ, "Application of a field-based method to spatially varying thermal transport problems in molecular dynamics." Modelling and Simulation in Materials Science and Engineering (2010), 18:085007.
+</P>
+<A NAME = "Jones"></A>
+
+<P><B>(Jones)</B> Jones, RE; Templeton, JA; Wagner, GJ; Olmsted, D; Modine, JA, "Electron transport enhanced molecular dynamics for metals and semi-metals." International Journal for Numerical Methods in Engineering (2010), 83:940.
+</P>
+<A NAME = "Templeton2011"></A>
+
+<P><B>(Templeton2011)</B> Templeton, JA; Jones, RE; Lee, JW; Zimmerman, JA; Wong, BM, "A long-range electric field solver for molecular dynamics based on atomistic-to-continuum modeling." Journal of Chemical Theory and Computation (2011), 7:1736.
+</P>
+<A NAME = "Mandadapu"></A>
+
+<P><B>(Mandadapu)</B> Mandadapu, KK; Templeton, JA; Lee, JW, "Polarization as a field variable from molecular dynamics simulations." Journal of Chemical Physics (2013), 139:054115.
+</P>
+<P>Please refer to the standard finite element (FE) texts, e.g. T.J.R Hughes " The finite element method ", Dover 2003, for the basics of FE simulation.
+<PRE> vx,vy,vz,fx,fy,fz = atom attribute (velocity, force component)
+ density/number, density/mass = number or mass density
+ temp = temperature
+ c_ID = per-atom vector calculated by a compute with ID
+ c_ID[I] = Ith column of per-atom array calculated by a compute with ID
+ f_ID = per-atom vector calculated by a fix with ID
+ f_ID[I] = Ith column of per-atom array calculated by a fix with ID
+ v_name = per-atom vector calculated by an atom-style variable with name
+</PRE>
+<LI>zero or more keyword/arg pairs may be appended
+
+<LI>keyword = <I>norm</I> or <I>ave</I> or <I>bias</I> or <I>adof</I> or <I>cdof</I> or <I>file</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I>
+
+<PRE> <I>norm</I> arg = <I>all</I> or <I>sample</I> or <I>none</I> = how output on <I>Nfreq</I> steps is normalized
+ all = output is sum of atoms across all <I>Nrepeat</I> samples, divided by atom count
+ sample = output is sum of <I>Nrepeat</I> sample averages, divided by <I>Nrepeat</I>
+ none = output is sum of <I>Nrepeat</I> sums, divided by <I>Nrepeat</I>
+ <I>ave</I> args = <I>one</I> or <I>running</I> or <I>window M</I>
+ one = output new average value every Nfreq steps
+ running = output cumulative average of all previous Nfreq steps
+ window M = output average of M most recent Nfreq steps
+ <I>bias</I> arg = bias-ID
+ bias-ID = ID of a temperature compute that removes a velocity bias for temperature calculation
+ <I>adof</I> value = dof_per_atom
+ dof_per_atom = define this many degrees-of-freedom per atom for temperature calculation
+ <I>cdof</I> value = dof_per_chunk
+ dof_per_chunk = define this many degrees-of-freedom per chunk for temperature calculation
+ <I>file</I> arg = filename
+ filename = file to write results to
+ <I>overwrite</I> arg = none = overwrite output file with only latest output
+ <I>title1</I> arg = string
+ string = text to print as 1st line of output file
+ <I>title2</I> arg = string
+ string = text to print as 2nd line of output file
+ <I>title3</I> arg = string
+ string = text to print as 3rd line of output file
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all ave/chunk 10000 1 10000 binchunk c_myCentro title1 "My output values"
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>ave/correlate = style name of this fix command
+
+<LI>Nevery = use input values every this many timesteps
+
+<LI>Nrepeat = # of correlation time windows to accumulate
+
+<LI>Nfreq = calculate tine window averages every this many timesteps
+
+<LI>one or more input values can be listed
+
+<LI>value = c_ID, c_ID[N], f_ID, f_ID[N], v_name
+
+<PRE> c_ID = global scalar calculated by a compute with ID
+ c_ID[I] = Ith component of global vector calculated by a compute with ID
+ f_ID = global scalar calculated by a fix with ID
+ f_ID[I] = Ith component of global vector calculated by a fix with ID
+ v_name = global value calculated by an equal-style variable with name
+</PRE>
+<LI>zero or more keyword/arg pairs may be appended
+
+<LI>keyword = <I>type</I> or <I>ave</I> or <I>start</I> or <I>prefactor</I> or <I>file</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I>
+
+<PRE> <I>type</I> arg = <I>auto</I> or <I>upper</I> or <I>lower</I> or <I>auto/upper</I> or <I>auto/lower</I> or <I>full</I>
+ auto = correlate each value with itself
+ upper = correlate each value with each succeeding value
+ lower = correlate each value with each preceding value
+ auto/upper = auto + upper
+ auto/lower = auto + lower
+ full = correlate each value with every other value, including itself = auto + upper + lower
+ <I>ave</I> args = <I>one</I> or <I>running</I>
+ one = zero the correlation accumulation every Nfreq steps
+ running = accumulate correlations continuously
+ <I>start</I> args = Nstart
+ Nstart = start accumulating correlations on this timestep
+ <I>prefactor</I> args = value
+ value = prefactor to scale all the correlation data by
+ <I>file</I> arg = filename
+ filename = name of file to output correlation data to
+ <I>overwrite</I> arg = none = overwrite output file with only latest output
+ <I>title1</I> arg = string
+ string = text to print as 1st line of output file
+ <I>title2</I> arg = string
+ string = text to print as 2nd line of output file
+ <I>title3</I> arg = string
+ string = text to print as 3rd line of output file
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all ave/correlate 5 100 1000 c_myTemp file temp.correlate
+<PRE> x,y,z,vx,vy,vz,fx,fy,fz = atom attribute (position, velocity, force component)
+ c_ID = scalar or vector calculated by a compute with ID
+ c_ID[I] = Ith component of vector or Ith column of array calculated by a compute with ID
+ f_ID = scalar or vector calculated by a fix with ID
+ f_ID[I] = Ith component of vector or Ith column of array calculated by a fix with ID
+ v_name = value(s) calculated by an equal-style or atom-style variable with name
+</PRE>
+<LI>zero or more keyword/arg pairs may be appended
+
+<LI>keyword = <I>mode</I> or <I>file</I> or <I>ave</I> or <I>start</I> or <I>beyond</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I>
+
+<PRE> <I>mode</I> arg = <I>scalar</I> or <I>vector</I>
+ scalar = all input values are scalars
+ vector = all input values are vectors
+ <I>file</I> arg = filename
+ filename = name of file to output histogram(s) to
+ <I>ave</I> args = <I>one</I> or <I>running</I> or <I>window</I>
+ one = output a new average value every Nfreq steps
+ running = output cumulative average of all previous Nfreq steps
+ window M = output average of M most recent Nfreq steps
+ <I>start</I> args = Nstart
+ Nstart = start averaging on this timestep
+ <I>beyond</I> arg = <I>ignore</I> or <I>end</I> or <I>extra</I>
+<PRE> vx,vy,vz,fx,fy,fz = atom attribute (velocity, force component)
+ density/number, density/mass = number or mass density
+ c_ID = per-atom vector calculated by a compute with ID
+ c_ID[I] = Ith column of per-atom array calculated by a compute with ID
+ f_ID = per-atom vector calculated by a fix with ID
+ f_ID[I] = Ith column of per-atom array calculated by a fix with ID
+ v_name = per-atom vector calculated by an atom-style variable with name
+</PRE>
+<LI>zero or more keyword/arg pairs may be appended
+
+<LI>keyword = <I>region</I> or <I>bound</I> or <I>discard</I> or <I>norm</I> or <I>ave</I> or <I>units</I> or <I>file</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I>
+
+<PRE> <I>region</I> arg = region-ID
+ <I>bound</I> args = x/y/z lo hi
+ x/y/z = <I>x</I> or <I>y</I> or <I>z</I> to bound bins in this dimension
+ lo = <I>lower</I> or coordinate value (distance units)
+ hi = <I>upper</I> or coordinate value (distance units)
+ <I>discard</I> arg = <I>mixed</I> or <I>no</I> or <I>yes</I>
+ mixed = discard atoms outside bins only if bin bounds are explicitly set
+ no = always keep out-of-bounds atoms
+ yes = always discard out-of-bounds atoms
+ <I>norm</I> arg = <I>all</I> or <I>sample</I>
+ region-ID = ID of region atoms must be in to contribute to spatial averaging
+ <I>ave</I> args = <I>one</I> or <I>running</I> or <I>window M</I>
+ one = output new average value every Nfreq steps
+ running = output cumulative average of all previous Nfreq steps
+ window M = output average of M most recent Nfreq steps
+ <I>units</I> arg = <I>box</I> or <I>lattice</I> or <I>reduced</I>
+ <I>file</I> arg = filename
+ filename = file to write results to
+ <I>overwrite</I> arg = none = overwrite output file with only latest output
+ <I>title1</I> arg = string
+ string = text to print as 1st line of output file
+ <I>title2</I> arg = string
+ string = text to print as 2nd line of output file
+ <I>title3</I> arg = string
+ string = text to print as 3rd line of output file
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all ave/spatial 10000 1 10000 z lower 0.02 c_myCentro units reduced &
+<PRE> vx,vy,vz,fx,fy,fz = atom attribute (velocity, force component)
+ density/number, density/mass = number or mass density
+ c_ID = per-atom vector calculated by a compute with ID
+ c_ID[I] = Ith column of per-atom array calculated by a compute with ID
+ f_ID = per-atom vector calculated by a fix with ID
+ f_ID[I] = Ith column of per-atom array calculated by a fix with ID
+ v_name = per-atom vector calculated by an atom-style variable with name
+</PRE>
+<LI>zero or more keyword/arg pairs may be appended
+
+<LI>keyword = <I>region</I> or <I>norm</I> or <I>units</I> or <I>ave</I> or <I>file</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I>
+
+<PRE> <I>region</I> arg = region-ID
+ region-ID = ID of region atoms must be in to contribute to spatial averaging
+ <I>norm</I> arg = <I>all</I> or <I>sample</I>
+ <I>units</I> arg = <I>box</I> or <I>lattice</I> or <I>reduced</I>
+ <I>ave</I> args = <I>one</I> or <I>running</I> or <I>window M</I>
+ one = output new average value every Nfreq steps
+ running = output cumulative average of all previous Nfreq steps
+ window M = output average of M most recent Nfreq steps
+ <I>file</I> arg = filename
+ filename = file to write results to
+ <I>overwrite</I> arg = none = overwrite output file with only latest output
+ <I>title1</I> arg = string
+ string = text to print as 1st line of output file
+ <I>title2</I> arg = string
+ string = text to print as 2nd line of output file
+ <I>title3</I> arg = string
+ string = text to print as 3rd line of output file
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all ave/spatial/sphere 10000 1 10000 0.5 0.5 0.5 0.1 0.5 5 density/number vx vy vz units reduced title1 "My output values"
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>ave/time = style name of this fix command
+
+<LI>Nevery = use input values every this many timesteps
+
+<LI>Nrepeat = # of times to use input values for calculating averages
+
+<LI>Nfreq = calculate averages every this many timesteps
+
+<LI>one or more input values can be listed
+
+<LI>value = c_ID, c_ID[N], f_ID, f_ID[N], v_name
+
+<PRE> c_ID = global scalar, vector, or array calculated by a compute with ID
+ c_ID[I] = Ith component of global vector or Ith column of global array calculated by a compute with ID
+ f_ID = global scalar, vector, or array calculated by a fix with ID
+ f_ID[I] = Ith component of global vector or Ith column of global array calculated by a fix with ID
+ v_name = global value calculated by an equal-style variable with name
+</PRE>
+<LI>zero or more keyword/arg pairs may be appended
+
+<LI>keyword = <I>mode</I> or <I>file</I> or <I>ave</I> or <I>start</I> or <I>off</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I>
+
+<PRE> <I>mode</I> arg = <I>scalar</I> or <I>vector</I>
+ scalar = all input values are global scalars
+ vector = all input values are global vectors or global arrays
+ <I>ave</I> args = <I>one</I> or <I>running</I> or <I>window M</I>
+ one = output a new average value every Nfreq steps
+ running = output cummulative average of all previous Nfreq steps
+ window M = output average of M most recent Nfreq steps
+ <I>start</I> args = Nstart
+ Nstart = start averaging on this timestep
+ <I>off</I> arg = M = do not average this value
+ M = value # from 1 to Nvalues
+ <I>file</I> arg = filename
+ filename = name of file to output time averages to
+ <I>overwrite</I> arg = none = overwrite output file with only latest output
+ <I>title1</I> arg = string
+ string = text to print as 1st line of output file
+ <I>title2</I> arg = string
+ string = text to print as 2nd line of output file
+ <I>title3</I> arg = string
+ string = text to print as 3rd line of output file, only for vector mode
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>box/relax = style name of this fix command
+
+<PRE>one or more keyword value pairs may be appended
+keyword = <I>iso</I> or <I>aniso</I> or <I>tri</I> or <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>yz</I> or <I>xz</I> or <I>couple</I> or <I>nreset</I> or <I>vmax</I> or <I>dilate</I> or <I>scaleyz</I> or <I>scalexz</I> or <I>scalexy</I> or <I>fixedpoint</I>
+ <I>iso</I> or <I>aniso</I> or <I>tri</I> value = Ptarget = desired pressure (pressure units)
+ <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>yz</I> or <I>xz</I> value = Ptarget = desired pressure (pressure units)
+ <I>couple</I> = <I>none</I> or <I>xyz</I> or <I>xy</I> or <I>yz</I> or <I>xz</I>
+ <I>nreset</I> value = reset reference cell every this many minimizer iterations
+ <I>vmax</I> value = fraction = max allowed volume change in one iteration
+ <I>dilate</I> value = <I>all</I> or <I>partial</I>
+ <I>scaleyz</I> value = <I>yes</I> or <I>no</I> = scale yz with lz
+ <I>scalexz</I> value = <I>yes</I> or <I>no</I> = scale xz with lz
+ <I>scalexy</I> value = <I>yes</I> or <I>no</I> = scale xy with ly
+ <I>fixedpoint</I> values = x y z
+ x,y,z = perform relaxation dilation/contraction around this point (distance units)
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all box/relax iso 0.0 vmax 0.001
+fix 2 water box/relax aniso 0.0 dilate partial
+fix 2 ice box/relax tri 0.0 couple xy nreset 100
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Apply an external pressure or stress tensor to the simulation box
+during an <A HREF = "minimize.html">energy minimization</A>. This allows the box
+size and shape to vary during the iterations of the minimizer so that
+the final configuration will be both an energy minimum for the
+potential energy of the atoms, and the system pressure tensor will be
+close to the specified external tensor. Conceptually, specifying a
+positive pressure is like squeezing on the simulation box; a negative
+pressure typically allows the box to expand.
+</P>
+<HR>
+
+<P>The external pressure tensor is specified using one or more of the
+ style = <I>final</I> or <I>delta</I> or <I>scale</I> or <I>vel</I> or <I>erate</I> or <I>trate</I> or <I>volume</I> or <I>wiggle</I> or <I>variable</I>
+ <I>final</I> values = lo hi
+ lo hi = box boundaries at end of run (distance units)
+ <I>delta</I> values = dlo dhi
+ dlo dhi = change in box boundaries at end of run (distance units)
+ <I>scale</I> values = factor
+ factor = multiplicative factor for change in box length at end of run
+ <I>vel</I> value = V
+ V = change box length at this velocity (distance/time units),
+ effectively an engineering strain rate
+ <I>erate</I> value = R
+ R = engineering strain rate (1/time units)
+ <I>trate</I> value = R
+ R = true strain rate (1/time units)
+ <I>volume</I> value = none = adjust this dim to preserve volume of system
+ <I>wiggle</I> values = A Tp
+ A = amplitude of oscillation (distance units)
+ Tp = period of oscillation (time units)
+ <I>variable</I> values = v_name1 v_name2
+ v_name1 = variable with name1 for box length change as function of time
+ v_name2 = variable with name2 for change rate as function of time
+ <I>xy</I>, <I>xz</I>, <I>yz</I> args = style value
+ style = <I>final</I> or <I>delta</I> or <I>vel</I> or <I>erate</I> or <I>trate</I> or <I>wiggle</I>
+ <I>final</I> value = tilt
+ tilt = tilt factor at end of run (distance units)
+ <I>delta</I> value = dtilt
+ dtilt = change in tilt factor at end of run (distance units)
+ <I>vel</I> value = V
+ V = change tilt factor at this velocity (distance/time units),
+ effectively an engineering shear strain rate
+ <I>erate</I> value = R
+ R = engineering shear strain rate (1/time units)
+ <I>trate</I> value = R
+ R = true shear strain rate (1/time units)
+ <I>wiggle</I> values = A Tp
+ A = amplitude of oscillation (distance units)
+ Tp = period of oscillation (time units)
+ <I>variable</I> values = v_name1 v_name2
+ v_name1 = variable with name1 for tilt change as function of time
+ v_name2 = variable with name2 for change rate as function of time
+</PRE>
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>remap</I> or <I>flip</I> or <I>units</I>
+
+<PRE> <I>remap</I> value = <I>x</I> or <I>v</I> or <I>none</I>
+ x = remap coords of atoms in group into deforming box
+ v = remap velocities of all atoms when they cross periodic boundaries
+ none = no remapping of x or v
+ <I>flip</I> value = <I>yes</I> or <I>no</I>
+ allow or disallow box flips when it becomes highly skewed
+ <I>units</I> value = <I>lattice</I> or <I>box</I>
+ lattice = distances are defined in lattice units
+ box = distances are defined in simulation box units
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all deform 1 x final 0.0 9.0 z final 0.0 5.0 units box
+fix 1 all deform 1 x trate 0.1 y volume z volume
+fix 1 all deform 1 xy erate 0.001 remap v
+fix 1 all deform 10 y delta -0.5 0.5 xz vel 1.0
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Change the volume and/or shape of the simulation box during a dynamics
+run. Orthogonal simulation boxes have 3 adjustable parameters
+(x,y,z). Triclinic (non-orthogonal) simulation boxes have 6
+adjustable parameters (x,y,z,xy,xz,yz). Any or all of them can be
+adjusted independently and simultaneously by this command. This fix
+can be used to perform non-equilibrium MD (NEMD) simulations of a
+continuously strained system. See the <A HREF = "fix_nvt_sllod.html">fix
+nvt/sllod</A> and <A HREF = "compute_temp_deform.html">compute
+temp/deform</A> commands for more details.
+</P>
+<P>For the <I>x</I>, <I>y</I>, <I>z</I> parameters, the associated dimension cannot be
+shrink-wrapped. For the <I>xy</I>, <I>yz</I>, <I>xz</I> parameters, the associated
+2nd dimension cannot be shrink-wrapped. Dimensions not varied by this
+command can be periodic or non-periodic. Dimensions corresponding to
+unspecified parameters can also be controlled by a <A HREF = "fix_nh.html">fix
+npt</A> or <A HREF = "fix_nh.html">fix nph</A> command.
+</P>
+<P>The size and shape of the simulation box at the beginning of the
+simulation run were either specified by the
+<A HREF = "create_box.html">create_box</A> or <A HREF = "read_data.html">read_data</A> or
+<A HREF = "read_restart.html">read_restart</A> command used to setup the simulation
+initially if it is the first run, or they are the values from the end
+of the previous run. The <A HREF = "create_box.html">create_box</A>, <A HREF = "read_data.html">read
+data</A>, and <A HREF = "read_restart.html">read_restart</A> commands
+specify whether the simulation box is orthogonal or non-orthogonal
+(triclinic) and explain the meaning of the xy,xz,yz tilt factors. If
+fix deform changes the xy,xz,yz tilt factors, then the simulation box
+must be triclinic, even if its initial tilt factors are 0.0.
+</P>
+<P>As described below, the desired simulation box size and shape at the
+end of the run are determined by the parameters of the fix deform
+command. Every Nth timestep during the run, the simulation box is
+expanded, contracted, or tilted to ramped values between the initial
+and final values.
+</P>
+<HR>
+
+<P>For the <I>x</I>, <I>y</I>, and <I>z</I> parameters, this is the meaning of their
+styles and values.
+</P>
+<P>The <I>final</I>, <I>delta</I>, <I>scale</I>, <I>vel</I>, and <I>erate</I> styles all change
+the specified dimension of the box via "constant displacement" which
+is effectively a "constant engineering strain rate". This means the
+box dimension changes linearly with time from its initial to final
+value.
+</P>
+<P>For style <I>final</I>, the final lo and hi box boundaries of a dimension
+are specified. The values can be in lattice or box distance units.
+See the discussion of the units keyword below.
+</P>
+<P>For style <I>delta</I>, plus or minus changes in the lo/hi box boundaries
+of a dimension are specified. The values can be in lattice or box
+distance units. See the discussion of the units keyword below.
+</P>
+<P>For style <I>scale</I>, a multiplicative factor to apply to the box length
+of a dimension is specified. For example, if the initial box length
+is 10, and the factor is 1.1, then the final box length will be 11. A
+factor less than 1.0 means compression.
+</P>
+<P>For style <I>vel</I>, a velocity at which the box length changes is
+specified in units of distance/time. This is effectively a "constant
+engineering strain rate", where rate = V/L0 and L0 is the initial box
+length. The distance can be in lattice or box distance units. See
+the discussion of the units keyword below. For example, if the
+initial box length is 100 Angstroms, and V is 10 Angstroms/psec, then
+after 10 psec, the box length will have doubled. After 20 psec, it
+will have tripled.
+</P>
+<P>The <I>erate</I> style changes a dimension of the the box at a "constant
+engineering strain rate". The units of the specified strain rate are
+1/time. See the <A HREF = "units.html">units</A> command for the time units
+associated with different choices of simulation units,
+e.g. picoseconds for "metal" units). Tensile strain is unitless and
+is defined as delta/L0, where L0 is the original box length and delta
+is the change relative to the original length. The box length L as a
+function of time will change as
+</P>
+<PRE>L(t) = L0 (1 + erate*dt)
+</PRE>
+<P>where dt is the elapsed time (in time units). Thus if <I>erate</I> R is
+specified as 0.1 and time units are picoseconds, this means the box
+length will increase by 10% of its original length every picosecond.
+I.e. strain after 1 psec = 0.1, strain after 2 psec = 0.2, etc. R =
+-0.01 means the box length will shrink by 1% of its original length
+every picosecond. Note that for an "engineering" rate the change is
+based on the original box length, so running with R = 1 for 10
+picoseconds expands the box length by a factor of 11 (strain of 10),
+which is different that what the <I>trate</I> style would induce.
+</P>
+<P>The <I>trate</I> style changes a dimension of the box at a "constant true
+strain rate". Note that this is not an "engineering strain rate", as
+the other styles are. Rather, for a "true" rate, the rate of change
+is constant, which means the box dimension changes non-linearly with
+time from its initial to final value. The units of the specified
+strain rate are 1/time. See the <A HREF = "units.html">units</A> command for the
+time units associated with different choices of simulation units,
+e.g. picoseconds for "metal" units). Tensile strain is unitless and
+is defined as delta/L0, where L0 is the original box length and delta
+is the change relative to the original length.
+</P>
+<P>The box length L as a function of time will change as
+</P>
+<PRE>L(t) = L0 exp(trate*dt)
+</PRE>
+<P>where dt is the elapsed time (in time units). Thus if <I>trate</I> R is
+specified as ln(1.1) and time units are picoseconds, this means the
+box length will increase by 10% of its current (not original) length
+every picosecond. I.e. strain after 1 psec = 0.1, strain after 2 psec
+= 0.21, etc. R = ln(2) or ln(3) means the box length will double or
+triple every picosecond. R = ln(0.99) means the box length will
+shrink by 1% of its current length every picosecond. Note that for a
+"true" rate the change is continuous and based on the current length,
+so running with R = ln(2) for 10 picoseconds does not expand the box
+length by a factor of 11 as it would with <I>erate</I>, but by a factor of
+1024 since the box length will double every picosecond.
+</P>
+<P>Note that to change the volume (or cross-sectional area) of the
+simulation box at a constant rate, you can change multiple dimensions
+via <I>erate</I> or <I>trate</I>. E.g. to double the box volume in a picosecond
+picosecond, you could set "x erate M", "y erate M", "z erate M", with
+M = pow(2,1/3) - 1 = 0.26, since if each box dimension grows by 26%,
+the box volume doubles. Or you could set "x trate M", "y trate M", "z
+trate M", with M = ln(1.26) = 0.231, and the box volume would double
+every picosecond.
+</P>
+<P>The <I>volume</I> style changes the specified dimension in such a way that
+the box volume remains constant while other box dimensions are changed
+explicitly via the styles discussed above. For example, "x scale 1.1
+y scale 1.1 z volume" will shrink the z box length as the x,y box
+lengths increase, to keep the volume constant (product of x,y,z
+lengths). If "x scale 1.1 z volume" is specified and parameter <I>y</I> is
+unspecified, then the z box length will shrink as x increases to keep
+the product of x,z lengths constant. If "x scale 1.1 y volume z
+volume" is specified, then both the y,z box lengths will shrink as x
+increases to keep the volume constant (product of x,y,z lengths). In
+this case, the y,z box lengths shrink so as to keep their relative
+aspect ratio constant.
+</P>
+<P>For solids or liquids, note that when one dimension of the box is
+expanded via fix deform (i.e. tensile strain), it may be physically
+undesirable to hold the other 2 box lengths constant (unspecified by
+fix deform) since that implies a density change. Using the <I>volume</I>
+style for those 2 dimensions to keep the box volume constant may make
+more physical sense, but may also not be correct for materials and
+potentials whose Poisson ratio is not 0.5. An alternative is to use
+<A HREF = "fix_nh.html">fix npt aniso</A> with zero applied pressure on those 2
+dimensions, so that they respond to the tensile strain dynamically.
+</P>
+<P>The <I>wiggle</I> style oscillates the specified box length dimension
+sinusoidally with the specified amplitude and period. I.e. the box
+length L as a function of time is given by
+</P>
+<PRE>L(t) = L0 + A sin(2*pi t/Tp)
+</PRE>
+<P>where L0 is its initial length. If the amplitude A is a positive
+number the box initially expands, then contracts, etc. If A is
+negative then the box initially contracts, then expands, etc. The
+amplitude can be in lattice or box distance units. See the discussion
+of the units keyword below.
+</P>
+<P>The <I>variable</I> style changes the specified box length dimension by
+evaluating a variable, which presumably is a function of time. The
+variable with <I>name1</I> must be an <A HREF = "variable.html">equal-style variable</A>
+and should calculate a change in box length in units of distance.
+Note that this distance is in box units, not lattice units; see the
+discussion of the <I>units</I> keyword below. The formula associated with
+variable <I>name1</I> can reference the current timestep. Note that it
+should return the "change" in box length, not the absolute box length.
+This means it should evaluate to 0.0 when invoked on the initial
+timestep of the run following the definition of fix deform. It should
+evaluate to a value > 0.0 to dilate the box at future times, or a
+value < 0.0 to compress the box.
+</P>
+<P>The variable <I>name2</I> must also be an <A HREF = "variable.html">equal-style
+variable</A> and should calculate the rate of box length
+change, in units of distance/time, i.e. the time-derivative of the
+<I>name1</I> variable. This quantity is used internally by LAMMPS to reset
+atom velocities when they cross periodic boundaries. It is computed
+internally for the other styles, but you must provide it when using an
+arbitrary variable.
+</P>
+<P>Here is an example of using the <I>variable</I> style to perform the same
+box deformation as the <I>wiggle</I> style formula listed above, where we
+<PRE>fix ID group-ID deposit N type M seed keyword values ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>deposit = style name of this fix command
+
+<LI>N = # of atoms or molecules to insert
+
+<LI>type = atom type to assign to inserted atoms (offset for moleclue insertion)
+
+<LI>M = insert a single atom or molecule every M steps
+
+<LI>seed = random # seed (positive integer)
+
+<LI>one or more keyword/value pairs may be appended to args
+
+<LI>keyword = <I>region</I> or <I>id</I> or <I>global</I> or <I>local</I> or <I>near</I> or <I>attempt</I> or <I>rate</I> or <I>vx</I> or <I>vy</I> or <I>vz</I> or <I>mol</I> or <I>rigid</I> or <I>shake</I> or <I>units</I>
+
+<PRE> <I>region</I> value = region-ID
+ region-ID = ID of region to use as insertion volume
+ <I>id</I> value = <I>max</I> or <I>next</I>
+ max = atom ID for new atom(s) is max ID of all current atoms plus one
+ next = atom ID for new atom(s) increments by one for every deposition
+ <I>global</I> values = lo hi
+ lo,hi = put new atom/molecule a distance lo-hi above all other atoms (distance units)
+ <I>local</I> values = lo hi delta
+ lo,hi = put new atom/molecule a distance lo-hi above any nearby atom beneath it (distance units)
+ delta = lateral distance within which a neighbor is considered "nearby" (distance units)
+ <I>near</I> value = R
+ R = only insert atom/molecule if further than R from existing particles (distance units)
+ <I>attempt</I> value = Q
+ Q = attempt a single insertion up to Q times
+ <I>rate</I> value = V
+ V = z velocity (y in 2d) at which insertion volume moves (velocity units)
+ <I>vx</I> values = vxlo vxhi
+ vxlo,vxhi = range of x velocities for inserted atom/molecule (velocity units)
+ <I>vy</I> values = vylo vyhi
+ vylo,vyhi = range of y velocities for inserted atom/molecule (velocity units)
+ <I>vz</I> values = vzlo vzhi
+ vzlo,vzhi = range of z velocities for inserted atom/molecule (velocity units)
+ <I>target</I> values = tx ty tz
+ tx,ty,tz = location of target point (distance units)
+ <I>mol</I> value = template-ID
+ template-ID = ID of molecule template specified in a separate <A HREF = "molecule.html">molecule</A> command
+ <I>molfrac</I> values = f1 f2 ... fN
+ f1 to fN = relative probability of creating each of N molecules in template-ID
+ <I>rigid</I> value = fix-ID
+ fix-ID = ID of <A HREF = "fix_rigid.html">fix rigid/small</A> command
+ <I>shake</I> value = fix-ID
+ fix-ID = ID of <A HREF = "fix_shake.html">fix shake</A> command
+ <I>units</I> value = <I>lattice</I> or <I>box</I>
+ lattice = the geometry is defined in lattice units
+ box = the geometry is defined in simulation box units
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 3 all deposit 1000 2 100 29494 region myblock local 1.0 1.0 1.0 units box
+fix 2 newatoms deposit 10000 1 500 12345 region disk near 2.0 vz -1.0 -0.8
+fix 4 sputter deposit 1000 2 500 12235 region sphere vz -1.0 -1.0 target 5.0 5.0 0.0 units lattice
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Insert a single atom or molecule into the simulation domain every M
+timesteps until N atoms or molecules have been inserted. This is
+useful for simulating deposition onto a surface. For the remainder of
+this doc page, a single inserted atom or molecule is referred to as a
+"particle".
+</P>
+<P>If inserted particles are individual atoms, they are assigned the
+specified atom type. If they are molecules, the type of each atom in
+the inserted molecule is specified in the file read by the
+<A HREF = "molecule.html">molecule</A> command, and those values are added to the
+specified atom type. E.g. if the file specifies atom types 1,2,3, and
+those are the atom types you want for inserted molecules, then specify
+<I>type</I> = 0. If you specify <I>type</I> = 2, the in the inserted molecule
+will have atom types 3,4,5.
+</P>
+<P>All atoms in the inserted particle are assigned to two groups: the
+default group "all" and the group specified in the fix deposit command
+(which can also be "all").
+</P>
+<P>If you are computing temperature values which include inserted
+particles, you will want to use the
+<A HREF = "compute_modify.html">compute_modify</A> dynamic option, which insures the
+current number of atoms is used as a normalizing factor each time the
+temperature is computed.
+</P>
+<P>Care must be taken that inserted particles are not too near existing
+atoms, using the options described below. When inserting particles
+above a surface in a non-periodic box (see the
+<A HREF = "boundary.html">boundary</A> command), the possibility of a particle
+escaping the surface and flying upward should be considered, since the
+particle may be lost or the box size may grow infinitely large. A
+<A HREF = "fix_wall_reflect.html">fix wall/reflect</A> command can be used to
+prevent this behavior. Note that if a shrink-wrap boundary is used,
+it is OK to insert the new particle outside the box, however the box
+will immediately be expanded to include the new particle. When
+simulating a sputtering experiment it is probably more realistic to
+ignore those atoms using the <A HREF = "thermo_modify.html">thermo_modify</A>
+command with the <I>lost ignore</I> option and a fixed
+<A HREF = "boundary.html">boundary</A>.
+</P>
+<P>The fix deposit command must use the <I>region</I> keyword to define an
+insertion volume. The specified region must have been previously
+defined with a <A HREF = "region.html">region</A> command. It must be defined with
+side = <I>in</I>.
+</P>
+<P>IMPORTANT NOTE: LAMMPS checks that the specified region is wholly
+inside the simulation box. It can do this correctly for orthonormal
+simulation boxes. However for <A HREF = "Section_howto.html#howto_12">triclinic
+boxes</A>, it only tests against the larger
+orthonormal box that bounds the tilted simulation box. If the
+specified region includes volume outside the tilted box, then an
+insertion will likely fail, leading to a "lost atoms" error. Thus for
+triclinic boxes you should insure the specified region is wholly
+inside the simulation box.
+</P>
+<P>Individual atoms are inserted, unless the <I>mol</I> keyword is used. It
+specifies a <I>template-ID</I> previously defined using the
+<A HREF = "molecule.html">molecule</A> command, which reads files that define one or
+more molecules. The coordinates, atom types, charges, etc, as well as
+any bond/angle/etc and special neighbor information for the molecule
+can be specified in the molecule file. See the
+<A HREF = "molecule.html">molecule</A> command for details. The only settings
+required to be in each file are the coordinates and types of atoms in
+the molecule.
+</P>
+<P>If the molecule template contains more than one molecule, the relative
+probability of depositing each molecule can be specified by the
+<I>molfrac</I> keyword. N relative probablities, each from 0.0 to 1.0, are
+specified, where N is the number of molecules in the template. Each
+time a molecule is deposited, a random number is used to sample from
+the list of relative probabilities. The N values must sum to 1.0.
+</P>
+<P>If you wish to insert molecules via the <I>mol</I> keyword, that will be
+treated as rigid bodies, use the <I>rigid</I> keyword, specifying as its
+value the ID of a separate <A HREF = "fix_rigid_small.html">fix rigid/small</A>
+command which also appears in your input script.
+</P>
+<P>If you wish to insert molecules via the <I>mol</I> keyword, that will have
+their bonds or angles constrained via SHAKE, use the <I>shake</I> keyword,
+specifying as its value the ID of a separate <A HREF = "fix_shake.html">fix
+shake</A> command which also appears in your input script.
+</P>
+<P>Each timestep a particle is inserted, the coordinates for its atoms
+are chosen as follows. For insertion of individual atoms, the
+"position" referred to in the following description is the coordinate
+of the atom. For insertion of molecule, the "position" is the
+geometric center of the molecule; see the <A HREF = "molecule.html">molecule</A> doc
+page for details. A random rotation of the molecule around its center
+point is performed, which determines the coordinates all the
+individual atoms.
+</P>
+<P>A random position within the region insertion volume is generated. If
+neither the <I>global</I> or <I>local</I> keyword is used, the random position
+is the trial position. If the <I>global</I> keyword is used, the random
+x,y values are used, but the z position of the new particle is set
+above the highest current atom in the simulation by a distance
+randomly chosen between lo/hi. (For a 2d simulation, this is done for
+the y position.) If the <I>local</I> keyword is used, the z position is
+set a distance between lo/hi above the highest current atom in the
+simulation that is "nearby" the chosen x,y position. In this context,
+"nearby" means the lateral distance (in x,y) between the new and old
+particles is less than the <I>delta</I> setting.
+</P>
+<P>Once a trial x,y,z position has been selected, the insertion is only
+performed if no current atom in the simulation is within a distance R
+of any atom in the new particle, including the effect of periodic
+boundary conditions if applicable. R is defined by the <I>near</I>
+keyword. Note that the default value for R is 0.0, which will allow
+atoms to strongly overlap if you are inserting where other atoms are
+present. This distance test is performed independently for each atom
+in an inserted molecule, based on the randomly rotated configuration
+of the molecule. If this test fails, a new random position within the
+insertion volume is chosen and another trial is made. Up to Q
+attempts are made. If the particle is not successfully inserted,
+LAMMPS prints a warning message.
+</P>
+<P>IMPORTANT NOTE: If you are inserting finite size particles or a
+molecule or rigid body consisting of finite-size particles, then you
+should typically set R larger than the distance at which any inserted
+particle may overlap with either a previouly inserted particle or an
+existing particle. LAMMPS will issue a warning if R is smaller than
+this value, based on the radii of existing and inserted particles.
+</P>
+<P>The <I>rate</I> option moves the insertion volume in the z direction (3d)
+or y direction (2d). This enables particles to be inserted from a
+successively higher height over time. Note that this parameter is
+ignored if the <I>global</I> or <I>local</I> keywords are used, since those
+options choose a z-coordinate for insertion independently.
+</P>
+<P>The vx, vy, and vz components of velocity for the inserted particle
+are set using the values specified for the <I>vx</I>, <I>vy</I>, and <I>vz</I>
+keywords. Note that normally, new particles should be a assigned a
+negative vertical velocity so that they move towards the surface. For
+molecules, the same velocity is given to every particle (no rotation
+or bond vibration).
+</P>
+<P>If the <I>target</I> option is used, the velocity vector of the inserted
+particle is changed so that it points from the insertion position
+towards the specified target point. The magnitude of the velocity is
+unchanged. This can be useful, for example, for simulating a
+sputtering process. E.g. the target point can be far away, so that
+all incident particles strike the surface as if they are in an
+incident beam of particles at a prescribed angle.
+</P>
+<P>The <I>id</I> keyword determines how atom IDs and molecule IDs are assigned
+to newly deposited particles. Molecule IDs are only assigned if
+molecules are being inserted. For the <I>max</I> setting, the atom and
+molecule IDs of all current atoms are checked. Atoms in the new
+particle are assigned IDs starting with the current maximum plus one.
+If a molecule is inserted it is assigned an ID = current maximum plus
+one. This means that if particles leave the system, the new IDs may
+replace the lost ones. For the <I>next</I> setting, the maximum ID of any
+atom and molecule is stored at the time the fix is defined. Each time
+a new particle is added, this value is incremented to assign IDs to
+the new atom(s) or molecule. Thus atom and molecule IDs for deposited
+particles will be consecutive even if particles leave the system over
+time.
+</P>
+<P>The <I>units</I> keyword determines the meaning of the distance units used
+for the other deposition parameters. A <I>box</I> value selects standard
+distance units as defined by the <A HREF = "units.html">units</A> command,
+e.g. Angstroms for units = real or metal. A <I>lattice</I> value means the
+distance units are in lattice spacings. The <A HREF = "lattice.html">lattice</A>
+command must have been previously used to define the lattice spacing.
+Note that the units choice affects all the keyword values that have
+units of distance or velocity.
+</P>
+<P>IMPORTANT NOTE: If you are monitoring the temperature of a system
+where the atom count is changing due to adding particles, you
+typically should use the <A HREF = "compute_modify.html">compute_modify dynamic
+yes</A> command for the temperature compute you are
+using.
+</P>
+<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
+</P>
+<P>This fix writes the state of the deposition to <A HREF = "restart.html">binary restart
+files</A>. This includes information about how many
+particles have been depositied, the random number generator seed, the
+next timestep for deposition, etc. See the
+<A HREF = "read_restart.html">read_restart</A> command for info on how to re-specify
+a fix in an input script that reads a restart file, so that the
+operation of the fix continues in an uninterrupted fashion.
+</P>
+<P>None of the <A HREF = "fix_modify.html">fix_modify</A> options are relevant to this
+fix. No global or per-atom quantities are stored by this fix for
+access by various <A HREF = "Section_howto.html#howto_15">output commands</A>. No
+parameter of this fix can be used with the <I>start/stop</I> keywords of
+the <A HREF = "run.html">run</A> command. This fix is not invoked during <A HREF = "minimize.html">energy
+minimization</A>.
+</P>
+<P><B>Restrictions:</B>
+</P>
+<P>This fix is part of the MISC package. It is only enabled if LAMMPS
+was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info.
+</P>
+<P>The specified insertion region cannot be a "dynamic" region, as
+defined by the <A HREF = "region.html">region</A> command.
+<PRE>fix ID group-ID lb/fluid nevery LBtype viscosity density keyword values ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>lb/fluid = style name of this fix command
+
+<LI>nevery = update the lattice-Boltzmann fluid every this many timesteps
+
+<LI>LBtype = 1 to use the standard finite difference LB integrator,
+2 to use the LB integrator of <A HREF = "#Ollila">Ollila et al.</A>
+
+<LI>viscosity = the fluid viscosity (units of mass/(time*length)).
+
+<LI>density = the fluid density.
+
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>setArea</I> or <I>setGamma</I> or <I>scaleGamma</I> or <I>dx</I> or <I>dm</I> or <I>a0</I> or <I>noise</I> or <I>calcforce</I> or <I>trilinear</I> or <I>D3Q19</I> or <I>read_restart</I> or <I>write_restart</I> or <I>zwall_velocity</I> or <I>bodyforce</I> or <I>printfluid</I>
+
+<PRE> <I>setArea</I> values = type node_area
+ type = atom type (1-N)
+ node_area = portion of the surface area of the composite object associated with the particular atom type (used when the force coupling constant is set by default).
+ <I>setGamma</I> values = gamma
+ gamma = user set value for the force coupling constant.
+ <I>scaleGamma</I> values = type gammaFactor
+ type = atom type (1-N)
+ gammaFactor = factor to scale the <I>setGamma</I> gamma value by, for the specified atom type.
+ <I>dx</I> values = dx_LB = the lattice spacing.
+ <I>dm</I> values = dm_LB = the lattice-Boltzmann mass unit.
+ <I>a0</I> values = a_0_real = the square of the speed of sound in the fluid.
+ <I>noise</I> values = Temperature seed
+ Temperature = fluid temperature.
+ seed = random number generator seed (positive integer)
+ <I>calcforce</I> values = N forcegroup-ID
+ N = output the force and torque every N timesteps
+ forcegroup-ID = ID of the particle group to calculate the force and torque of
+ <I>trilinear</I> values = none (used to switch from the default Peskin interpolation stencil to the trilinear stencil).
+ <I>D3Q19</I> values = none (used to switch from the default D3Q15, 15 velocity lattice, to the D3Q19, 19 velocity lattice).
+ <I>read_restart</I> values = restart file = name of the restart file to use to restart a fluid run.
+ <I>write_restart</I> values = N = write a restart file every N MD timesteps.
+ <I>zwall_velocity</I> values = velocity_bottom velocity_top = velocities along the y-direction of the bottom and top walls (located at z=zmin and z=zmax).
+ <I>bodyforce</I> values = bodyforcex bodyforcey bodyforcez = the x,y and z components of a constant body force added to the fluid.
+ <I>printfluid</I> values = N = print the fluid density and velocity at each grid point every N timesteps.
+<P>and an area of dx_lb^2 per node, used to calculate the fluid mass at
+the particle node location, is assumed.
+</P>
+<P>dx is chosen such that tau/(delta t_LB) =
+(3 eta dt_LB)/(rho dx_lb^2) is approximately equal to 1.
+dm is set equal to 1.0.
+a0 is set equal to (1/3)*(dx_lb/dt_lb)^2.
+The Peskin stencil is used as the default interpolation method.
+The D3Q15 lattice is used for the lattice-Boltzmann algorithm.
+If walls are present, they are assumed to be stationary.
+</P>
+<HR>
+
+<A NAME = "Ollila"></A>
+
+<P><B>(Ollila et al.)</B> Ollila, S.T.T., Denniston, C., Karttunen, M., and Ala-Nissila, T., Fluctuating lattice-Boltzmann model for complex fluids, J. Chem. Phys. 134 (2011) 064902.
+</P>
+<A NAME = "Mackay"></A>
+
+<P><B>(Mackay et al.)</B> Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031.
+</P>
+<A NAME = "Mackay2"></A>
+
+<P><B>(Mackay and Denniston)</B> Mackay, F. E., and Denniston, C., Coupling MD particles to a lattice-Boltzmann fluid through the use of conservative forces, J. Comput. Phys. 237 (2013) 289-298.
+</P>
+<A NAME = "Adhikari"></A>
+
+<P><B>(Adhikari et al.)</B> Adhikari, R., Stratford, K., Cates, M. E., and Wagner, A. J., Fluctuating lattice Boltzmann, Europhys. Lett. 71 (2005) 473-479.
+<P><B>(Mackay et al.)</B> Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031.
+<P>The defaults are force * on on on, and torque * on on on.
+</P>
+<HR>
+
+<A NAME = "Mackay"></A>
+
+<P><B>(Mackay et al.)</B> Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031.
+<P><B>(Mackay et al.)</B> Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031.
+<OL><LI><I>dhugoniot</I> is the departure from the Hugoniot (temperature units).
+<LI><I>drayleigh</I> is the departure from the Rayleigh line (pressure units).
+<LI><I>lagrangian_speed</I> is the laboratory-frame Lagrangian speed (particle velocity) of the computational cell (velocity units).
+<LI><I>lagrangian_position</I> is the computational cell position in the reference frame moving at the shock speed. This is usually a good estimate of distance of the computational cell behind the shock front.
+</OL>
+<P>To print these quantities to the log file with descriptive column
+headers, the following LAMMPS commands are suggested:
+</P>
+<PRE>fix msst all msst z
+fix_modify msst energy yes
+variable dhug equal f_msst[1]
+variable dray equal f_msst[2]
+variable lgr_vel equal f_msst[3]
+variable lgr_pos equal f_msst[4]
+thermo_style custom step temp ke pe lz pzz etotal v_dhug v_dray v_lgr_vel v_lgr_pos f_msst
+</PRE>
+<P>These fixes compute a global scalar and a global vector of 4
+quantities, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. The scalar values calculated
+by this fix are "extensive"; the vector values are "intensive".
+</P>
+<P><B>Restrictions:</B>
+</P>
+<P>This fix style is part of the SHOCK package. It is only enabled if
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info.
+</P>
+<P>All cell dimensions must be periodic. This fix can not be used with a
+triclinic cell. The MSST fix has been tested only for the group-ID
+<PRE>fix ID group-ID style_name keyword value ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>style_name = <I>nvt</I> or <I>npt</I> or <I>nph</I>
+
+<LI>one or more keyword/value pairs may be appended
+
+<PRE>keyword = <I>temp</I> or <I>iso</I> or <I>aniso</I> or <I>tri</I> or <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>yz</I> or <I>xz</I> or <I>couple</I> or <I>tchain</I> or <I>pchain</I> or <I>mtk</I> or <I>tloop</I> or <I>ploop</I> or <I>nreset</I> or <I>drag</I> or <I>dilate</I> or <I>scalexy</I> or <I>scaleyz</I> or <I>scalexz</I> or <I>flip</I> or <I>fixedpoint</I>
+ <I>temp</I> values = Tstart Tstop Tdamp
+ Tstart,Tstop = external temperature at start/end of run
+ Tdamp = temperature damping parameter (time units)
+ <I>iso</I> or <I>aniso</I> or <I>tri</I> values = Pstart Pstop Pdamp
+ Pstart,Pstop = scalar external pressure at start/end of run (pressure units)
+ Pdamp = pressure damping parameter (time units)
+ <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>yz</I> or <I>xz</I> values = Pstart Pstop Pdamp
+ Pstart,Pstop = external stress tensor component at start/end of run (pressure units)
+ Pdamp = stress damping parameter (time units)
+ <I>couple</I> = <I>none</I> or <I>xyz</I> or <I>xy</I> or <I>yz</I> or <I>xz</I>
+ <I>tchain</I> value = N
+ N = length of thermostat chain (1 = single thermostat)
+ <I>pchain</I> values = N
+ N length of thermostat chain on barostat (0 = no thermostat)
+ <I>mtk</I> value = <I>yes</I> or <I>no</I> = add in MTK adjustment term or not
+ <I>tloop</I> value = M
+ M = number of sub-cycles to perform on thermostat
+ <I>ploop</I> value = M
+ M = number of sub-cycles to perform on barostat thermostat
+ <I>nreset</I> value = reset reference cell every this many timesteps
+ <I>drag</I> value = Df
+ Df = drag factor added to barostat/thermostat (0.0 = no drag)
+ <I>dilate</I> value = dilate-group-ID
+ dilate-group-ID = only dilate atoms in this group due to barostat volume changes
+ <I>scalexy</I> value = <I>yes</I> or <I>no</I> = scale xy with ly
+ <I>scaleyz</I> value = <I>yes</I> or <I>no</I> = scale yz with lz
+ <I>scalexz</I> value = <I>yes</I> or <I>no</I> = scale xz with lz
+ <I>flip</I> value = <I>yes</I> or <I>no</I> = allow or disallow box flips when it becomes highly skewed
+ <I>fixedpoint</I> values = x y z
+ x,y,z = perform barostat dilation/contraction around this point (distance units)
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all nvt temp 300.0 300.0 100.0
+fix 1 water npt temp 300.0 300.0 100.0 iso 0.0 0.0 1000.0
+<PRE>fix ID group-ID style_name keyword value ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>style_name = <I>nvt/eff</I> or <I>npt/eff</I> or <I>nph/eff</I>
+
+<PRE>one or more keyword value pairs may be appended
+keyword = <I>temp</I> or <I>iso</I> or <I>aniso</I> or <I>tri</I> or <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>yz</I> or <I>xz</I> or <I>couple</I> or <I>tchain</I> or <I>pchain</I> or <I>mtk</I> or <I>tloop</I> or <I>ploop</I> or <I>nreset</I> or <I>drag</I> or <I>dilate</I>
+ <I>temp</I> values = Tstart Tstop Tdamp
+ Tstart,Tstop = external temperature at start/end of run
+ Tdamp = temperature damping parameter (time units)
+ <I>iso</I> or <I>aniso</I> or <I>tri</I> values = Pstart Pstop Pdamp
+ Pstart,Pstop = scalar external pressure at start/end of run (pressure units)
+ Pdamp = pressure damping parameter (time units)
+ <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>yz</I> or <I>xz</I> values = Pstart Pstop Pdamp
+ Pstart,Pstop = external stress tensor component at start/end of run (pressure units)
+ Pdamp = stress damping parameter (time units)
+ <I>couple</I> = <I>none</I> or <I>xyz</I> or <I>xy</I> or <I>yz</I> or <I>xz</I>
+ <I>tchain</I> value = length of thermostat chain (1 = single thermostat)
+ <I>pchain</I> values = length of thermostat chain on barostat (0 = no thermostat)
+ <I>mtk</I> value = <I>yes</I> or <I>no</I> = add in MTK adjustment term or not
+ <I>tloop</I> value = number of sub-cycles to perform on thermostat
+ <I>ploop</I> value = number of sub-cycles to perform on barostat thermostat
+ <I>nreset</I> value = reset reference cell every this many timesteps
+ <I>drag</I> value = drag factor added to barostat/thermostat (0.0 = no drag)
+ <I>dilate</I> value = <I>all</I> or <I>partial</I>
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all nvt/eff temp 300.0 300.0 0.1
+fix 1 part npt/eff temp 300.0 300.0 0.1 iso 0.0 0.0 1.0
+fix 2 part npt/eff temp 300.0 300.0 0.1 tri 5.0 5.0 1.0
+fix 2 ice nph/eff x 1.0 1.0 0.5 y 2.0 2.0 0.5 z 3.0 3.0 0.5 yz 0.1 0.1 0.5 xz 0.2 0.2 0.5 xy 0.3 0.3 0.5 nreset 1000
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>These commands perform time integration on Nose-Hoover style
+non-Hamiltonian equations of motion for nuclei and electrons in the
+group for the <A HREF = "pair_eff.html">electron force field</A> model. The fixes
+are designed to generate positions and velocities sampled from the
+canonical (nvt), isothermal-isobaric (npt), and isenthalpic (nph)
+ensembles. This is achieved by adding some dynamic variables which
+are coupled to the particle velocities (thermostatting) and simulation
+domain dimensions (barostatting). In addition to basic thermostatting
+and barostatting, these fixes can also create a chain of thermostats
+coupled to the particle thermostat, and another chain of thermostats
+coupled to the barostat variables. The barostat can be coupled to the
+overall box volume, or to individual dimensions, including the <I>xy</I>,
+<I>xz</I> and <I>yz</I> tilt dimensions. The external pressure of the barostat
+can be specified as either a scalar pressure (isobaric ensemble) or as
+components of a symmetric stress tensor (constant stress ensemble).
+When used correctly, the time-averaged temperature and stress tensor
+of the particles will match the target values specified by
+Tstart/Tstop and Pstart/Pstop.
+</P>
+<P>The operation of these fixes is exactly like that described by the
+<A HREF = "fix_nh.html">fix nvt, npt, and nph</A> commands, except that the radius
+and radial velocity of electrons are also updated. Likewise the
+temperature and pressure calculated by the fix, using the computes it
+creates (as discussed in the <A HREF = "fix_nh.html">fix nvt, npt, and nph</A>
+doc page), are performed with computes that include the eFF contribution
+to the temperature or kinetic energy from the electron radial velocity.
+</P>
+<P>IMPORTANT NOTE: there are two different pressures that can be reported
+for eFF when defining the pair_style (see <A HREF = "pair_eff_cut.html">pair
+eff/cut</A> to understand these settings), one
+(default) that considers electrons do not contribute radial virial
+components (i.e. electrons treated as incompressible 'rigid' spheres)
+and one that does. The radial electronic contributions to the virials
+are only tallied if the flexible pressure option is set, and this will
+affect both global and per-atom quantities. In principle, the true
+pressure of a system is somewhere in between the rigid and the
+flexible eFF pressures, but, for most cases, the difference between
+these two pressures will not be significant over long-term averaged
+runs (i.e. even though the energy partitioning changes, the total
+energy remains similar).
+</P>
+<P>IMPORTANT NOTE: currently, there is no available option for the user
+to set or create temperature distributions that include the radial
+electronic degrees of freedom with the <A HREF = "velocity.html">velocity</A>
+command, so the the user must allow for these degrees of freedom to
+equilibrate (i.e. equi-partitioning of energy) through time
+integration.
+</P>
+<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
+</P>
+<P>See the doc page for the <A HREF = "fix_nh.html">fix nvt, npt, and nph</A> commands
+for details.
+</P>
+<P><B>Restrictions:</B>
+</P>
+<P>This fix is part of the USER-EFF package. It is only enabled if
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info.
+</P>
+<P>Other restriction discussed on the doc page for the <A HREF = "fix_nh.html">fix nvt, npt, and
+nph</A> commands also apply.
+</P>
+<P>IMPORTANT NOTE: The temperature for systems (regions or groups) with
+only electrons and no nuclei is 0.0 (i.e. not defined) in the current
+temperature calculations, a practical example would be a uniform
+electron gas or a very hot plasma, where electrons remain delocalized
+from the nuclei. This is because, even though electron virials are
+included in the temperature calculation, these are averaged over the
+nuclear degrees of freedom only. In such cases a corrective term must
+be added to the pressure to get the correct kinetic contribution.
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<PRE>one or more keyword value pairs may be appended
+keyword = <I>temp</I> or <I>iso</I> or <I>aniso</I> or <I>tri</I> or <I>x</I> or <I>y</I> or <I>z</I> or <I>couple</I> or <I>tchain</I> or <I>pchain</I> or <I>mtk</I> or <I>tloop</I> or <I>ploop</I> or <I>nreset</I> or <I>drag</I> or <I>dilate</I> or <I>scaleyz</I> or <I>scalexz</I> or <I>scalexy</I>
+ <I>temp</I> values = Value1 Value2 Tdamp
+ Value1, Value2 = Nose-Hoover target temperatures, ignored by Hugoniostat
+ Tdamp = temperature damping parameter (time units)
+ <I>iso</I> or <I>aniso</I> or <I>tri</I> values = Pstart Pstop Pdamp
+ Pstart,Pstop = scalar external pressures, must be equal (pressure units)
+ Pdamp = pressure damping parameter (time units)
+ <I>x</I> or <I>y</I> or <I>z</I> or <I>xy</I> or <I>yz</I> or <I>xz</I> values = Pstart Pstop Pdamp
+ Pstart,Pstop = external stress tensor components, must be equal (pressure units)
+ Pdamp = stress damping parameter (time units)
+ <I>couple</I> = <I>none</I> or <I>xyz</I> or <I>xy</I> or <I>yz</I> or <I>xz</I>
+ <I>tchain</I> value = length of thermostat chain (1 = single thermostat)
+ <I>pchain</I> values = length of thermostat chain on barostat (0 = no thermostat)
+ <I>mtk</I> value = <I>yes</I> or <I>no</I> = add in MTK adjustment term or not
+ <I>tloop</I> value = number of sub-cycles to perform on thermostat
+ <I>ploop</I> value = number of sub-cycles to perform on barostat thermostat
+ <I>nreset</I> value = reset reference cell every this many timesteps
+ <I>drag</I> value = drag factor added to barostat/thermostat (0.0 = no drag)
+ <I>dilate</I> value = <I>all</I> or <I>partial</I>
+ <I>scaleyz</I> value = <I>yes</I> or <I>no</I> = scale yz with lz
+ <I>scalexz</I> value = <I>yes</I> or <I>no</I> = scale xz with lz
+ <I>scalexy</I> value = <I>yes</I> or <I>no</I> = scale xy with ly
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix myhug all nphug temp 1.0 1.0 10.0 z 40.0 40.0 70.0
+fix myhug all nphug temp 1.0 1.0 10.0 iso 40.0 40.0 70.0 drag 200.0 tchain 1 pchain 0
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>This command is a variant of the Nose-Hoover
+<A HREF = "fix_nh.html">fix npt</A> fix style.
+It performs time integration of the Hugoniostat equations
+of motion developed by Ravelo et al. <A HREF = "#Ravelo">(Ravelo)</A>.
+These equations compress the system to a state with average
+axial stress or pressure equal to the specified target value
+and that satisfies the Rankine-Hugoniot (RH)
+jump conditions for steady shocks.
+</P>
+<P>The compression can be performed
+either
+hydrostatically (using keyword <I>iso</I>, <I>aniso</I>, or <I>tri</I>) or uniaxially
+(using keywords <I>x</I>, <I>y</I>, or <I>z</I>). In the hydrostatic case,
+the cell dimensions change dynamically so that the average axial stress
+in all three directions converges towards the specified target value.
+In the uniaxial case, the chosen cell dimension changes dynamically
+so that the average
+axial stress in that direction converges towards the target value. The
+other two cell dimensions are kept fixed (zero lateral strain).
+</P>
+<P>This leads to the following additional restrictions on the keywords:
+</P>
+<UL><LI>One and only one of the following keywords should be used: <I>iso</I>, <I>aniso</I>, <I>tri</I>, <I>x</I>, <I>y</I>, <I>z</I>
+<LI>The specified initial and final target pressures must be the same.
+<LI>The keywords <I>xy</I>, <I>xz</I>, <I>yz</I> may not be used.
+<LI>The only admissible value for the couple keyword is <I>xyz</I>, which has the same effect as keyword <I>iso</I>
+<LI>The <I>temp</I> keyword must be used to specify the time constant for kinetic energy relaxation, but initial and final target temperature values are ignored.
+</UL>
+<P>Essentially, a Hugoniostat simulation is an NPT simulation in which the
+user-specified target temperature is replaced with a time-dependent
+target temperature Tt obtained from the following equation:
+</P>
+<CENTER><IMG SRC = "Eqs/fix_nphug.jpg">
+</CENTER>
+<P>where T and Tt are the instantaneous and target temperatures,
+P and P0 are the instantaneous and reference pressures or axial stresses,
+depending on whether hydrostatic or uniaxial compression is being
+performed, V and V0 are the instantaneous and reference volumes,
+E and E0 are the instantaneous and reference internal energy (potential
+plus kinetic), Ndof is the number of degrees of freedom used in the
+definition of temperature, and kB is the Boltzmann constant. Delta is the
+negative deviation of the instantaneous temperature from the target temperature.
+When the system reaches a stable equilibrium, the value of Delta should
+fluctuate about zero.
+</P>
+<P>The values of E0, V0, and P0 are the instantaneous values at the start of
+the simulation. These can be overridden using the fix_modify keywords <I>e0</I>,
+<I>v0</I>, and <I>p0</I> described below.
+</P>
+<HR>
+
+<P>IMPORTANT NOTE: Unlike the <A HREF = "fix_temp_berendsen.html">fix
+temp/berendsen</A> command which performs
+thermostatting but NO time integration, this fix performs
+thermostatting/barostatting AND time integration. Thus you should not
+use any other time integration fix, such as <A HREF = "fix_nve.html">fix nve</A> on
+atoms to which this fix is applied. Likewise, this fix should not be
+used on atoms that have their temperature controlled by another fix
+- e.g. by <A HREF = "fix_nh.html">fix langevin</A> or <A HREF = "fix_temp_rescale.html">fix temp/rescale</A>
+commands.
+</P>
+<HR>
+
+<P>This fix computes a temperature and pressure at each timestep. To do
+this, the fix creates its own computes of style "temp" and "pressure",
+as if one of these two sets of commands had been issued:
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>q</I> or <I>mu</I> or <I>p0</I> or <I>v0</I> or <I>e0</I> or <I>tscale</I> or <I>damp</I> or <I>seed</I>or <I>f_max</I> or <I>N_f</I> or <I>eta</I> or <I>beta</I> or <I>T_init</I>
+
+<PRE> <I>q</I> value = cell mass-like parameter (mass^2/distance^4 units)
+ <I>mu</I> value = artificial viscosity (mass/distance/time units)
+ <I>p0</I> value = initial pressure in the shock equations (pressure units)
+ <I>v0</I> value = initial simulation cell volume in the shock equations (distance^3 units)
+ <I>e0</I> value = initial total energy (energy units)
+ <I>tscale</I> value = reduction in initial temperature (unitless fraction between 0.0 and 1.0)
+ <I>damp</I> value = damping parameter (time units) inverse of friction <i>γ</i>
+ <I>seed</I> value = random number seed (positive integer)
+ <I>f_max</I> value = upper cutoff frequency of the vibration spectrum (1/time units)
+ <I>N_f</I> value = number of frequency bins (positive integer)
+ <I>eta</I> value = coupling constant between the shock system and the quantum thermal bath (positive unitless)
+ <I>beta</I> value = the quantum temperature is updated every beta time steps (positive integer)
+ <I>T_init</I> value = quantum temperature for the initial state (temperature units)
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>fix 1 all qbmsst z 0.122 q 25 mu 0.9 tscale 0.01 damp 200 seed 35082 f_max 0.3 N_f 100 eta 1 beta 400 T_init 110 (liquid methane modeled with the REAX force field, real units)
+fix 2 all qbmsst z 72 q 40 tscale 0.05 damp 1 seed 47508 f_max 120.0 N_f 100 eta 1.0 beta 500 T_init 300 (quartz modeled with the BKS force field, metal units)
+</PRE>
+<P>Two example input scripts are given, including shocked alpha quartz
+and shocked liquid methane. The input script first equilibrate an
+initial state with the quantum thermal bath at the target temperature
+and then apply the qbmsst to simulate shock compression with quantum
+nuclear correction. The following two figures plot related quantities
+for shocked alpha quartz.
+</P>
+<CENTER><IMG SRC = "JPG/qbmsst_init.jpg">
+</CENTER>
+<P>Figure 1. Classical temperature <i>T</i><sup>cl</sup> = ∑
+<i>m<sub>i</sub>v<sub>i</sub><sup>2</sup>/3Nk</i><sub>B</sub> vs. time
+for coupling the alpha quartz initial state with the quantum thermal
+bath at target quantum temperature <i>T</i><sup>qm</sup> = 300 K. The
+NpH ensemble is used for time integration while QTB provides the
+colored random force. <i>T</i><sup>cl</sup> converges at the timescale
+of <I>damp</I> which is set to be 1 ps.
+</P>
+<CENTER><IMG SRC = "JPG/qbmsst_shock.jpg">
+</CENTER>
+<P>Figure 2. Quantum temperature and pressure vs. time for simulating
+shocked alpha quartz with the QBMSST. The shock propagates along the z
+direction. Restart of the QBMSST command is demonstrated in the
+example input script. Thermodynamic quantities stay continuous before
+and after the restart.
+</P>
+<P><B>Description:</B>
+</P>
+<P>This command performs the Quantum-Bath coupled Multi-Scale Shock
+Technique (QBMSST) integration. See <A HREF = "#Qi">(Qi)</A> for a detailed
+description of this method. The QBMSST provides description of the
+thermodynamics and kinetics of shock processes while incorporating
+quantum nuclear effects. The <I>shockvel</I> setting determines the steady
+shock velocity that will be simulated along direction <I>dir</I>.
+</P>
+<P>Quantum nuclear effects <A HREF = "fix_qtb.html">(fix qtb)</A> can be crucial
+especially when the temperature of the initial state is below the
+classical limit or there is a great change in the zero point energies
+between the initial and final states. Theoretical post processing
+quantum corrections of shock compressed water and methane have been
+reported as much as 30% of the temperatures <A HREF = "#Goldman">(Goldman)</A>. A
+self-consistent method that couples the shock to a quantum thermal
+bath described by a colored noise Langevin thermostat has been
+developed by Qi et al <A HREF = "#Qi">(Qi)</A> and applied to shocked methane. The
+onset of chemistry is reported to be at a pressure on the shock
+Hugoniot that is 40% lower than observed with classical molecular
+dynamics.
+</P>
+<P>It is highly recommended that the system be already in an equilibrium
+state with a quantum thermal bath at temperature of <I>T_init</I>. The fix
+command <A HREF = "fix_qtb.html">fix qtb</A> at constant temperature <I>T_init</I> could
+be used before applying this command to introduce self-consistent
+quantum nuclear effects into the initial state.
+</P>
+<P>The parameters <I>q</I>, <I>mu</I>, <I>e0</I>, <I>p0</I>, <I>v0</I> and <I>tscale</I> are described
+in the command <A HREF = "fix_msst.html">fix msst</A>. The values of <I>e0</I>, <I>p0</I>, or
+<I>v0</I> will be calculated on the first step if not specified. The
+parameter of <I>damp</I>, <I>f_max</I>, and <I>N_f</I> are described in the command
+<A HREF = "fix_qtb.html">fix qtb</A>.
+</P>
+<P>The fix qbmsst command couples the shock system to a quantum thermal
+bath with a rate that is proportional to the change of the total
+energy of the shock system, <i>etot</i> - <i>etot</i><sub>0</sub>.
+Here <i>etot</i> consists of both the system energy and a thermal
+term, see <A HREF = "#Qi">(Qi)</A>, and <i>etot</i><sub>0</sub> = <I>e0</I> is the
+initial total energy.
+</P>
+<P>The <I>eta</I> (<i>η</i>) parameter is a unitless coupling constant
+between the shock system and the quantum thermal bath. A small <I>eta</I>
+value cannot adjust the quantum temperature fast enough during the
+temperature ramping period of shock compression while large <I>eta</I>
+leads to big temperature oscillation. A value of <I>eta</I> between 0.3 and
+1 is usually appropriate for simulating most systems under shock
+compression. We observe that different values of <I>eta</I> lead to almost
+the same final thermodynamic state behind the shock, as expected.
+</P>
+<P>The quantum temperature is updated every <I>beta</I> (<i>β</i>) steps
+with an integration time interval <I>beta</I> times longer than the
+simulation time step. In that case, <i>etot</i> is taken as its
+average over the past <I>beta</I> steps. The temperature of the quantum
+thermal bath <i>T</i><sup>qm</sup> changes dynamically according to
+the following equation where Δ<i>t</i> is the MD time step and
+<i>γ</i> is the friction constant which is equal to the inverse
+<OL><LI><I>dhugoniot</I> is the departure from the Hugoniot (temperature units).
+<LI><I>drayleigh</I> is the departure from the Rayleigh line (pressure units).
+<LI><I>lagrangian_speed</I> is the laboratory-frame Lagrangian speed (particle velocity) of the computational cell (velocity units).
+<LI><I>lagrangian_position</I> is the computational cell position in the reference frame moving at the shock speed. This is the distance of the computational cell behind the shock front.
+<LI><I>quantum_temperature</I> is the temperature of the quantum thermal bath <i>T</i><sup>qm</sup>.
+</OL>
+<P>To print these quantities to the log file with descriptive column
+headers, the following LAMMPS commands are suggested. Here the
+<A HREF = "fix_modify.html">fix_modify</A> energy command is also enabled to allow
+the thermo keyword <I>etotal</I> to print the quantity <i>etot</i>. See
+also the <A HREF = "thermo_style.html">thermo_style</A> command.
+</P>
+<PRE>fix fix_id all msst z
+fix_modify fix_id energy yes
+variable dhug equal f_fix_id[1]
+variable dray equal f_fix_id[2]
+variable lgr_vel equal f_fix_id[3]
+variable lgr_pos equal f_fix_id[4]
+variable T_qm equal f_fix_id[5]
+thermo_style custom step temp ke pe lz pzz etotal v_dhug v_dray v_lgr_vel v_lgr_pos v_T_qm f_fix_id
+</PRE>
+<P>The global scalar under the entry f_fix_id is the quantity of thermo
+energy as an extra part of <i>etot</i>. This global scalar and the
+vector of 5 quantities can be accessed by various <A HREF = "Section_howto.html#howto_15">output
+commands</A>. It is worth noting that the
+temp keyword under the <A HREF = "thermo_style.html">thermo_style</A> command print
+the instantaneous classical temperature <i>T</i><sup>cl</sup> as
+described in the command <A HREF = "fix_qtb.html">fix qtb</A>.
+</P>
+<HR>
+
+<P><B>Restrictions:</B>
+</P>
+<P>This fix style is part of the USER-QTB package. It is only enabled if
+LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
+LAMMPS</A> section for more info.
+</P>
+<P>All cell dimensions must be periodic. This fix can not be used with a
+triclinic cell. The QBMSST fix has been tested only for the group-ID
+<PRE>fix ID group-ID style bodystyle args keyword values ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+
+<LI>style = <I>rigid</I> or <I>rigid/nve</I> or <I>rigid/nvt</I> or <I>rigid/npt</I> or <I>rigid/nph</I> or <I>rigid/small</I> or <I>rigid/nve/small</I> or <I>rigid/nvt/small</I> or <I>rigid/npt/small</I> or <I>rigid/nph/small</I>
+
+<LI>bodystyle = <I>single</I> or <I>molecule</I> or <I>group</I>
+
+<PRE> <I>single</I> args = none
+ <I>molecule</I> args = none
+ <I>group</I> args = N groupID1 groupID2 ...
+ N = # of groups
+ groupID1, groupID2, ... = list of N group IDs
+</PRE>
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>langevin</I> or <I>temp</I> or <I>iso</I> or <I>aniso</I> or <I>x</I> or <I>y</I> or <I>z</I> or <I>couple</I> or <I>tparam</I> or <I>pchain</I> or <I>dilate</I> or <I>force</I> or <I>torque</I> or <I>infile</I>
+<PRE>fix ID group-ID srd N groupbig-ID Tsrd hgrid seed keyword value ...
+</PRE>
+<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
+<LI>srd = style name of this fix command
+<LI>N = reset SRD particle velocities every this many timesteps
+<LI>groupbig-ID = ID of group of large particles that SRDs interact with
+<LI>Tsrd = temperature of SRD particles (temperature units)
+<LI>hgrid = grid spacing for SRD grouping (distance units)
+<LI>seed = random # seed (positive integer)
+</UL>
+<UL><LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>lamda</I> or <I>collision</I> or <I>overlap</I> or <I>inside</I> or <I>exact</I> or <I>radius</I> or <I>bounce</I> or <I>search</I> or <I>cubic</I> or <I>shift</I> or <I>tstat</I> or <I>rescale</I>
+
+<PRE> <I>lamda</I> value = mean free path of SRD particles (distance units)
+ <I>collision</I> value = <I>noslip</I> or <I>slip</I> = collision model
+ <I>overlap</I> value = <I>yes</I> or <I>no</I> = whether big particles may overlap
+ <I>inside</I> value = <I>error</I> or <I>warn</I> or <I>ignore</I> = how SRD particles which end up inside a big particle are treated
+ <I>exact</I> value = <I>yes</I> or <I>no</I>
+ <I>radius</I> value = rfactor = scale collision radius by this factor
+ <I>bounce</I> value = Nbounce = max # of collisions an SRD particle can undergo in one timestep
+ <I>search</I> value = sgrid = grid spacing for collision partner searching (distance units)
+ 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>.
+<LI>style = <I>delete</I> or <I>region</I> or <I>type</I> or <I>id</I> or <I>molecule</I> or <I>variable</I> or <I>include</I> or <I>subtract</I> or <I>union</I> or <I>intersect</I> or <I>dynamic</I> or <I>static</I>
+
+<PRE> <I>delete</I> = no args
+ <I>clear</I> = no args
+ <I>region</I> args = region-ID
+ <I>type</I> or <I>id</I> or <I>molecule</I>
+ args = list of one or more atom types, atom IDs, or molecule IDs
+ any entry in list can be a sequence formatted as A:B or A:B:C where
+ A = starting index, B = ending index,
+ C = increment between indices, 1 if not specified
+ args = logical value
+ logical = "<" or "<=" or ">" or ">=" or "==" or "!="
+ value = an atom type or atom ID or molecule ID (depending on <I>style</I>)
+ args = logical value1 value2
+ logical = "<>"
+ value1,value2 = atom types or atom IDs or molecule IDs (depending on <I>style</I>)
+ <I>variable</I> args = variable-name
+ <I>include</I> args = molecule
+ molecule = add atoms to group with same molecule ID as atoms already in group
+ <I>subtract</I> args = two or more group IDs
+ <I>union</I> args = one or more group IDs
+ <I>intersect</I> args = two or more group IDs
+ <I>dynamic</I> args = parent-ID keyword value ...
+ one or more keyword/value pairs may be appended
+ keyword = <I>region</I> or <I>var</I> or <I>every</I>
+ <I>region</I> value = region-ID
+ <I>var</I> value = name of variable
+ <I>every</I> value = N = update group every this many timesteps
+ <I>static</I> = no args
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>group edge region regstrip
+group water type 3 4
+group sub id 10 25 50
+group sub id 10 25 50 500:1000
+group sub id 100:10000:10
+group sub id <= 150
+group polyA molecule <> 50 250
+group hienergy variable eng
+group hienergy include molecule
+group boundary subtract all a2 a3
+group boundary union lower upper
+group boundary intersect upper flow
+group boundary delete
+group mine dynamic all region myRegion every 100
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Identify a collection of atoms as belonging to a group. The group ID
+can then be used in other commands such as <A HREF = "fix.html">fix</A>,
+<P>args = one or more of the following keywords: <I>out</I>, <I>all</I>, <I>system</I>, <I>computes</I>, <I>dumps</I>, <I>fixes</I>, <I>groups</I>, <I>regions</I>, <I>variables</I>, <I>time</I>, or <I>configuration</I>
+<UL><LI>one or more keyword/value pairs may be listed
+
+<PRE>keyword = <I>mesh</I> or <I>order</I> or <I>order/disp</I> or <I>mix/disp</I> or <I>overlap</I> or <I>minorder</I> or <I>force</I> or <I>gewald</I> or <I>gewald/disp</I> or <I>slab</I> or (nozforce</I> or <I>compute</I> or <I>cutoff/adjust</I> or <I>fftbench</I> or <I>collective</I> or <I>diff</I> or <I>kmax/ewald</I> or <I>force/disp/real</I> or <I>force/disp/kspace</I> or <I>splittol</I> or <I>disp/auto</I>:l
+ <I>mesh</I> value = x y z
+ x,y,z = grid size in each dimension for long-range Coulombics
+ <I>mesh/disp</I> value = x y z
+ x,y,z = grid size in each dimension for 1/r^6 dispersion
+ <I>order</I> value = N
+ N = extent of Gaussian for PPPM or MSM mapping of charge to grid
+ <I>order/disp</I> value = N
+ N = extent of Gaussian for PPPM mapping of dispersion term to grid
+ <I>mix/disp</I> value = <I>pair</I> or <I>geom</I> or <I>none</I>
+ <I>overlap</I> = <I>yes</I> or <I>no</I> = whether the grid stencil for PPPM is allowed to overlap into more than the nearest-neighbor processor
+ <I>minorder</I> value = M
+ M = min allowed extent of Gaussian when auto-adjusting to minimize grid communication
+ <I>force</I> value = accuracy (force units)
+ <I>gewald</I> value = rinv (1/distance units)
+ rinv = G-ewald parameter for Coulombics
+ <I>gewald/disp</I> value = rinv (1/distance units)
+ rinv = G-ewald parameter for dispersion
+ <I>slab</I> value = volfactor or <I>nozforce</I>
+ volfactor = ratio of the total extended volume used in the
+ 2d approximation compared with the volume of the simulation domain
+ <I>nozforce</I> turns off kspace forces in the z direction
+ <I>compute</I> value = <I>yes</I> or <I>no</I>
+ <I>cutoff/adjust</I> value = <I>yes</I> or <I>no</I>
+ <I>pressure/scalar</I> value = <I>yes</I> or <I>no</I>
+ <I>fftbench</I> value = <I>yes</I> or <I>no</I>
+ <I>collective</I> value = <I>yes</I> or <I>no</I>
+ <I>diff</I> value = <I>ad</I> or <I>ik</I> = 2 or 4 FFTs for PPPM in smoothed or non-smoothed mode
+ <I>kmax/ewald</I> value = kx ky kz
+ kx,ky,kz = number of Ewald sum kspace vectors in each dimension
+ <I>force/disp/real</I> value = accuracy (force units)
+ <I>force/disp/kspace</I> value = accuracy (force units)
+ <I>splittol</I> value = tol
+ tol = relative size of two eigenvalues (see discussion below)
+ <I>disp/auto</I> value = yes or no
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>kspace_modify mesh 24 24 30 order 6
+kspace_modify slab 3.0
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Set parameters used by the kspace solvers defined by the
+<A HREF = "kspace_style.html">kspace_style</A> command. Not all parameters are
+relevant to all kspace styles.
+</P>
+<P>The <I>mesh</I> keyword sets the grid size for kspace style <I>pppm</I> or
+<I>msm</I>. In the case of PPPM, this is the FFT mesh, and each dimension
+must be factorizable into powers of 2, 3, and 5. In the case of MSM,
+this is the finest scale real-space mesh, and each dimension must be
+factorizable into powers of 2. When this option is not set, the PPPM
+or MSM solver chooses its own grid size, consistent with the
+user-specified accuracy and pairwise cutoff. Values for x,y,z of
+0,0,0 unset the option.
+</P>
+<P>The <I>mesh/disp</I> keyword sets the grid size for kspace style
+<I>pppm/disp</I>. This is the FFT mesh for long-range dispersion and ach
+dimension must be factorizable into powers of 2, 3, and 5. When this
+option is not set, the PPPM solver chooses its own grid size,
+consistent with the user-specified accuracy and pairwise cutoff.
+Values for x,y,z of 0,0,0 unset the option.
+</P>
+<P>The <I>order</I> keyword determines how many grid spacings an atom's charge
+extends when it is mapped to the grid in kspace style <I>pppm</I> or <I>msm</I>.
+The default for this parameter is 5 for PPPM and 8 for MSM, which
+means each charge spans 5 or 8 grid cells in each dimension,
+respectively. For the LAMMPS implementation of MSM, the order can
+range from 4 to 10 and must be even. For PPPM, the minimum allowed
+setting is 2 and the maximum allowed setting is 7. The larger the
+value of this parameter, the smaller that LAMMPS will set the grid
+size, to achieve the requested accuracy. Conversely, the smaller the
+order value, the larger the grid size will be. Note that there is an
+inherent trade-off involved: a small grid will lower the cost of FFTs
+or MSM direct sum, but a larger order parameter will increase the cost
+of interpolating charge/fields to/from the grid.
+</P>
+<P>The <I>order/disp</I> keyword determines how many grid spacings an atom's
+dispersion term extends when it is mapped to the grid in kspace style
+<I>pppm/disp</I>. It has the same meaning as the <I>order</I> setting for
+Coulombics.
+</P>
+<P>The <I>overlap</I> keyword can be used in conjunction with the <I>minorder</I>
+keyword with the PPPM styles to adjust the amount of communication
+that occurs when values on the FFT grid are exchangeed between
+processors. This communication is distinct from the communication
+inherent in the parallel FFTs themselves, and is required because
+processors interpolate charge and field values using grid point values
+owned by neighboring processors (i.e. ghost point communication). If
+the <I>overlap</I> keyword is set to <I>yes</I> then this communication is
+allowed to extend beyond nearest-neighbor processors, e.g. when using
+lots of processors on a small problem. If it is set to <I>no</I> then the
+communication will be limited to nearest-neighbor processors and the
+<I>order</I> setting will be reduced if necessary, as explained by the
+<I>minorder</I> keyword discussion. The <I>overlap</I> keyword is always set to
+<I>yes</I> in MSM.
+</P>
+<P>The <I>minorder</I> keyword allows LAMMPS to reduce the <I>order</I> setting if
+necessary to keep the communication of ghost grid point limited to
+exchanges between nearest-neighbor processors. See the discussion of
+the <I>overlap</I> keyword for details. If the <I>overlap</I> keyword is set to
+<I>yes</I>, which is the default, this is never needed. If it set to <I>no</I>
+and overlap occurs, then LAMMPS will reduce the order setting, one
+step at a time, until the ghost grid overlap only extends to nearest
+neighbor processors. The <I>minorder</I> keyword limits how small the
+<I>order</I> setting can become. The minimum allowed value for PPPM is 2,
+which is the default. If <I>minorder</I> is set to the same value as
+<I>order</I> then no reduction is allowed, and LAMMPS will generate an
+error if the grid communcation is non-nearest-neighbor and <I>overlap</I>
+is set to <I>no</I>. The <I>minorder</I> keyword is not currently supported in
+MSM.
+</P>
+<P>The PPPM order parameter may be reset by LAMMPS when it sets up the
+FFT grid if the implied grid stencil extends beyond the grid cells
+owned by neighboring processors. Typically this will only occur when
+small problems are run on large numbers of processors. A warning will
+be generated indicating the order parameter is being reduced to allow
+LAMMPS to run the problem. Automatic adjustment of the order parameter
+is not supported in MSM.
+</P>
+<P>The <I>force</I> keyword overrides the relative accuracy parameter set by
+the <A HREF = "kspace_style.html">kspace_style</A> command with an absolute
+accuracy. The accuracy determines the RMS error in per-atom forces
+calculated by the long-range solver and is thus specified in force
+units. A negative value for the accuracy setting means to use the
+relative accuracy parameter. The accuracy setting is used in
+conjunction with the pairwise cutoff to determine the number of
+K-space vectors for style <I>ewald</I>, the FFT grid size for style
+<I>pppm</I>, or the real space grid size for style <I>msm</I>.
+</P>
+<P>The <I>gewald</I> keyword sets the value of the Ewald or PPPM G-ewald
+parameter for charge as <I>rinv</I> in reciprocal distance units. Without
+this setting, LAMMPS chooses the parameter automatically as a function
+of cutoff, precision, grid spacing, etc. This means it can vary from
+one simulation to the next which may not be desirable for matching a
+KSpace solver to a pre-tabulated pairwise potential. This setting can
+also be useful if Ewald or PPPM fails to choose a good grid spacing
+and G-ewald parameter automatically. If the value is set to 0.0,
+LAMMPS will choose the G-ewald parameter automatically. MSM does not
+use the <I>gewald</I> parameter.
+</P>
+<P>The <I>gewald/disp</I> keyword sets the value of the Ewald or PPPM G-ewald
+parameter for dispersion as <I>rinv</I> in reciprocal distance units. It
+has the same meaning as the <I>gewald</I> setting for Coulombics.
+</P>
+<P>The <I>slab</I> keyword allows an Ewald or PPPM solver to be used for a
+systems that are periodic in x,y but non-periodic in z - a
+<A HREF = "boundary.html">boundary</A> setting of "boundary p p f". This is done by
+treating the system as if it were periodic in z, but inserting empty
+volume between atom slabs and removing dipole inter-slab interactions
+so that slab-slab interactions are effectively turned off. The
+volfactor value sets the ratio of the extended dimension in z divided
+by the actual dimension in z. The recommended value is 3.0. A larger
+value is inefficient; a smaller value introduces unwanted slab-slab
+interactions. The use of fixed boundaries in z means that the user
+must prevent particle migration beyond the initial z-bounds, typically
+by providing a wall-style fix. The methodology behind the <I>slab</I>
+option is explained in the paper by <A HREF = "#Yeh">(Yeh)</A>. The <I>slab</I> option
+is also extended to non-neutral systems
+<A HREF = "#Ballenegger">(Ballenegger)</A>. An alternative slab option can be
+invoked with the <I>nozforce</I> keyword in lieu of the volfactor. This
+turns off all kspace forces in the z direction. The <I>nozforce</I> option
+is not supported by MSM. For MSM, any combination of periodic,
+non-periodic, or shrink-wrapped boundaries can be set using
+<A HREF = "boundary.html">boundary</A> (the slab approximation in not needed). The
+<I>slab</I> keyword is not currently supported by Ewald or PPPM when using
+a triclinic simulation cell. The slab correction has also been
+extended to point dipole interactions <A HREF = "#Klapp">(Klapp)</A> in
+<UL><LI>style = <I>none</I> or <I>ewald</I> or <I>ewald/disp</I> or <I>ewald/omp</I> or <I>pppm</I> or <I>pppm/cg</I> or <I>pppm/disp</I> or <I>pppm/tip4p</I> or <I>pppm/stagger</I> or <I>pppm/disp/tip4p</I> or <I>pppm/gpu</I> or <I>pppm/omp</I> or <I>pppm/cg/omp</I> or <I>pppm/tip4p/omp</I> or <I>msm</I> or <I>msm/cg</I> or <I>msm/omp</I> or <I>msm/cg/omp</I>
+
+<PRE> <I>none</I> value = none
+ <I>ewald</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>ewald/disp</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>ewald/omp</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm/cg</I> value = accuracy (smallq)
+ accuracy = desired relative error in forces
+ smallq = cutoff for charges to be considered (optional) (charge units)
+ <I>pppm/disp</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm/tip4p</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm/disp/tip4p</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm/gpu</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm/omp</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm/cg/omp</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm/tip4p/omp</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>pppm/stagger</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>msm</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>msm/cg</I> value = accuracy (smallq)
+ accuracy = desired relative error in forces
+ smallq = cutoff for charges to be considered (optional) (charge units)
+ <I>msm/omp</I> value = accuracy
+ accuracy = desired relative error in forces
+ <I>msm/cg/omp</I> value = accuracy (smallq)
+ accuracy = desired relative error in forces
+ smallq = cutoff for charges to be considered (optional) (charge units)
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>kspace_style pppm 1.0e-4
+kspace_style pppm/cg 1.0e-5 1.0e-6
+kspace style msm 1.0e-4
+kspace_style none
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Define a long-range solver for LAMMPS to use each timestep to compute
+long-range Coulombic interactions or long-range 1/r^6 interactions.
+Most of the long-range solvers perform their computation in K-space,
+hence the name of this command.
+</P>
+<P>When such a solver is used in conjunction with an appropriate pair
+style, the cutoff for Coulombic or 1/r^N interactions is effectively
+infinite. If the Coulombic case, this means each charge in the system
+interacts with charges in an infinite array of periodic images of the
+simulation domain.
+</P>
+<P>Note that using a long-range solver requires use of a matching <A HREF = "pair.html">pair
+style</A> to perform consistent short-range pairwise
+calculations. This means that the name of the pair style contains a
+matching keyword to the name of the KSpace style, as in this table:
+<UL><LI>style = <I>none</I> or <I>sc</I> or <I>bcc</I> or <I>fcc</I> or <I>hcp</I> or <I>diamond</I> or <I>sq</I> or <I>sq2</I> or <I>hex</I> or <I>custom</I>
+
+<LI>scale = scale factor between lattice and simulation box
+
+<PRE> scale = reduced density rho* (for LJ units)
+ scale = lattice constant in distance units (for all other units)
+</PRE>
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>origin</I> or <I>orient</I> or <I>spacing</I> or <I>a1</I> or <I>a2</I> or <I>a3</I> or <I>basis</I>
+
+<PRE> <I>origin</I> values = x y z
+ x,y,z = fractions of a unit cell (0 <= x,y,z < 1)
+ <I>orient</I> values = dim i j k
+ dim = <I>x</I> or <I>y</I> or <I>z</I>
+ i,j,k = integer lattice directions
+ <I>spacing</I> values = dx dy dz
+ dx,dy,dz = lattice spacings in the x,y,z box directions
+ <I>a1</I>,<I>a2</I>,<I>a3</I> values = x y z
+ x,y,z = primitive vector components that define unit cell
+ <I>basis</I> values = x y z
+ x,y,z = fractional coords of a basis atom (0 <= x,y,z < 1)
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>lattice fcc 3.52
+lattice hex 0.85
+lattice sq 0.8 origin 0.0 0.5 0.0 orient x 1 1 0 orient y -1 1 0
+<UL><LI>one or more keyword/value pairs may be listed
+
+<PRE>keyword = <I>delay</I> or <I>every</I> or <I>check</I> or <I>once</I> or <I>cluster</I> or <I>include</I> or <I>exclude</I> or <I>page</I> or <I>one</I> or <I>binsize</I>
+ <I>delay</I> value = N
+ N = delay building until this many steps since last build
+ <I>every</I> value = M
+ M = build neighbor list every this many steps
+ <I>check</I> value = <I>yes</I> or <I>no</I>
+ <I>yes</I> = only build if some atom has moved half the skin distance or more
+ <I>no</I> = always build on 1st step that <I>every</I> and <I>delay</I> are satisfied
+ <I>once</I>
+ <I>yes</I> = only build neighbor list once at start of run and never rebuild
+ <I>no</I> = rebuild neighbor list according to other settings
+ <I>cluster</I>
+ <I>yes</I> = check bond,angle,etc neighbor list for nearby clusters
+ <I>no</I> = do not check bond,angle,etc neighbor list for nearby clusters
+ <I>include</I> value = group-ID
+ group-ID = only build pair neighbor lists for atoms in this group
+ <I>exclude</I> values:
+ type M N
+ M,N = exclude if one atom in pair is type M, other is type N
+ group group1-ID group2-ID
+ group1-ID,group2-ID = exclude if one atom is in 1st group, other in 2nd
+ molecule group-ID
+ groupname = exclude if both atoms are in the same molecule and in the same group
+ none
+ delete all exclude settings
+ <I>page</I> value = N
+ N = number of pairs stored in a single neighbor page
+ <I>one</I> value = N
+ N = max number of neighbors of one atom
+ <I>binsize</I> value = size
+ size = bin size for neighbor list construction (distance units)
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>neigh_modify every 2 delay 10 check yes page 100000
+neigh_modify exclude type 2 3
+neigh_modify exclude group frozen frozen check no
+neigh_modify exclude group residue1 chain3
+neigh_modify exclude molecule rigid
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>This command sets parameters that affect the building and use of
+pairwise neighbor lists. Depending on what pair interactions and
+other commands are defined, a simulation may require one or more
+neighbor lists.
+</P>
+<P>The <I>every</I>, <I>delay</I>, <I>check</I>, and <I>once</I> options affect how often
+lists are built as a simulation runs. The <I>delay</I> setting means never
+build new lists until at least N steps after the previous build. The
+<I>every</I> setting means build lists every M steps (after the delay has
+passed). If the <I>check</I> setting is <I>no</I>, the lists are built on the
+first step that satisfies the <I>delay</I> and <I>every</I> settings. If the
+<I>check</I> setting is <I>yes</I>, then the <I>every</I> and <I>delay</I> settings
+determine when a build may possibly be performed, but an actual build
+only occurs if some atom has moved more than half the skin distance
+(specified in the <A HREF = "neighbor.html">neighbor</A> command) since the last
+build.
+</P>
+<P>If the <I>once</I> setting is yes, then the neighbor list is only built
+once at the beginning of each run, and never rebuilt, except on steps
+when a restart file is written, or steps when a fix forces a rebuild
+to occur (e.g. fixes that create or delete atoms, such as <A HREF = "fix_deposit.html">fix
+deposit</A> or <A HREF = "fix_evaporate.html">fix evaporate</A>).
+This setting should only be made if you are certain atoms will not
+move far enough that the neighbor list should be rebuilt, e.g. running
+a simulation of a cold crystal. Note that it is not that expensive to
+check if neighbor lists should be rebuilt.
+</P>
+<P>When the rRESPA integrator is used (see the <A HREF = "run_style.html">run_style</A>
+command), the <I>every</I> and <I>delay</I> parameters refer to the longest
+(outermost) timestep.
+</P>
+<P>The <I>cluster</I> option does a sanity test every time neighbor lists are
+built for bond, angle, dihedral, and improper interactions, to check
+that each set of 2, 3, or 4 atoms is a cluster of nearby atoms. It
+does this by computing the distance between pairs of atoms in the
+interaction and insuring they are not further apart than half the
+periodic box length. If they are, an error is generated, since the
+interaction would be computed between far-away atoms instead of their
+nearby periodic images. The only way this should happen is if the
+pairwise cutoff is so short that atoms that are part of the same
+interaction are not communicated as ghost atoms. This is an unusual
+model (e.g. no pair interactions at all) and the problem can be fixed
+by use of the <A HREF = "comm_modify.html">comm_modify cutoff</A> command. Note
+that to save time, the default <I>cluster</I> setting is <I>no</I>, so that this
+check is not performed.
+</P>
+<P>The <I>include</I> option limits the building of pairwise neighbor lists to
+atoms in the specified group. This can be useful for models where a
+large portion of the simulation is particles that do not interact with
+other particles or with each other via pairwise interactions. The
+group specified with this option must also be specified via the
+<UL><LI>Rc = global cutoff, -1 means cutoff of half the shortest box length
+
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>hartree</I> or <I>dproduct</I> or <I>uhf</I> or <I>free</I> or <I>pbc</I> or <I>fix</I> or <I>harm</I> or <I>ermscale</I> or <I>flex_press</I>
+
+<PRE> <I>hartree</I> value = none
+ <I>dproduct</I> value = none
+ <I>uhf</I> value = none
+ <I>free</I> value = none
+ <I>pbc</I> value = Plen
+ Plen = periodic width of electron = -1 or positive value (distance units)
+ <I>fix</I> value = Flen
+ Flen = fixed width of electron = -1 or positive value (distance units)
+ <I>harm</I> value = width
+ width = harmonic width constraint
+ <I>ermscale</I> value = factor
+ factor = scaling between electron mass and width variable mass
+ <I>flex_press</I> value = none
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>pair_style awpmd/cut -1
+pair_style awpmd/cut 40.0 uhf free
+pair_coeff * *
+pair_coeff 2 2 20.0
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>This pair style contains an implementation of the Antisymmetrized Wave
+Packet Molecular Dynamics (AWPMD) method. Need citation here. Need
+basic formulas here. Could be links to other documents.
+</P>
+<P>Rc is the cutoff.
+</P>
+<P>The pair_style command allows for several optional keywords
+to be specified.
+</P>
+<P>The <I>hartree</I>, <I>dproduct</I>, and <I>uhf</I> keywords specify the form of the
+initial trial wave function for the system. If the <I>hartree</I> keyword
+is used, then a Hartree multielectron trial wave function is used. If
+the <I>dproduct</I> keyword is used, then a trial function which is a
+product of two determinants for each spin type is used. If the <I>uhf</I>
+keyword is used, then an unrestricted Hartree-Fock trial wave function
+is used.
+</P>
+<P>The <I>free</I>, <I>pbc</I>, and <I>fix</I> keywords specify a width constraint on
+the electron wavepackets. If the <I>free</I> keyword is specified, then there is no
+constraint. If the <I>pbc</I> keyword is used and <I>Plen</I> is specified as
+-1, then the maximum width is half the shortest box length. If <I>Plen</I>
+is a positive value, then the value is the maximum width. If the
+<I>fix</I> keyword is used and <I>Flen</I> is specified as -1, then electrons
+have a constant width that is read from the data file. If <I>Flen</I> is a
+positive value, then the constant width for all electrons is set to
+<I>Flen</I>.
+</P>
+<P>The <I>harm</I> keyword allow oscillations in the width of the
+electron wavepackets. More details are needed.
+</P>
+<P>The <I>ermscale</I> keyword specifies a unitless scaling factor
+between the electron masses and the width variable mass. More
+details needed.
+</P>
+<P>If the <I>flex_press</I> keyword is used, then a contribution from the
+electrons is added to the total virial and pressure of the system.
+</P>
+<P>This potential is designed to be used with <A HREF = "atom_style.html">atom_style
+wavepacket</A> definitions, in order to handle the
+description of systems with interacting nuclei and explicit electrons.
+</P>
+<P>The following coefficients must be defined for each pair of atoms
+types via the <A HREF = "pair_coeff.html">pair_coeff</A> command as in the examples
+above, or in the data file or restart files read by the
+<A HREF = "read_data.html">read_data</A> or <A HREF = "read_restart.html">read_restart</A>
+commands, or by mixing as described below:
+</P>
+<UL><LI>cutoff (distance units)
+</UL>
+<P>For <I>awpmd/cut</I>, the cutoff coefficient is optional. If it is not
+used (as in some of the examples above), the default global value
+<UL><LI>style = <I>lj/cut</I> or <I>lj/cut/coul/cut</I> or <I>lj/cut/coul/debye</I> or <I>lj/cut/coul/dsf</I> or <I>lj/cut/coul/long</I> or <I>lj/cut/coul/msm</I> or <I>lj/cut/tip4p/long</I>
+<LI>args = list of arguments for a particular style
+</UL>
+<PRE> <I>lj/cut</I> args = cutoff
+ cutoff = global cutoff for Lennard Jones interactions (distance units)
+ <I>lj/cut/coul/cut</I> args = cutoff (cutoff2)
+ cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
+ cutoff2 = global cutoff for Coulombic (optional) (distance units)
+<UL><LI>style = <I>lj/cut/soft</I> or <I>lj/cut/coul/cut/soft</I> or <I>lj/cut/coul/long/soft</I> or <I>lj/cut/tip4p/long/soft</I> or <I>lj/charmm/coul/long/soft</I> or <I>coul/cut/soft</I> or <I>coul/long/soft</I> or <I>tip4p/long/soft</I>
+<LI>args = list of arguments for a particular style
+</UL>
+<PRE> <I>lj/cut/soft</I> args = n alpha_lj cutoff
+ n, alpha_LJ = parameters of soft-core potential
+ cutoff = global cutoff for Lennard-Jones interactions (distance units)
+ <I>lj/cut/coul/cut/soft</I> args = n alpha_LJ alpha_C cutoff (cutoff2)
+ n, alpha_LJ, alpha_C = parameters of soft-core potential
+ cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
+ cutoff2 = global cutoff for Coulombic (optional) (distance units)
+ <I>lj/cut/coul/long/soft</I> args = n alpha_LJ alpha_C cutoff
+ n, alpha_LJ, alpha_C = parameters of the soft-core potential
+ cutoff = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
+ cutoff2 = global cutoff for Coulombic (optional) (distance units)
+<UL><LI>one or more keyword/value pairs may be listed
+
+<LI>keyword = <I>pair</I> or <I>special</I> or <I>shift</I> or <I>mix</I> or <I>table</I> or <I>table/disp</I> or <I>tabinner</I> or <I>tabinner/disp</I> or <I>tail</I> or <I>compute</I>
+
+<PRE> <I>pair</I> values = sub-style N special which w1 wt2 wt3
+ sub-style = sub-style of <A HREF = "pair_hybrid.html">pair hybrid</A>
+ N = which instance of sub-style (only if sub-style is used multiple times)
+ <I>special</I> values = flavor w1 w2 w3
+ flavor = <I>lj/coul</I> or <I>lj</I> or <I>coul</I>
+ w1,w2,w3 = weights from 0.0 to 1.0 inclusive
+ <I>mix</I> value = <I>geometric</I> or <I>arithmetic</I> or <I>sixthpower</I>
+ <I>shift</I> value = <I>yes</I> or <I>no</I>
+ <I>table</I> value = N
+ 2^N = # of values in table
+ <I>table/disp</I> value = N
+ 2^N = # of values in table
+ <I>tabinner</I> value = cutoff
+ cutoff = inner cutoff at which to begin table (distance units)
+ <I>tabinner/disp</I> value = cutoff
+ cutoff = inner cutoff at which to begin table (distance units)
+ <I>tail</I> value = <I>yes</I> or <I>no</I>
+ <I>compute</I> value = <I>yes</I> or <I>no</I>
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>pair_modify shift yes mix geometric
+pair_modify tail yes
+pair_modify table 12
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Modify the parameters of the currently defined pair style. Not all
+parameters are relevant to all pair styles.
+</P>
+<P>If used, the <I>pair</I> keyword must appear first in the list of keywords.
+It can only be used with the <A HREF = "pair_hybrid.html">hybrid and
+hybrid/overlay</A> pair styles. It means that all the
+following parameters will only be modified for the specified
+sub-style. If the sub-style is defined multiple times, then an
+additional numeric argument <I>N</I> must also be specified, which is a
+number from 1 to M where M is the number of times the sub-style was
+listed in the <A HREF = "pair_hybrid.html">pair_style hybrid</A> command. The extra
+number indicates which instance of the sub-style the remaining
+keywords will be applied to. Note that if the <I>pair</I> keyword is not
+used, and the pair style is <I>hybrid</I> or <I>hybrid/overlay</I>, then all the
+specified keywords will be applied to all sub-styles.
+</P>
+<P>If used, the <I>special</I> keyword must appear second in the list of
+keywords, and must follow the <I>pair</I> keyword. Like the <I>pair</I>
+keyword, it also can only be used with the <A HREF = "pair_hybrid.html">hybrid and
+hybrid/overlay</A> pair styles. Its parameters are
+similar to the <A HREF = "special_bonds.html">special_bonds</A> command, and it
+overrides the special_bond settings for the specified sub-style. More
+details are given below.
+</P>
+<P>The <I>mix</I> keyword affects pair coefficients for interactions between
+atoms of type I and J, when I != J and the coefficients are not
+explicitly set in the input script. Note that coefficients for I = J
+must be set explicitly, either in the input script via the
+"pair_coeff" command or in the "Pair Coeffs" section of the <A HREF = "read_data.html">data
+file</A>. For some pair styles it is not necessary to
+specify coefficients when I != J, since a "mixing" rule will create
+them from the I,I and J,J settings. The pair_modify <I>mix</I> value
+determines what formulas are used to compute the mixed coefficients.
+In each case, the cutoff distance is mixed the same way as sigma.
+</P>
+<P>Note that not all pair styles support mixing. Also, some mix options
+are not available for certain pair styles. See the doc page for
+individual pair styles for those restrictions. Note also that the
+<A HREF = "pair_coeff.html">pair_coeff</A> command also can be to directly set
+coefficients for a specific I != J pairing, in which case no mixing is
+<LI>zero or more keyword/arg pairs may be appended
+
+<LI>keyword = <I>add</I> or <I>offset</I> or <I>shift</I> or <I>extra/atom/types</I> or <I>extra/bond/types</I> or <I>extra/angle/types</I> or <I>extra/dihedral/types</I> or <I>extra/improper/types</I> or <I>group</I> or <I>fix</I>
+
+<PRE> <I>add</I> arg = <I>append</I> or <I>Nstart</I> or <I>merge</I>
+ append = add new atoms with IDs appended to current IDs
+ Nstart = add new atoms with IDs starting with Nstart
+ merge = add new atoms with their IDs unchanged
+ <I>offset</I> args = toff boff aoff doff ioff
+ toff = offset to add to atom types
+ boff = offset to add to bond types
+ aoff = offset to add to angle types
+ doff = offset to add to dihedral types
+ ioff = offset to add to improper types
+ <I>shift</I> args = Sx Sy Sz
+ Sx,Sy,Sz = distance to shift atoms when adding to system (distance units)
+ <I>extra/atom/types</I> arg = # of extra atom types
+ <I>extra/bond/types</I> arg = # of extra bond types
+ <I>extra/angle/types</I> arg = # of extra angle types
+ <I>extra/dihedral/types</I> arg = # of extra dihedral types
+ <I>extra/improper/types</I> arg = # of extra improper types
+ <I>ix</I>,<I>iy</I>,<I>iz</I> = image flags in each dimension
+</PRE>
+<LI>zero or more keyword/value pairs may be appended
+
+<LI>keyword = <I>box</I> or <I>replace</I> or <I>purge</I> or <I>trim</I> or <I>add</I> or <I>label</I> or <I>scaled</I> or <I>wrapped</I> or <I>format</I>
+
+<PRE> <I>box</I> value = <I>yes</I> or <I>no</I> = replace simulation box with dump box
+ <I>replace</I> value = <I>yes</I> or <I>no</I> = overwrite atoms with dump atoms
+ <I>purge</I> value = <I>yes</I> or <I>no</I> = delete all atoms before adding dump atoms
+ <I>trim</I> value = <I>yes</I> or <I>no</I> = trim atoms not in dump snapshot
+ <I>add</I> value = <I>yes</I> or <I>no</I> = add new dump atoms to system
+ <I>label</I> value = field column
+ field = one of the listed fields or <I>id</I> or <I>type</I>
+ column = label on corresponding column in dump file
+ <I>scaled</I> value = <I>yes</I> or <I>no</I> = coords in dump file are scaled/unscaled
+ <I>wrapped</I> value = <I>yes</I> or <I>no</I> = coords in dump file are wrapped/unwrapped
+ <I>format</I> values = format of dump file, must be last keyword if used
+<LI>style = <I>delete</I> or <I>block</I> or <I>cone</I> or <I>cylinder</I> or <I>plane</I> or <I>prism</I> or <I>sphere</I> or <I>union</I> or <I>intersect</I>
+
+<PRE> <I>delete</I> = no args
+ <I>block</I> args = xlo xhi ylo yhi zlo zhi
+ xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all dimensions (distance units)
+ <I>cone</I> args = dim c1 c2 radlo radhi lo hi
+ dim = <I>x</I> or <I>y</I> or <I>z</I> = axis of cone
+ c1,c2 = coords of cone axis in other 2 dimensions (distance units)
+ radlo,radhi = cone radii at lo and hi end (distance units)
+ lo,hi = bounds of cone in dim (distance units)
+ <I>cylinder</I> args = dim c1 c2 radius lo hi
+ dim = <I>x</I> or <I>y</I> or <I>z</I> = axis of cylinder
+ c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
+ radius = cylinder radius (distance units)
+ radius can be a variable (see below)
+ lo,hi = bounds of cylinder in dim (distance units)
+ <I>plane</I> args = px py pz nx ny nz
+ px,py,pz = point on the plane (distance units)
+ nx,ny,nz = direction normal to plane (distance units)
+ 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>.
+<UL><LI>style = <I>atom</I> or <I>type</I> or <I>mol</I> or <I>group</I> or <I>region</I>
+
+<LI>ID = atom ID range or type range or mol ID range or group ID or region ID
+
+<LI>one or more keyword/value pairs may be appended
+
+<LI>keyword = <I>type</I> or <I>type/fraction</I> or <I>mol</I> or <I>x</I> or <I>y</I> or <I>z</I> or <I>charge</I> or <I>dipole</I> or <I>dipole/random</I> or <I>quat</I> or <I>quat/random</I> or <I>diameter</I> or <I>shape</I> or <I>length</I> or <I>tri</I> or <I>theta</I> or <I>angmom</I> or <I>mass</I> or <I>density</I> or <I>volume</I> or <I>image</I> or
+ <I>bond</I> or <I>angle</I> or <I>dihedral</I> or <I>improper</I> or
+ <I>meso_e</I> or <I>meso_cv</I> or <I>meso_rho</I> or <I>i_name</I> or <I>d_name</I>
+
+<PRE> <I>type</I> value = atom type
+ value can be an atom-style variable (see below)
+ <I>type/fraction</I> values = type fraction seed
+ type = new atom type
+ fraction = fraction of selected atoms to set to new atom type
+ seed = random # seed (positive integer)
+ <I>mol</I> value = molecule ID
+ value can be an atom-style variable (see below)
+ <I>x</I>,<I>y</I>,<I>z</I> value = atom coordinate (distance units)
+ value can be an atom-style variable (see below)
+ <I>charge</I> value = atomic charge (charge units)
+ value can be an atom-style variable (see below)
+ <I>dipole</I> values = x y z
+ x,y,z = orientation of dipole moment vector
+ any of x,y,z can be an atom-style variable (see below)
+ <I>dipole/random</I> value = seed Dlen
+ seed = random # seed (positive integer) for dipole moment orientations
+ Dlen = magnitude of dipole moment (dipole units)
+ <I>quat</I> values = a b c theta
+ a,b,c = unit vector to rotate particle around via right-hand rule
+ theta = rotation angle (degrees)
+ any of a,b,c,theta can be an atom-style variable (see below)
+ <I>quat/random</I> value = seed
+ seed = random # seed (positive integer) for quaternion orientations
+ <I>diameter</I> value = diameter of spherical particle (distance units)
+ value can be an atom-style variable (see below)
+ <I>shape</I> value = Sx Sy Sz
+ Sx,Sy,Sz = 3 diameters of ellipsoid (distance units)
+ <I>length</I> value = len
+ len = length of line segment (distance units)
+ len can be an atom-style variable (see below)
+ <I>tri</I> value = side
+ side = side length of equilateral triangle (distance units)
+ side can be an atom-style variable (see below)
+ <I>theta</I> value = angle (degrees)
+ angle = orientation of line segment with respect to x-axis
+ angle can be an atom-style variable (see below)
+ <I>angmom</I> values = Lx Ly Lz
+ Lx,Ly,Lz = components of angular momentum vector (distance-mass-velocity units)
+ any of Lx,Ly,Lz can be an atom-style variable (see below)
+ <I>mass</I> value = per-atom mass (mass units)
+ value can be an atom-style variable (see below)
+ <I>density</I> value = particle density for sphere or ellipsoid (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle)
+ value can be an atom-style variable (see below)
+ <I>volume</I> value = particle volume for Peridynamic particle (distance^3 units)
+ value can be an atom-style variable (see below)
+ <I>image</I> nx ny nz
+ nx,ny,nz = which periodic image of the simulation box the atom is in
+ <I>bond</I> value = bond type for all bonds between selected atoms
+ <I>angle</I> value = angle type for all angles between selected atoms
+ <I>dihedral</I> value = dihedral type for all dihedrals between selected atoms
+ <I>improper</I> value = improper type for all impropers between selected atoms
+ <I>meso_e</I> value = energy of SPH particles (need units)
+ value can be an atom-style variable (see below)
+ <I>meso_cv</I> value = heat capacity of SPH particles (need units)
+ value can be an atom-style variable (see below)
+ <I>meso_rho</I> value = density of SPH particles (need units)
+ value can be an atom-style variable (see below)
+ <I>i_name</I> value = value for custom integer vector with name
+ value can be an atom-style variable (see below)
+ <I>d_name</I> value = value for custom floating-point vector with name
+ value can be an atom-style variable (see below)
+</PRE>
+
+</UL>
+<P><B>Examples:</B>
+</P>
+<PRE>set group solvent type 2
+set group solvent type/fraction 2 0.5 12393
+set group edge bond 4
+set region half charge 0.5
+set type 3 charge 0.5
+set type 1*3 charge 0.5
+set atom * charge v_atomfile
+set atom 100*200 x 0.5 y 1.0
+set atom 1492 type 3
+</PRE>
+<P><B>Description:</B>
+</P>
+<P>Set one or more properties of one or more atoms. Since atom
+properties are initially assigned by the <A HREF = "read_data.html">read_data</A>,
+<A HREF = "read_restart.html">read_restart</A> or <A HREF = "create_atoms.html">create_atoms</A>
+commands, this command changes those assignments. This can be useful
+for overriding the default values assigned by the
+<A HREF = "create_atoms.html">create_atoms</A> command (e.g. charge = 0.0). It can
+be useful for altering pairwise and molecular force interactions,
+since force-field coefficients are defined in terms of types. It can
+be used to change the labeling of atoms by atom type or molecule ID
+when they are output in <A HREF = "dump.html">dump</A> files. It can also be useful
+for debugging purposes; i.e. positioning an atom at a precise location
+to compute subsequent forces or energy.
+</P>
+<P>Note that the <I>style</I> and <I>ID</I> arguments determine which atoms have
+their properties reset. The remaining keywords specify which
+properties to reset and what the new values are. Some strings like
+<I>type</I> or <I>mol</I> can be used as a style and/or a keyword.
+</P>
+<HR>
+
+<P>This section describes how to select which atoms to change
+the properties of, via the <I>style</I> and <I>ID</I> arguments.
+</P>
+<P>The style <I>atom</I> selects all the atoms in a range of atom IDs. The
+style <I>type</I> selects all the atoms in a range of types. The style
+<I>mol</I> selects all the atoms in a range of molecule IDs.
+</P>
+<P>In each of the range cases, the range can be specified as a single
+numeric value, or a wildcard asterisk can be used to specify a range
+of values. This takes the form "*" or "*n" or "n*" or "m*n". For
+example, for the style <I>type</I>, if N = the number of atom types, then
+an asterisk with no numeric values means all types from 1 to N. A
+leading asterisk means all types from 1 to n (inclusive). A trailing
+asterisk means all types from n to N (inclusive). A middle asterisk
+means all types from m to n (inclusive). For all the styles except
+<I>mol</I>, the lowest value for the wildcard is 1; for <I>mol</I> it is 0.
+</P>
+<P>The style <I>group</I> selects all the atoms in the specified group. The
+style <I>region</I> selects all the atoms in the specified geometric
+region. See the <A HREF = "group.html">group</A> and <A HREF = "region.html">region</A> commands
+for details of how to specify a group or region.
+</P>
+<HR>
+
+<P>This section describes the keyword options for which properties to
+change, for the selected atoms.
+</P>
+<P>Note that except where explicitly prohibited below, all of the
+keywords allow an <A HREF = "variable.html">atom-style or atomfile-style
+variable</A> to be used as the specified value(s). If the
+value is a variable, it should be specified as v_name, where name is
+the variable name. In this case, the variable will be evaluated, and
+its resulting per-atom value used to determine the value assigned to
+each selected atom. Note that the per-atom value from the variable
+will be ignored for atoms that are not selected via the <I>style</I> and
+<I>ID</I> settings explained above. A simple way to use per-atom values
+from the variable to reset a property for all atoms is to use style
+<I>atom</I> with <I>ID</I> = "*"; this selects all atom IDs.
+</P>
+<P>Atom-style variables can specify formulas with various mathematical
+functions, and include <A HREF = "thermo_style.html">thermo_style</A> command
+keywords for the simulation box parameters and timestep and elapsed
+time. They can also include per-atom values, such as atom
+coordinates. Thus it is easy to specify a time-dependent or
+spatially-dependent set of per-atom values. As explained on the
+<A HREF = "variable.html">variable</A> doc page, atomfile-style variables can be
+used in place of atom-style variables, and thus as arguments to the
+set command. Atomfile-style variables read their per-atoms values
+from a file.
+</P>
+<P>IMPORTANT NOTE: Atom-style and atomfile-style variables return
+floating point per-atom values. If the values are assigned to an
+integer variable, such as the molecule ID, then the floating point
+value is truncated to its integer portion, e.g. a value of 2.6 would
+become 2.
+</P>
+<P>Keyword <I>type</I> sets the atom type for all selected atoms. The
+specified value must be from 1 to ntypes, where ntypes was set by the
+<A HREF = "create_box.html">create_box</A> command or the <I>atom types</I> field in the
+header of the data file read by the <A HREF = "read_data.html">read_data</A>
+command.
+</P>
+<P>Keyword <I>type/fraction</I> sets the atom type for a fraction of the
+selected atoms. The actual number of atoms changed is not guaranteed
+to be exactly the requested fraction, but should be statistically
+close. Random numbers are used in such a way that a particular atom
+is changed or not changed, regardless of how many processors are being
+used. This keyword does not allow use of an atom-style variable.
+</P>
+<P>Keyword <I>mol</I> sets the molecule ID for all selected atoms. The <A HREF = "atom_style.html">atom
+style</A> being used must support the use of molecule
+IDs.
+</P>
+<P>Keywords <I>x</I>, <I>y</I>, <I>z</I>, and <I>charge</I> set the coordinates or charge of
+all selected atoms. For <I>charge</I>, the <A HREF = "atom_style.html">atom style</A>
+being used must support the use of atomic charge.
+</P>
+<P>Keyword <I>dipole</I> uses the specified x,y,z values as components of a
+vector to set as the orientation of the dipole moment vectors of the
+selected atoms. The magnitude of the dipole moment is set
+by the length of this orientation vector.
+</P>
+<P>Keyword <I>dipole/random</I> randomizes the orientation of the dipole
+moment vectors of the selected atoms and sets the magnitude of each to
+the specified <I>Dlen</I> value. For 2d systems, the z component of the
+orientation is set to 0.0. Random numbers are used in such a way that
+the orientation of a particular atom is the same, regardless of how
+many processors are being used. This keyword does not allow use of an
+atom-style variable.
+</P>
+<P>Keyword <I>quat</I> uses the specified values to create a quaternion
+(4-vector) that represents the orientation of the selected atoms. The
+particles must be ellipsoids as defined by the <A HREF = "atom_style.html">atom_style
+ellipsoid</A> command or triangles as defined by the
+<A HREF = "atom_style.html">atom_style tri</A> command. Note that particles defined
+by <A HREF = "atom_style.html">atom_style ellipsoid</A> have 3 shape parameters.
+The 3 values must be non-zero for each particle set by this command.
+They are used to specify the aspect ratios of an ellipsoidal particle,
+which is oriented by default with its x-axis along the simulation
+box's x-axis, and similarly for y and z. If this body is rotated (via
+the right-hand rule) by an angle theta around a unit rotation vector
+(a,b,c), then the quaternion that represents its new orientation is
+given by (cos(theta/2), a*sin(theta/2), b*sin(theta/2),
+c*sin(theta/2)). The theta and a,b,c values are the arguments to the
+<I>quat</I> keyword. LAMMPS normalizes the quaternion in case (a,b,c) was
+not specified as a unit vector. For 2d systems, the a,b,c values are
+ignored, since a rotation vector of (0,0,1) is the only valid choice.
+</P>
+<P>Keyword <I>quat/random</I> randomizes the orientation of the quaternion of
+the selected atoms. The particles must be ellipsoids as defined by
+the <A HREF = "atom_style.html">atom_style ellipsoid</A> command or triangles as
+defined by the <A HREF = "atom_style.html">atom_style tri</A> command. Random
+numbers are used in such a way that the orientation of a particular
+atom is the same, regardless of how many processors are being used.
+For 2d systems, only orientations in the xy plane are generated. As
+with keyword <I>quat</I>, for ellipsoidal particles, the 3 shape values
+must be non-zero for each particle set by this command. This keyword
+does not allow use of an atom-style variable.
+</P>
+<P>Keyword <I>diameter</I> sets the size of the selected atoms. The particles
+must be finite-size spheres as defined by the <A HREF = "atom_style.html">atom_style
+sphere</A> command. The diameter of a particle can be
+set to 0.0, which means they will be treated as point particles. Note
+that this command does not adjust the particle mass, even if it was
+defined with a density, e.g. via the <A HREF = "read_data.html">read_data</A>
+command.
+</P>
+<P>Keyword <I>shape</I> sets the size and shape of the selected atoms. The
+particles must be ellipsoids as defined by the <A HREF = "atom_style.html">atom_style
+ellipsoid</A> command. The <I>Sx</I>, <I>Sy</I>, <I>Sz</I> settings are
+the 3 diameters of the ellipsoid in each direction. All 3 can be set
+to the same value, which means the ellipsoid is effectively a sphere.
+They can also all be set to 0.0 which means the particle will be
+treated as a point particle. Note that this command does not adjust
+the particle mass, even if it was defined with a density, e.g. via the
+<UL><LI>one or more keyword/value pairs may be appended
+
+<LI>keyword = <I>amber</I> or <I>charmm</I> or <I>dreiding</I> or <I>fene</I> or <I>lj/coul</I> or <I>lj</I> or <I>coul</I> or <I>angle</I> or <I>dihedral</I> or <I>extra</I>
+
+<PRE> <I>amber</I> values = none
+ <I>charmm</I> values = none
+ <I>dreiding</I> values = none
+ <I>fene</I> values = none
+ <I>lj/coul</I> values = w1,w2,w3
+ w1,w2,w3 = weights (0.0 to 1.0) on pairwise Lennard-Jones and Coulombic interactions
+ <I>lj</I> values = w1,w2,w3
+ w1,w2,w3 = weights (0.0 to 1.0) on pairwise Lennard-Jones interactions
+ <I>coul</I> values = w1,w2,w3
+ w1,w2,w3 = weights (0.0 to 1.0) on pairwise Coulombic interactions
+ <I>angle</I> value = <I>yes</I> or <I>no</I>
+ <I>dihedral</I> value = <I>yes</I> or <I>no</I>
+ <I>extra</I> value = N
+ N = number of extra 1-2,1-3,1-4 interactions to save space for
+<LI>style = <I>delete</I> or <I>index</I> or <I>loop</I> or <I>world</I> or <I>universe</I> or
+<I>uloop</I> or <I>string</I> or <I>format</I> or <I>getenv</I> or <I>file</I> or <I>atomfile</I> or <I>python</I> or <I>equal</I> or <I>atom</I>
+
+<PRE> <I>delete</I> = no args
+ <I>index</I> args = one or more strings
+ <I>loop</I> args = N
+ N = integer size of loop, loop from 1 to N inclusive
+ <I>loop</I> args = N pad
+ N = integer size of loop, loop from 1 to N inclusive
+ pad = all values will be same length, e.g. 001, 002, ..., 100
+ <I>loop</I> args = N1 N2
+ N1,N2 = loop from N1 to N2 inclusive
+ <I>loop</I> args = N1 N2 pad
+ N1,N2 = loop from N1 to N2 inclusive
+ pad = all values will be same length, e.g. 050, 051, ..., 100
+ <I>world</I> args = one string for each partition of processors
+ <I>universe</I> args = one or more strings
+ <I>uloop</I> args = N
+ N = integer size of loop
+ <I>uloop</I> args = N pad
+ N = integer size of loop
+ pad = all values will be same length, e.g. 001, 002, ..., 100
+ <I>string</I> arg = one string
+ <I>format</I> args = vname fstr
+ vname = name of equal-style variable to evaluate
+ fstr = C-style format string
+ <I>getenv</I> arg = one string
+ <I>file</I> arg = filename
+ <I>atomfile</I> arg = filename
+ <I>python</I> arg = function
+ <I>equal</I> or <I>atom</I> args = one formula containing numbers, thermo keywords, math operations, group functions, atom values and vectors, compute/fix/variable references
+<TR><TD >Math operators</TD><TD > (), -x, x+y, x-y, x*y, x/y, x^y, x%y, x == y, x != y, x < y, x <= y, x > y, x >= y, x && y, x || y, !x</TD></TR>